gnustep-examples-1.4.0/0000775000175000017500000000000012204034631013772 5ustar fedorfedorgnustep-examples-1.4.0/README0000664000175000017500000000127611401540533014661 0ustar fedorfedor Welcome to the GNUstep Examples directory. In this directory there is a full collection of examples for the GNUstep libraries. Some tests are very old, other are newer; some are up-to-date, other are not. Quick start to compile and run the tests: make openapp ./testYouWantToSee.app For more information, see the README file associated with each subdirectory. Currently there is only one, for gui tests. ABOUT GNUSTEP ------------- If you want to know more about GNUstep, please refer to http://www.gnustep.org. IF YOU ARE A PROGRAMMER ----------------------- Join us: write GNUstep apps! Objective-C is exciting and easy to learn if you know C and object oriented programming fundamentals. gnustep-examples-1.4.0/GNUmakefile0000664000175000017500000000215312205446270016054 0ustar fedorfedor# # Examples makefile # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME=gnustep-examples SVN_MODULE_NAME = examples SVN_BASE_URL=svn+ssh://svn.gna.org/svn/gnustep/tests VERSION=1.4.0 SUBPROJECTS = gui include $(GNUSTEP_MAKEFILES)/aggregate.make gnustep-examples-1.4.0/gui/0000775000175000017500000000000012204034631014556 5ustar fedorfedorgnustep-examples-1.4.0/gui/ToolbarExample/0000775000175000017500000000000012204034631017474 5ustar fedorfedorgnustep-examples-1.4.0/gui/ToolbarExample/SecondWindowOwner.m0000664000175000017500000001000111131066426023265 0ustar fedorfedor/* * SecondWindowOwner.m: An application to demonstrate the GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: March 2004 * * This sample program is part of GNUstep. * * 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 "SecondWindowOwner.h" #include @implementation SecondWindowOwner - (void) awakeFromNib { NSToolbar *otherToolbar; //NSLog(@"Nib loaded with window"); otherToolbar = [[NSToolbar alloc] initWithIdentifier: @"blablaToolbar"]; //NSLog(@"Mini controller delegate %@", self); [otherToolbar setDelegate: self]; [otherToolbarView setBorderMask: GSToolbarViewTopBorder | GSToolbarViewBottomBorder | GSToolbarViewRightBorder | GSToolbarViewLeftBorder]; // We do a cast to eliminate a warning... [otherToolbar _setToolbarView: (GSToolbarView *)otherToolbarView]; // We leak the toolbar! It should rather be an instance variable and // freed when this object gets deallocated. //RELEASE(otherToolbar); } // Toolbar delegates - (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier: (NSString *)identifier willBeInsertedIntoToolbar: (BOOL)willBeInserted { NSToolbarItem *toolbarItem = [[NSToolbarItem alloc] initWithItemIdentifier: identifier]; //NSLog(@"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar: has been called"); if ([identifier isEqual: @"Third"]) { [toolbarItem setLabel: @"Validation example"]; [toolbarItem setImage: [NSImage imageNamed:@"RecyclerFull"]]; [toolbarItem setTarget: buttonWithValidation]; [toolbarItem setAction: @selector(performClick:)]; } else if ([identifier isEqual: @"Four"]) { [toolbarItem setLabel: @"Yet another item"]; [toolbarItem setImage: [NSImage imageNamed: @"RecyclerFull"]]; [toolbarItem setTarget: window]; [toolbarItem setAction: @selector(toggleToolbarShown:)]; } return AUTORELEASE(toolbarItem); } - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar { //NSLog(@"toolbarDefaultItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"Third", @"Four", NSToolbarShowFontsItemIdentifier, NSToolbarShowColorsItemIdentifier, nil]; } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar { //NSLog(@"toolbarAllowedItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"Third", @"Four", NSToolbarShowFontsItemIdentifier, NSToolbarShowColorsItemIdentifier, nil]; } - (NSArray *) toolbarSelectableItemIdentifiers: (NSToolbar *)toolbar { //NSLog(@"toolbarSelectableItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"Third", NSToolbarShowFontsItemIdentifier, nil]; } // --- - (void) removeItem: (id)sender { [[otherToolbarView toolbar] removeItemAtIndex: [itemIndexField intValue]]; } - (NSWindow *) window { return window; } - (void) windowClose: (NSNotification *)notification { [[NSNotificationCenter defaultCenter] removeObserver: self]; AUTORELEASE(self); } @end gnustep-examples-1.4.0/gui/ToolbarExample/DocumentWindow.gorm/0000775000175000017500000000000012204034631023405 5ustar fedorfedorgnustep-examples-1.4.0/gui/ToolbarExample/DocumentWindow.gorm/objects.gorm0000664000175000017500000002532410463401256025740 0ustar fedorfedorGNUstep archive00002bc0:00000023:0000014d:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSWindow1 NSWindow1 NSResponder%  D Cʀ&% C DO@01 NSView%  D Cʀ  D Cʀ&01 NSMutableArray1 NSArray&01NSButton1 NSControl% CT C1 C, A  C, A& 0 &%0 1 NSButtonCell1 NSActionCell1NSCell0 &%Toggle Toolbar0 1NSFont%&&&&&&&&%0 &% 0 &&&&0% CÀ C B A  B A& 0 &%00&%New Slider Item &&&&&&&&%0&0&&&&01 NSTextField% CU C C+ A  C+ A& 0 &%01NSTextFieldCell0&%Text &&&&&&&&0%01NSColor0&%NSNamedColorSpace0&%System0&%textBackgroundColor00& % textColor0% CT B C, A  C, A& 0 &%0 0!&%New Window with Toolbar &&&&&&&&%0"&% 0#&&&&0$1NSBox% A C D @  D @& 0% &0& % @ @ D   D &0' &0(0)&%Box &&&&&&&&0%0*0+&%System0,&%windowBackgroundColor0-0.&%System0/& % textColor @ @%%00% B C B A  B A& 01 &%0203&%First Item Name:04% A@3&&&&&&&&0%0506&%System07&%textBackgroundColor08609& % textColor0:% Bl C C A  C A& 0; &%0<0=&%New Slider Item Name:4=&&&&&&&&0%0>0?&%System0@&%textBackgroundColor0A?0B& % textColor0C% CU C C+ A  C+ A& 0D &%0E0F&%Text &&&&&&&&0%0G0H&%System0I&%textBackgroundColor0JH0K& % textColor0L% CU C C+ A  C+ A& 0M &%0N0O&%Set Second Item Image... O&&&&&&&&%0P&0Q&&&&0R% B C B A  B A&0S &%0T0U&%Other: 4U&&&&&&&&0%0V0W&%System0X&%textBackgroundColor0YW0Z& % textColor0[% A B D @  D @& 0\ &0] % @ @ D   D &0^ &0_0`&%Box &&&&&&&&0%0a0b&%System0c&%windowBackgroundColor0d0e&%System0f& % textColor @ @%%0g% CT B Cs A  Cs A& 0h &%0i0j&!%!Switch Bound to First Item Action0k1NSImage0l1NSMutableString&%common_SwitchOff j&&&&&&&&%0m&0n&0o0p&%common_SwitchOn&&&0q% @ B, CF A  CF A& 0r &%0s0t&%Selected PopUpMenu Item:4t&&&&&&&&0%0u0v&%System0w&%textBackgroundColor0xv0y& % textColor0z% CT B C, A  C, A& 0{ &%0|0}&%Text &&&&&&&&0%0~0&%System0&%textBackgroundColor00& % textColor0% B A` B A  B A& 0 &%00& % Slider Value:4&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% CT A  C, A  C, A& 0 &%00& % Slider value &&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% A C D @  D @& 0 &0 % @ @ D   D &0 &00&%Box &&&&&&&&0%00&%System0&%windowBackgroundColor00&%System0& % textColor @ @%%01 NSPopUpButton% CU C| C+ A  C+ A& 0 &%01NSPopUpButtonCell1NSMenuItemCell0& &&&&&&&&01NSMenu0&0 &01 NSMenuItem0&%Item 10&&&%00& % common_Nibble%00&%Item 2&&%%00&%Item 3&&%%%0&0&&&&%%%%%0% CU CY C+ A  C+ A& 0 &%00& &&&&&&&&00&0 &00&%Item 10&&&%%00&%Item 2&&%%00&%Item 3&&%%%0&0±&&&&%%%%%0ñ% A C~ CF A  CF A& 0ı &%0ű0Ʊ&%Toolbar Display Mode:4&&&&&&&&0%0DZ0ȱ&%System0ɱ&%textBackgroundColor0ʱ0˱& % textColor0̱% A C[ CF A  CF A& 0ͱ &%0α0ϱ&%Toolbar Size Mode:4&&&&&&&&0%0б0ѱ&%System0ұ&%textBackgroundColor0ӱ0Ա& % textColor*0ձ&%Window0ֱ&%Document ? A F@ F@%0ױ0ر&%NSApplicationIcon&  D D0ٱ &0ڱ &01NSMutableDictionary1 NSDictionary&&0ܱ& % MenuItem70ݱ0ޱ&%Quit0߱&%q&&%00&%common_2DCheckMark00& % common_2DDash%0& % MenuItem800&%Hide0&%h&&%%0& % My Window0&%Button0&%Box1[0&%Box20& % TextField0& % MenuItem(5)0&%View10& % MenuItem(4)0& % MenuItem(3)0& % MenuItem(2)0& % TextField10&%Box$0& % TextField200& % MenuItem(1)0& % TextField3:0& % TextField4C0& % MenuItem(0)0& % TextField5R0& % TextField60&%NSOwner0& % DocumentOwner0& % TextField7q0&%GormNSPopUpButton10& % TextField8zP& % MenuItem1P& % MenuItem2P&%MenuItemP& % TextField9P&%Button1P& % MenuItem3P& % TextField10P&%Button2LP& % MenuItem4P &%Button3P &%GormNSPopUpButtonP &%View]P &%Button4gP &..P1!NSNibConnectorP&%NSOwnerP!鐐P!P!P! P!P!P!P!P!P!P!P! P! P!P!P!P !P!!P"!P#! P$!P%!P&!P'1"NSNibOutletConnectorP(&%_windowP)"P*&%documentWindowP+"P,& % sliderFieldP-"P.& % popUpFieldP/"P0& % toolbarButtonP1"P2& % popUpMenuSizeP3" P4&%popUpMenuDisplayP5"P6& % newItemNameP7" P8&%firstItemSwitchP91#NSNibControlConnectorP:&%newItem:P;#P<&%setSecondItemImage:P=# P>& % newWindow:P?#P@&%toggleToolbar:PA#PB&%popUpMenuSizeChanged:PC# PD&%popUpMenuDisplayChanged:PE#PF&%setFirstItemLabel:PG!PH!PI!PJ!PK!PL!퐐PM&gnustep-examples-1.4.0/gui/ToolbarExample/DocumentWindow.gorm/data.classes0000664000175000017500000000116610463401256025707 0ustar fedorfedor{"## Comment" = "Do NOT change this file, Gorm maintains it"; DocumentOwner = {Actions = ("toggleToolbar:", "setFirstItemLabel:", "setSecondItemImage:", "newItem:", "popUpMenuDisplayChanged:", "popUpMenuSizeChanged:", "newWindow:", "reflectMenuSelection:"); Outlets = (newItemName, toolbarButton, firstItemSwitch, popUpField, sliderField, documentWindow, popUpMenuSize, popUpMenuDisplay); Super = NSDocument; }; FirstResponder = {Actions = ("orderFrontFontPanel:", "toggleToolbar:", "setFirstItemLabel:", "setSecondItemImage:", "newItem:", "newWindow:", "popUpMenuSizeChanged:", "popUpMenuDisplayChanged:"); Super = NSObject; }; }gnustep-examples-1.4.0/gui/ToolbarExample/DocumentWindow.gorm/data.info0000664000175000017500000000027010463401256025200 0ustar fedorfedorGNUstep archive00002bc0:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/ToolbarExample/ToolbarExample.gorm/0000775000175000017500000000000012204034631023355 5ustar fedorfedorgnustep-examples-1.4.0/gui/ToolbarExample/ToolbarExample.gorm/objects.gorm0000664000175000017500000000763111317735134025715 0ustar fedorfedorGNUstep archive00002e7f:00000012:00000098:00000001:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01NSMenu01NSString& % Main Menu01NSMutableArray1 NSArray&01 NSMenuItem0&%Info0&&&%0 1 NSImage0 &%NSMenuCheckmark0 0 &%NSMenuMixedState%0 0&0 0& % Info Panel...&&% %0 0&%Preferences...&&% %0 0&%Help...0&%?&&% %0 0&%Document0&&&%0 01 NSMutableString&%common_2DCheckMark0 0 & % common_2DDash2submenuAction:%00&0 0 &%Open...0!&%o&&%%0" 0#&%New0$&%n&&%%0% 0&&%Save...0'&%s&&%%0( 0)& % Save As...0*&%S&&%%0+ 0,& % Save To...0-&&&%%0. 0/&%Save All00&&&%%01 02&%revert To Saved03&&&%%04 05&%Close06&&&%%07 08&%Hide09&%h&&%%0: 0;&%Quit0<&%q&&%%0=1 GSNibItem0>& % Controller  &0?&0@&0A1NSMutableDictionary1 NSDictionary&"0B& % MenuItem7+0C&%Menu(0)0D& % GormNSMenu0E& % MenuItem8.0F& % MenuItem1040G& % MenuItem910H& % MenuItem110I& % MenuItem120J& % MenuItem1340K& % MenuItem1470L& % MenuItem15:0M& % MenuItem(9)0N& % MenuItem(8)0O& % MenuItem(7)70P& % MenuItem(6)10Q& % MenuItem(5)+0R& % MenuItem(4)70S& % MenuItem(3)40T& % MenuItem(2)10U&%NSMenu>=0V& % MenuItem(1).0W& % MenuItem(0)+0X&%NSOwner0Y& % NSApplication0Z& % MenuItem1:0[&%MenuItem70\& % MenuItem20]& % MenuItem30^& % MenuItem4"0_& % MenuItem(11)0`& % MenuItem5%0a&%Menu(1) 0b& % MenuItem6(0c& % MenuItem(10)0d&""0e1NSNibConnectorU0f&%NSOwner0gRU0h1NSNibControlConnectorR0i&%NSFirst0j&%hide:0kLU0lLi0m& % terminate:0nHU0oHU0p&%submenuAction:0qDH0rID0sIi0t& % openDocument:0u^D0v^i0w& % newDocument:0x`D0y`i0z& % saveDocument:0{bD0|bi0}&%saveDocumentAs:0~WD0Wi0&%saveDocumentTo:0ED0Ei0&%saveAllDocuments:0TD0Ti0&%revertDocumentToSaved:0JD0Ji0&%close:0>f01NSNibOutletConnectorf>0 &%delegate0NU0aN0Ma0Mi0&%orderFrontStandardInfoPanel:0ca0_a0_i0&%orderFrontHelpPanel:0NU0&%submenuAction:0&gnustep-examples-1.4.0/gui/ToolbarExample/ToolbarExample.gorm/data.classes0000664000175000017500000000022311317735134025654 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; Controller = { Actions = ( ); Outlets = ( ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/ToolbarExample/ToolbarExample.gorm/data.info0000664000175000017500000000027011317735134025154 0ustar fedorfedorGNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/ToolbarExample/ToolbarExampleInfo.plist0000664000175000017500000000116111317735707024322 0ustar fedorfedor{ ApplicationDescription = "Toolbar Example"; ApplicationIcon = ""; ApplicationName = ToolbarExample; ApplicationRelease = 0.1; Authors = ( "GNUstep Team", "Quentin Mathe" ); Copyright = "Copyright (C) 2004-2009 GNUstep"; CopyrightDescription = "Released under GPLv2"; FullVersionID = 0.1; NOTE = "Automatically generated!"; URL = ""; NSTypes = ( { NSName = "txt"; NSHumanReadableName = "Texte brut"; NSUnixExtensions = (txt,TXT); NSDOSExtensions = (txt); NSRole = Viewer; NSDocumentClass = DocumentOwner; }); } gnustep-examples-1.4.0/gui/ToolbarExample/ButtonWithValidation.m0000664000175000017500000000340110463407764024012 0ustar fedorfedor/* * ButtonWithValidation.m: An application to demonstrate the GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: May 2004 * * This sample program is part of GNUstep. * * 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 "ButtonWithValidation.h" @implementation ButtonWithValidation /* This method is called when ButtonWithValidation instances are set as toolbar item's target. When the toolbar item needs to validate itself, it checks whether its target adopts this validation protocol or not. If the protocol is adopted, the validation is delegated to the target (otherwise it is handled automatically). With the code below, the toolbar item is validated in accordance with the button state, in our case this is when the check box is checked. We use ButtonWithValidation as a superclass for the check box that allows to turn on and off this custom toolbar validation. */ - (BOOL) validateToolbarItem: (NSToolbarItem *)toolbarItem { NSLog(@"check box validate"); return [self state]; } @end gnustep-examples-1.4.0/gui/ToolbarExample/Images/0000775000175000017500000000000012204034631020701 5ustar fedorfedorgnustep-examples-1.4.0/gui/ToolbarExample/Images/SecondImage.tiff0000664000175000017500000002247610037742430023751 0ustar fedorfedorII*$SSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSBS2SSSSSSSSSSSS2kSSSkSSSٻ¤{ƦȨȩҳäϰίѳʭ̯շͮӴָĦԶٻ̭۾Ũ˭ոkSSS|ԶҴ|ַͮ£ŧغɪƨ££׹ܾǪŧǨݿæŨkSS2̭ϰҳϰغ׸ʫعɪŦгȪmrɭ£ʬ۽¤ˬԶ̭ն׹ԶkSSSնԵعҳŧ̮̮ä¤ڻ̯˭wtoo^{kZsazf{e۽ħշڼԵ׸ܾå̯αkSSSܾݿ۽ͯʭ̯в۾Ũ˭uquvpueo^|m^p_zgsɬ۾¥ڻ۽۽ѴӶӶkSSS׹¥¤Ũ¦ܾŨǬqwzq~no~npst礥۽ݿ¥ũŨkSS2¤ƧػŨǪƩͰȯ۾}h}ϵԼ׽flZzhWp_rrn[}ɬ˯ټ¦ƩȫɬkSSSбƧгֹȫ׺ټҶչ{ջųҽҴqxfteVvfsmZuټӶ˭ǬɬԷ۾kSSS¥αҴ۾ͰĪİĩuʭʶŲؽ{k{iX}m~ozhW}kϴѳƨũɬ׺kSSSββڽˮȫ̰ϴ{xͰ¯ųŲȶպ¤uis`}m|nqdUreUlxȩԶ¤ȫȫkSS2Ҵʹ©ϵϷ̳βo\}չůٽոɫzduapreUpan|ƨ̭ҳkSSSͭӵéêҹ~r_xαϳѸֿɰոĦ~ur]yerwfVvgu{ŧs|kSSS~ӵ׾ͯsrvqx¦Ǭ~izfnmrro^zjqxzvurkSSSy}ո§ҳڻs|ǫ§Ȭ˲շѵ̰Ե{rro}nqzz|}|kSS2v`u`wtev`h|e|l~پеϴеĥɯԻβiuumZ~kY}jXt_p~}dza{akSSSpr_yd~ks^nmp]sazֻªʲƭêʶָt^lvq\yf}jmioy}kSSSvvbvcn~lZziwhp^uerϱ׽Ȯ˲xپپҷƧtq\run[ls}iq]{~dtkSSSr^r^plo\ziXteV}lZ~k~o}ȫƪvxcؼֻofs`qun[n[mZn[zgut^t^u_kSS2noulxhWrrueziXrp~չƨĥƨã}s`zeuu_yf~kmwwt^ovkSSSttt{i|kYtar`~lZp]riݿԵææȪrin[zfun[~kuuwxv_|fgkSSSttwovc{fyducntwgqնѱu~gzfxgrrvcnrswwiihkSSSrtuuvxzrstqrȭڼ˭}ywrqrrutrrwxzzykSS2}kYq]to}dojq^prr`ocUocUq]{fuzfq]lZlZucrsn[~kY{iX{iXmvr^xau_kSSSo}dp}p|xbo_so_viZse}qbr]lsaq_~l~iq]~kpyhWsbyh}n^n[wq]kokSSS}kr~y{c{hro_ui\ozklzjydqr}crq{iXxhpueo[w}dkqkSSSwawaykhgwb|js}n^ocUmaUufVḽzkjluzr}kYxgW|jYreUsbtq\r\w`kSS2nsoyio[rpweseVpzm]xjZ}kvǫշäҳշuumZ{glyhp~nlY}ktkSSSywo|qeteVr`|m^yiYm[qr`{fغ˱ɯϱɫѴѴŧ{t^rtrrqlY{ejkSSSzx~opznrqqprzѳʰиһԼεԾδũΰ|||sqrppt{kSSSzas_n|i{iXn[mZ~lZpuyͰһðDzԼԽԽϲԵ|{ct^lYm[}jqteVmZr^kSS2rybwdnmZ~kxhm[ze{ɫֽӿϺªʸ̵ʳɬ~{b}h|jubu_un[tb~kkSSSzfq}jXvfxhm\r¤ջʶվվʷʸ̵Ȳɬȫ~yap{rf|t^ucwgkSSSkSSSkSS2kSSSkSSSkSSSkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk00$ *$%@$.%6%(R/opt/Surse/gnustep/CVS/usr-apps/tiff.tiffCreated with The GIMPHHgnustep-examples-1.4.0/gui/ToolbarExample/Images/FileIcon_Directory.tiff0000664000175000017500000002255410037742430025304 0ustar fedorfedorII*$666?dla..6&&.nnn65?*)2?666?nnnlku:9D"!($666?LKY0/9= d+& nnnDBO%$+'E d+d+d+B666?nnn{y86A&%-2M!d+d+d+d+a(G*54??nnn/.687BE X&d+d+d+a(`(`(_'4 54??ljnnnON]+*32M!d+d+d+`'_']&^&Y%Y%Y%5 54??[Yi666?"!(*5d+d+d+d+^&]&\&\&\&\&Y%Y%Y%5 0 ljhftNMTywGGHhey1/92% d+d+d+`(^&\&^([%[%Y%Y%Y%Y%Y%Y%Y%GnnnhftNMTwu31;= X&d+d+d+_']&Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%G666?hhp..6 ywhftmk~NM[+*2](Y&](d+^'[%Z%Y%Y%\'Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%G}! ' ?65=wucbsEDP+*2#H!V%V%V%^'Z%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%ws`_gi+<666?nnn:9AJIVYWg=;F6E V%V%V%W%Z%Y$Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%zj,i+i+g+: nnn75?4V%V%V%V%W%Z&Z&Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%zsr}W-$V&i+g+g*\&) nnncat53>4U.#R#R#T$X$V#U#V#V#Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%hgp1%)j,i+h+i,f*e)L ~97BD&!V%R#R#R#R#U#U#U#U#Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%{l-m-l,j,i+h+g*g+e)f+IZXhELE )GR#R#R#R#S"Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%ypnxo.Y'm-l,k,i+g*f*e)c(c(a(GA(R#Q!Q!R!Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%yh0#E+)n-m-l,k,j,i+h*e)d)c(b(a(`'(9"R#P R#P!Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%{`6/Z(o-n-m-k,j,i+h+g*f*e+b(a(`'a)^&% 9"R#Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%yz~X.%p.q0n-m-l,k,j+i+g+f*e*f+b(`'_'^'_(\% 9"Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%{VIRZ(p.o.n-m-l,k,j+i+g*g*f*d)c)b(`'_'_(\&\%[% 9"Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%TQap.o.n-n-m-l,k,j+i+h+g*f*e)d)b(b(b)^&_([%[%Z$7 9"Y%Y%Y%Y%Y%Y%Y%x[Xiq/p.o.o-m-m-l,k,j,j+h+g*f*g+f+c)b(c)_'a(_(]'Z$Y$X$4 ~5 Y%Y%X$Y%X$z2]Yk[(p.o.n-n-m-l,k,j,i+i+g*f*g,f+c)b(a(a)_'^&_'[%[&Z%W#V#1 ~5 Y%Y%h+q/p.o.n-m-m-l,k,j+i+h+g*f*f)e)c)b(a(`'_'^&]&[%Z$Y$Y%X%U#T" ?~5 tQGdat1g-l,o.n-m-m-l,k,j,i+h+g*f*e)e)c)b(a(`'_'^&]&\%[%\&X$W#W$V$U$R! FF:$n.m-m-l,k,j,i+j-j,f*g+f+e+b(b(`'_'^']&\%[%Z$Y$W#Y%U"S"R!Q!Q!?~5 KFFF8!m-l,k,l-k-h+g*h,e*d)c)b(a(c)`'^&^&\%[%Z$Y$X#W#W$T"S"S#Y%W$S#d*CKBY$t1k,j,i+i+g*f*h,g+f+e*c*`'_'^'`(^'[%Z$Y$X#W#X%V$T"S!`(W$GE) d*CKBp.e*i+h+h*g*f*e)d)e*d*b)_'^'`(^(]'Z%Y$Z&W#V#W$V$S!^&S#@EO!L, d*CKBn.d)i,g*f*e)d)c(b(a'`'_'`(\&]'[%Z$Y$W#V#U"V$Y$X$S#@INO!.  d*>99t1c)f*e)d)c(b(a'`'_'^&_(\%[%Z$Y$X$W#U"T"_'X$GFO NM. ! *X%>:9z4 c)f+e+b(a(`'_'^&_(\%[%Z$[&Z&W#X%U"_'S#?DO NM.  tCX%>99w2c)b(a(`'_'^&]&_([%Z%Y$Z&Y%V#\'Z&S#AJO O>.  h< X%::\%k-d*a'`'_'^&]&^'[%Y$X$Y%X%a)X$GEQ!P O @! }U5;77X#b*`'_'^&_(\%]'Z$Y$X#W#`'S#?GQ!P O 1  wE;;7T"_'^&_(^([%\'Y$X$\&Y$S#?LQ!P @/  h< 1 1 1 s/`)\%[%Z%Y$X$a(Y$GFS"R!Q!@"  vP11 1 g*]&Z%Z$X$a(S#BFS"R!Q!2  j:1 1 g+]'_([&S#@NT"U#R!0  g:1 Eh,[&GGW$T"S"A"  T31 ;V$IU"T"V$1 " P%1 P"]&T"V$3  }O(1 S"B"  hE%g8 V#S"kF* 222g<00$ T$6%L%*T%\%d%(R/home/enrico/Grivei/sviluppo/FileManager/Xws/Xws/Icons/FileIcon_Directory_Open.tiffCreated with The GIMPHHgnustep-examples-1.4.0/gui/ToolbarExample/Images/RecyclerFull.tiff0000664000175000017500000002255010037742430024157 0ustar fedorfedorII*$]]]]4440A(0(( 8 8 8 ]](4yayay(0( 8 8 8 ]]]]] a(4ayyayYaYaYa0( 8 ]8 ]]]]] a( m0 m04yӮayYa0A(0 8 8 8 ]]]] m0 m0 m0 m0((4yayYaYa0A0A(0(( 8 8 ]]] a(] m0 m0 m0(}8(}8(((]4] m0ayayYaYa(0Ya(0(((}8]]]] m0 m0 m0(}8(}8(}8(( 4]44]ӮayYaYaYaIQYaYa0(0((((( a(48 ]] m0 m0(}8 m0(}8(}8(((}8(((}84(((]]ayYaYa(00A(0((QQ((( 4] m0 m0 m0(}8(((}8((   (((( 4]Ya0AYa(00(0(QQ((( ((](]] m0 m0(}8(}8(((}8(((((0(((}84]YaIQ0A(0((((( (  (}84] m0(((}8(( (0((((0(]]]0(YaYa(00(((((((((((((] 4] m0(}8(((}8(((((0(0A0A(((]4 m00(((((     Qay(}8(( (0(((00A0A0A]4 m0(((((((}8(((}8] 44((((((((0((00A0A]]](}8 ((  4(}8]4 m0(( (0((0(0A0A(0 m04]4 m0((((4(444(444(444(4]]4]44Qay]] m0((4YayYaay m0]]](}8(}8(((}8(}8440Aayayay 0]] m0  ((   4(}8yyyӮayayYaYa]]0((((}8 m0 m0]](}8(}8(((}8(((}8(((((( m04 a(ayyayayayYaYaIQ0A40(IQ 00( m0] m0] m0((   ((  (( (((4ayayayYaayYaIQYaIQ0A(0QQ4(( m0]4](((}8(((}8(((}8(((((((0(((0(( m0ayayYaYaIQIQIQ0A(0((]]0( 0 (}8]4]  (( ((((((0((00(44Ya 00A0A(0(0(0((0((0((}84 m0 m0(}8]]]] 0((((((00A(00A0AIQ(0IQIQYaYa(0(0(((((((((((]] m0]]](4 m0](}8(0(((00AYaIQYaIQ(00(4IQIQ0A(0(0((0((0((]44 m04 m04] m0](((00A0AIQIQ0A(0QQ(4 m0Ya0((0((((0(0((]4444] m0YaYa0AYaYa0A(0QQ0( a(4]((0((0((0((0( m04]((00A0A0A(0( m04(}8(0((((((((] ](}80((0(0((( (}8(}8(](((0((0(( m0 ](QQ(   m0 m00(0((((0( a( ay ] a((}8(}8(}8]4(40((0((0( 444]]]]]4]4]]]]]44](}8(((((]8 8 ] a( m0 m0(}8(}8(((}8(((yayYaIQ0(((((}8 a(]]]4(0(( 48 ]] m0 m0 m0(}8  (( 4 m0yayIQYa( (((}8 m0]]4Ya(] 8 ]]] m0(}8 m0(}8(}8((((0(4]ayyayIQ0A0((((((}8(}8 a(]]4]0( 8 ]] a( m0 m0(}8(}8(( ((04ayYaYa(0(( m0 m0]]4](}8 8 8 ] a( a( m0(}8(}8(((((0((0(]yyYaYaYaYa0(((((}8 m0]]8 (] 8 ]] m0 m0 m0(}8(( ((0A0A4yyay 0YaIQ0A( (((}8 m0]8 ]8 ]] a( m0 m0(}8(}8(((((0IQIQ4ӮayYa0A0(0((((( m0 m0 a(]8 48 ]] m0 m0(}8(}8 0((0A 0YayayayIQYa0((( (}8(}8 a( m08 4]] a((}8(}8(((}80(YaIQYay ]YaYa0((((((}8(}8 a( a(8 444 m0(}8  (0( 0Yayay4]YaYa((((}8(}8 m0]4(444(444(44Ya0( (]0( (Ya 4400$ S$B%@$X%`%(R/home/enrico/Grivei/sviluppo/FileManager/GWorkspace/GWorkspace/Icons/recycler.tiffCreated with The GIMPHHgnustep-examples-1.4.0/gui/ToolbarExample/Controller.h0000664000175000017500000000206610116654502022001 0ustar fedorfedor/* * Controller.h: An application to demonstrate GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: September 2004 * * This sample program is part of GNUstep. * * 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 #include @interface Controller : NSObject { } @end gnustep-examples-1.4.0/gui/ToolbarExample/DocumentOwner.m0000664000175000017500000002623611127215604022460 0ustar fedorfedor/* * DocumentOwner.m: An application to demonstrate the GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: March 2004 * * This sample program is part of GNUstep. * * 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 "DocumentOwner.h" #include "SecondWindowOwner.h" @implementation DocumentOwner /* * NSDocument related methods */ - (NSString *) windowNibName { return @"DocumentWindow"; } - (void) windowControllerDidLoadNib: (NSWindowController *)windowController { NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@"myToolbar"]; id item; // [documentWindow setDelegate: self]; [toolbar setAllowsUserCustomization: YES]; [toolbar setDelegate: self]; [documentWindow setToolbar: toolbar]; RELEASE(toolbar); [popUpMenuDisplay setAutoenablesItems: NO]; [popUpMenuSize setAutoenablesItems: NO]; [popUpMenuDisplay removeAllItems]; [popUpMenuSize removeAllItems]; [popUpMenuDisplay addItemWithTitle: @"Default"]; [[popUpMenuDisplay itemWithTitle: @"Default"] setEnabled: YES]; [[popUpMenuDisplay itemWithTitle: @"Default"] setTag: NSToolbarDisplayModeDefault]; [popUpMenuDisplay addItemWithTitle: @"Icon and label"]; [[popUpMenuDisplay itemWithTitle: @"Icon and label"] setEnabled: YES]; [[popUpMenuDisplay itemWithTitle: @"Icon and label"] setTag: NSToolbarDisplayModeIconAndLabel]; [popUpMenuDisplay addItemWithTitle: @"Icon only"]; [[popUpMenuDisplay itemWithTitle: @"Icon only"] setEnabled: YES]; [[popUpMenuDisplay itemWithTitle: @"Icon only"] setTag: NSToolbarDisplayModeIconOnly]; [popUpMenuDisplay addItemWithTitle: @"Text only"]; [[popUpMenuDisplay itemWithTitle: @"Text only"] setEnabled: YES]; [[popUpMenuDisplay itemWithTitle: @"Text only"] setTag: NSToolbarDisplayModeLabelOnly]; /* Below is a GNUstep only extension */ #ifdef GSToolbarDisplayModeIconFit [popUpMenuDisplay addItemWithTitle: @"Icon fit"]; [[popUpMenuDisplay itemWithTitle: @"Icon fit"] setEnabled: YES]; [[popUpMenuDisplay itemWithTitle: @"Icon fit"] setTag: GSToolbarDisplayModeIconFit]; #endif [popUpMenuSize addItemWithTitle: @"Default"]; [[popUpMenuSize itemWithTitle: @"Default"] setEnabled: YES]; [[popUpMenuSize itemWithTitle: @"Default"] setTag: NSToolbarSizeModeDefault]; [popUpMenuSize addItemWithTitle: @"Regular"]; [[popUpMenuSize itemWithTitle: @"Regular"] setEnabled: YES]; [[popUpMenuSize itemWithTitle: @"Regular"] setTag: NSToolbarSizeModeRegular]; [popUpMenuSize addItemWithTitle: @"Small"]; [[popUpMenuSize itemWithTitle: @"Small"] setEnabled:YES]; [[popUpMenuSize itemWithTitle: @"Small"] setTag: NSToolbarSizeModeSmall]; item = [popUpMenuDisplay itemWithTitle: @"Default"]; [popUpMenuDisplay selectItem: item]; item = [popUpMenuSize itemWithTitle:@"Default"]; [popUpMenuSize selectItem: item]; [popUpMenuDisplay setAction: @selector(popUpMenuDisplayChanged:)]; [popUpMenuSize setAction: @selector(popUpMenuSizeChanged:)]; } - (BOOL) loadDataRepresentation: (NSData*)data ofType: (NSString*)docType { return YES; } - (NSData *)dataRepresentationOfType:(NSString *)aType { return nil; } - (NSString *)fileType { return @"txt"; } // Toolbar delegates - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString*)identifier willBeInsertedIntoToolbar:(BOOL)willBeInserted { NSToolbarItem *toolbarItem = [[NSToolbarItem alloc] initWithItemIdentifier:identifier]; AUTORELEASE(toolbarItem); NSLog(@"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar: \ has been called"); if ([identifier isEqual: @"First"]) { [toolbarItem setLabel: @"First item"]; [toolbarItem setImage: [NSImage imageNamed: @"FileIcon_Directory"]]; [toolbarItem setTarget: firstItemSwitch]; [toolbarItem setAction: @selector(performClick:)]; } else if ([identifier isEqual: @"Second"]) { [toolbarItem setLabel: @"Second item"]; [toolbarItem setImage: [NSImage imageNamed: @"SecondImage"]]; [toolbarItem setTarget: nil]; [toolbarItem setAction: @selector(toggleToolbarShown:)]; } else if ([identifier isEqual: @"Popup"]) { NSPopUpButton *popup = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(0, 0, 150, 22)]; id item; NSMenuItem *menuItem; NSMenu *submenu; [popup setAction: @selector(reflectMenuSelection:)]; [popup setAutoenablesItems: NO]; [popup addItemWithTitle: @"Marguerite"]; [[popup itemWithTitle: @"Marguerite"] setEnabled: YES]; [popup addItemWithTitle: @"Julie"]; [[popup itemWithTitle: @"Julie"] setEnabled: YES]; [popup addItemWithTitle: @"Liv"]; [[popup itemWithTitle: @"Liv"] setEnabled: YES]; [popup addItemWithTitle: @"Juliette"]; [[popup itemWithTitle: @"Juliette"] setEnabled: YES]; item = [popup itemWithTitle: @"Julie"]; [popup selectItem:item]; [NSApp sendAction: [popup action] to: self from: popup]; [toolbarItem setLabel: @"Just... popup"]; [toolbarItem setView: popup]; menuItem = [[NSMenuItem alloc] initWithTitle: @"More..." action: NULL keyEquivalent: @""]; submenu = [[NSMenu alloc] initWithTitle: @""]; [submenu addItemWithTitle: @"Marguerite" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [submenu addItemWithTitle: @"Julie" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [submenu addItemWithTitle: @"Liv" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [submenu addItemWithTitle: @"Juliette" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [menuItem setSubmenu: AUTORELEASE(submenu)]; [toolbarItem setMenuFormRepresentation: AUTORELEASE(menuItem)]; } else if ([identifier isEqual:@"Slider"]) { [toolbarItem setLabel: [newItemName stringValue]]; [toolbarItem setView: [[NSSlider alloc] initWithFrame: NSMakeRect(0, 0, 120, 18)]]; [(NSControl *)[toolbarItem view] setTarget: sliderField]; [(NSControl *)[toolbarItem view] setAction: @selector(takeStringValueFrom:)]; } return toolbarItem; } - (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar { NSLog(@"toolbarDefaultItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"First", NSToolbarFlexibleSpaceItemIdentifier, @"Second", @"Popup", NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, nil]; } - (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar { NSLog(@"toolbarAllowedItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"First", @"Second", @"Popup", @"Slider", NSToolbarCustomizeToolbarItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } // --- /* * Controller/owner related methods */ - (void) toggleToolbar: (id)sender { [documentWindow toggleToolbarShown: self]; } - (void) setFirstItemLabel: (id)sender { NSEnumerator *e = [[[documentWindow toolbar] items] objectEnumerator]; NSToolbarItem *item; while ((item = [e nextObject]) != nil) { if ([[item itemIdentifier] isEqualToString: @"First"]) { [item setLabel:[sender stringValue]]; return; } } } - (void) setSecondItemImage: (id)sender { NSEnumerator *e = [[[documentWindow toolbar] items] objectEnumerator]; NSToolbarItem *item; NSImage *image; NSOpenPanel *op = [NSOpenPanel openPanel]; int code; code = [op runModal]; if (code != NSOKButton) return; image = [[NSImage alloc] initWithContentsOfFile: [op filename]]; while ((item = [e nextObject]) != nil) { if ([[item itemIdentifier] isEqualToString: @"Second"]) { [item setImage:image]; return; } } RELEASE(image); } - (void) newItem:(id)sender { [[documentWindow toolbar] insertItemWithItemIdentifier: @"Slider" atIndex: 2]; } - (void) popUpMenuDisplayChanged: (id)sender { [[documentWindow toolbar] setDisplayMode: [[sender selectedItem] tag]]; } - (void) popUpMenuSizeChanged: (id)sender { [[documentWindow toolbar] setSizeMode: [[sender selectedItem] tag]]; } - (void) reflectMenuSelection:(id)sender { if ([sender isKindOfClass:[NSPopUpButton class]]) { [popUpField setStringValue:[sender titleOfSelectedItem]]; } else if ([sender isKindOfClass: [NSMenuItem class]]) { [popUpField setStringValue: [sender title]]; } } - (void) newWindow: (id)sender { SecondWindowOwner *otherNibOwner = [[SecondWindowOwner alloc] init]; NSWindow *otherWindow; NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier: @"myToolbar"]; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [NSBundle loadNibNamed: @"SecondWindow.gorm" owner: otherNibOwner]; otherWindow = [otherNibOwner window]; [nc addObserver: otherNibOwner selector: @selector(windowClose:) name: NSWindowWillCloseNotification object: otherWindow]; // In the case we would use a window controller to own the nib SecondWindow, // we would be able to use a window controller subclass with the // -[NSWindowController close] method overriden in order to release itself, // then we wouldn't have to rely on the current hack based on the window's // notifications to do the release. // Well the correct implementation is probably to have the each SecondWindow // nib owner controlled (release responsability) by a persistent object. // Note: a window controller not owned by a document object is not // automatically released. [toolbar setDelegate: [NSApp delegate]]; [otherWindow setToolbar: toolbar]; RELEASE(toolbar); [otherWindow makeKeyAndOrderFront: self]; } /* * Not used currently * - (void) setController: (Controller *)newController { ASSIGN(controller, newController); } - (Controller *) controller { return controller; } */ @end gnustep-examples-1.4.0/gui/ToolbarExample/DocumentOwner.h0000664000175000017500000000333010116654502022442 0ustar fedorfedor/* * DocumentOwner.h: An application to demonstrate GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: March 2004 * * This sample program is part of GNUstep. * * 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 #include @interface DocumentOwner : NSDocument { id newItemName; id toolbarButton; id firstItemSwitch; id popUpField; id sliderField; id documentWindow; id popUpMenuSize; id popUpMenuDisplay; id whatever; //Controller *controller; } // Controller/owner related methods - (void) toggleToolbar: (id)sender; - (void) setFirstItemLabel: (id)sender; - (void) setSecondItemImage: (id)sender; - (void) newItem:(id)sender; - (void) popUpMenuDisplayChanged: (id)sender; - (void) popUpMenuSizeChanged: (id)sender; - (void) reflectMenuSelection: (id)sender; - (void) newWindow:(id)sender; // Accessors (not used currently) //- (void) setController: (Controller *)newController; //- (Controller *) controller; @end gnustep-examples-1.4.0/gui/ToolbarExample/GNUmakefile0000664000175000017500000000133110463410420021543 0ustar fedorfedorinclude $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = ToolbarExample APP_NAME = ToolbarExample ToolbarExample_APPLICATION_ICON = ToolbarExample_MAIN_MODEL_FILE = ToolbarExample.gorm ToolbarExample_RESOURCE_FILES= \ ToolbarExample.gorm \ DocumentWindow.gorm \ SecondWindow.gorm \ ToolbarExampleInfo.plist \ Images/SecondImage.tiff \ Images/RecyclerFull.tiff \ Images/FileIcon_Directory.tiff ToolbarExample_HEADER_FILES= \ Controller.h \ DocumentOwner.h \ SecondWindowOwner.h \ ButtonWithValidation.h ToolbarExample_OBJC_FILES= \ main.m \ Controller.m \ DocumentOwner.m \ SecondWindowOwner.m \ ButtonWithValidation.m -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/ToolbarExample/SecondWindow.gorm/0000775000175000017500000000000012204034631023042 5ustar fedorfedorgnustep-examples-1.4.0/gui/ToolbarExample/SecondWindow.gorm/objects.gorm0000664000175000017500000001246510766007153025403 0ustar fedorfedorGNUstep archive00002cee:00000024:00000088:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSWindow1 NSWindow1 NSResponder% @ @ C CI&% D C01 NSView% @ @ C CI  C CI&01 NSMutableArray1 NSArray&01 NSColorWell1 NSControl% Cڀ B BT A  BT A& 0 &%0 1NSCell0 &0 1NSFont%&&&&&&&&&&&&&&0 1NSColor0 &%NSCalibratedWhiteColorSpace ?01 GSCustomView1 GSNibItem0& % GSToolbarView A B C Bt& 01NSButton% C} B| B A  B A& 0 &%01 NSButtonCell1 NSActionCell0&%Remove &&&&&&&&&&&&&&%0&0&&&& &&01 NSTextField% C9 B B` A  B` A& 0 &%01NSTextFieldCell0&%Text &&&&&&&& &&&&&&%00&%NSNamedColorSpace0&%System0&%textBackgroundColor00& % textColor0 % A B C A  C A& 0! &%0"0#&%Remove Item at Index:0$% A`#&&&&&&&& &&&&&&%0%0&&%System0'&%textBackgroundColor0(&0)& % textColor0*1NSBox% A C: C @  C @& 0+ &0, % @ @ C   C &0- &0.0/& &&&&&&&& &&&&&&%0001&%System02&%windowBackgroundColor0304&%System05& % textColor @ @%%061GSControlTemplate07&%ButtonWithValidation% A Ap C A  C A&08 &%090:&F%FTurn on "Validation Example" Toolbar Item (Validation Support Example)0;1NSImage0<1NSMutableString&%common_SwitchOff :&&&&&&&&&&&&&&%0=&0>&0?0@&%common_SwitchOn&&& &&0A% A B8 C @  C @&0B &0C % @ @ C   C &0D &0E0F&%Box &&&&&&&&&&&&&& @ @%%00G&%Window0H&%Window0I&%Window ? B F@ F@%0J0K&%NSApplicationIcon&  D Dt0L &0M &0N1NSMutableDictionary1 NSDictionary& 0O&%NSOwner0P&%SecondWindowOwner0Q&%Button160R&%GormCustomView0S& % TableColumn10T1 NSTableColumn0U&%column2 C A GP0V1!NSTableHeaderCell0W&% 0X% &&&&&&&& &&&&&&%0Y0Z&%System0[&%controlShadowColor0\0]&%System0^&%windowFrameTextColor0_0`&%nine `&&&&&&&& &&&&&&%0a]0b&%textBackgroundColor0c]0d& % textColor0e&%Box*0f& % ColorWell0g&%Button0h& % TextField0i&%Box1A0j& % GormNSWindow0k& % TextField1 0l& % TableColumn0m 0n&%column1 BP A GP0o!0p&% X&&&&&&&& &&&&&&%Y\0q0r&%neuf r&&&&&&&& &&&&&&%ac0s &0t1"NSNibConnectorf0u"l0v"S0w"R0x"g0y"h0z"k0{"e0|"Q0}"i0~1#NSNibOutletConnectorOR0&%otherToolbarView0#Oh0&%itemIndexField01$NSNibControlConnectorgO0& % removeItem:0#OQ0&%buttonWithValidation0#Oj0&%window0&Q7gnustep-examples-1.4.0/gui/ToolbarExample/SecondWindow.gorm/data.classes0000664000175000017500000000105210766007153025342 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ButtonWithValidation = { Actions = ( ); Outlets = ( ); Super = NSButton; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "removeItem:" ); Super = NSObject; }; GSToolbarView = { Actions = ( ); Outlets = ( ); Super = NSView; }; SecondWindowOwner = { Actions = ( "removeItem:" ); Outlets = ( window, otherToolbarView, itemIndexField, buttonWithValidation, whatever ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/ToolbarExample/SecondWindow.gorm/data.info0000664000175000017500000000027010766007153024641 0ustar fedorfedorGNUstep archive00002cee:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/ToolbarExample/SecondWindowOwner.h0000664000175000017500000000233711127215604023274 0ustar fedorfedor/* * SecondWindowOwner.h: An application to demonstrate the GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: March 2004 * * This sample program is part of GNUstep. * * 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 #include @interface SecondWindowOwner : NSObject { id window; id otherToolbarView; id itemIndexField; id buttonWithValidation; id whatever; } - (void) removeItem: (id)sender; - (NSWindow *) window; @end gnustep-examples-1.4.0/gui/ToolbarExample/Controller.m0000664000175000017500000001230110116654502021777 0ustar fedorfedor/* * Controller.m: An application to demonstrate the GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: August 2004 * * This sample program is part of GNUstep. * * 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 "Controller.h" @implementation Controller - (void) awakeFromNib { [NSApp setDelegate: self]; } - (BOOL) applicationShouldOpenUntitledFile: (NSApplication *)sender { return YES; } - (BOOL) applicationOpenUntitledFile: (NSApplication *)sender { NSDocumentController *specialController = [NSDocumentController sharedDocumentController]; NSDocument *document = [specialController openUntitledDocumentOfType: @"txt" display: YES]; if (document != nil) return YES; return NO; } // Toolbar delegates - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString*)identifier willBeInsertedIntoToolbar:(BOOL)willBeInserted { NSToolbarItem *toolbarItem = [[NSToolbarItem alloc] initWithItemIdentifier: identifier]; AUTORELEASE(toolbarItem); NSLog(@"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar: \ has been called"); if ([identifier isEqual: @"First"]) { [toolbarItem setLabel: @"First item"]; [toolbarItem setImage: [NSImage imageNamed: @"FileIcon_Directory"]]; } else if ([identifier isEqual:@"Second"]) { [toolbarItem setLabel: @"Second item"]; [toolbarItem setImage: [NSImage imageNamed: @"SecondImage"]]; [toolbarItem setTarget: nil]; [toolbarItem setAction: @selector(toggleToolbarShown:)]; } else if ([identifier isEqual:@"Popup"]) { NSPopUpButton *popup = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(0, 0, 150, 22)]; id item; NSMenuItem *menuItem; NSMenu *submenu; [popup setAutoenablesItems: NO]; [popup addItemWithTitle: @"Marguerite"]; [[popup itemWithTitle: @"Marguerite"] setEnabled: YES]; [popup addItemWithTitle: @"Julie"]; [[popup itemWithTitle: @"Julie"] setEnabled: YES]; [popup addItemWithTitle: @"Liv"]; [[popup itemWithTitle: @"Liv"] setEnabled: YES]; [popup addItemWithTitle: @"Juliette"]; [[popup itemWithTitle: @"Juliette"] setEnabled: YES]; item = [popup itemWithTitle: @"Julies"]; [popup selectItem: item]; [toolbarItem setLabel: @"Just... popup"]; [toolbarItem setView: popup]; menuItem = [[NSMenuItem alloc] initWithTitle: @"More..." action: NULL keyEquivalent: @""]; submenu = [[NSMenu alloc] initWithTitle: @""]; [submenu addItemWithTitle: @"Marguerite" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [submenu addItemWithTitle: @"Julie" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [submenu addItemWithTitle: @"Liv" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [submenu addItemWithTitle: @"Juliette" action: @selector(reflectMenuSelection:) keyEquivalent: @""]; [menuItem setSubmenu: AUTORELEASE(submenu)]; [toolbarItem setMenuFormRepresentation: AUTORELEASE(menuItem)]; } else if ([identifier isEqual:@"Slider"]) { [toolbarItem setLabel: @"Loulou"]; [toolbarItem setView: [[NSSlider alloc] initWithFrame: NSMakeRect(0, 0, 70, 18)]]; } return toolbarItem; } - (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar { NSLog(@"toolbarDefaultItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"First", NSToolbarFlexibleSpaceItemIdentifier, @"Second", @"Popup", NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, nil]; } - (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar { NSLog(@"toolbarAllowedItemIdentifiers: has been called"); return [NSArray arrayWithObjects: @"First", @"Second", @"Popup", @"Slider", NSToolbarCustomizeToolbarItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } // --- @end gnustep-examples-1.4.0/gui/ToolbarExample/ButtonWithValidation.h0000664000175000017500000000220610116670657024005 0ustar fedorfedor/* * ButtonWithValidation.h: An application to demonstrate the GNUstep toolbars * * Copyright (c) 2004 Free Software Foundation, Inc. * * Author: Quentin Mathe * Date: May 2004 * * This sample program is part of GNUstep. * * 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 #include @interface ButtonWithValidation : NSButton { } - (BOOL) validateToolbarItem: (NSToolbarItem *)toolbarItem; @end gnustep-examples-1.4.0/gui/ToolbarExample/main.m0000664000175000017500000000037110037616635020613 0ustar fedorfedor#include #include #define APP_NAME @"GNUstep" /* * Initialise and go! */ int main(int argc, const char *argv[]) { [NSObject enableDoubleReleaseCheck: YES]; return NSApplicationMain (argc, argv); } gnustep-examples-1.4.0/gui/README0000664000175000017500000000244111401540533015440 0ustar fedorfedor Welcome to the GNUstep Testing directory. In this directory there is a full collection of tests for the GNUstep GUI libraries. Tests are kept in subdirectories. Quick start to compile and run the tests: make cd testYouWantToSee openapp ./testYouWantToSee.app If this tip is not enough, read on for the detailed explanations. COMPILING THE TESTS ------------------- To compile all the tests, simple type: make To compile a single test, go into its directory, then type 'make' there. Compiling a test called "testName" creates a directory called "testName.app". For example, when compiling the CurrencyConverter test, the directory CurrencyConverter.app is created. RUNNING THE TESTS ----------------- To run a test, launch openapp with the test .app directory [see "COMPILING THE TESTS" above] as argument. For example, to run the CurrencyConverter.app test, type cd CurrencyConverter openapp CurrencyConverter.app [or, in a single command, type "openapp CurrencyConverter/CurrencyConverter.app"] ABOUT GNUSTEP ------------- If you want to know more about GNUstep, please refer to http://www.gnustep.org. IF YOU ARE A PROGRAMMER ----------------------- Join us: write GNUstep apps! Objective-C is exciting and easy to learn if you know C and object oriented programming fundamentals. gnustep-examples-1.4.0/gui/Classes/0000775000175000017500000000000012204034626016157 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSBrowserTest/0000775000175000017500000000000012204034626020703 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSBrowserTest/nsbrowser.m0000664000175000017500000002376407731502124023123 0ustar fedorfedor/* nsbrowser.m Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: October 1997 Author: Franck Wolff Date: November 1999 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #include #include #if 0 // // a NSBrowser delegate which passively creates the rows // @interface PassiveBrowserDelegate : NSObject { } - (int)browser:(NSBrowser *)sender numberOfRowsInColumn:(int)column; - (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column; - (NSString *)browser:(NSBrowser *)sender titleOfColumn:(int)column; @end @implementation PassiveBrowserDelegate - (int)browser:(NSBrowser *)sender numberOfRowsInColumn:(int)column { NSFileManager *fm = [NSFileManager defaultManager]; NSArray *files = [fm directoryContentsAtPath: @"/"]; return [files count]; } - (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column { NSFileManager *fm = [NSFileManager defaultManager]; NSArray *files = [fm directoryContentsAtPath: @"/"]; int count = [files count]; BOOL exists = NO, is_dir = NO; NSMutableString *s = [[[NSMutableString alloc] initWithCString: "/"] autorelease]; if (row >= count) return; [s appendString: [files objectAtIndex: row]]; exists = [fm fileExistsAtPath: s isDirectory: &is_dir]; if ((exists) && (is_dir)) [cell setLeaf: NO]; else [cell setLeaf: YES]; [cell setStringValue: [files objectAtIndex: row]]; } - (NSString *)browser:(NSBrowser *)sender titleOfColumn:(int)column { if (column == 0) return @"Column 0"; else if (column == 1) return @"Column 1"; else if (column == 2) return @"Column 2"; else return @""; } @end #endif // // a NSWindow delegate which resize the browser // @interface WindowDelegate : NSObject { NSWindow *_w; NSBrowser *_b; } - (void)initMembersWith: (NSWindow *)w and: (NSBrowser *)b; - (void)windowDidResize:(NSNotification *)aNotification; - (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)proposedFrameSize; @end @implementation WindowDelegate - (void)initMembersWith: (NSWindow *)w and: (NSBrowser *)b { _w = w; _b = b; } - (void)windowDidResize:(NSNotification *)aNotification { NSRect rect = [_w frame]; rect.origin.x = rect.origin.y = 10; rect.size.width -= 20; rect.size.height -= 150; [_b setFrame: rect]; NSLog(@"----------------sizeToFit"); [_b sizeToFit]; NSLog(@"----------------Done sizeToFit"); [[_w contentView] setNeedsDisplay: YES]; } - (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)proposedFrameSize { // Doesn't work. Why ???? printf("windowWillResize: %s\n", [NSStringFromSize(proposedFrameSize) cString]); return proposedFrameSize; } @end // // an NSBrowser delegate which actively creates the rows // @interface ActiveBrowserDelegate : NSObject { } - (void)browser:(NSBrowser *)sender createRowsForColumn:(int)column inMatrix:(NSMatrix *)matrix; - (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column; @end @implementation ActiveBrowserDelegate - (void)browser:(NSBrowser *)sender createRowsForColumn:(int)column inMatrix:(NSMatrix *)matrix { NSFileManager *fm = [NSFileManager defaultManager]; NSString *ptc = [sender pathToColumn: column]; NSArray *files = [fm directoryContentsAtPath: ptc]; int i, count = [files count]; if (count == 0) return; [matrix addColumn]; for (i = 0; i < count; ++i) { id cell; BOOL exists = NO, is_dir = NO; NSMutableString *s = [[[NSMutableString alloc] initWithString: ptc] autorelease]; // First row is created when column is added if (i != 0) [matrix insertRow: i]; cell = [matrix cellAtRow: i column: 0]; [cell setStringValue: [files objectAtIndex: i]]; [s appendString: @"/"]; [s appendString: [files objectAtIndex: i]]; exists = [fm fileExistsAtPath: s isDirectory: &is_dir]; if ((exists) && (is_dir)) [cell setLeaf: NO]; else [cell setLeaf: YES]; } } - (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column; { } - (BOOL)browser:(NSBrowser *)sender selectCellWithString:(NSString *)title inColumn:(int)column; { /* //NSFileManager *fm = [NSFileManager defaultManager]; NSString *ptc = [sender pathToColumn: column]; NSMutableString *s = [[[NSMutableString alloc] initWithString:ptc]autorelease]; fprintf(stderr, " browser:sender selectCellWithString: %s ", [title cString]); if(column > 0) [s appendString: @"/"]; [s appendString:title]; fprintf(stderr, " source Path: %s ", [s cString]); fprintf(stderr, " destination Path: %s ", [d cString]); //if([fm movePath:s toPath:d handler:self]) */ return YES; } - (BOOL)fileManager:(NSFileManager*)fileManager shouldProceedAfterError:(NSDictionary*)errorDictionary { return YES; } - (void)fileManager:(NSFileManager*)fileManager willProcessPath:(NSString*)path { } @end typedef enum { Tag_nothing, Tag_moreColumns, Tag_lessColumns, Tag_setTitled, Tag_setHasHScroller } TMenuItemTag; @interface browserController : NSObject { NSBrowser *browser; } @end @implementation browserController - (void)menuAction:menuItem { //NSLog (@"method \"menuAction\" invoked with tag: %d\n", [menuItem tag]); switch ([menuItem tag]) { case Tag_nothing: break; case Tag_moreColumns: [browser setMaxVisibleColumns: [browser maxVisibleColumns] + 1]; break; case Tag_lessColumns: [browser setMaxVisibleColumns: [browser maxVisibleColumns] - 1]; break; case Tag_setTitled: [menuItem setState: [menuItem state] ? NSOffState : NSOnState]; [browser setTitled: ([menuItem state] == NSOnState)]; break; case Tag_setHasHScroller: [menuItem setState: [menuItem state] ? NSOffState : NSOnState]; [browser setHasHorizontalScroller: ([menuItem state] == NSOnState)]; break; default: break; } } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *win; ActiveBrowserDelegate * abd; WindowDelegate *wd; NSRect wf = {{100, 100}, {600, 500}}; NSRect bf = {{10, 10}, {580, 350}}; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; //NSLog(@"Starting the application\n"); win = [[NSWindow alloc] initWithContentRect:wf styleMask:style backing:NSBackingStoreRetained defer:NO]; //NSLog(@"Making the active browser delegate\n"); abd = [ActiveBrowserDelegate new]; //NSLog(@"Making the browser\n"); browser = [[NSBrowser alloc] initWithFrame: bf]; [browser setDelegate: abd]; [browser setMaxVisibleColumns: 3]; [browser setAllowsMultipleSelection:NO]; //NSLog(@"Making the window delegate\n"); wd = [WindowDelegate new]; [wd initMembersWith: win and: browser]; //NSLog(@"Setting the window subviews\n"); [win setDelegate: wd]; [[win contentView] addSubview: browser]; //NSLog(@"Making the application menu\n"); { NSMenu *menu, *columns, *options; NSMenuItem *menuItem; SEL ma = @selector(menuAction:); //NSLog(@"Making the main menu\n"); menu = [NSMenu new]; { [[menu addItemWithTitle: @"Columns" action: ma keyEquivalent: @""] setTag: Tag_nothing]; [[menu addItemWithTitle: @"Options" action: ma keyEquivalent: @""] setTag: Tag_nothing]; [[menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"] setTag: Tag_nothing]; } //NSLog(@"Making the sub menu \"Columns\"\n"); columns = [NSMenu new]; [menu setSubmenu: columns forItem: [menu itemWithTitle: @"Columns"]]; { [[columns addItemWithTitle: @"More" action: ma keyEquivalent: @"+"] setTag: Tag_moreColumns]; [[columns addItemWithTitle: @"Less" action: ma keyEquivalent: @"-"] setTag: Tag_lessColumns]; } //NSLog(@"Making the sub menu \"Options\"\n"); options = [NSMenu new]; [menu setSubmenu: options forItem: [menu itemWithTitle:@"Options"]]; { menuItem = [[NSMenuItem alloc] initWithTitle: @"Titled" action: ma keyEquivalent: @""]; [menuItem setState: NSOnState]; [menuItem setTag: Tag_setTitled]; [options addItem: menuItem]; menuItem = [[NSMenuItem alloc] initWithTitle: @"Horizontal scroller" action: ma keyEquivalent: @""]; [menuItem setState: NSOnState]; [menuItem setTag: Tag_setHasHScroller]; [options addItem: menuItem]; } [menu update]; [NSApp setMainMenu: menu]; } //NSLog(@"Displaying\n"); [win setTitle:@"NSBrowser Test (try to resize window !)"]; [[win contentView] display]; [win orderFront:nil]; } @end int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [browserController new]]; [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Classes/NSBrowserTest/.cvsignore0000664000175000017500000000007007235623633022712 0ustar fedorfedor*.app *.debug *.profile *obj GNUmakefile.local .gdbinit gnustep-examples-1.4.0/gui/Classes/NSBrowserTest/GNUmakefile0000664000175000017500000000201507226457600022764 0ustar fedorfedor# # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 APP_NAME = NSBrowserTest NSBrowserTest_OBJC_FILES = nsbrowser.m include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Classes/NSScreenTest/0000775000175000017500000000000012204034626020477 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSScreenTest/.cvsignore0000664000175000017500000000007007235623633022506 0ustar fedorfedor*.app *.debug *.profile *obj GNUmakefile.local .gdbinit gnustep-examples-1.4.0/gui/Classes/NSScreenTest/GNUmakefile0000664000175000017500000000201507226457600022560 0ustar fedorfedor# # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 APP_NAME = NSScreenTest NSScreenTest_OBJC_FILES = screen_main.m include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Classes/NSScreenTest/screen_main.m0000664000175000017500000000762712144672255023165 0ustar fedorfedor/* screen_main -- GNUstep test program to ensure correct function of the NSScreen class. Copyright (C) 2000 Free Software Foundation, Inc. Written by: Gregory John Casamento Date: May 2000 This file is part of GNUstep This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #import #import int main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSApplication *anApplication = nil; NSArray *screenArray = nil; NSEnumerator *screenEnumerator = nil; NSScreen *aScreen = nil; const NSWindowDepth *depths = NULL; BOOL exactMatch = NO; // insert your code here anApplication = [NSApplication sharedApplication]; screenArray = [NSScreen screens]; screenEnumerator = [screenArray objectEnumerator]; // Loop through all of the screens puts("*************** List of all screens connected to the computer"); while((aScreen = [screenEnumerator nextObject])) { NSDictionary *deviceDescription = [aScreen deviceDescription]; NSValue *deviceSize = [deviceDescription objectForKey: NSDeviceSize], *deviceResolution = [deviceDescription objectForKey: NSDeviceResolution]; NSSize screenSize, screenResolution; screenSize = [deviceSize sizeValue]; screenResolution = [deviceResolution sizeValue]; puts("**** Device description ****"); printf("%s\n",[[deviceDescription description] cString]); puts("**** Size and Resolution information ****"); printf("Screen size is %f x %f\n", screenSize.width, screenSize.height ); printf("Screen size in DPI is %f x %f\n", screenResolution.width, screenResolution.height ); } puts("\n**** Various other tests ****"); printf("Components = %"PRIiPTR"\n", NSNumberOfColorComponents(NSCalibratedRGBColorSpace)); printf("NSBestDepth(NSCalibratedRGBColorSpace,8,32,YES,&exactMatch) = %d\n", NSBestDepth(NSCalibratedRGBColorSpace, 8, 32, YES, &exactMatch)); printf("exactMatch = %d\n\n", exactMatch); puts("************* Available window depths..."); depths = (NSWindowDepth *)NSAvailableWindowDepths(); if( depths != NULL ) { int index = 0; for( index = 0; depths[index] != 0; index++ ) { printf("depths[%d]=%d\n",index,depths[index]); printf("bits per sample = %"PRIiPTR"\n", NSBitsPerSampleFromDepth(depths[index])); printf("bits per pixel = %"PRIiPTR"\n", NSBitsPerPixelFromDepth(depths[index])); printf("color space = %s\n", [NSColorSpaceFromDepth(depths[index]) cString]); } } puts("\n************** Supported window depths..."); depths = [[NSScreen mainScreen] supportedWindowDepths]; if( depths != NULL ) { int index = 0; for( index = 0; depths[index] != 0; index++ ) { printf("depths[%d]=%d\n",index,depths[index]); printf("bits per sample = %"PRIiPTR"\n", NSBitsPerSampleFromDepth(depths[index])); printf("bits per pixel = %"PRIiPTR"\n", NSBitsPerPixelFromDepth(depths[index])); printf("color space = %s\n", [NSColorSpaceFromDepth(depths[index]) cString]); } } [pool release]; exit(0); // insure the process exit status is 0 return 0; // ...and make main fit the ANSI spec. } gnustep-examples-1.4.0/gui/Classes/GNUmakefile0000664000175000017500000000211010145033755020227 0ustar fedorfedor# # Gui examples makefile # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ NSBrowserTest \ NSImage \ NSPanelTest \ NSScreenTest include $(GNUSTEP_MAKEFILES)/aggregate.make gnustep-examples-1.4.0/gui/Classes/NSImage/0000775000175000017500000000000012204034626017442 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSImage/nsimage.m0000664000175000017500000001170710145033755021255 0ustar fedorfedor/* nsimage.m Simple application to test NSImage classes. Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: August 1996 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include int write_image (NSImage *image) { NSBitmapImageRep *rep; NSData *data; rep = (NSBitmapImageRep *)[image bestRepresentationForDevice: nil]; if (rep == nil || [[rep class] isEqual: [NSBitmapImageRep class]] == NO) { NSLog(@"no rep or invalid rep"); return -1; } data = [image TIFFRepresentationUsingCompression: NSTIFFCompressionJPEG factor: 128]; if (data == nil) { NSLog(@"error making tiff rep"); return -1; } [data writeToFile: @"bogus.tiff" atomically: NO]; return 0; } @interface MyController : NSObject { NSWindow *mwin; NSImageView *mview; } - (void) applicationDidFinishLaunching: (NSNotification *)not; - (void) menuSet; - readImage: (NSString *)file; - openImage: sender; - copyImage: sender; @end @implementation MyController - openImage: sender { NSOpenPanel *openPanel; int result; openPanel = [NSOpenPanel openPanel]; result = [openPanel runModalForDirectory: nil file: nil types: [NSImage imageUnfilteredFileTypes]]; if (result == NSOKButton) { NSEnumerator *e = [[openPanel filenames] objectEnumerator]; NSString *file; while ((file = (NSString *)[e nextObject])) { [self readImage: file]; } } return self; } - readImage: (NSString *)file { int style; NSImage *image; NSWindow *win; NSRect wf0 = {{200, 200}, {300, 300}}; mview = [[NSImageView alloc] initWithFrame: wf0]; if (mview == nil) return nil; image = [[NSImage alloc] initWithContentsOfFile: file ]; [mview setImage: image]; style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; win = [[NSWindow alloc] initWithContentRect: wf0 styleMask: style backing: NSBackingStoreBuffered defer: NO]; [win setContentView: mview]; [win setTitle:file]; [win orderFrontRegardless]; return self; } - copyImage: sender { NSRect wf0; NSImage *image; NSBitmapImageRep *rep; NSLog(@"copy image"); if (mwin == nil) { NSImageView *v2; NSRect wf1 = {{300, 300}, {100, 100}}; int style; style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; mwin = [[NSWindow alloc] initWithContentRect: wf1 styleMask: style backing: NSBackingStoreBuffered defer: NO]; v2 = [[NSImageView alloc] initWithFrame: wf1]; [mwin setContentView: v2]; [mwin setTitle:@"Image Destination"]; } [mwin orderFront: sender]; wf0 = NSMakeRect((200.0*rand()/RAND_MAX),(200.0*rand()/RAND_MAX),100,100); NSLog(@"Lock on %@ in rect %@", mview, NSStringFromRect(wf0)); [mview lockFocus]; PSsetgray(0); PSmoveto(20,20); PSlineto(100,100); rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect: wf0]; [mview unlockFocus]; image = [[NSImage alloc] initWithSize: wf0.size]; [image addRepresentation: rep]; [[mwin contentView] setImage: image]; [mwin flushWindow]; [[mview window] flushWindow]; return self; } - (void) applicationDidFinishLaunching: (NSNotification *)not { // [self openImage:nil]; } - (void) menuSet { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Open" action: @selector(openImage:) keyEquivalent: @"o"]; [menu addItemWithTitle: @"Copy Image" action: @selector(copyImage:) keyEquivalent: @""]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } @end int main(int argc, char **argv, char** env) { MyController *controller; id pool; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif pool = [NSAutoreleasePool new]; [NSApplication sharedApplication]; controller = [MyController new]; [NSApp setDelegate: controller]; [controller menuSet]; [NSApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Classes/NSImage/GNUmakefile0000664000175000017500000000177607731502124021531 0ustar fedorfedor# # Copyright (C) 2003 Free Software Foundation, Inc. # # Author: Adam Fedor # Date: 2003 # # This file is part of GNUstep. # # 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 APP_NAME = NSImageTest NSImageTest_OBJC_FILES = nsimage.m include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Classes/NSPanelTest/0000775000175000017500000000000012204034626020317 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSPanelTest/icon.tiff0000664000175000017500000000415107226457600022133 0ustar fedorfedorII*v $h!B &l"F%jXa1Àe۶HȏD~%N e4R"zF˝'o$yC4i$wu@E<+λR %D‹dy b3+C#M, P1 *4/*"J|[Jj>~lK=uYv8u ;QmM@3+%r l.=2$o8M@u 8rn(_XkҠލk&SމP  3S6ꪇŧ'O!$mvZUy\ CiV" pߨQ+ȃWQX 93\Aj @du R8aG h͑riX lɷHr^8fW,f2f_B(&1!$;@8z _&xjyyݛ?~n [\8z/Of’hְwIFqpK.ѣ'`0x)e'2o CJ@K#%h?9kNt{K oRȳ+BcWcOA _=RO3ze)5to}/4aCznc )&% W.ԋACfBe:A|JP@l L`޺4?ۥP ZIub88p= `P*.V;TPR?{HW~ƁY$LCn L@ ⃅2H^*!9 pcDb(b] $|V Ex,/쉾uK^Enxjn (Tˇ}t<"@C&b8- ]h5>\M'Q Y,d& (G0T%]Tj95 IR%:3A F^!C׼#)ji @-T9QeŪU/^r).8"B?'cf5<|T X纲AUf9sR&r Sl`<`s#ۭ9.6*~rTR-KK@:ԷUћy12/(Y͈Y3y8u,,NwiHAE%TPr^i 2jmD9w QJt( rAf0G 0È)ӒfyF̬Ó|TcpjUqϸobAr١ ($Fv@U𡲛Y)Թ{#GK6A z'[RQ {KiSRF㏟)GuR7¨G T 'd4LpNfQ%Oҕtib"z_H8ߔ74%HA [`Nd5d)wB#֡ؔҵ(*JVk~% ]YTΔe% --0  18-n=R/home/pascal/works/gnustep/NSPanelTest/icon.tiffgnustep-examples-1.4.0/gui/Classes/NSPanelTest/.cvsignore0000664000175000017500000000007007235623633022326 0ustar fedorfedor*.app *.debug *.profile *obj GNUmakefile.local .gdbinit gnustep-examples-1.4.0/gui/Classes/NSPanelTest/icon.xcf0000664000175000017500000001472407226457600021772 0ustar fedorfedorgimp xcf file--;--Panel     ----QU U U U UUUUUU UUUUUUUUUUUUUUUUUUUU?QU U U U UUUUUU UUUUUUUUUUUUUUUUUUUU?QU U U U UUUUUU UUUUUUUUUUUUUUUUUUUU?Q#--Color     ----<qiiaYYQQIQqaYQIA80(8IyiaYQIA80( 잖yiaYQIA80( yqiaQIIA80( (yqaYQIIA80(( yqaYYQIA800( 800yqiaYQIAA80( (Q yqiaYQQIA800( qǦ(qiaaYQIAA80( (yqiaYQQIA800( (qyqiaaYQIAA80( (߶iqqiaYQQIA800( (ϾyyqiaaYQIAA80( (ϾYqqiaYQQIA800( (ǶYyqiaaYQIAA80( (ǾiyqiaYQQIA800( (ǾyYyqiaaYQIAA80( (ǾYyqiaYQQIA80( (Ǿa8qqiaaYQIAA8( (Ͼﶮyi8iyqiaYQQIA80 (Ͼyi0iyiaaYQIA80  (Ƕ񦖎qa0iqiaYQQIA8(   ( iǶia0iqiaYQIA80(q㞖϶iY0iyqaYQQIA80 (ϾyiY0ayiaYQIAA80 ( ׾yiYA aqqiYQQIA80( (ϾyaQ(QaiaYQIAA80( (ǾqaY0iaaYQIA80( (ǾqiYA iaYQIAA80( (ǾyqaQ(QIA800( (ǾqaY8IQIIA80( (ǾyqYQ(IAA80( (ǾyqaQ880( (ǾyqaQ0A80 (ǾqiaQ( A((ǾqaaY8iaYQ8 0 yǾqaQI0aYQI0(0ǾyqaQ0 YQI80(ǾqiaQ(QIA0( 0ǾqaaYI0 QIA0( 0yyyqqaQQ8  QA0( (QqyyqiaY8  A0 ( 00( *<umie]YUQMUuqeYQIA80(8IꚦymeYQIA84,  ꚖymaYQIA80,$ 馲}qiaUMIA80,$(閲}qe]UMIA84,(  閮yqe]YQIE<40($844誮yqiaYUMEA84,$  (U 袪}qia]UQIE<40($uǦ(鮢umeaYUMEA84,$  ,箪yqia]UQIE<40($,q玦}qmeaYUMEA84,$  ,۶i禢uqia]UQIE<40($,Ͼy犦}qmeaYUMEA84,$  ,˾]皞uqia]UQIE<40($,ǶY螚}qmeaYUMEA84,$  ,úmyqia]UQIE<40($,ǾyY}qmeaYUMEA84,$  ,ú]yqia]UQIE<4,$ ,úe<qumeaYUMEA8,$,Ͼ}m8i}qia]UQIE<0$ ,˺yi4iymeaYUME<4$ ,Ƕqe4iuma]UQIA8, $$$ (  mòma4iuiaYUME<4( uؚ϶m]4i}qe]UQIE<0$,Ϻyi]4eymaYUMEA80$ ,Ӻ}i]A auqi]UQIE<4,  ,˺yaU,UeiaYUMEA80(  ,úqaY0ieaYQIE<4,$,þuiYA ie]UMEA84,$,Ǿ}qeU,QUUQIE<40(  ,úue]<MQMIA80,$ ,úyq]Q(IEE80,$ ,þ}ueU884,  ,Ǿ}ueU4E<0  ,ǾumaQ(E, ,úuea]8ime]Q<$0 }þueQM4 ae]QI4(4Ǿ}qaQ0 YQI<0(úuiaU,UQIA4,$4ǾqeeYM4 UMA4,$  4y}yuqqaUQ8  QE4( ,Qqy}yuqmiea]<$$ E4  ,$$4400,$$)<yqiiaaYQQqqaYQIA80(8IyiaYQIA80( yiaYQIA80( yqiaQIIA80( (yqaYQIIA80(( yqaYYQIA800( 8 yqiaYQIAA80( (Q yqiaYQQIA800( qǦ(qiaaYQIAA80( (yqiaYQQIA800( (qyqiaaYQIAA80( (߶iqqiaYQQIA800( (ϾyyqiaaYQIAA80( (ϾYqqiaYQQIA800( (ǶYyqiaaYQIAA80( (ǾiyqiaYQQIA800( (ǾyYyqiaaYQIAA80( (ǾYyqiaYQQIA80( (Ǿa8qqiaaYQIAA8( (Ͼﶮyi8iyqiaYQQIA80 (Ͼyi0iyiaaYQIA80  (Ƕ񦖎qa0iqiaYQQIA8(   ( iǶia0iqiaYQIA80(q㞖϶iY0iyqaYQQIA80 (ϾyiY0ayiaYQIAA80 ( ׾yiYA aqqiYQQIA80( (ϾyaQ(QaiaYQIAA80( (ǾqaY0iaaYQIA80( (ǾqiYA iaYQIAA80( (ǾyqaQ(QIA800( (ǾqaY8IQIIA80( (ǾyqYQ(IAA80( (ǾyqaQ880( (ǾyqaQ0A80 (ǾqiaQ( A((ǾqaaY8iaYQ8 0 yǾqaQI0aYQI0(8ǾyqaQ0 YQI80(ǾqiaQ(QIA0( 0ǾqaaYI0 QIA0( 0yyyqqaQQ8  QA0( (QqyyqiaY8  A0 ( 00( *<  &'())****G*****)(gnustep-examples-1.4.0/gui/Classes/NSPanelTest/NSPanelTest_main.m0000664000175000017500000000315111401540533023636 0ustar fedorfedor/***************************************************************************** FILE: NSPanelTest_main.m LANGUAGE: Objective-C SYSTEM: GNUstep USER-INTERFACE: None DESCRIPTION This is the entry point of the NSPanelTest application. AUTHORS Pascal J. Bourguignon MODIFICATIONS 2000-03-05 Creation. BUGS LEGAL Written by: Pascal J. Bourguignon Copyright (C) 2000 Free Software Foundation, Inc. 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 *****************************************************************************/ #import #import int main(int argc, const char **argv) { [NSApplication sharedApplication]; [NSApp setDelegate: [NSPanelTest new]]; return NSApplicationMain(argc, argv); } /*** NSPanelTest_main.m -- 2000-03-10 13:11:30 -- PJB ***/ gnustep-examples-1.4.0/gui/Classes/NSPanelTest/GNUmakefile0000664000175000017500000000047610126322231022371 0ustar fedorfedorinclude $(GNUSTEP_MAKEFILES)/common.make APP_NAME=NSPanelTest NSPanelTest_RESOURCE_FILES= \ icon.tiff \ Test.strings NSPanelTest_RESOURCE_DIRS= NSPanelTest_OBJC_FILES=\ NSPanelTest.m \ NSPanelTest_main.m ADDITIONAL_LDFLAGS = #-lefence ADDITIONAL_INCLUDE_DIRS = include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Classes/NSPanelTest/Test.strings0000664000175000017500000000041507226457600022662 0ustar fedorfedor"Testing Localized" = "Test de localisation"; /* Titre */ "This message should be read in French." = "Ce message doit tre en franais."; /* Message */ "Yes" = "Oui"; /* default button */ "No" = "Non"; /* alternate button */ "May be" = "Peut-tre"; /* other button */ gnustep-examples-1.4.0/gui/Classes/NSPanelTest/NSPanelTest.m0000664000175000017500000006203712144667342022657 0ustar fedorfedor/***************************************************************************** FILE: NSPanelTest.m LANGUAGE: Objective-C SYSTEM: GNUstep USER-INTERFACE: None DESCRIPTION This application is a test bed for the NSPanel functions. AUTHORS Pascal J. Bourguignon MODIFICATIONS 2000-03-05 Creation. BUGS LEGAL Written by: Pascal J. Bourguignon Copyright (C) 2000 Free Software Foundation, Inc. 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 *****************************************************************************/ #import "NSPanelTest.h" #include //////////////////////////////////////////////////////////////////////// @interface PanelConstructor:NSObject { } // This is an abstract class. Please use the subclasses. -(NSString*)panelName; -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; @end //PanelConstructor; //////////////////////////////////////////////////////////////////////// @implementation PanelConstructor -(NSString*)panelName { [self subclassResponsibility:_cmd]; return nil; } -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { [self subclassResponsibility:_cmd]; return nil; }//getPanelTitled:...; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { [self subclassResponsibility:_cmd]; return 0; }//runPanelTitled:...; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { [self subclassResponsibility:_cmd]; return 0; }//runLocalizedPanelTitled:...; @end //PanelConstructor; //////////////////////////////////////////////////////////////////////// @interface AlertPanelConstructor:PanelConstructor { } /* RETURN: the singleton instance of this class. */ +(id)instance; // overwrites all the methods of its superclass. @end //AlertPanelConstructor; //////////////////////////////////////////////////////////////////////// @implementation AlertPanelConstructor +(id)instance { static id instance=nil; if(instance==nil){ instance=[[self alloc]init]; } return(instance); }//instance; -(NSString*)panelName { return(@"Alert Panel"); }//panelName; -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { return(NSGetAlertPanel(title,format,desfaux,alternate,other,forFormat)); }//getPanelTitled:...; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { return(NSRunAlertPanel(title,format,desfaux,alternate,other,forFormat)); }//runPanelTitled:...; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { #ifndef STRICT_MACOS_X return(NSRunLocalizedAlertPanel(table,title,format,desfaux,alternate, other,forFormat)); #else return(NSRunAlertPanel(@"Unavailable Function", @"The function NSRunLocalizedAlertPanel is not" @"available on STRICT_MACOS_X hosts.\n" @"%@", @"OK",nil,nil, @"Please use GNUstep instead of MacOSX to " @"profit of all the advantages of a good " @"OpenStep implementation.")); #endif }//runLocalizedPanelTitled:...; @end //AlertPanelConstructor; //////////////////////////////////////////////////////////////////////// @interface CriticalPanelConstructor:PanelConstructor { } +(id)instance; /* RETURN: the singleton instance of this class. */ // overwrites all the methods of its superclass. @end //CriticalPanelConstructor; //////////////////////////////////////////////////////////////////////// @implementation CriticalPanelConstructor +(id)instance { static id instance=nil; if(instance==nil){ instance=[[self alloc]init]; } return(instance); }//instance; -(NSString*)panelName { return(@"Critical Panel"); }//panelName; -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { #ifndef STRICT_OPENSTEP return(NSGetCriticalAlertPanel(title,format,desfaux,alternate, other,forFormat)); #else return(NSGetAlertPanel(@"Unavailable Function" @"The function NSGetCriticalAlertPanel is not" @"available on STRICT_OPENSTEP hosts.\n" @"%@", @"OK",nil,nil, @"Please use GNUstep instead of MacOSX to " @"profit of all the advantages of a true and " @"untarnished OpenStep implementation.")); #endif }//getPanelTitled:...; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { #ifndef STRICT_OPENSTEP return(NSRunCriticalAlertPanel(title,format,desfaux,alternate, other,forFormat)); #else return(NSRunAlertPanel(@"Unavailable Function" @"The function NSRunCriticalAlertPanel is not" @"available on STRICT_OPENSTEP hosts.\n" @"%@", @"OK",nil,nil, @"Please use GNUstep instead of MacOSX to " @"profit of all the advantages of a true and " @"untarnished OpenStep implementation.")); #endif }//getPanelTitled:...; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { // Not available for critical panels. return 0; }//runLocalizedPanelTitled:...; @end //CriticalPanelConstructor; //////////////////////////////////////////////////////////////////////// @interface InformationalPanelConstructor:PanelConstructor { } +(id)instance; /* RETURN: the singleton instance of this class. */ // overwrites all the methods of its superclass. @end //InformationalPanelConstructor; //////////////////////////////////////////////////////////////////////// @implementation InformationalPanelConstructor +(id)instance { static id instance=nil; if(instance==nil){ instance=[[self alloc]init]; } return(instance); }//instance; -(NSString*)panelName { return(@"Informational Panel"); }//panelName; -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { #ifndef STRICT_OPENSTEP return(NSGetInformationalAlertPanel(title,format,desfaux,alternate, other,forFormat)); #else return(NSGetAlertPanel(@"Unavailable Function" @"The function NSGetInformationalAlertPanel is " @"not available on STRICT_OPENSTEP hosts.\n" @"%@", @"OK",nil,nil, @"Please use GNUstep instead of MacOSX to " @"profit of all the advantages of a true and " @"untarnished OpenStep implementation.")); #endif }//getPanelTitled:...; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { #ifndef STRICT_OPENSTEP return(NSRunInformationalAlertPanel(title,format,desfaux,alternate, other,forFormat)); #else return(NSRunAlertPanel(@"Unavailable Function" @"The function NSRunInformationalAlertPanel is " @"not available on STRICT_OPENSTEP hosts.\n" @"%@", @"OK",nil,nil, @"Please use GNUstep instead of MacOSX to " @"profit of all the advantages of a true and " @"untarnished OpenStep implementation.")); #endif }//getPanelTitled:...; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { // Not available for informational panels. return 0; }//runLocalizedPanelTitled:...; @end //InformationalPanelConstructor; //////////////////////////////////////////////////////////////////////// @interface RandomPanelConstructor:PanelConstructor { } // This is an abstract class. Please use the subclasses. -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; @end //RandomPanelConstructor; //////////////////////////////////////////////////////////////////////// @implementation RandomPanelConstructor static PanelConstructor* choice[3]; +(void)initialize { choice[0]=[[AlertPanelConstructor instance]retain]; choice[1]=[[CriticalPanelConstructor instance]retain]; choice[2]=[[InformationalPanelConstructor instance]retain]; }//initialize; +(id)instance { static id instance=nil; if(instance==nil){ instance=[[self alloc]init]; } return(instance); }//instance; -(int)random { return(rand()%3); }//random; -(NSString*)panelName { return(@"Either Alert, Critical or Informational"); }//panelName; -(id)getPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { return([choice[[self random]] getPanelTitled:title withFormat:format defaultButton:desfaux alternateButton:alternate otherButton:other andWithObject:forFormat]); }//getPanelTitled:...; -(int)runPanelTitled:(NSString*)title withFormat:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat; { return([choice[[self random]] runPanelTitled:title withFormat:format defaultButton:desfaux alternateButton:alternate otherButton:other andWithObject:forFormat]); }//runPanelTitled:...; -(int)runLocalizedPanelFromTable:(NSString*)table withTitle:(NSString*)title format:(NSString*)format defaultButton:(NSString*)desfaux alternateButton:(NSString*)alternate otherButton:(NSString*)other andWithObject:(id)forFormat { return([choice[[self random]] runLocalizedPanelFromTable:table withTitle:title format:format defaultButton:desfaux alternateButton:alternate otherButton:other andWithObject:forFormat]); }//runLocalizedPanelTitled:...; @end //RandomPanelConstructor; //////////////////////////////////////////////////////////////////////// @implementation NSPanelTest -(id)init { self=[super init]; if(self!=nil){ constructor=[AlertPanelConstructor instance]; } return(self); }//init; -(void)dealloc { [super dealloc]; }//dealloc; -(void)applicationWillFinishLaunching:(NSNotification*)notification { [NSApp setMainMenu:[self makeMenu]]; }//applicationDidFinishLaunching:; // tests: -testHighMessagePanel:sender { NSMutableString* message=[NSMutableString stringWithFormat: @"Let's see how many lines can be shown on this screen...\n"]; int i; int result; for(i=0;i<100;i++){ [message appendFormat:@"Line %d\n",i]; } result=[constructor runPanelTitled:@"Testing Height" withFormat:message defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; NSLog(@"Testing Height NSRunAlertPanel returned %d\n",result); return(self); }//testHighMessagePanel:; -testLargeMessagePanel:sender { NSMutableString* message=[NSMutableString stringWithFormat: @"A long line: "]; int i; int result; message=[NSMutableString stringWithFormat:@"Hello"]; for(i=0;i<100;i++){ [message appendFormat:@", number %d",i]; } result=[constructor runPanelTitled:@"Testing Width" withFormat:message defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; NSLog(@"Testing Width NSRunAlertPanel returned %d\n",result); return(self); }//testLargeMessagePanel:; -testSmallPanel:sender { int result; result=[constructor runPanelTitled:@"Testing Small" withFormat:@"Small?" defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; NSLog(@"Testing Small NSRunAlertPanel returned %d\n",result); return self; }//testSmalPanel:; -testLargeTitlePanel:sender { int result; result=[constructor runPanelTitled:@"Testing with a very, very, very long title, that should go well over one screen width, even on very, very, very large screens, and this is just to see what would happen in such a case." withFormat:@"Large enough?" defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; NSLog(@"Testing Large Title NSRunAlertPanel returned %d\n",result); return self; }//testLargeTitlePanel:; -testGettingPanel:sender { int result; NSPanel* panel; panel=[constructor getPanelTitled:@"Getting a panel" withFormat:@"This panel was built with \n" @"NSGetAlertPanel." defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; if(panel!=nil){ result=[[NSApplication sharedApplication]runModalForWindow:panel]; NSLog(@"Testing NSGetAlertPanel, runModalForWindow returned %d\n",result); if([panel isVisible]){ [panel close]; } NSReleaseAlertPanel(panel); } return self; }//testGettingPanel:; -testLocalizedPanel:sender { int result; result=[constructor runLocalizedPanelFromTable:@"Test" withTitle:@"Testing Localized" format:@"This message should be read in French." defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; NSLog(@"Testing NSRunLocalizedAlertPanel returned %d\n",result); return self; }//testLocalizedPanel:; -testMultilineBtnPanel:sender { int result; result=[constructor runPanelTitled:@"Testing With Multiline Buttons" withFormat:@"Two lines of message\n" @"and four lines of button." defaultButton:@"Yes!\nOui !\nJa !\n¡ Si !" alternateButton:@"No" otherButton:@"May be" andWithObject:nil]; NSLog(@"Testing multiline buttons NSRunAlertPanel returned %d\n", result); return self; }//testMultilineBtnPanel:; -testTitleLessPanel:sender { int result; result=[constructor runPanelTitled:nil withFormat:@"This panel should be titleless,\n" @"or not, depending on its kind:" @"%@." defaultButton:@"Yes" alternateButton:@"No" otherButton:@"May be" andWithObject:[constructor panelName]]; NSLog(@"Testing titleless NSRunAlertPanel returned %d\n",result); return self; }//testTitleLessPanel; -testMissingBtnRunPanel:sender { int buttons; for(buttons=0;buttons<8;buttons++){ int result=[constructor runPanelTitled:@"Testing NSRunModalPanel With Missing Buttons" withFormat:@"When no button is available,\n" @"you should be able to close the\n" @"panel with the escape key.\n" @"(%@/7)" defaultButton:((buttons&1)?@"Yes":nil) alternateButton:((buttons&2)?@"No":nil) otherButton:((buttons&4)?@"May Be":nil) andWithObject:[NSNumber numberWithInt:buttons]]; NSLog(@"Testing buttons (%d/7) NSRunAlertPanel returned %d\n",buttons,result); } return self; }//testMissingButtonRunPanel:; -testMissingBtnGetPanel:sender { int buttons; for(buttons=0;buttons<8;buttons++){ NSPanel* panel=[constructor getPanelTitled:@"Testing NSGetModalPanel With Missing Buttons" withFormat:@"When no button is available,\n" @"you should be able to close the\n" @"panel with the escape key.\n" @"(%@/7)" defaultButton:((buttons&1)?@"Yes":nil) alternateButton:((buttons&2)?@"No":nil) otherButton:((buttons&4)?@"May Be":nil) andWithObject:[NSNumber numberWithInt:buttons]]; if(panel!=nil){ int result=[[NSApplication sharedApplication] runModalForWindow:panel]; NSLog(@"Testing buttons (%d/7) NSGetAlertPanel, runModalForWindow returned %d\n",buttons,result); if([panel isVisible]){ [panel close]; } NSReleaseAlertPanel(panel); } } return self; }//testMissingBtnGetPanel:; -testAll:sender { [self testHighMessagePanel:sender]; [self testLargeMessagePanel:sender]; [self testSmallPanel:sender]; [self testLargeTitlePanel:sender]; [self testGettingPanel:sender]; [self testLocalizedPanel:sender]; [self testMultilineBtnPanel:sender]; [self testTitleLessPanel:sender]; [self testMissingBtnRunPanel:sender]; [self testMissingBtnGetPanel:sender]; return(self); }//testAll:; // actions: -showInformations:sender { [[NSApplication sharedApplication] orderFrontStandardInfoPanel: self]; return(self); }//showInformations:; -useAlertPanels:sender { constructor=[AlertPanelConstructor instance]; return(self); }//useAlertPanels:; -useCriticalPanels:sender { constructor=[CriticalPanelConstructor instance]; return(self); }//useCriticalPanels:; -useInformationalPanels:sender { constructor=[InformationalPanelConstructor instance]; return(self); }//useInformationalPanels:; -useRandomPanels:sender { constructor=[RandomPanelConstructor instance]; return(self); }//useRandomPanels:; @end // NSPanelTest; //////////////////////////////////////////////////////////////////////// @implementation NSPanelTest(Protected) -(NSMenu*)makeMenu { id item; NSMenu* menu; NSMenu* subm; #define makeitem(menu,tit,sel,key) \ item=[menu addItemWithTitle:tit action:@selector(sel) \ keyEquivalent:key]; [item setEnabled:YES]; [item setTarget:self] menu=[[NSMenu alloc] initWithTitle:[[self class]description]]; makeitem(menu,@"Informations", showInformations:, @"i"); subm=[[NSMenu alloc] initWithTitle:@"Panel Kind"]; makeitem(subm,@"Use Alert Panels", useAlertPanels:, @""); makeitem(subm,@"Use Critical Panels", useCriticalPanels:, @""); makeitem(subm,@"Use Informational Panels",useInformationalPanels:,@""); makeitem(subm,@"Use Random Panels", useRandomPanels:, @""); makeitem(menu,@"Panel Kind", submenuAction:, @""); [menu setSubmenu:subm forItem:item]; subm=[[NSMenu alloc] initWithTitle:@"Tests"]; makeitem(subm,@"All", testAll:, @"0"); makeitem(subm,@"High Message", testHighMessagePanel:, @"1"); makeitem(subm,@"Large Message", testLargeMessagePanel:,@"2"); makeitem(subm,@"Small Message", testSmallPanel:, @"3"); makeitem(subm,@"Large Title", testLargeTitlePanel:, @"4"); makeitem(subm,@"NSGetAlertPanel", testGettingPanel:, @"5"); makeitem(subm,@"NSRunLocalizedAlertPanel",testLocalizedPanel:, @"6"); makeitem(subm,@"Multiline Buttons", testMultilineBtnPanel:,@"7"); makeitem(subm,@"Without Title", testTitleLessPanel:, @"8"); makeitem(subm,@"Missing Buttons (Run)", testMissingBtnRunPanel:, @"9"); makeitem(subm,@"Missing Buttons (Get)", testMissingBtnGetPanel:, @"a"); makeitem(menu,@"Tests", submenuAction:, @""); [menu setSubmenu:subm forItem:item]; makeitem(menu,@"Hide", hide:, @"h"); makeitem(menu,@"Quit", terminate:, @"q"); [menu sizeToFit]; return(menu); }//makeMenu; @end // NSPanelTest(Protected). /*** NSPanelTest.m -- 2000-03-10 13:11:30 -- PJB ***/ gnustep-examples-1.4.0/gui/Classes/NSPanelTest/NSPanelTest.h0000664000175000017500000000430610126322231022624 0ustar fedorfedor/***************************************************************************** FILE: NSPanelTest.h LANGUAGE: Objective-C SYSTEM: GNUstep USER-INTERFACE: None DESCRIPTION This application is a test bed for the NSPanel functions. AUTHORS Pascal J. Bourguignon MODIFICATIONS 2000-03-05 Creation. BUGS LEGAL Written by: Pascal J. Bourguignon Copyright (C) 2000 Free Software Foundation, Inc. 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 *****************************************************************************/ #import #import @interface NSPanelTest : NSObject { id constructor; } -(id)init; -(void)applicationWillFinishLaunching:(NSNotification*)notification; // actions: -testHighMessagePanel:sender; -testLargeMessagePanel:sender; -testSmallPanel:sender; -testLargeTitlePanel:sender; -testGettingPanel:sender; -testLocalizedPanel:sender; -testMultilineBtnPanel:sender; -testTitleLessPanel:sender; -testMissingBtnRunPanel:sender; -testMissingBtnGetPanel:sender; -testAll:sender; -useAlertPanels:sender; -useCriticalPanels:sender; -useInformationalPanels:sender; -useRandomPanels:sender; @end // NSPanelTest; @interface NSPanelTest(Protected) -(NSMenu*)makeMenu; @end // NSPanelTest(Protected). /*** NSPanelTest.h -- 2000-03-10 13:11:30 -- PJB ***/ gnustep-examples-1.4.0/gui/Classes/NSPanelTest/NSPanelTestInfo.plist0000664000175000017500000000062410126322231024343 0ustar fedorfedor{ ApplicationName = "NSPanelTest"; ApplicationDescription = "Test bed application for the NSPanel functions."; ApplicationRelease = "1.1"; FullVersionID = "1.1"; Authors = ("Pascal J. Bourguignon "); Copyright = "Copyright (c) Free Software Foundation, Inc."; CopyrightDescription = "This program is released under the GNU General Public License"; NSIcon = icon.tiff; } gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/0000775000175000017500000000000012204034626022061 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/0000775000175000017500000000000012204034626023453 5ustar fedorfedorgnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/README0000664000175000017500000000220107421651232024331 0ustar fedorfedorThis is not a vanilla example, because it shows how to run an auxiliary thread in background, and to display a progress indicator for the work of the auxiliary thread in the main thread. Before you rush at the example and try to copy it, I want to stress that if you can do without threads, it's better. It's likely that you can implement the same thing using the gnustep-gui run-loop, and that might well run faster and be easier to write, debug, profile, and maintain. If you still want to use threads, then you need to know that this requires a lot of attention because the gnustep-gui library is not thread-safe, so you must always have at most one thread accessing the gui library at a time. In this example, we set up a 'shared area' where the auxiliary thread saves information about its state. At regular intervals (every 0.1 second approximately), the main thread polls the shared area to know what the state of the thread is, and displays the state on screen. The shared area is protected by a lock, not particularly relevant in this case, but essential if you are actually passing more complex information in the shared area. Nicola gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/AuxiliaryThread.m0000664000175000017500000000253407421651232026737 0ustar fedorfedor/* -*-objc-*- Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 "AuxiliaryThread.h" #include "SharedArea.h" /* for sleep */ #include @implementation AuxiliaryThread + (void)start: (id)unused { double advancement = 0.0; set_is_auxiliary_thread_running (YES); set_progress_indicator (advancement); /* This is where the thread would do its job ... here we do nothing. */ while (advancement < 100) { sleep (1); advancement += 1.366; set_progress_indicator (advancement); } set_progress_indicator (100); set_is_auxiliary_thread_running (NO); } @end gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/SharedArea.h0000664000175000017500000000251107421651232025625 0ustar fedorfedor/* Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 SHARED_AREA_H #define SHARED_AREA_H /* Must be called before any thread action begins. */ void set_up_shared_area (); /* The main thread calls this to read. */ double progress_indicator (); /* The main thread calls this to know if the auxliary thread is running. */ BOOL is_auxiliary_thread_running (); /* The auxiliary thread calls this to write. */ void set_progress_indicator (double value); /* The auxiliary thread calls this to write. */ void set_is_auxiliary_thread_running (BOOL flag); #endif /* SHARED_AREA_H */ gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/AuxiliaryThread.h0000664000175000017500000000176207421651232026734 0ustar fedorfedor/* -*-objc-*- Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 AUXILIARY_THREAD_H #define AUXILIARY_THREAD_H #include @interface AuxiliaryThread : NSObject + (void)start: (id)unused; @end #endif AUXILIARY_THREAD_H gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/SharedArea.m0000664000175000017500000000270707421651232025641 0ustar fedorfedor/* Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 #include "SharedArea.h" static double progress_index = 0; static BOOL is_running = NO; static NSLock *lock; void set_up_shared_area () { lock = [NSLock new]; } double progress_indicator () { double value; [lock lock]; value = progress_index; [lock unlock]; return value; } BOOL is_auxiliary_thread_running () { BOOL value; [lock lock]; value = is_running; [lock unlock]; return value; } void set_progress_indicator (double value) { [lock lock]; progress_index = value; [lock unlock]; } void set_is_auxiliary_thread_running (BOOL flag) { [lock lock]; is_running = flag; [lock unlock]; } gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/GNUmakefile0000664000175000017500000000202407421651232025526 0ustar fedorfedor# # Copyright (C) 2002 Free Software Foundation, Inc. # # Author: Nicola Pero # # 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 OBJCFLAGS += -Wall APP_NAME = NSProgressIndicator NSProgressIndicator_OBJC_FILES = \ main.m MainThread.m SharedArea.m AuxiliaryThread.m include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/main.m0000664000175000017500000000264007421651232024562 0ustar fedorfedor/* Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 #include #include "MainThread.h" #include "SharedArea.h" int main (void) { NSAutoreleasePool *pool; NSMenu *mainMenu; pool = [NSAutoreleasePool new]; [NSApplication sharedApplication]; mainMenu = AUTORELEASE ([NSMenu new]); [mainMenu addItemWithTitle: @"Start" action: @selector (start:) keyEquivalent: @"s"]; [mainMenu addItemWithTitle: @"Quit" action: @selector (terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: mainMenu]; set_up_shared_area (); [NSApp setDelegate: [MainThread new]]; [NSApp run]; return 0; } gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/ChangeLog0000664000175000017500000000040607421651232025230 0ustar fedorfedorThu Jan 17 20:34:43 2002 Nicola Pero * README: New. * GNUmakefile: New. * main.m: New. * SharedArea.m: New. * SharedArea.h: New. * MainThread.m: New. * MainThread.h: New. * AuxiliaryThread.m: New. * AuxiliaryThread.h: New. gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/MainThread.m0000664000175000017500000000642307722470343025663 0ustar fedorfedor/* -*-objc-*- Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 #include #include "SharedArea.h" #include "AuxiliaryThread.h" #include @implementation MainThread - (id) init { GSVbox *vbox; self = [super init]; vbox = [GSVbox new]; [vbox setBorder: 20]; [vbox setDefaultMinYMargin: 20]; pi = [[NSProgressIndicator alloc] initWithFrame: NSMakeRect (0, 0, 360, 20)]; [pi setIndeterminate: NO]; [pi setMinValue: 0]; [pi setMaxValue: 100]; [pi setAutoresizingMask: NSViewNotSizable]; [vbox addView: pi enablingYResizing: NO]; RELEASE (pi); field = AUTORELEASE ([NSTextField new]); [field setSelectable: YES]; [field setEditable: NO]; [field setBezeled: NO]; [field setDrawsBackground: NO]; [field setStringValue: @"Status: Running auxiliary thread ... XXX.XXX%"]; [field sizeToFit]; [field setStringValue: @"Status: Idle"]; [field setAutoresizingMask: NSViewWidthSizable]; [vbox addView: field enablingYResizing: NO]; RELEASE (field); window = [[NSWindow alloc] initWithContentRect: NSMakeRect (200, 300, [vbox frame].size.width, [vbox frame].size.height) styleMask: (NSTitledWindowMask | NSMiniaturizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [window setTitle: @"NSProgressIndicator"]; [window setContentView: vbox]; RELEASE (vbox); return self; } - (void)dealloc { RELEASE (window); [super dealloc]; } - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; { [window orderFront: self]; } - (void)start: (id)sender { if (timer != nil) { NSLog (@"Already running ... ignoring!"); return; } [field setStringValue: @"Status: Running auxiliary thread ..."]; [NSThread detachNewThreadSelector: @selector(start:) toTarget: [AuxiliaryThread class] withObject: nil]; timer = [NSTimer scheduledTimerWithTimeInterval: 0.1 target: self selector: @selector(updateProgressIndicator:) userInfo: nil repeats: YES]; RETAIN (timer); } - (void)updateProgressIndicator: (NSTimer *)t { [pi setDoubleValue: progress_indicator ()]; if (! is_auxiliary_thread_running ()) { [timer invalidate]; DESTROY (timer); [field setStringValue: @"Status: Idle"]; } else { NSString *status; status = [NSString stringWithFormat: @"Status: Running auxiliary thread ... %2.1f%%", progress_indicator ()]; [field setStringValue: status]; } } @end gnustep-examples-1.4.0/gui/Classes/NSProgressIndicator/Threads/MainThread.h0000664000175000017500000000235607421651232025651 0ustar fedorfedor/* -*-objc-*- Copyright (C) 2002 Free Software Foundation, Inc. Author: Nicola Pero 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 MAIN_THREAD_H #define MAIN_THREAD_H #include @class NSProgressIndicator, NSTextField, NSWindow; @interface MainThread : NSObject { NSTimer *timer; NSProgressIndicator *pi; NSTextField *field; NSWindow *window; } - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; - (void)start: (id)sender; - (void)updateProgressIndicator: (NSTimer *)timer; @end #endif /* MAIN_THREAD_H */ gnustep-examples-1.4.0/gui/Calculator/0000775000175000017500000000000012204034626016653 5ustar fedorfedorgnustep-examples-1.4.0/gui/Calculator/CalcFace.h0000664000175000017500000000266607143631314020462 0ustar fedorfedor/* CalcFace.h: Frontend of Calculator.app Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 "CalcTypes.h" @class CalcBrain; @interface CalcFace: NSWindow { NSButton *buttons[18]; NSTextField *display; } // Set the corresponding brain -(void) setBrain: (CalcBrain *)aBrain; // Display a number -(void) setDisplayedNumber: (double)aNumber withSeparator: (BOOL)displayDecimalSeparator fractionalDigits: (int)fractionalDigits; // Tell the user a calculation error occurred -(void) setError; // Display the window after launching the app - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; @end gnustep-examples-1.4.0/gui/Calculator/CalcBrain.h0000664000175000017500000000265706777203464020674 0ustar fedorfedor/* CalcBrain.h: Brain of Calculator.app Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 "CalcTypes.h" @class CalcFace; @interface CalcBrain: NSObject { CalcFace *face; double result; double enteredNumber; calcOperation operation; int fractionalDigits; BOOL decimalSeparator; BOOL editing; } // Set the corresponding face -(void) setFace: (CalcFace *)aFace; // The various buttons -(void) clear: (id)sender; -(void) equal: (id)sender; -(void) digit: (id)sender; -(void) decimalSeparator: (id)sender; -(void) operation: (id)sender; -(void) squareRoot: (id)sender; // Jump here on calculation errors -(void) error; @end gnustep-examples-1.4.0/gui/Calculator/.cvsignore0000664000175000017500000000004607017344202020653 0ustar fedorfedor*.app *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/Calculator/CalcTypes.h0000664000175000017500000000205006777203464020730 0ustar fedorfedor/* CalcTypes.h: Types for Calculator.app Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 CALC_TYPES #define CALC_TYPES typedef enum { none, addition, subtraction, multiplication, division } calcOperation; #endif /* CALC_TYPES */ gnustep-examples-1.4.0/gui/Calculator/CalcFace.m0000664000175000017500000001764111707270531020467 0ustar fedorfedor/* CalcFace.m: Front-end of Calculator.app Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include "CalcFace.h" // // Thanks to Andrew Lindesay for drawing the app icon, // and for suggestions on the window layout. // @implementation CalcFace: NSWindow -(id)init { int i; // Display display = [[NSTextField alloc] initWithFrame: NSMakeRect (40, 84, 182, 24)]; [display setEditable: NO]; // [display setScrollable: YES]; [display setBezeled: YES]; [display setDrawsBackground: YES]; [display setAlignment: NSRightTextAlignment]; // Numbers buttons[0] = [[NSButton alloc] initWithFrame: NSMakeRect (77, 3, 34, 24)]; [buttons[0] setButtonType: NSToggleButton]; [buttons[0] setTitle: @"0"]; [buttons[0] setTag: 0]; [buttons[0] setState: NO]; [buttons[0] setAction: @selector(digit:)]; [buttons[0] setKeyEquivalent: @"0"]; buttons[1] = [[NSButton alloc] initWithFrame: NSMakeRect (114, 3, 34, 24)]; [buttons[1] setButtonType: NSToggleButton]; [buttons[1] setTitle: @"1"]; [buttons[1] setTag: 1]; [buttons[1] setState: NO]; [buttons[1] setAction: @selector(digit:)]; [buttons[1] setKeyEquivalent: @"1"]; buttons[2] = [[NSButton alloc] initWithFrame: NSMakeRect (151, 3, 34, 24)]; [buttons[2] setButtonType: NSToggleButton]; [buttons[2] setTitle: @"2"]; [buttons[2] setTag: 2]; [buttons[2] setState: NO]; [buttons[2] setAction: @selector(digit:)]; [buttons[2] setKeyEquivalent: @"2"]; buttons[3] = [[NSButton alloc] initWithFrame: NSMakeRect (188, 3, 34, 24)]; [buttons[3] setButtonType: NSToggleButton]; [buttons[3] setTitle: @"3"]; [buttons[3] setTag: 3]; [buttons[3] setState: NO]; [buttons[3] setAction: @selector(digit:)]; [buttons[3] setKeyEquivalent: @"3"]; buttons[4] = [[NSButton alloc] initWithFrame: NSMakeRect (114, 30, 34, 24)]; [buttons[4] setButtonType: NSToggleButton]; [buttons[4] setTitle: @"4"]; [buttons[4] setTag: 4]; [buttons[4] setState: NO]; [buttons[4] setAction: @selector(digit:)]; [buttons[4] setKeyEquivalent: @"4"]; buttons[5] = [[NSButton alloc] initWithFrame: NSMakeRect (151, 30, 34, 24)]; [buttons[5] setButtonType: NSToggleButton]; [buttons[5] setTitle: @"5"]; [buttons[5] setTag: 5]; [buttons[5] setState: NO]; [buttons[5] setAction: @selector(digit:)]; [buttons[5] setKeyEquivalent: @"5"]; buttons[6] = [[NSButton alloc] initWithFrame: NSMakeRect (188, 30, 34, 24)]; [buttons[6] setButtonType: NSToggleButton]; [buttons[6] setTitle: @"6"]; [buttons[6] setTag: 6]; [buttons[6] setState: NO]; [buttons[6] setAction: @selector(digit:)]; [buttons[6] setKeyEquivalent: @"6"]; buttons[7] = [[NSButton alloc] initWithFrame: NSMakeRect (114, 57, 34, 24)]; [buttons[7] setButtonType: NSToggleButton]; [buttons[7] setTitle: @"7"]; [buttons[7] setTag: 7]; [buttons[7] setState: NO]; [buttons[7] setAction: @selector(digit:)]; [buttons[7] setKeyEquivalent: @"7"]; buttons[8] = [[NSButton alloc] initWithFrame: NSMakeRect (151, 57, 34, 24)]; [buttons[8] setButtonType: NSToggleButton]; [buttons[8] setTitle: @"8"]; [buttons[8] setTag: 8]; [buttons[8] setState: NO]; [buttons[8] setAction: @selector(digit:)]; [buttons[8] setKeyEquivalent: @"8"]; buttons[9] = [[NSButton alloc] initWithFrame: NSMakeRect (188, 57, 34, 24)]; [buttons[9] setButtonType: NSToggleButton]; [buttons[9] setTitle: @"9"]; [buttons[9] setTag: 9]; [buttons[9] setState: NO]; [buttons[9] setAction: @selector(digit:)]; [buttons[9] setKeyEquivalent: @"9"]; buttons[10] = [[NSButton alloc] initWithFrame: NSMakeRect (77, 30, 34, 24)]; [buttons[10] setButtonType: NSToggleButton]; [buttons[10] setTitle: @"."]; [buttons[10] setState: NO]; [buttons[10] setAction: @selector(decimalSeparator:)]; [buttons[10] setKeyEquivalent: @"."]; buttons[11] = [[NSButton alloc] initWithFrame: NSMakeRect (77, 57, 34, 24)]; [buttons[11] setButtonType: NSToggleButton]; [buttons[11] setTitle: @"SQR"]; [buttons[11] setState: NO]; [buttons[11] setAction: @selector(squareRoot:)]; [buttons[11] setKeyEquivalent: @"s"]; buttons[12] = [[NSButton alloc] initWithFrame: NSMakeRect (3, 30, 34, 24)]; [buttons[12] setButtonType: NSToggleButton]; [buttons[12] setTitle: @"+"]; [buttons[12] setTag: addition]; [buttons[12] setState: NO]; [buttons[12] setAction: @selector(operation:)]; [buttons[12] setKeyEquivalent: @"+"]; buttons[13] = [[NSButton alloc] initWithFrame: NSMakeRect (40, 30, 34, 24)]; [buttons[13] setButtonType: NSToggleButton]; [buttons[13] setTitle: @"-"]; [buttons[13] setTag: subtraction]; [buttons[13] setState: NO]; [buttons[13] setAction: @selector(operation:)]; [buttons[13] setKeyEquivalent: @"-"]; buttons[14] = [[NSButton alloc] initWithFrame: NSMakeRect (3, 57, 34, 24)]; [buttons[14] setButtonType: NSToggleButton]; [buttons[14] setTitle: @"*"]; [buttons[14] setTag: multiplication]; [buttons[14] setState: NO]; [buttons[14] setAction: @selector(operation:)]; [buttons[14] setKeyEquivalent: @"*"]; buttons[15] = [[NSButton alloc] initWithFrame: NSMakeRect (40, 57, 34, 24)]; [buttons[15] setButtonType: NSToggleButton]; [buttons[15] setTitle: @"/"]; [buttons[15] setTag: division]; [buttons[15] setState: NO]; [buttons[15] setAction: @selector(operation:)]; [buttons[15] setKeyEquivalent: @"/"]; buttons[16] = [[NSButton alloc] initWithFrame: NSMakeRect (3, 84, 34, 24)]; [buttons[16] setButtonType: NSToggleButton]; [buttons[16] setTitle: @"CL"]; [buttons[16] setState: NO]; [buttons[16] setAction: @selector(clear:)]; [buttons[16] setKeyEquivalent: @"C"]; buttons[17] = [[NSButton alloc] initWithFrame: NSMakeRect (3, 3, 71, 24)]; [buttons[17] setButtonType: NSToggleButton]; [buttons[17] setTitle: @"="]; [buttons[17] setState: NO]; [buttons[17] setAction: @selector(equal:)]; [buttons[17] setKeyEquivalent: @"="]; // Window [self initWithContentRect: NSMakeRect (100, 100, 225, 111) styleMask: (NSTitledWindowMask | NSMiniaturizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [self setInitialFirstResponder: buttons[17]]; [self setDefaultButtonCell: [buttons[17] cell]]; for (i = 0; i < 18; i++) { [[self contentView] addSubview: buttons[i]]; [buttons[i] release]; } [[self contentView] addSubview: display]; [display release]; [self setTitle: @"Calculator.app"]; [self center]; return self; } -(void) dealloc { [super dealloc]; } -(void) setBrain: (CalcBrain *)aBrain { int i; for (i = 0; i < 18; i++) [buttons[i] setTarget: aBrain]; } -(void) setDisplayedNumber: (double)aNumber withSeparator: (BOOL)displayDecimalSeparator fractionalDigits: (int)fractionalDigits { if (displayDecimalSeparator) { [display setStringValue: [NSString stringWithFormat: [NSString stringWithFormat: @"%%#.%df", fractionalDigits], aNumber]]; } else // !displayDecimalSeparator [display setStringValue: [NSString stringWithFormat: @"%.0f", aNumber]]; } -(void) setError { [display setStringValue: @"Error"]; } - (void)applicationDidFinishLaunching: (NSNotification *)aNotification { [self orderFront: self]; } @end gnustep-examples-1.4.0/gui/Calculator/GNUmakefile0000664000175000017500000000224207215264310020726 0ustar fedorfedor# GNUmakefile: makefile for Calculator.app # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 APP_NAME = Calculator Calculator_HEADERS = CalcBrain.h CalcFace.h Calculator_OBJC_FILES = main.m CalcBrain.m CalcFace.m Calculator_RESOURCE_FILES = Calculator.app.tiff include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Calculator/CalculatorInfo.plist0000664000175000017500000000062707652111773022654 0ustar fedorfedor{ ApplicationName = "Calculator"; ApplicationDescription = "A Little GNUstep GUI Demo"; ApplicationRelease = "Calculator 1.1"; FullVersionID = "1.1.0 Jul 2000"; Authors = ("Nicola Pero "); Copyright = "Copyright (C) 1999, 2000 Free Software Foundation, Inc."; CopyrightDescription = "Released under the GNU General Public License 2.0"; NSIcon = Calculator.app.tiff; } gnustep-examples-1.4.0/gui/Calculator/CalcBrain.m0000664000175000017500000001032211707270531020651 0ustar fedorfedor/* CalcBrain.m: Brain of Calculator.app Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include "CalcBrain.h" #include "CalcFace.h" #include @implementation CalcBrain: NSObject -(id) init { [super init]; result = 0; enteredNumber = 0; operation = none; fractionalDigits = 0; decimalSeparator = NO; editing = YES; face = nil; return self; } -(void) dealloc { if (face) [face release]; [super dealloc]; } // Set the corresponding face -(void) setFace: (CalcFace *)aFace { face = [aFace retain]; [face setDisplayedNumber: enteredNumber withSeparator: decimalSeparator fractionalDigits: fractionalDigits]; } // The various buttons -(void) clear: (id)sender { result = 0; enteredNumber = 0; operation = none; fractionalDigits = 0; decimalSeparator = NO; editing = YES; [face setDisplayedNumber: 0 withSeparator: NO fractionalDigits: 0]; } -(void) equal: (id)sender { switch (operation) { case none: result = enteredNumber; enteredNumber = 0; decimalSeparator = NO; fractionalDigits = 0; return; break; case addition: result = result + enteredNumber; break; case subtraction: result = result - enteredNumber; break; case multiplication: result = result * enteredNumber; break; case division: if (enteredNumber == 0) { [self error]; return; } else result = result / enteredNumber; break; } [face setDisplayedNumber: result withSeparator: (ceil(result) != result) fractionalDigits: 7]; enteredNumber = result; operation = none; editing = NO; } -(void) digit: (id)sender { if (!editing) { enteredNumber = 0; decimalSeparator = NO; fractionalDigits = 0; editing = YES; } if (decimalSeparator) { enteredNumber = enteredNumber + ([sender tag] * pow (0.1, 1+fractionalDigits)); fractionalDigits++; } else { enteredNumber = enteredNumber * 10 + ([sender tag]); // Check overflow if (enteredNumber > pow (10, 15)) { [self error]; return; } } [face setDisplayedNumber: enteredNumber withSeparator: decimalSeparator fractionalDigits: fractionalDigits]; } -(void) decimalSeparator: (id)sender { if (!editing) { enteredNumber = 0; decimalSeparator = NO; fractionalDigits = 0; editing = YES; } if (!decimalSeparator) { decimalSeparator = YES; [face setDisplayedNumber: enteredNumber withSeparator: YES fractionalDigits: 0]; } } -(void) operation: (id)sender { if (operation == none) { result = enteredNumber; enteredNumber = 0; decimalSeparator = NO; fractionalDigits = 0; operation = [sender tag]; } else // operation { [self equal: nil]; [self operation: sender]; } } -(void) squareRoot: (id)sender { if (operation == none) { result = sqrt (enteredNumber); [face setDisplayedNumber: result withSeparator: (ceil(result) != result) fractionalDigits: 7]; enteredNumber = result; editing = NO; operation = none; } else // operation { [self equal: nil]; [self squareRoot: sender]; } } -(void) error { result = 0; enteredNumber = 0; operation = none; fractionalDigits = 0; decimalSeparator = NO; editing = YES; [face setError]; } @end gnustep-examples-1.4.0/gui/Calculator/Calculator.app.tiff0000664000175000017500000002230207000650276022377 0ustar fedorfedorII*$ ?###---,,,&&&?333222///---,,,,,,***!!!??,,,999777444222000///---,,,***))))))?!!! @@@>>><<<:::999666333222///---,,,***))))))!!!??!!!333CCCBBB@@@???>>>;;;:::777444222000---,,,***###/(((cDDDCCCCCCCCCBBBBBB@@@>>><<<;;;999666333222///$$$ S) QPP|||IIICCCCCCBBBBBB@@@???>>>;;;:::777666 d7b6S)R'R'?JJJ鉉qqqBBBBBBBBB@@@???>>><<<;;;### T* m4S)R'DDDoooUUUBBB@@@???>>>&&& T*S)m4m3?`3$),)))HFF}||vvv@@@'''###!!!b4c6 a39>D\coU\g#'*444TTTSSS///000#########!!!c4b4^fr^fqT[f#'*?<;;'''rrr,,,######!!!!!!`ht:?F#&*#!!-,,ccc888!!!!!!!!! <@HaivvvvvvvQT[:?F!&))))777XXX###!!!E ?,,,___fff$$$ dkxvvvvvvssseeeRRR;?E#&* '''kuckwvvvkkkvvveee>>>TTTUY_vvvOSY!$) vvv___RRRooovvv___qz ?? vvvvvvvvvvvvRRRooovvvHHHvvvvvvRRRpxKR[  wvvvvvvLLL777vvvvvv;?E777]]]JPY :?ERRR777]]]uy~vvvvvveeeRRRYYYvvvvvvRYbHMWeoz___vvvvvvLLLooo___vvvvvvLLLmuFLT'+0vvvvvvSW]RRR777vvvvvvssseeeRRR777orv!$)?dmxvvvvvveee>>>TTTvvvHHHvvvvvveee>>>TTTRUZ___js#'|vvvvvvYYYYYYvvvvvvKOSjr~!&7>>OU^!&??]dpvvvvvvYYYooo___vvvvvvLLL7776:?OT^!%(RRRRRRvvvssseeeRRR777PU_~fozX_j#T\f___vvvvvvvvvRRR]]]QW`PW_tY_kJPXIOXIOX#B ?hp|vvvvvvORXRYbmuir~KQZJPYIPXIOWIOWIOW!f( #'yvvvvvveee>>>37>ox^fqMT]LR[KQYJPXIOWIOWIOW;@Fsf$?CHQ777:>DT\fs~U\fRYcPV`MT]LR[JQYJPXIOW!roD rz}_gs\coY`kU]gRZcPV`MT]LR[# odJ/ vfn|ckx`ht]dpZalV]hSZdAGOsfR=( ?38?nwlujsgp~dlzaiu^eq[bmsj^H(js~q{pzoxmvkthq~em{'*/ rm`H2 04;t}s|s|r|qzoynwX_k!seT>OU^t}t}s|s|q{#ssaG)owt}t}$srgM4 ?24;bjx$ssfX=& Psrn`D)8D5  00$$$$(R ' 'gnustep-examples-1.4.0/gui/Calculator/main.m0000664000175000017500000000467307143631314017772 0ustar fedorfedor/* main.m: Main Body of Calculator.app Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include "CalcBrain.h" #include "CalcFace.h" int main (void) { CalcBrain *brain; CalcFace *face; NSAutoreleasePool *pool; NSApplication *app; NSMenu *mainMenu; NSMenu *menu; NSMenuItem *menuItem; pool = [NSAutoreleasePool new]; app = [NSApplication sharedApplication]; [app setApplicationIconImage: [NSImage imageNamed: @"Calculator.app.tiff"]]; mainMenu = AUTORELEASE ([NSMenu new]); // Info [mainMenu addItemWithTitle: @"Info..." action: @selector (orderFrontStandardInfoPanel:) keyEquivalent: @""]; // Edit SubMenu menuItem = [mainMenu addItemWithTitle: @"Edit" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; /* [menu addItemWithTitle: @"Cut" action: @selector (cut:) keyEquivalent: @"x"]; */ [menu addItemWithTitle: @"Copy" action: @selector (copy:) keyEquivalent: @"c"]; /* [menu addItemWithTitle: @"Paste" action: @selector (paste:) keyEquivalent: @"v"]; */ [menu addItemWithTitle: @"SelectAll" action: @selector (selectAll:) keyEquivalent: @"a"]; [mainMenu addItemWithTitle: @"Hide" action: @selector (hide:) keyEquivalent: @"h"]; [mainMenu addItemWithTitle: @"Quit" action: @selector (terminate:) keyEquivalent: @"q"]; [app setMainMenu: mainMenu]; brain = [CalcBrain new]; face = [CalcFace new]; [brain setFace: face]; [face setBrain: brain]; [app setDelegate: face]; [app run]; return 0; } gnustep-examples-1.4.0/gui/HostAddress/0000775000175000017500000000000012204034626017005 5ustar fedorfedorgnustep-examples-1.4.0/gui/HostAddress/HostAddress.pcproj0000664000175000017500000000251207424557034022462 0ustar fedorfedor{ APPCLASS = NSApplication; APPKIT = GNUSTEP-GUI; APPLICATIONICON = ""; BUILDTOOL = "/usr/bin/make"; CLASS_FILES = ( main.m, AppController.m, Resolver.m ); COMPILEROPTIONS = ""; CREATION_DATE = ""; DOCU_FILES = ( ); FOUNDATION = GNUSTEP-BASE; FRAMEWORKS = ( ); HEADER_FILES = ( AppController.h, Resolver.h ); IMAGES = ( ); INSTALLDIR = "$(GNUSTEP_LOCAL_ROOT)"; INTERFACES = ( ); LANGUAGE = English; LAST_EDITING = ""; LIBRARIES = ( gnustep-base, gnustep-gui ); LINKEROPTIONS = ""; MAININTERFACE = ""; MAKEFILEDIR = "/usr/GNUstep/Makefiles"; OTHER_FILES = ( ); OTHER_RESOURCES = ( ); OTHER_SOURCES = ( ); PRINCIPAL_CLASS = main.m; PROJECT_BUILDER = PCAppProj; PROJECT_COPYRIGHT = "No license specified!"; PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description avaliable!"; PROJECT_GROUP = "No description avaliable!"; PROJECT_MAINTAINER = ""; PROJECT_NAME = HostAddress; PROJECT_RELEASE = 1; PROJECT_SOURCE = "%{gs_name}-%{gs_version}.tar.gz"; PROJECT_SUMMARY = "No summary avaliable!"; PROJECT_TYPE = PCAppProject; PROJECT_VERSION = 1.0; SUBPROJECTS = ( ); SUPPORTING_FILES = ( GNUmakefile.preamble, GNUmakefile, GNUmakefile.postamble ); }gnustep-examples-1.4.0/gui/HostAddress/AppController.h0000664000175000017500000000140307234413402021740 0ustar fedorfedor/* * AppController.h created by phr on 2000-08-27 11:38:59 +0000 * * Project TestApp * * Created with ProjectCenter - http://www.projectcenter.ch * * $Id: AppController.h 8822 2001-01-27 00:32:02Z nico $ */ #import @class Resolver; @interface AppController : NSObject { Resolver *resolver; } + (void)initialize; - (id)init; - (void)dealloc; - (void)awakeFromNib; - (void)applicationDidFinishLaunching:(NSNotification *)notif; - (BOOL)applicationShouldTerminate:(id)sender; - (void)applicationWillTerminate:(NSNotification *)notification; - (BOOL)application:(NSApplication *)application openFile:(NSString *)fileName; - (void)showPrefPanel:(id)sender; - (void)showInfoPanel:(id)sender; - (void)showResolverWindow:(id)sender; @end gnustep-examples-1.4.0/gui/HostAddress/AppController.m0000664000175000017500000000327207234413402021753 0ustar fedorfedor/* * AppController.m created by phr on 2000-08-27 11:38:58 +0000 * * Project TestApp * * Created with ProjectCenter - http://www.projectcenter.ch * * $Id: AppController.m 8822 2001-01-27 00:32:02Z nico $ */ #import "AppController.h" #import "Resolver.h" @implementation AppController static NSDictionary *infoDict = nil; + (void)initialize { NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; /* * Register your app's defaults here by adding objects to the * dictionary, eg * * [defaults setObject:anObject forKey:keyForThatObject]; * */ [[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; [[NSUserDefaults standardUserDefaults] synchronize]; } - (id)init { if ((self = [super init])) { } return self; } - (void)dealloc { if (resolver) { RELEASE(resolver); } [super dealloc]; } - (void)awakeFromNib { } - (void)applicationDidFinishLaunching:(NSNotification *)notif { } - (BOOL)applicationShouldTerminate:(id)sender { return YES; } - (void)applicationWillTerminate:(NSNotification *)notification { } - (BOOL)application:(NSApplication *)application openFile:(NSString *)fileName { } - (void)showPrefPanel:(id)sender { } - (void)showInfoPanel:(id)sender { if (!infoDict) { NSString *fp; NSBundle *bundle = [NSBundle mainBundle]; fp = [bundle pathForResource:@"Info-project" ofType:@"plist"]; infoDict = [[NSDictionary dictionaryWithContentsOfFile:fp] retain]; } [[NSApplication sharedApplication] orderFrontStandardInfoPanelWithOptions:infoDict]; } - (void)showResolverWindow:(id)sender { if (!resolver) { resolver = [[Resolver alloc] init]; } [resolver makeKeyAndOrderFront]; } @end gnustep-examples-1.4.0/gui/HostAddress/.cvsignore0000664000175000017500000000005707235623633021021 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/HostAddress/Info-project.plist0000664000175000017500000000070207234413402022420 0ustar fedorfedor{ ApplicationDescription = "NSHost example"; ApplicationIcon = ""; ApplicationName = HostAddress; ApplicationRelease = "0.2"; Authors = ("Philippe C.D. Robert "); Copyright = "Copyright (C) 2000-2001 by Philippe C.D. Robert"; CopyrightDescription = "Released under the GNU GPL"; FullVersionID = "0.2"; NOTE = "Automatically generated!"; URL = "http://www.nice.ch/~phip/softcorner.html"; }gnustep-examples-1.4.0/gui/HostAddress/GNUmakefile0000664000175000017500000000160010564603337021064 0ustar fedorfedor# # GNUmakefile - Generated by ProjectCenter # Written by Philippe C.D. Robert # # NOTE: Do NOT change this file -- ProjectCenter maintains it! # # Put all of your customisations in GNUmakefile.preamble and # GNUmakefile.postamble # include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Main application # PACKAGE_NAME=HostAddress APP_NAME=HostAddress HostAddress_APPLICATION_ICON= # # Additional libraries # ADDITIONAL_GUI_LIBS += # # Resource files # HostAddress_RESOURCE_FILES= # # Header files # HostAddress_HEADERS= \ AppController.h \ Resolver.h # # Class files # HostAddress_OBJC_FILES= \ main.m \ AppController.m \ Resolver.m # # C files # HostAddress_C_FILES= -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/HostAddress/Resolver.m0000664000175000017500000000736407234413402020776 0ustar fedorfedor/* * Resolver.m created by phr on 2000-10-10 18:37:59 +0000 * * Project HostAddress * * Created with ProjectCenter - http://www.projectcenter.ch * * $Id: Resolver.m 8822 2001-01-27 00:32:02Z nico $ */ #import "Resolver.h" @implementation Resolver - (id)init { if ((self = [super init])) { [self createUI]; } return self; } - (void)dealloc { RELEASE(window); [super dealloc]; } - (void)makeKeyAndOrderFront { if (![window isVisible]) { [window center]; } [window makeKeyAndOrderFront:self]; } - (void)resolveHost { NSString *name = [hostField stringValue]; NSHost *host = [NSHost hostWithName:name]; if (host) { [addressField setStringValue:[host address]]; } else { [addressField setStringValue:@"Address could not be resolved!"]; } } - (void)resolveAddress { NSString *addr = [addressField stringValue]; NSHost *host = [NSHost hostWithAddress:addr]; if (host) { [hostField setStringValue:[host name]]; } else { [hostField setStringValue:@"Host could not be resolved!"]; } } @end @implementation Resolver (UIBuilder) - (void)createUI { unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask; NSView *_c_view; NSRect _w_frame; NSBox *view; NSTextField *tf; _w_frame = NSMakeRect(100,100,480,224); window = [[NSWindow alloc] initWithContentRect:_w_frame styleMask:style backing:NSBackingStoreBuffered defer:NO]; [window setDelegate:self]; [window setTitle:@"Address and Host Resolver"]; [window setMinSize:NSMakeSize(480,224)]; [window setReleasedWhenClosed:NO]; _c_view = [window contentView]; view = AUTORELEASE([[NSBox alloc] init]); [view setTitle:@"Host Resolving"]; [view setFrame:NSMakeRect(16,120,448,96)]; [_c_view addSubview:view]; tf = [[NSTextField alloc] initWithFrame:NSMakeRect(16,32,48,21)]; [tf setStringValue:@"Host:"]; [tf setAlignment: NSRightTextAlignment]; [tf setBordered: NO]; [tf setEditable: NO]; [tf setBezeled: NO]; [tf setDrawsBackground:NO]; [view addSubview:tf]; AUTORELEASE(tf); hostField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,32,360,21)]; [hostField setAlignment: NSLeftTextAlignment]; [hostField setBordered: NO]; [hostField setEditable: YES]; [hostField setBezeled: YES]; [hostField setDrawsBackground: YES]; [view addSubview:hostField]; AUTORELEASE(hostField); hostButton = [[NSButton alloc] initWithFrame:NSMakeRect(328,4,104,22)]; [hostButton setTitle:@"Resolve Host"]; [hostButton setTarget:self]; [hostButton setAction:@selector(resolveHost)]; [view addSubview:hostButton]; AUTORELEASE(hostButton); view = AUTORELEASE([[NSBox alloc] init]); [view setTitle:@"Address Resolving"]; [view setFrame:NSMakeRect(16,16,448,96)]; //[view setFrameFromContentFrame:NSMakeRect(16,16,448,96)]; [_c_view addSubview:view]; tf = [[NSTextField alloc] initWithFrame:NSMakeRect(16,32,48,21)]; [tf setStringValue:@"IP:"]; [tf setAlignment: NSRightTextAlignment]; [tf setBordered: NO]; [tf setEditable: NO]; [tf setBezeled: NO]; [tf setDrawsBackground:NO]; [view addSubview:tf]; AUTORELEASE(tf); addressField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,32,360,21)]; [addressField setAlignment: NSLeftTextAlignment]; [addressField setBordered: NO]; [addressField setEditable: YES]; [addressField setBezeled: YES]; [addressField setDrawsBackground: YES]; [view addSubview:addressField]; AUTORELEASE(addressField); addressButton = [[NSButton alloc] initWithFrame:NSMakeRect(328,4,104,22)]; [addressButton setTitle:@"Resolve Address"]; [addressButton setTarget:self]; [addressButton setAction:@selector(resolveAddress)]; [view addSubview:addressButton]; AUTORELEASE(addressButton); } @end gnustep-examples-1.4.0/gui/HostAddress/main.m0000664000175000017500000000556607416634405020135 0ustar fedorfedor/* $Id: main.m 12052 2002-01-08 18:23:01Z nico $ */ #import #import "AppController.h" #define APP_NAME @"HostAddress" /* * Create the application's menu */ void createMenu(); /* * Initialise and go! */ int main(int argc, const char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; AppController *controller; [NSApplication sharedApplication]; createMenu(); controller = [[AppController alloc] init]; [NSApp setDelegate:controller]; RELEASE(pool); return NSApplicationMain (argc, argv); } void createMenu() { NSMenu *menu; NSMenu *info; NSMenu *edit; NSMenu *services; NSMenu *windows; SEL action = @selector(method:); menu = [[NSMenu alloc] initWithTitle:APP_NAME]; [menu addItemWithTitle:@"Info" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Edit" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Resolver..." action:@selector(showResolverWindow:) keyEquivalent:@""]; [menu addItemWithTitle:@"Windows" 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 = AUTORELEASE([[NSMenu alloc] init]); [menu setSubmenu:info forItem:[menu itemWithTitle:@"Info"]]; [info addItemWithTitle:@"Info Panel..." action:@selector(showInfoPanel:) keyEquivalent:@""]; [info addItemWithTitle:@"Preferences" action:@selector(showPrefPanel:) keyEquivalent:@""]; [info addItemWithTitle:@"Help" action:action keyEquivalent:@"?"]; edit = AUTORELEASE([[NSMenu alloc] init]); [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:@"Delete" action:@selector(delete:) keyEquivalent:@""]; [edit addItemWithTitle:@"Select All" action:@selector(selectAll:) keyEquivalent:@"a"]; [menu setSubmenu:edit forItem:[menu itemWithTitle:@"Edit"]]; windows = AUTORELEASE([[NSMenu alloc] init]); [windows addItemWithTitle:@"Arrange" action:@selector(arrangeInFront:) keyEquivalent:@""]; [windows addItemWithTitle:@"Miniaturize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [windows addItemWithTitle:@"Close" action:@selector(performClose:) keyEquivalent:@"w"]; [menu setSubmenu:windows forItem:[menu itemWithTitle:@"Windows"]]; services = AUTORELEASE([[NSMenu alloc] init]); [menu setSubmenu:services forItem:[menu itemWithTitle:@"Services"]]; [[NSApplication sharedApplication] setMainMenu:menu]; [[NSApplication sharedApplication] setServicesMenu: services]; [[NSApplication sharedApplication] setWindowsMenu: windows]; } gnustep-examples-1.4.0/gui/HostAddress/ChangeLog0000664000175000017500000000064310564603337020572 0ustar fedorfedor2007-02-14 Nicola Pero * GNUmakefile (GNUSTEP_INSTALLATION_DIR): Manually edited the file not to set it. Sat Jan 26 17:46:03 CET 2002 Philippe C.D. Robert * Updated the ProjectCenter file Tue Jan 8 16:18:25 2002 Nicola Pero * main.m (createMenu): Explicitly call setWindowsMenu: as required by the new gnustep-gui library. gnustep-examples-1.4.0/gui/HostAddress/Resolver.h0000664000175000017500000000105607234413402020761 0ustar fedorfedor/* * Resolver.h created by phr on 2000-10-10 18:38:00 +0000 * * Project HostAddress * * Created with ProjectCenter - http://www.projectcenter.ch * * $Id: Resolver.h 8822 2001-01-27 00:32:02Z nico $ */ #import @interface Resolver : NSObject { NSWindow *window; NSTextField *addressField; NSTextField *hostField; id hostButton; id addressButton; } - (id)init; - (void)dealloc; - (void)resolveHost; - (void)resolveAddress; - (void)makeKeyAndOrderFront; @end @interface Resolver (UIBuilder) - (void)createUI; @end gnustep-examples-1.4.0/gui/GPuzzle/0000775000175000017500000000000012204034626016162 5ustar fedorfedorgnustep-examples-1.4.0/gui/GPuzzle/README0000664000175000017500000000013010500436370017033 0ustar fedorfedorA more up-to-date version of this example can be found at http://www.gnustep.it/marko gnustep-examples-1.4.0/gui/Old/0000775000175000017500000000000012204034631015274 5ustar fedorfedorgnustep-examples-1.4.0/gui/Old/nsimagecell.m0000664000175000017500000001001407710505774017752 0ustar fedorfedor/* nsimagecell.m Copyright (C) 1999 Free Software Foundation, Inc. Author: Jonathan Gapen Date: May 1999 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #include #include @interface matrixController : NSObject { NSMatrix* matrix; } @end @implementation matrixController - (void) setMatrix: (NSMatrix*)anObject { matrix = anObject; } - (void) setMatrixMode: sender { [matrix setMode: [[sender selectedCell] tag]]; } - (void) setSelectionByRect: sender { [matrix setSelectionByRect: [sender state]]; } - (void) applicationDidFinishLaunching: (NSNotification *)aNotification { NSWindow *window; NSRect winRect = {{100, 400}, {270, 200}}; NSRect matrixRect = {{5, 5}, {265, 195}}; NSMatrix *theMatrix; NSSize cellSize = {64, 64}; NSImageCell *imageCell; id handler = self; window = [[NSWindow alloc] init]; imageCell = [[NSImageCell new] autorelease]; [imageCell setImageFrameStyle: NSImageFrameGrayBezel]; [imageCell setImageScaling: NSScaleNone]; [imageCell setImage: [NSImage imageNamed: @"NSRadioButton"]]; theMatrix = [[[NSMatrix alloc] initWithFrame: matrixRect mode: NSRadioModeMatrix prototype: imageCell numberOfRows: 3 numberOfColumns: 4] autorelease]; [theMatrix setCellSize: cellSize]; [[window contentView] addSubview: theMatrix]; [handler setMatrix: theMatrix]; imageCell = [theMatrix cellAtRow: 0 column: 0]; [imageCell setImageAlignment: NSImageAlignTopLeft]; imageCell = [theMatrix cellAtRow: 0 column: 1]; [imageCell setImageAlignment: NSImageAlignTop]; imageCell = [theMatrix cellAtRow: 0 column: 2]; [imageCell setImageAlignment: NSImageAlignTopRight]; imageCell = [theMatrix cellAtRow: 0 column: 3]; [imageCell setImageScaling: NSScaleProportionally]; imageCell = [theMatrix cellAtRow: 1 column: 0]; [imageCell setImageAlignment: NSImageAlignLeft]; imageCell = [theMatrix cellAtRow: 1 column: 1]; [imageCell setImageAlignment: NSImageAlignCenter]; imageCell = [theMatrix cellAtRow: 1 column: 2]; [imageCell setImageAlignment: NSImageAlignRight]; imageCell = [theMatrix cellAtRow: 1 column: 3]; [imageCell setImageScaling: NSScaleToFit]; imageCell = [theMatrix cellAtRow: 2 column: 0]; [imageCell setImageAlignment: NSImageAlignBottomLeft]; imageCell = [theMatrix cellAtRow: 2 column: 1]; [imageCell setImageAlignment: NSImageAlignBottom]; imageCell = [theMatrix cellAtRow: 2 column: 2]; [imageCell setImageAlignment: NSImageAlignBottomRight]; imageCell = [theMatrix cellAtRow: 2 column: 3]; [imageCell setImageScaling: NSScaleNone]; [window setTitle: @"NSImageCell Test"]; [window setFrame: winRect display: YES]; [window orderFront: nil]; } @end int main(int argc, char** argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [matrixController new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/nscursor.m0000664000175000017500000000622211565145500017341 0ustar fedorfedor/* nscursor.m Simple application to test NSCursor class. Copyright (C) 1997 Free Software Foundation, Inc. Author: Scott Christley Date: February 1997 Author: Felipe A. Rodriguez Date: November 1998 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import #import #include "ColorView.h" @interface nscursorController : NSObject @end @implementation nscursorController - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *win; NSView *v; NSColorWell *c; NSRect cf = {{10, 10}, {150, 100}}; NSRect wf0 = {{150, 150}, {300, 300}}; NSColor *green; NSCursor *cur; NSCursor *arrow, *beam; ColorView *cv0; NSRect cvf0 = {{10, 120}, {150, 100}}; NSImage *image; green = [NSColor greenColor]; win = [[NSWindow alloc] init]; // [win setBackgroundColor: green]; v = [win contentView]; c = [[NSColorWell alloc] initWithFrame: cf]; [c setColor:green]; // [c setColor:[NSColor whiteColor]]; [v addSubview: c]; cv0 = [[ColorView alloc] initWithFrame: cvf0]; [cv0 setColor:[NSColor blueColor]]; // [cv0 setFrameRotation:30]; [v addSubview: cv0]; // Cursor for color view image = [[NSImage alloc] initWithContentsOfFile:@"Smiley.tiff"]; cur = [[NSCursor alloc] initWithImage: image]; RELEASE(image); [cv0 setCursor: cur]; // Cursor for color well using tracking rectangle arrow = [[NSCursor arrowCursor] retain]; [arrow setOnMouseExited: YES]; beam = [[NSCursor IBeamCursor] retain]; [beam setOnMouseEntered: YES]; [v addTrackingRect: cf owner: arrow userData: NULL assumeInside: YES]; [v addTrackingRect: cf owner: beam userData: NULL assumeInside: YES]; [win setFrame:wf0 display:YES]; [win setTitle:@"GNUstep Cursor Management"]; [win orderFront:nil]; } @end int main(int argc, char** argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [nscursorController new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/nscombobox.m0000664000175000017500000000773310126331260017634 0ustar fedorfedor/* nscombobox.m Copyright (C) 1999 Free Software Foundation, Inc. Author: Gerrit van Dyk Date: September 1999 This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include @interface MyObject : NSObject { NSComboBox *sourceCombo,*staticCombo; NSArray *sourceArray; } - (id)initWithSourceCombo:(NSComboBox *)aSource staticCombo:(NSComboBox *)aStatic; @end int main(int argc, char **argv, char** env) { NSApplication *theApp; NSWindow* window; NSComboBox *sourceCombo,*staticCombo; NSMenu *menu; MyObject *trigger; NSRect winRect = {{100, 100}, {300, 200}}; NSRect sourceComboRect = {{40,60},{150,20}}; NSRect staticComboRect = {{40,90},{200,20}}; NSAutoreleasePool* pool; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif pool = [NSAutoreleasePool new]; theApp = [NSApplication sharedApplication]; #if 0 window = [[NSWindow alloc] initWithContentRect:winRect styleMask:style backing:NSBackingStoreNonretained defer:NO]; #else window = [[NSWindow alloc] init]; #endif [window setFrame:winRect display:YES]; sourceCombo = [[[NSComboBox alloc] initWithFrame:sourceComboRect] autorelease]; staticCombo = [[[NSComboBox alloc] initWithFrame:staticComboRect] autorelease]; [[window contentView] addSubview:sourceCombo]; [[window contentView] addSubview:staticCombo]; trigger = [[MyObject alloc] initWithSourceCombo:sourceCombo staticCombo:staticCombo]; { NSComboBox *extr; extr = [[NSComboBox alloc] initWithFrame: NSMakeRect(40, 120, 125, 20)]; [extr addItemsWithObjectValues: [NSArray arrayWithObjects: @"un", @"deux", @"trois", @"quatre", nil]]; [[window contentView] addSubview: extr]; RELEASE(extr); } menu = [NSMenu new]; [menu addItemWithTitle:@"Quit the Test" action: @selector(terminate:) keyEquivalent: @"q"]; [theApp setMainMenu:menu]; [menu setTitle:@"Test"]; [menu update]; [menu display]; [window orderFrontRegardless]; [theApp run]; [trigger release]; [pool release]; return 0; } @implementation MyObject : NSObject - (id)initWithSourceCombo:(NSComboBox *)aSource staticCombo:(NSComboBox *)aStatic { self = [self init]; sourceCombo = [aSource retain]; staticCombo = [aStatic retain]; [sourceCombo setUsesDataSource:YES]; [sourceCombo setDataSource:self]; sourceArray = [[NSArray arrayWithObjects: @"One",@"Two",@"Three",@"Four",@"Five", @"Six",@"Seven",@"Eight",@"Nine",@"Ten", @"Eleven",@"Twelve",@"Thirteen",nil] retain]; [staticCombo addItemsWithObjectValues: [NSArray arrayWithObjects:@"Dog",@"Cat",@"Beast",nil]]; return self; } - (void)dealloc { [sourceCombo release]; [staticCombo release]; [sourceArray release]; [super dealloc]; } - (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox { return [sourceArray count]; } - (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index { return [sourceArray objectAtIndex:index]; } - (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)string { return [sourceArray indexOfObject:string]; } @end gnustep-examples-1.4.0/gui/Old/windows.m0000664000175000017500000001217211565145500017156 0ustar fedorfedor/* windows.m Multiple windows Copyright (C) 1997 Free Software Foundation, Inc. Author: Scott Christley Date: March 1997 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import #import #include "TestView.h" @interface windowsController : NSObject { id textField; id textField1; } @end @implementation windowsController - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *w0, *w1, *w2; NSRect wf0 = {{250, 400}, {500, 500}}; NSRect wf1 = {{500, 100}, {500, 500}}; NSRect wf2 = {{50, 50}, {300, 500}}; TestView *v; NSView *v1, *v2; NSButton *mpush, *ponpoff, *toggle, *swtch, *radio, *mchange, *onoff; NSRect bf0 = {{5, 5}, {200, 50}}; NSRect bf1 = {{5, 65}, {90, 45}}; NSRect bf2 = {{5, 115}, {90, 26}}; NSRect bf3 = {{5, 170}, {200, 26}}; NSRect bf4 = {{5, 225}, {200, 26}}; NSRect bf5 = {{5, 280}, {200, 50}}; NSRect bf6 = {{5, 335}, {200, 50}}; NSSlider *s0; NSRect sf0 = {{25, 325}, {100, 50}}; NSTextField *t0, *t1, *t2, *t3; NSRect tf0 = {{25, 25}, {200, 50}}; NSRect tf1 = {{25, 100}, {200, 50}}; NSRect tf2 = {{25, 175}, {200, 50}}; NSRect tf3 = {{25, 250}, {200, 50}}; // // Windows // w0 = [[NSWindow alloc] init]; [w0 setTitle:@"Graphics Testing"]; v = [[TestView alloc] init]; [w0 setContentView: v]; [w0 setFrame:wf0 display:YES]; w1 = [[NSWindow alloc] init]; [w1 setTitle: @"Second Window"]; v1 = [w1 contentView]; mpush = [[NSButton alloc] initWithFrame: bf0]; [mpush setTitle: @"MomentaryPush"]; ponpoff = [[NSButton alloc] initWithFrame: bf1]; [ponpoff setButtonType:NSToggleButton]; [ponpoff setTitle: @"Toggle"]; [ponpoff setAlternateTitle: @"Alternate"]; [ponpoff setImage:[NSImage imageNamed:@"common_SwitchOff"]]; [ponpoff setAlternateImage:[NSImage imageNamed:@"common_SwitchOn"]]; [ponpoff setImagePosition:NSImageAbove]; [ponpoff setAlignment:NSCenterTextAlignment]; toggle = [[NSButton alloc] initWithFrame: bf2]; [toggle setButtonType: NSToggleButton]; [toggle setTitle: @"Toggle"]; swtch = [[NSButton alloc] initWithFrame: bf3]; [swtch setButtonType: NSSwitchButton]; [swtch setBordered: NO]; [swtch setTitle: @"Switch"]; [swtch setAlternateTitle: @"Alternate"]; radio = [[NSButton alloc] initWithFrame: bf4]; [radio setButtonType: NSRadioButton]; [radio setBordered: NO]; [radio setTitle: @"Radio"]; [radio setAlternateTitle: @"Alternate"]; mchange = [[NSButton alloc] initWithFrame: bf5]; [mchange setButtonType: NSMomentaryChangeButton]; [mchange setTitle: @"MomentaryChange"]; [mchange setAlternateTitle: @"Alternate"]; onoff = [[NSButton alloc] initWithFrame: bf6]; [onoff setButtonType: NSOnOffButton]; [onoff setTitle: @"OnOff"]; [v1 addSubview: mpush]; [v1 addSubview: ponpoff]; [v1 addSubview: toggle]; [v1 addSubview: swtch]; [v1 addSubview: radio]; [v1 addSubview: mchange]; [v1 addSubview: onoff]; [w1 setFrame: wf1 display: YES]; w2 = [[NSWindow alloc] init]; [w2 setTitle: @"Third Window"]; v2 = [w2 contentView]; t0 = [[NSTextField alloc] initWithFrame: tf0]; t1 = [[NSTextField alloc] initWithFrame: tf1]; [t1 setAlignment: NSRightTextAlignment]; t2 = [[NSTextField alloc] initWithFrame: tf2]; [t2 setAlignment: NSCenterTextAlignment]; t3 = [[NSTextField alloc] initWithFrame: tf3]; [t3 setBordered: NO]; [t3 setTextColor: [NSColor redColor]]; [t0 setNextText: t3]; [t1 setNextText: t0]; [t2 setNextText: t1]; [t3 setNextText: t2]; [v2 addSubview: t0]; [v2 addSubview: t1]; [v2 addSubview: t2]; [v2 addSubview: t3]; s0 = [[NSSlider alloc] initWithFrame: sf0]; [v2 addSubview: s0]; [w2 setFrame: wf2 display: YES]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [w0 orderFrontRegardless]; [w1 orderFrontRegardless]; [w2 orderFrontRegardless]; } @end // // my main for the test app // int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [windowsController new]]; [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/buttons.m0000775000175000017500000001552707226455374017210 0ustar fedorfedor/* buttons.m All of the various NSButtons Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Also: Ovidiu Predescu June 1996 Felipe A. Rodriguez August 1998 Richard Frith-Macdonald This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import #import @interface buttonsController : NSObject { id textField; id textField1; } @end @implementation buttonsController - (void)buttonAction:(id)sender { NSLog (@"buttonAction:"); } - (void)buttonAction2:(id)sender { NSLog (@"buttonAction2:"); [textField setStringValue:[sender intValue] ? @"on" : @"off"]; } - (void)setTextField:(id)anObject { [anObject retain]; if (textField) [textField release]; textField = anObject; } - (void)buttonPressed:sender { NSLog (@"textfield value = %@", [textField1 stringValue]); [textField1 setStringValue: @"Hello"]; } - (void)setTextField1:object { textField1 = object; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *win; NSRect wf = {{100, 100}, {400, 400}}; NSView *v; NSView* anotherView1; NSView* anotherView2; NSButton *mpush, *ponpoff, *toggle, *swtch, *radio, *mchange, *onoff, *light; NSRect bf0 = {{5, 5}, {200, 50}}; NSRect bf1 = {{5, 65}, {90, 45}}; NSRect bf2 = {{5, 115}, {90, 26}}; NSRect bf3 = {{5, 170}, {200, 26}}; NSRect bf4 = {{5, 225}, {200, 26}}; NSRect bf5 = {{5, 280}, {200, 50}}; NSRect bf6 = {{10, 10}, {100, 20}}; NSRect bf7 = {{120, 115}, {90, 26}}; NSRect anotherView1Frame = {{5, 335}, {240, 70}}; NSRect anotherView2Frame = {{10, 10}, {220, 50}}; NSRect textFieldRect = {{125, 10}, {80, 20}}; NSTextField* txtField; id button; NSTextField* tfield; NSRect textRect = { {260, 100}, {100, 20} }; NSRect buttonRect = { { 300, 130 }, { 53, 20 } }; NSColorWell *colorWell; NSRect cwf = {{300, 30}, {40, 40}}; NSRect frame = {{250, 200}, {100, 100}}; NSForm* form; NSFormCell *c; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; NSLog(@"Starting the application\n"); win = [[NSWindow alloc] initWithContentRect:wf styleMask:style backing:NSBackingStoreRetained defer:NO]; //NSBackingStoreNonretained // win = [[NSWindow alloc] init]; // [win setFrame: wf display: YES]; [win setTitle:@"GNUstep Buttons"]; // [win makeKeyAndOrderFront:nil]; v = [win contentView]; NSLog(@"Create the buttons\n"); mpush = [[NSButton alloc] initWithFrame: bf0]; [mpush setTitle: @"MomentaryPush"]; [mpush setTarget:self]; [mpush setAction:@selector(buttonAction:)]; [mpush setContinuous:YES]; ponpoff = [[NSButton alloc] initWithFrame: bf1]; [ponpoff setButtonType:NSToggleButton]; [ponpoff setTitle: @"Toggle"]; [ponpoff setAlternateTitle: @"Alternate"]; [ponpoff setImage:[NSImage imageNamed:@"NSSwitch"]]; [ponpoff setAlternateImage:[NSImage imageNamed:@"NSHighlightedSwitch"]]; [ponpoff setImagePosition:NSImageAbove]; [ponpoff setAlignment:NSCenterTextAlignment]; toggle = [[NSButton alloc] initWithFrame: bf2]; [toggle setButtonType: NSToggleButton]; [toggle setTitle: @"Toggle"]; light = [[NSButton alloc] initWithFrame: bf7]; [light setButtonType: NSMomentaryLight]; [light setTitle: @"Light"]; swtch = [[NSButton alloc] initWithFrame: bf3]; [swtch setButtonType: NSSwitchButton]; [swtch setBordered: NO]; [swtch setTitle: @"Switch"]; [swtch setAlternateTitle: @"Alternate"]; radio = [[NSButton alloc] initWithFrame: bf4]; [radio setButtonType: NSRadioButton]; [radio setBordered: NO]; [radio setTitle: @"Radio"]; [radio setAlternateTitle: @"Alternate"]; mchange = [[NSButton alloc] initWithFrame: bf5]; [mchange setButtonType: NSMomentaryChangeButton]; [mchange setTitle: @"MomentaryChange"]; [mchange setAlternateTitle: @"Alternate"]; anotherView1 = [[NSView alloc] initWithFrame:anotherView1Frame]; anotherView2 = [[NSView alloc] initWithFrame:anotherView2Frame]; onoff = [[NSButton alloc] initWithFrame: bf6]; [onoff setButtonType: NSOnOffButton]; [onoff setTitle: @"OnOff"]; [onoff setTarget:self]; [onoff setAction:@selector(buttonAction2:)]; txtField = [[[NSTextField alloc] initWithFrame:textFieldRect] autorelease]; [self setTextField:txtField]; [txtField setStringValue:@"off"]; colorWell = [[NSColorWell alloc] initWithFrame: cwf]; [colorWell setColor:[NSColor greenColor]]; tfield = [[NSTextField alloc] initWithFrame:textRect]; [tfield setStringValue:@"abcdefghijklmnopqrstuvwxyz"]; [tfield setAlignment:NSCenterTextAlignment]; [self setTextField1:tfield]; button = [[NSButton alloc] initWithFrame:buttonRect]; [button setButtonType:NSMomentaryPushButton]; [button setTarget:self]; [button setAction:@selector(buttonPressed:)]; form = [[NSForm alloc] initWithFrame:frame]; c = [form addEntry:@"Field1"]; [c setEditable:YES]; [c setStringValue:@"Test"]; [form addEntry:@"Field2"]; [form addEntry:@"Field3"]; NSLog(@"Make the buttons subviews\n"); { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [v addSubview: mpush]; [v addSubview: ponpoff]; [v addSubview: toggle]; [v addSubview: swtch]; [v addSubview: radio]; [v addSubview: mchange]; [v addSubview:anotherView1]; [anotherView1 addSubview:anotherView2]; [anotherView2 addSubview:onoff]; [anotherView1 addSubview:txtField]; [v addSubview:light]; [v addSubview:tfield]; [v addSubview:button]; [v addSubview:form]; [v addSubview: colorWell]; [v display]; [win orderFront:nil]; } @end int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [buttonsController new]]; [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/dock.tiff0000664000175000017500000002243007226455374017112 0ustar fedorfedorII*$333iiiy]RRR,,,---% ...\\\333iii))) 9t222BBB----NN\\\333iii)))qqqyy\\]]]}}}~~~M\\\333)))111YM6222LLL)))999-Mvv\\\333QQQIY%T ZZZQQQ```y!66fff\\\333)M888"^^ttPU~fff&&&\\\333Qqqy--emmm-5Y&&&\\\333aaa!!!aIIq))QI 11A!f&&&\\\333aaa!!!>>>^nnn...&&&\\\333aaa!!!nnn...fff&&&\\\333\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\AAAAAAAAAAAAAAAAAAAAAAAZZZAZZZAAAAA***AAJJJAA AAA222AAAAAbbbAAAAZZZAAAAA***AAJJJAA AAA222AAAAAbbbAA"""AAAAAAA***AAJJJAA AAA222AAAAAbbbAA"""AAAAAAAAARRRAAAAAAbbbAAA"""AABBBAlllAAAAAAA***AAAAvvvA666A666AVVVAAAfffAA&&&AAAAAAAAA***AAAjAD4AAxxdAxAAA((XAAAArr A666A444AAAA333333333333333333333333333333333333333333333333333333333333333333DA88$A AAA""AhAApHArAA444AA|||AA333MMMMMMeee%%%iii)))\\\AHHAAAANNNAhhAppA00A22rAVVVAA|||AAA333MMMeee%%%iii)))aaa\\\A(A A666AAFFFA(AAPPA2AATTTAA<<>Ff  \\\A|||AA<<2Db!.??\\\00$  '$$%*%R/usr/home/fatal/newprefs/dockdone.tiffCreated with The GIMPgnustep-examples-1.4.0/gui/Old/nstextfields.m0000664000175000017500000000625607226455374020222 0ustar fedorfedor/* nstextfields.m Simple application to test NSSecureTextField* and NSTextField* classes. Copyright (C) 1999 Free Software Foundation, Inc. Author: Lyndon Tremblay Date: October 1999 This file is part of the GNUstep GUI. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include #include @interface CustomWindow : NSWindow @end @implementation CustomWindow @end @interface Controller : NSObject { CustomWindow *i_customWindow; NSTextField *i_textField; NSSecureTextField *i_secureTextField; } @end @implementation Controller /* ================== -applicationDidFinishLaunching: ================== */ - (void)applicationDidFinishLaunching:(NSNotification *)notification { const NSRect windowRect = {{0, 0}, {400, 70}}; const NSRect textFieldRect = {{25, 25}, {125, 20}}; const NSRect secureFieldRect = {{175, 25}, {125, 20}}; unsigned styleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask; i_customWindow = [[CustomWindow alloc] initWithContentRect:windowRect styleMask:styleMask backing:NSBackingStoreRetained defer:NO]; i_textField = [[NSTextField alloc] initWithFrame:textFieldRect]; [i_textField setStringValue:@"NSTextField"]; [[i_customWindow contentView] addSubview:i_textField]; i_secureTextField = [[NSSecureTextField alloc] initWithFrame:secureFieldRect]; [i_secureTextField setStringValue:@"NSSecureTextField"]; [[i_customWindow contentView] addSubview:i_secureTextField]; NSLog(@"editable: %i", [i_secureTextField isEditable]); NSLog(@"selectable: %i", [i_secureTextField isSelectable]); [i_customWindow setTitle:@"NSTextField NSSecureTextField"]; [i_customWindow center]; [i_customWindow display]; [i_customWindow orderFront:nil]; } @end int main (int argc, char **argv) { NSAutoreleasePool *pool = [NSAutoreleasePool new]; NSApplication *application; NSMenu *menu; [application = [NSApplication sharedApplication] setDelegate:[Controller new]]; menu = [NSMenu new]; [menu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"]; [application setMainMenu:menu]; [application run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/matrix.m0000664000175000017500000001015107710505774016775 0ustar fedorfedor/* matrix.m Copyright (C) 1996-1999 Free Software Foundation, Inc. Author: Ovidiu Predescu Date: April 1997 This file is part of the GNUstep GUI Testing package This file 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 file 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 library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #include #include @interface matrixController : NSObject { NSMatrix* matrix; } @end @implementation matrixController - (void)setMatrixMode: sender { [matrix setMode: [[sender selectedCell] tag]]; } - (void)setSelectionByRect: sender { [matrix setSelectionByRect: [sender state]]; } - (void)applicationDidFinishLaunching: (NSNotification *)aNotification { NSWindow *window; NSRect winRect = {{100, 100}, {600, 600}}; NSRect matrixRect = {{175, 5}, {460, 550}}; NSRect selectionMatrixRect = {{12, 36}, {120, 80}}; NSRect selectionByRectSwitchRect = {{12, 12}, {150, 20}}; NSMatrix* selectionMatrix; NSButtonCell* buttonCell; NSButton* selectionByRectSwitch; matrixController *handler = self; window = [[NSWindow alloc] init]; buttonCell = [[NSButtonCell new] autorelease]; [buttonCell setButtonType: NSPushOnPushOffButton]; matrix = [[[NSMatrix alloc] initWithFrame: matrixRect mode: NSRadioModeMatrix prototype: buttonCell numberOfRows: 30 numberOfColumns: 5] autorelease]; [[window contentView] addSubview: matrix]; [buttonCell setButtonType: NSRadioButton]; [buttonCell setBordered: NO]; selectionMatrix = [[[NSMatrix alloc] initWithFrame: selectionMatrixRect mode: NSRadioModeMatrix prototype: buttonCell numberOfRows: 4 numberOfColumns: 1] autorelease]; [selectionMatrix setTarget: handler]; [selectionMatrix setAction: @selector(setMatrixMode: )]; buttonCell = [selectionMatrix cellAtRow: 0 column: 0]; [buttonCell setTitle: @"Radio"]; [buttonCell setTag: NSRadioModeMatrix]; buttonCell = [selectionMatrix cellAtRow: 1 column: 0]; [buttonCell setTitle: @"Highlight"]; [buttonCell setTag: NSHighlightModeMatrix]; buttonCell = [selectionMatrix cellAtRow: 2 column: 0]; [buttonCell setTitle: @"List"]; [buttonCell setTag: NSListModeMatrix]; buttonCell = [selectionMatrix cellAtRow: 3 column: 0]; [buttonCell setTitle: @"Track"]; [buttonCell setTag: NSTrackModeMatrix]; [[window contentView] addSubview: selectionMatrix]; selectionByRectSwitch = [[[NSButton alloc] initWithFrame: selectionByRectSwitchRect] autorelease]; [selectionByRectSwitch setButtonType: NSSwitchButton]; [selectionByRectSwitch setBordered: NO]; [selectionByRectSwitch setTitle: @"Selection by rect"]; [selectionByRectSwitch setState: 1]; [selectionByRectSwitch setTarget: handler]; [selectionByRectSwitch setAction: @selector(setSelectionByRect: )]; [[window contentView] addSubview: selectionByRectSwitch]; [window setTitle: @"NSMatrix"]; [window setFrame: winRect display: YES]; [window orderFront: nil]; } @end int main(int argc, char** argv, char** env) { NSAutoreleasePool *pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [matrixController new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/fontpanel.m0000664000175000017500000000274007226455374017466 0ustar fedorfedor/* fontpanel.m Copyright (C) 2000 Free Software Foundation, Inc. Author: Fred Kiefer, Nicola Pero Date: December 2000 This file is part of GNUstep. 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 #include int main (void) { NSAutoreleasePool *pool = [NSAutoreleasePool new]; NSApplication *app; NSMenu *menu; NSMenuItem *item; app = [NSApplication sharedApplication]; menu = [NSMenu new]; item = [menu addItemWithTitle: @"Fonts" action: NULL keyEquivalent: @""]; [menu setSubmenu: [[NSFontManager sharedFontManager] fontMenu: YES] forItem: item]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [app setMainMenu: menu]; [app run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/GSImageTabViewItem.m0000664000175000017500000000252607276073541021054 0ustar fedorfedor#include "GSImageTabViewItem.h" @implementation GSImageTabViewItem - (void)setImage:(NSImage *)image { ASSIGN(item_image, image); } - (NSImage *)image; { return item_image; } - (NSSize)sizeOfLabel:(BOOL)shouldTruncateLabel; { NSSize rSize = [super sizeOfLabel: shouldTruncateLabel]; NSSize iSize = [[self image] size]; return NSMakeSize(rSize.width + iSize.width + 2, MAX(rSize.height, iSize.height)); } - (void)drawLabel:(BOOL)shouldTruncateLabel inRect:(NSRect)tabRect { NSGraphicsContext *ctxt = GSCurrentContext(); NSRect lRect; NSRect fRect; _rect = tabRect; DPSgsave(ctxt); fRect = tabRect; if (_state == NSSelectedTab) { fRect.origin.y -= 1; fRect.size.height += 1; [[NSColor lightGrayColor] set]; NSRectFill(fRect); } else if (_state == NSBackgroundTab) { [[NSColor lightGrayColor] set]; NSRectFill(fRect); } else { [[NSColor lightGrayColor] set]; NSRectFill(fRect); } lRect = tabRect; lRect.origin.y += 3; [[_tabview font] set]; [[self image] compositeToPoint: NSMakePoint(lRect.origin.x, lRect.origin.y) operation: NSCompositeSourceOver]; lRect.origin.x += [[self image] size].width + 2; DPSsetgray(ctxt, 0); DPSmoveto(ctxt, lRect.origin.x, lRect.origin.y); DPSshow(ctxt, [_label cString]); DPSgrestore(ctxt); } @end gnustep-examples-1.4.0/gui/Old/menu.m0000664000175000017500000001525511565145500016435 0ustar fedorfedor/* menu.m Copyright (C) 1996 Free Software Foundation, Inc. Author: Ovidiu Predescu Date: May 1997 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. n 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import @interface MyObject : NSObject @end @implementation MyObject - (void)method:menuItem { NSLog (@"method invoked from cell with title '%@'", [menuItem title]); } - (void)eepzact:menuItem { [menuItem setState: [menuItem state] ? NSOffState : NSOnState]; } @end int main(int argc, char **argv, char** env) { NSApplication *theApp; id pool = [NSAutoreleasePool new]; NSMenu* menu; NSMenu* infoMenu; NSMenu* fileMenu; NSMenu* editMenu; NSMenu* linkMenu; NSMenu* findMenu; SEL action = @selector(method:); SEL doEepz = @selector(eepzact:); NSMenuItem* menuItem; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate:[MyObject new]]; menuItem = [[NSMenuItem alloc] initWithTitle: @"Eepz" action: doEepz keyEquivalent: @"z"]; [menuItem setState: NSOffState]; menu = [NSMenu new]; [menu setMenuChangedMessagesEnabled: NO]; [menu addItemWithTitle:@"File" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Edit" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Format" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Utilities" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Windows" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Print" action:NULL keyEquivalent:@"p"]; [menu addItemWithTitle:@"Services" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Hide" action:action keyEquivalent:@"h"]; [menu insertItem:menuItem atIndex:[[menu itemArray] count]]; [menu addItemWithTitle:@"Info" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"]; [menu setMenuChangedMessagesEnabled: YES]; infoMenu = [NSMenu new]; [menu setSubmenu:infoMenu forItem:[menu itemWithTitle:@"Info"]]; [infoMenu addItemWithTitle:@"Info Panel..." action:action keyEquivalent:@""]; [infoMenu addItemWithTitle:@"Preferences..." action:action keyEquivalent:@""]; [infoMenu addItemWithTitle:@"Help" action:action keyEquivalent:@"?"]; fileMenu = [NSMenu new]; [fileMenu addItemWithTitle:@"Open..." action:action keyEquivalent:@"o"]; [fileMenu addItemWithTitle:@"New" action:action keyEquivalent:@"n"]; [fileMenu addItemWithTitle:@"Save" action:action keyEquivalent:@"s"]; [fileMenu addItemWithTitle:@"Save As..." action:action keyEquivalent:@"S"]; [fileMenu addItemWithTitle:@"Save To..." action:action keyEquivalent:@""]; [fileMenu addItemWithTitle:@"Save All" action:action keyEquivalent:@""]; [fileMenu addItemWithTitle:@"Return to Saved" action:action keyEquivalent:@"u"]; [fileMenu addItemWithTitle:@"Open Selection" action:action keyEquivalent:@"O"]; [fileMenu addItemWithTitle:@"Open Folder..." action:action keyEquivalent:@"D"]; [fileMenu addItemWithTitle:@"Close" action:action keyEquivalent:@""]; [menu setSubmenu:fileMenu forItem:[menu itemWithTitle:@"File"]]; editMenu = [NSMenu new]; [editMenu addItemWithTitle:@"Cut" action:action keyEquivalent:@"x"]; [editMenu addItemWithTitle:@"Copy" action:action keyEquivalent:@"c"]; [editMenu addItemWithTitle:@"Paste" action:action keyEquivalent:@"v"]; [editMenu addItemWithTitle:@"Link" action:action keyEquivalent:@""]; [editMenu addItemWithTitle:@"Delete" action:action keyEquivalent:@""]; [editMenu addItemWithTitle:@"Undelete" action:action keyEquivalent:@""]; [editMenu addItemWithTitle:@"Find" action:action keyEquivalent:@""]; [editMenu addItemWithTitle:@"Spelling..." action:action keyEquivalent:@":"]; [editMenu addItemWithTitle:@"Check Spelling" action:action keyEquivalent:@";"]; [editMenu addItemWithTitle:@"Select All" action:action keyEquivalent:@"a"]; [menu setSubmenu:editMenu forItem:[menu itemWithTitle:@"Edit"]]; linkMenu = [NSMenu new]; [linkMenu addItemWithTitle:@"Paste and Link" action:action keyEquivalent:@"V"]; [linkMenu addItemWithTitle:@"Show Links" action:action keyEquivalent:@""]; [linkMenu addItemWithTitle:@"Link Inspector..." action:action keyEquivalent:@""]; [linkMenu addItemWithTitle:@"Verify Links" action:action keyEquivalent:@""]; [editMenu setSubmenu:linkMenu forItem:[editMenu itemWithTitle:@"Link"]]; findMenu = [NSMenu new]; [findMenu addItemWithTitle:@"Find Panel..." action:action keyEquivalent:@"f"]; [findMenu addItemWithTitle:@"Find Next" action:action keyEquivalent:@"g"]; [findMenu addItemWithTitle:@"Find Previous" action:action keyEquivalent:@"d"]; [findMenu addItemWithTitle:@"Enter Selection" action:action keyEquivalent:@"e"]; [findMenu addItemWithTitle:@"Jump to Selection" action:action keyEquivalent:@"j"]; [findMenu addItemWithTitle:@"Line Range..." action:action keyEquivalent:@"l"]; [linkMenu setSubmenu:findMenu forItem:[linkMenu itemWithTitle:@"Verify Links"]]; findMenu = [NSMenu new]; [findMenu addItemWithTitle:@"Find Panel..." action:action keyEquivalent:@"f"]; [findMenu addItemWithTitle:@"Find Next" action:action keyEquivalent:@"g"]; [findMenu addItemWithTitle:@"Find Previous" action:action keyEquivalent:@"d"]; [findMenu addItemWithTitle:@"Enter Selection" action:action keyEquivalent:@"e"]; [findMenu addItemWithTitle:@"Jump to Selection" action:action keyEquivalent:@"j"]; [findMenu addItemWithTitle:@"Line Range..." action:action keyEquivalent:@"l"]; [editMenu setSubmenu:findMenu forItem:[editMenu itemWithTitle:@"Find"]]; [[menu itemWithTitle: @"Format"] setImage: [NSImage imageNamed: @"Smiley"]]; [[menu itemWithTitle: @"Format"] setTitle: @"Smile for me..."]; [menu itemChanged: [menu itemWithTitle: @"Smile for me..."]]; [theApp setMainMenu:menu]; NSLog (@"start displaying the menu..."); [menu update]; [menu display]; NSLog (@"ready!"); [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/ImageView.m0000664000175000017500000000336007710505774017352 0ustar fedorfedor/* ImageView.m Simple subclass of NSView to display an NSImage. Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: June 1996 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "ImageView.h" @implementation ImageView // Class methods // Instance methods - init { return [self initWithFile: @""]; } - initWithFile:(NSString *)str { [super init]; file_name = str; image = [[NSImage alloc] initWithContentsOfFile: file_name]; [image setBackgroundColor: [NSColor whiteColor]]; if (image == nil) { NSLog(@"Failed to load image %s\n", [file_name cString]); RELEASE(self); return nil; } NSLog(@"Loaded image %s\n", [file_name cString]); return self; } - (NSSize)imageSize { return [image size]; } - (void)drawRect:(NSRect)rect { [image compositeToPoint: NSZeroPoint operation: NSCompositeCopy]; NSLog(@"Image has been composited\n"); } @end gnustep-examples-1.4.0/gui/Old/appearance.tiff0000664000175000017500000001013407226455374020267 0ustar fedorfedorII*H $h!B &l"F%j1bƊ'n &J$i2u42˘>ksfʝ-W<9rƠ@K ,0H7(S 0?Qq2>vc Q*-#>b W&5P2T!@T,8AVp?PEӯ[ [l۹c}`brr$TQ˸|lҬE6:tҭG/mhPD#F7aҔi3f);?HPKXf+Ȃ a08PYUdA$sA]Ts-rC{uUw< |/4X5Tg`|O˭;飏SI eքdO29-AI2DUA:t1W‡5Bm#f](c=5$z/c3c >. >K8On!gZir+Ӕ4쇵*A 2q?pu5tf5w(:o /b6T0俰"(KT*Am;BK~z#]PFjꄯn\׵aj(˓f=3ql0Ze؆Fhj{tT+|0+ z9d:jI57aj[AGؗX Fo|DHXbXm5YaI,tc7%f+r^{o _0.%:>vEOQzO[c3mb& #/p? Zwq/ẟ~_W!q/kA"x $$.Ar1A zp`/!qѐFZ`NRAa4gְ)a WpG  " #!܍Q2wUE=QvԢE+1~"fulb2qc8RVC|_ Lp%( Ixb@AxBG$xN #OH?,\afBa(VS?8#k<"x5"x:Bv@8F`@ ?fS'd%xJ3vCQ?i#J9</pg0}}2fb YbH#p%SJJx"Ec !ϞG:xfZa Q<X#+< (q;TW3vWl+*4.Ym"@у?$6H3 Pg] R<Xkn*? Z*[>2f`ijTGضmjs[ڶ6כ6H琁gx*!W0o$X?z  43#~Gl8mp77{|sG54[[ĢЋGxr:a{#6 ucxR Vџ%,6 j$^хQյJ[n0 3K,?"rGV1pb< #N<#?L8޺Ǧbx=38 ^ AGЅ,#S_WH\l8K1RN$";-"r[:񏀳?;Ev? {bgq<^;xbծH` wo:p%"%̶ Y0Qz٘ƺIrX'M)Nyjя?">ak8;y p6 _/XJp ^ܼ}-pZ8k}d/( UPX(Zȃ HZh̒|(Z8()+(]ȃ'ML)3)XHH" /ʐ 鐍|0x<ʓbb/uP/XJׇJPʲʩJ**JX-<$H8H䍛*- wЯ6*XPJ1@xZZZZZڮڭګ::k5WKrHx j.Ь/PnEaI!њckn'4FFƀjFj5W%8%Kںx˄L DU!GMji j9VYnkU}mukn5aa-'@lhj˶iok׏%`VT$$mD Is5o( !"!NBl($mz'}R[DB@ $h!.,&d`k4bꈉ-v8&H?id SFƬ123bx9rʝ'oN@@ B ℋC& ,PʗPbkVUn)E090|-Zjݢy `AtdnYztާg cڵ=f&N Date: February 1997 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include @interface MyObject : NSObject @end @implementation MyObject - (void)scrollerAction: (id)sender { float pos = [sender floatValue]; float knob = [sender knobProportion]; switch ([sender hitPart]) { case NSScrollerKnob: NSLog (@"NSScrollerKnob"); NSLog (@"scroller value = %f", pos); break; case NSScrollerKnobSlot: NSLog (@"NSScrollerKnobSlot"); break; case NSScrollerDecrementLine: NSLog (@"NSScrollerDecrementLine"); [sender setFloatValue: pos - 0.05 knobProportion: knob]; break; case NSScrollerDecrementPage: NSLog (@"NSScrollerDecrementPage"); [sender setFloatValue: pos - 0.2 knobProportion: knob]; break; case NSScrollerIncrementLine: NSLog (@"NSScrollerIncrementLine"); [sender setFloatValue: pos + 0.05 knobProportion: knob]; break; case NSScrollerIncrementPage: NSLog (@"NSScrollerIncrementPage"); [sender setFloatValue: pos + 0.2 knobProportion: knob]; break; case NSScrollerNoPart: NSLog (@"NSScrollerNoPart"); break; } } @end int main(int argc, char **argv, char** env) { NSApplication *theApp; NSWindow *window; NSRect winRect = {{100, 400}, {300, 200}}; NSRect wf0 = {{0, 0}, {300, 300}}; NSView *v; NSScroller *s0, *s1, *s2, *s3, *s4, *s5; NSRect sf0 = {{10, 10}, {150, 20}}; NSRect sf1 = {{10, 40}, {150, 20}}; NSRect sf2 = {{10, 70}, {150, 20}}; NSRect sf3 = {{10, 100}, {20, 150}}; NSRect sf4 = {{40, 100}, {20, 150}}; NSRect sf5 = {{70, 100}, {20, 150}}; id object; id pool; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; #endif pool = [NSAutoreleasePool new]; theApp = [NSApplication sharedApplication]; object = [[MyObject new] autorelease]; #if 0 window = [[NSWindow alloc] initWithContentRect: winRect styleMask: style backing: NSBackingStoreNonretained defer: NO]; #else window = [[NSWindow alloc] init]; #endif v = [window contentView]; s0 = [[NSScroller alloc] initWithFrame: sf0]; [s0 setArrowsPosition: NSScrollerArrowsMaxEnd]; [s0 setEnabled: YES]; [s0 setTarget: object]; [s0 setAction: @selector(scrollerAction:)]; [v addSubview: s0]; s1 = [[NSScroller alloc] initWithFrame: sf1]; [s1 setArrowsPosition: NSScrollerArrowsMinEnd]; [s1 setEnabled: YES]; [s1 setTarget: object]; [s1 setAction: @selector(scrollerAction:)]; [v addSubview: s1]; s2 = [[NSScroller alloc] initWithFrame: sf2]; [s2 setArrowsPosition: NSScrollerArrowsNone]; [s2 setEnabled: YES]; [s2 setTarget: object]; [s2 setAction: @selector(scrollerAction:)]; [v addSubview: s2]; s3 = [[NSScroller alloc] initWithFrame: sf3]; [s3 setArrowsPosition: NSScrollerArrowsMaxEnd]; [s3 setEnabled: YES]; [s3 setFloatValue: 0.5 knobProportion: 0.4]; [s3 setTarget: object]; [s3 setAction: @selector(scrollerAction:)]; [v addSubview: s3]; s4 = [[NSScroller alloc] initWithFrame: sf4]; [s4 setArrowsPosition: NSScrollerArrowsMinEnd]; [s4 setEnabled: YES]; [s4 setTarget: object]; [s4 setAction: @selector(scrollerAction:)]; [v addSubview: s4]; s5 = [[NSScroller alloc] initWithFrame: sf5]; [s5 setArrowsPosition: NSScrollerArrowsNone]; [s5 setEnabled: YES]; [s5 setTarget: object]; [s5 setAction: @selector(scrollerAction:)]; [v addSubview: s5]; [window setFrame: wf0 display: YES]; [window setTitle: @"GNUstep NSScroller"]; [window orderFrontRegardless]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/nsbrowsercell.m0000664000175000017500000000643607226455374020372 0ustar fedorfedor/* nsbrowsercell.m Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: October 1997 Author: Felipe A. Rodriguez Date: July 1998 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import @interface MyObject : NSObject { NSMatrix* matrix; } @end @implementation MyObject - (void)setMatrix:(NSMatrix*)anObject { matrix = anObject; } - (void)setMatrixMode:sender { [matrix setMode:[[sender selectedCell] tag]]; } - (void)setSelectionByRect:sender { [matrix setSelectionByRect:[sender state]]; } @end int main(int argc, char **argv, char** env) { NSApplication *theApp; NSWindow *window; NSRect winRect = {{100, 100}, {600, 600}}; NSRect scrollViewRect = {{20, 115}, {150, 335}}; NSRect matrixRect = {{0, 0}, {100, 550}}; id pool = [NSAutoreleasePool new]; NSMatrix* matrix; NSBrowserCell* browserCell; NSScrollView* scrollView; MyObject* handler = [[MyObject new] autorelease]; NSSize cs, ms; NSRect mr; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; //#if 1 // window = [[NSWindow alloc] // initWithContentRect:winRect // styleMask:NSTitledWindowMask // backing:NSBackingStoreNonretained // defer:NO]; //#else window = [[NSWindow alloc] init]; //#endif browserCell = [[NSBrowserCell new] autorelease]; [browserCell setStringValue:@"aTitle"]; // for NS compatibility matrix = [[[NSMatrix alloc] initWithFrame:matrixRect mode:NSRadioModeMatrix // mode:NSListModeMatrix // selectedRow/selectedColumn get set to -1 // during matrix init. the program then crashes // when a cell is selected FAR 6/19/98 (fix me) prototype:browserCell numberOfRows:10 numberOfColumns:1] autorelease]; // [matrix _test]; scrollView = [[NSScrollView alloc] initWithFrame:scrollViewRect]; [scrollView setHasHorizontalScroller:NO]; [scrollView setHasVerticalScroller:YES]; [scrollView setBorderType:NSBezelBorder]; // for NS compatibility cs = [scrollView contentSize]; ms = [matrix cellSize]; ms.width = cs.width; [matrix setCellSize: ms]; [matrix sizeToCells]; // for NS compatibility [scrollView setDocumentView:matrix]; [[window contentView] addSubview:scrollView]; [window setTitle:@"NSMatrix with NSBrowserCells"]; [window setFrame:winRect display:YES]; [window orderFrontRegardless]; [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/animations.tiff0000664000175000017500000000562007226455374020336 0ustar fedorfedorII*  $h!B &l"F%j1bƊ'nݲ?i))I27AI(Qb!BE,QL)UEp<kTnH*"K3D ߿7%t!uڄ; D?7&YM1bd9rTjhyѣq=WvXhx.n`cw30@XPYbޱ5OS $wx4Pqms_VRv 0`ll gas` * :DŶ (2<'̧7X}Z! )b?.鍗$P uC`Ps *-M2ߌSL63]a]B1$Dd-#- aKMR-0#IPM?Ì4gyHsE:HXTh>JψR.´(J62KY(ࡇ $,·BjZ(2)mIؘJeiϑ{y!((o'Z*k/2|" X`fjRl4ZVmu?'IUĒd!$ғWUqd9 1z+Zo1i[?W)T 0gG`^ן}΍Nk[Lۦw]-+ 7 AƱ :69*aKfOoǓSve=0qP)$YnfΑî9U@?roៜ#.Ⱦ[/ '1֧Z3cRK;G%ZVF(m@9_(hߊ_!tq@/GX%$ ;+8~ #2 ;b!p rMF`&0 3Q~GEPmGCɘHk*^c?@#b(@*BF#p9+G|@ c/!i%yEdm`G =rmPJ.@ ӊY8r$ҕXg@=Dr<2Je"Cq)I3I6ULB>jOwvka%)Eiʐ&U@LyʗTX $p WP'|-d=m^A FvrrB予D`SN?> O@: %/Y?e*hY.YP+wV\9>+-_Yc-:"FUWU q[[,VeIqY3u)/QA ,У`U?'{5n0%*Y?KZ\"^ u-mCKЖ?xVk.?ڊ?JO9aeVP\G5ӑ#Lkw-8v2*WUFWХt~3J z^g| Ƌ;(,724 (ؿ~^8  $аGx^7:"ixXDZU_x3Vox01jxEd4PS$ <թӜ)2O,!f$xF\\ 2>aN+Wрxk*]R z2!40}l>cO}~yzt2gS=XzxI|Ag?8BDg# _BX:d~ ~d3, 0{>@0',@~D rX` H0s<@000 4C lp ]@@a>^2 :WBA@ k`B8L a`" -!x1ŀ+fq#J, m2aS ß&u4SJVXbD`) Xp-HJ&eD*V\Jk .V bjKͱjݦmͰVX=FAk ?7=ftO:+XŠj.V4 ڷ[fμYH͘4A6le 윸>c +NpA^ko޺}>zw00:   'B j  * R/usr/home/fatal/alfredo/animations.tifCreated with The GIMPx p gnustep-examples-1.4.0/gui/Old/nsprogressindicator.m0000664000175000017500000000671607710505774021607 0ustar fedorfedor/* nsprogressindicator.m Copyright (C) 1999 Free Software Foundation, Inc. Author: Gerrit van Dyk Date: September 1999 This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include @interface MyObject : NSObject { NSProgressIndicator *horInd,*verInd; } - (id)initWithHorIndicator:(NSProgressIndicator *)aHorInd verIndicator:(NSProgressIndicator *)aVerInd; - (void)doProgress; @end int main(int argc, char **argv, char** env) { NSApplication *theApp; NSWindow* window; NSProgressIndicator *horInd,*verInd; NSMenu *menu; MyObject *trigger; NSRect winRect = {{100, 100}, {300, 150}}; NSRect horIndRect = {{40,60},{250,30}}; NSRect verIndRect = {{10,10},{20,130}}; NSAutoreleasePool* pool; id target; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif pool = [NSAutoreleasePool new]; theApp = [NSApplication sharedApplication]; #if 0 window = [[NSWindow alloc] initWithContentRect:winRect styleMask:style backing:NSBackingStoreNonretained defer:NO]; #else window = [[NSWindow alloc] init]; #endif [window setFrame:winRect display:YES]; target = [[MyObject new] autorelease]; horInd = [[[NSProgressIndicator alloc] initWithFrame:horIndRect] autorelease]; verInd = [[[NSProgressIndicator alloc] initWithFrame:verIndRect] autorelease]; [[window contentView] addSubview:horInd]; [[window contentView] addSubview:verInd]; trigger = [[MyObject alloc] initWithHorIndicator:horInd verIndicator:verInd]; menu = [NSMenu new]; [menu addItemWithTitle:@"Quit the Test" action: @selector(terminate:) keyEquivalent: @"q"]; [theApp setMainMenu:menu]; [menu setTitle:@"Test"]; [menu update]; [menu display]; [window orderFrontRegardless]; [theApp run]; [trigger release]; [pool release]; return 0; } @implementation MyObject : NSObject - (id)initWithHorIndicator:(NSProgressIndicator *)aHorIndicator verIndicator:(NSProgressIndicator *)aVerIndicator { self = [self init]; horInd = [aHorIndicator retain]; verInd = [aVerIndicator retain]; [horInd setIndeterminate: NO]; [verInd setIndeterminate: NO]; [verInd setVertical:YES]; [verInd setMinValue:100]; [verInd setMaxValue:700]; [self performSelector: @selector(doProgress) withObject:nil afterDelay:1.0]; return self; } - (void)dealloc { [horInd release]; [verInd release]; [super dealloc]; } - (void)doProgress { int i; for (i=0;i<100;i++) { [horInd incrementBy:1.0]; [horInd displayIfNeeded]; } for (i=0;i<200;i++) { [verInd incrementBy:3.0]; [verInd displayIfNeeded]; } } @end gnustep-examples-1.4.0/gui/Old/testpb.m0000775000175000017500000000423007356713565017003 0ustar fedorfedor#include #include #include #include #include #include #include @interface pbOwner : NSObject { } - (void) pasteboard: (NSPasteboard*)pb provideDataForType: (NSString*)type; @end @implementation pbOwner - (void) pasteboard: (NSPasteboard*)pb provideDataForType: (NSString*)type { if ([type isEqual: NSFileContentsPboardType]) { NSString* s = [pb stringForType: NSStringPboardType]; if (s) { const char* ptr; int len; NSData* d; ptr = [s cString]; len = strlen(ptr); d = [NSData dataWithBytes: ptr length: len]; [pb setData: d forType: type]; } } } @end int main(int argc, char** argv) { NSAutoreleasePool *pool = [NSAutoreleasePool new]; pbOwner *owner = [pbOwner new]; NSPasteboard *pb; NSArray *types; NSData *d; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp registerServicesMenuSendTypes: [NSArray arrayWithObject: NSStringPboardType] returnTypes: [NSArray arrayWithObject: NSStringPboardType]]; [NSObject enableDoubleReleaseCheck: YES]; types = [NSArray arrayWithObjects: NSStringPboardType, NSFileContentsPboardType, nil]; pb = [NSPasteboard generalPasteboard]; [pb declareTypes: types owner: owner]; [pb setString: @"This is a test" forType: NSStringPboardType]; d = [pb dataForType: NSFileContentsPboardType]; printf("%.*s\n", [d length], [d bytes]); pb = [NSPasteboard pasteboardWithUniqueName]; types = [NSArray arrayWithObjects: NSStringPboardType, nil]; [pb declareTypes: types owner: owner]; [pb setString: @"a lowercase test string" forType: NSStringPboardType]; if (NSPerformService(@"To upper", pb) == NO) { printf("Failed to perform 'To upper' service\n"); } else { NSString *result = [pb stringForType: NSStringPboardType]; printf("To upper - result - '%s'\n", [result cString]); } [pool release]; exit(0); } gnustep-examples-1.4.0/gui/Old/Smiley.tiff0000664000175000017500000000077607226455374017445 0ustar fedorfedorII* ;f 3Ś ^`a@݅+?.W # Date: 2001 # # This file is part of GNUstep. # # 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 # The applications to be compiled TEST_APP_NAME = nscombobox nstabview nsimagecell popupbuttons testpb \ nsprogressindicator matrix nsscroller nscursor buttons windows \ fontpanel menu nscombobox_OBJC_FILES = nscombobox.m nstabview_OBJC_FILES = nstabview.m GSImageTabViewItem.m TestView.m nstabview_RESOURCE_FILES = Smiley.tiff nsimagecell_OBJC_FILES = nsimagecell.m popupbuttons_OBJC_FILES = popupbuttons.m TestView.m testpb_OBJC_FILES = testpb.m nsprogressindicator_OBJC_FILES = nsprogressindicator.m matrix_OBJC_FILES = matrix.m nsscroller_OBJC_FILES = nsscroller.m nscursor_OBJC_FILES = nscursor.m ColorView.m buttons_OBJC_FILES = buttons.m windows_OBJC_FILES = windows.m TestView.m fontpanel_OBJC_FILES = fontpanel.m menu_OBJC_FILES = menu.m include $(GNUSTEP_MAKEFILES)/test-application.make gnustep-examples-1.4.0/gui/Old/GNUstepInstaller.m0000664000175000017500000002432007226455374020701 0ustar fedorfedor/* nsbrowsercell.m Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: October 1997 Author: Felipe A. Rodriguez Date: July 1998 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import #import #include "TestView.h" #include "GSImageTabViewItem.h" @interface myTabViewDelegate : NSObject { NSTabView *ourView; NSMatrix *matrix; } - (BOOL)tabView:(NSTabView *)tabView shouldSelectTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabViewDidChangeNumberOfTabViewItems:(NSTabView *)TabView; @end @implementation myTabViewDelegate - (BOOL)tabView:(NSTabView *)tabView shouldSelectTabViewItem:(NSTabViewItem *)tabViewItem { NSLog(@"shouldSelectTabViewItem: %@", [tabViewItem label]); /* * This is a test to see if the delegate is doing its job. */ /* if ([[tabViewItem label] isEqual:@"Me"]) return NO; */ return YES; } - (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem { NSLog(@"willSelectTabViewItem: %@", [tabViewItem label]); } - (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem { NSLog(@"didSelectTabViewItem: %@", [tabViewItem label]); } - (void)tabViewDidChangeNumberOfTabViewItems:(NSTabView *)TabView { NSLog(@"tabViewDidChangeNumberOfTabViewItems: %d", [TabView numberOfTabViewItems]); } - (void)setTabView:(NSTabView *)tabView { ourView = tabView; } - (void)buttonNext:(id)sender { [ourView selectNextTabViewItem:sender]; } - (void)buttonPrevious:(id)sender { [ourView selectPreviousTabViewItem:sender]; } - (void) setMatrix: (NSMatrix*)anObject { matrix = anObject; } - (NSMatrix *) aMatrixToAddAsAView { NSRect matrixRect = {{10, 42}, {260, 228}}; NSMatrix *theMatrix; NSSize cellSize = {64, 75}; NSImageCell *imageCell; id handler = self; imageCell = [[NSImageCell new] autorelease]; [imageCell setImageFrameStyle: NSImageFrameGrayBezel]; [imageCell setImageScaling: NSScaleNone]; [imageCell setImage: [NSImage imageNamed: @"NSRadioButton"]]; theMatrix = [[[NSMatrix alloc] initWithFrame: matrixRect mode: NSRadioModeMatrix prototype: imageCell numberOfRows: 3 numberOfColumns: 4] autorelease]; [theMatrix setCellSize: cellSize]; [self setMatrix: theMatrix]; imageCell = [theMatrix cellAtRow: 0 column: 0]; [imageCell setImageAlignment: NSImageAlignTopLeft]; imageCell = [theMatrix cellAtRow: 0 column: 1]; [imageCell setImageAlignment: NSImageAlignTop]; imageCell = [theMatrix cellAtRow: 0 column: 2]; [imageCell setImageAlignment: NSImageAlignTopRight]; imageCell = [theMatrix cellAtRow: 0 column: 3]; [imageCell setImageScaling: NSScaleProportionally]; imageCell = [theMatrix cellAtRow: 1 column: 0]; [imageCell setImageAlignment: NSImageAlignLeft]; imageCell = [theMatrix cellAtRow: 1 column: 1]; [imageCell setImageAlignment: NSImageAlignCenter]; imageCell = [theMatrix cellAtRow: 1 column: 2]; [imageCell setImageAlignment: NSImageAlignRight]; imageCell = [theMatrix cellAtRow: 1 column: 3]; [imageCell setImageScaling: NSScaleToFit]; imageCell = [theMatrix cellAtRow: 2 column: 0]; [imageCell setImageAlignment: NSImageAlignBottomLeft]; imageCell = [theMatrix cellAtRow: 2 column: 1]; [imageCell setImageAlignment: NSImageAlignBottom]; imageCell = [theMatrix cellAtRow: 2 column: 2]; [imageCell setImageAlignment: NSImageAlignBottomRight]; imageCell = [theMatrix cellAtRow: 2 column: 3]; [imageCell setImageScaling: NSScaleNone]; return theMatrix; } @end int main(int argc, char **argv, char** env) { NSApplication *theApp; NSWindow *window; NSTabView *tabView; NSTabViewItem *item; NSRect winRect = {{100, 100}, {300, 350}}; NSRect tabViewRect = {{10, 10}, {280, 280}}; NSBox *slash; id pool = [NSAutoreleasePool new]; id aView; id label; NSButton *button; id delegate = [myTabViewDelegate new]; id scrollView; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif #ifndef NX_CURRENT_COMPILER_RELEASE initialize_gnustep_backend(); #endif theApp = [NSApplication sharedApplication]; window = [[NSWindow alloc] init]; tabView = [[NSTabView alloc] initWithFrame:tabViewRect]; [tabView setTabViewType:NSNoTabsBezelBorder]; [tabView setDelegate:delegate]; [delegate setTabView:tabView]; [[window contentView] addSubview:tabView]; aView = [[NSView alloc] initWithFrame:[tabView contentRect]]; label = [[NSTextField alloc] initWithFrame:[aView frame]]; [label setEditable:NO]; [label setSelectable:NO]; [label setBezeled:NO]; [label setBordered:NO]; [label setBackgroundColor:[NSColor lightGrayColor]]; [label setAlignment:NSCenterTextAlignment]; [label setStringValue:[NSString stringWithCString:"Press next to install."]]; [aView addSubview:label]; [label release]; slash = [[NSBox alloc] initWithFrame:NSMakeRect(10,37,260,2)]; [slash setTitlePosition: NSNoTitle]; [slash setBorderType: NSGrooveBorder]; [aView addSubview:slash]; [slash release]; button = [[NSButton alloc] initWithFrame:NSMakeRect(10,10,72,22)]; [button setTitle: @"Previous..."]; [button setTarget:delegate]; [button setAction:@selector(buttonPrevious:)]; [button setEnabled:NO]; [aView addSubview:button]; [button release]; button = [[NSButton alloc] initWithFrame:NSMakeRect(85,10,72,22)]; [button setTitle: @"Next..."]; [button setTarget:delegate]; [button setAction:@selector(buttonNext:)]; [aView addSubview:button]; [button release]; item = [[NSTabViewItem alloc] initWithIdentifier:@"Urph"]; [item setLabel:@"Natalie"]; [item setView:aView]; [tabView addTabViewItem:item]; [aView release]; aView = [[NSView alloc] initWithFrame:[tabView contentRect]]; [aView addSubview:[delegate aMatrixToAddAsAView]]; /* label = [[NSTextField alloc] initWithFrame:[aView frame]]; [label setEditable:NO]; [label setSelectable:NO]; [label setBezeled:NO]; [label setBordered:NO]; [label setBackgroundColor:[NSColor lightGrayColor]]; [label setAlignment:NSCenterTextAlignment]; [label setStringValue:[NSString stringWithCString: "Previous, or Next?"]]; [aView addSubview:label]; [label release]; */ slash = [[NSBox alloc] initWithFrame:NSMakeRect(10,37,260,2)]; [slash setTitlePosition: NSNoTitle]; [slash setBorderType: NSGrooveBorder]; [aView addSubview:slash]; [slash release]; button = [[NSButton alloc] initWithFrame:NSMakeRect(10,10,72,22)]; [button setTitle: @"Previous..."]; [button setTarget:delegate]; [button setAction:@selector(buttonPrevious:)]; [aView addSubview:button]; [button release]; button = [[NSButton alloc] initWithFrame:NSMakeRect(85,10,72,22)]; [button setTitle: @"Next..."]; [button setTarget:delegate]; [button setAction:@selector(buttonNext:)]; [aView addSubview:button]; [button release]; item = [[NSTabViewItem alloc] initWithIdentifier:@"Urph2"]; [item setLabel:@"Natalia Conquistadori"]; [item setView:aView]; [tabView addTabViewItem:item]; [aView release]; aView = [[NSView alloc] initWithFrame:[tabView contentRect]]; scrollView = [[NSScrollView alloc] initWithFrame:NSMakeRect(10,42,260,228)]; [scrollView setDocumentView:[[TestView alloc] initWithFrame:NSMakeRect(0,0,500,700)]]; [scrollView setHasHorizontalScroller:YES]; [scrollView setHasVerticalScroller:YES]; [aView addSubview:scrollView]; /* label = [[NSTextField alloc] initWithFrame:[aView frame]]; [label setEditable:NO]; [label setSelectable:NO]; [label setBezeled:NO]; [label setBordered:NO]; [label setBackgroundColor:[NSColor lightGrayColor]]; [label setAlignment:NSCenterTextAlignment]; [label setStringValue:[NSString stringWithCString:"Well, no install. Sorry. :-)"]]; [aView addSubview:label]; [label release]; */ slash = [[NSBox alloc] initWithFrame:NSMakeRect(10,37,260,2)]; [slash setTitlePosition: NSNoTitle]; [slash setBorderType: NSGrooveBorder]; [aView addSubview:slash]; [slash release]; button = [[NSButton alloc] initWithFrame:NSMakeRect(10,10,72,22)]; [button setTitle: @"Previous..."]; [button setTarget:delegate]; [button setAction:@selector(buttonPrevious:)]; [aView addSubview:button]; [button release]; button = [[NSButton alloc] initWithFrame:NSMakeRect(85,10,72,22)]; [button setTitle: @"Next..."]; [button setTarget:delegate]; [button setEnabled:NO]; [button setAction:@selector(buttonNext:)]; [aView addSubview:button]; [button release]; item = [[GSImageTabViewItem alloc] initWithIdentifier:@"Urph3"]; [item setImage:[NSImage imageNamed:@"Smiley"]]; [item setLabel:@"Me"]; [item setView:aView]; [tabView addTabViewItem:item]; [aView release]; [window setTitle:@"NSTabView without Tabs"]; [window setFrame:winRect display:YES]; [window orderFrontRegardless]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/scrollview.m0000664000175000017500000001044107226455374017666 0ustar fedorfedor/* scrollview.m Copyright (C) 1996-1999 Free Software Foundation, Inc. Author: Ovidiu Predescu Date: July 1997 This file is part of the GNUstep Testing package. This file 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 file 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 library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import #include "TestView.h" @interface MyObject : NSObject { id scrollView; NSRect viewFrame; } - (void)setScrollView:(id)aView; @end @implementation MyObject - (void)setScrollView:(id)aView { [aView retain]; [scrollView release]; scrollView = aView; viewFrame = [[scrollView documentView] frame]; } - (void)setZoomFactor:(id)sender { int tag = [[sender selectedCell] tag]; id docView = [scrollView documentView]; float scale; switch (tag) { default: case 1: scale = 1; break; case 2: scale = 1.5; break; case 3: scale = 2; break; case 4: scale = 4; break; } [docView setFrameSize:NSMakeSize (viewFrame.size.width * scale, viewFrame.size.height * scale)]; [docView setBoundsSize:viewFrame.size]; [scrollView setNeedsDisplay:YES]; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow* window; NSScrollView* scrollView; TestView* view; NSButtonCell* buttonCell; NSMatrix* zoomMatrix; NSRect scrollViewRect = {{10, 10}, {250, 300}}; NSRect zoomMatrixRect = {{270, 10}, {120, 80}}; NSRect winRect = {{100, 100}, {380, 350}}; NSRect f = {{0, 0}, {500, 700}}; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; #if 0 window = [[NSWindow alloc] initWithContentRect:winRect styleMask:style backing:NSBackingStoreNonretained defer:NO]; #else window = [[NSWindow alloc] init]; #endif view = [[[TestView alloc] initWithFrame:f] autorelease]; scrollView = [[NSScrollView alloc] initWithFrame:scrollViewRect]; [scrollView setHasHorizontalScroller:YES]; [scrollView setHasVerticalScroller:YES]; [scrollView setDocumentView:view]; [[window contentView] addSubview:scrollView]; [self setScrollView:scrollView]; buttonCell = [[NSButtonCell new] autorelease]; [buttonCell setButtonType:NSRadioButton]; [buttonCell setBordered:NO]; zoomMatrix = [[[NSMatrix alloc] initWithFrame:zoomMatrixRect mode:NSRadioModeMatrix prototype:buttonCell numberOfRows:4 numberOfColumns:1] autorelease]; [zoomMatrix setTarget: self]; [zoomMatrix setAction:@selector(setZoomFactor:)]; buttonCell = [zoomMatrix cellAtRow:0 column:0]; [buttonCell setTitle:@"100%"]; [buttonCell setTag:1]; buttonCell = [zoomMatrix cellAtRow:1 column:0]; [buttonCell setTitle:@"150%"]; [buttonCell setTag:2]; buttonCell = [zoomMatrix cellAtRow:2 column:0]; [buttonCell setTitle:@"200%"]; [buttonCell setTag:3]; buttonCell = [zoomMatrix cellAtRow:3 column:0]; [buttonCell setTitle:@"400%"]; [buttonCell setTag:4]; [[window contentView] addSubview:zoomMatrix]; [window setFrame:winRect display:YES]; [window center]; [window makeKeyAndOrderFront:nil]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } } @end int main(int argc, char **argv, char** env) { id object; NSApplication *theApp; NSAutoreleasePool* pool; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif pool = [NSAutoreleasePool new]; theApp = [NSApplication sharedApplication]; object = [[MyObject new] autorelease]; [theApp setDelegate: object]; [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/nstabview.m0000664000175000017500000001572607710505774017510 0ustar fedorfedor#include #include #include #include "TestView.h" #include "GSImageTabViewItem.h" @interface tabPlayground : NSView { } @end @interface appController : NSObject { int tabNum; NSTabView *tabView; } - (void) addTab: (id)sender; - (void) removeTab: (id)sender; @end @interface myTabViewDelegate : NSObject { } - (BOOL)tabView:(NSTabView *)tabView shouldSelectTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabViewDidChangeNumberOfTabViewItems:(NSTabView *)TabView; @end @implementation tabPlayground - (void) drawRect:(NSRect)rect { NSGraphicsContext *ctxt = GSCurrentContext(); DPSgsave(ctxt); /* DPSsetlinewidth(ctxt,1); DPSsetgray(ctxt,0.8); DPSmoveto(ctxt, rect.origin.x+20, rect.origin.y+20); // DPSrlineto(ctxt, 5, 17); DPScurveto(ctxt, rect.origin.x+20, rect.origin.y+20, rect.origin.x+20+4, rect.origin.y+20+15, rect.origin.x+20+4+5, rect.origin.y+20+15+5); DPSstroke(ctxt); DPSsetgray(ctxt,1); DPSmoveto(ctxt, rect.origin.x+21, rect.origin.y+20); // DPSrlineto(ctxt, 5, 17); DPScurveto(ctxt, rect.origin.x+21, rect.origin.y+20, rect.origin.x+21+4, rect.origin.y+20+15, rect.origin.x+21+4+5, rect.origin.y+20+15+5); DPSstroke(ctxt); */ DPSsetlinewidth(ctxt, 0.5); DPSsetgray(ctxt, 0.8); DPSmoveto(ctxt, rect.origin.x+20, rect.origin.y+20); DPSrlineto(ctxt, 5, 15); DPSstroke(ctxt); DPSgrestore(ctxt); } @end @implementation appController - (BOOL)validateMenuItem:(NSMenuItem*)aMenuItem; { NSString *title = [aMenuItem title]; if ([title isEqual: @"Remove"]) { if (tabNum == 0) return NO; } return YES; } - (void) addTab: (id)sender { NSView *view; NSTextField *label; NSTabViewItem *item; tabNum++; view = [[NSView alloc] initWithFrame:[tabView contentRect]]; [view setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; label = [[NSTextField alloc] initWithFrame:[view frame]]; [label setEditable: NO]; [label setSelectable: NO]; [label setBezeled: NO]; [label setBordered: NO]; [label setBackgroundColor: [NSColor lightGrayColor]]; [label setAlignment: NSCenterTextAlignment]; [label setStringValue: [NSString stringWithFormat:@"Test View #%d", tabNum]]; [view addSubview: label]; item = [[NSTabViewItem alloc] initWithIdentifier: @"Urph"]; [item setLabel: [NSString stringWithFormat:@"Test #%d", tabNum]]; [item setView:view]; [tabView addTabViewItem: item]; [tabView selectTabViewItem: item]; // [tabView setNeedsDisplay: YES]; } - (void) removeTab: (id)sender { int index = [tabView numberOfTabViewItems] - 1; [tabView removeTabViewItem: [tabView tabViewItemAtIndex: index]]; [tabView selectTabViewItemAtIndex: index - 1]; // [tabView setNeedsDisplay: YES]; tabNum--; } - (void) changeTabFont: (id)sender { [[NSFontManager sharedFontManager] setSelectedFont:[tabView font] isMultiple:NO]; [[NSFontManager sharedFontManager] orderFrontFontPanel:self]; } - (void)changeFont:(id)fontManager { [tabView setFont: [fontManager convertFont: [tabView font]]]; [tabView setNeedsDisplay: YES]; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *window; GSImageTabViewItem *item; NSRect winRect = {{100, 100}, {300, 300}}; NSRect tabViewRect = {{10, 10}, {280, 280}}; NSView *view; NSTextField *label; NSMenu *tabMenu; tabNum = 0; window = [[NSWindow alloc] initWithContentRect: winRect styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; tabView = [[NSTabView alloc] initWithFrame: tabViewRect]; [tabView setDelegate: [myTabViewDelegate new]]; [tabView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [tabView setAutoresizesSubviews: YES]; [[window contentView] addSubview: tabView]; view = [[NSView alloc] initWithFrame:[tabView contentRect]]; [view setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; /* view = [[tabPlayground alloc] initWithFrame:[tabView contentRect]]; */ label = [[NSTextField alloc] initWithFrame:[view frame]]; [label setEditable: NO]; [label setSelectable: NO]; [label setBezeled: NO]; [label setBordered: NO]; [label setBackgroundColor: [NSColor redColor]]; [label setAlignment: NSCenterTextAlignment]; [label setStringValue: @"Do you swing, baby?"]; [view addSubview: label]; item = [[GSImageTabViewItem alloc] initWithIdentifier:@"Urph"]; [item setImage: [NSImage imageNamed:@"Smiley"]]; [item setLabel: @"Natalie"]; [item setView: view]; [tabView addTabViewItem: item]; [window setTitle:@"NSTabView"]; [window orderFrontRegardless]; [[NSApp mainMenu] insertItemWithTitle: @"Tabs" action: NULL keyEquivalent: @"" atIndex: 0]; tabMenu = [NSMenu new]; [[NSApp mainMenu] setSubmenu:tabMenu forItem:[[NSApp mainMenu] itemWithTitle:@"Tabs"]]; [tabMenu addItemWithTitle: @"Add" action: @selector(addTab:) keyEquivalent: @"a"]; [tabMenu addItemWithTitle: @"Remove" action: @selector(removeTab:) keyEquivalent: @"r"]; [tabMenu addItemWithTitle: @"Change Tab Font" action: @selector(changeTabFont:) keyEquivalent: @""]; } @end @implementation myTabViewDelegate - (BOOL)tabView:(NSTabView *)tabView shouldSelectTabViewItem:(NSTabViewItem *)tabViewItem { NSLog(@"shouldSelectTabViewItem: %@", [tabViewItem label]); /* * This is a test to see if the delegate is doing its job. */ // if ([[tabViewItem label] isEqual:@"Natalie"]) // return NO; return YES; } - (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem { NSLog(@"willSelectTabViewItem: %@", [tabViewItem label]); } - (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem { NSLog(@"didSelectTabViewItem: %@", [tabViewItem label]); } - (void)tabViewDidChangeNumberOfTabViewItems:(NSTabView *)TabView { NSLog(@"tabViewDidChangeNumberOfTabViewItems: %d", [TabView numberOfTabViewItems]); } @end int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *app; app = [NSApplication sharedApplication]; [app setDelegate: [appController new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [app run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/scrollview2.m0000664000175000017500000001571307226455374017757 0ustar fedorfedor/* scrollview2.m Copyright (C) 1996 Free Software Foundation, Inc. Author: Ovidiu Predescu Date: August 1997 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import #include "TestView.h" @interface Controller : NSObject { NSMatrix* matrix; NSScrollView* scrollView; } @end @implementation Controller - (void)setButtonTitles { int i, j, index = 0; int numRows = [matrix numberOfRows]; int numCols = [matrix numberOfColumns]; id cell; for (i = 0; i < numRows; i++) for (j = 0; j < numCols; j++) { cell = [matrix cellAtRow: i column: j]; [cell setTag: index]; [cell setTitle: [NSString stringWithFormat: @"button %d, %d (%d)", i, j, index]]; [cell setTarget: self]; [cell setAction: @selector(handleCellAction: )]; index++; } } - (void) handleCellAction: sender { NSLog (@"handleCellAction: sender = %@", [[sender selectedCell] title]); } - (void) handleDoubleAction: sender { NSLog (@"handleDoubleAction"); } - (void) addRow: sender { [matrix addRow]; [self setButtonTitles]; [matrix sizeToCells]; [scrollView setNeedsDisplay: YES]; } - (void) addColumn: sender { [matrix addColumn]; [self setButtonTitles]; [matrix sizeToCells]; [scrollView setNeedsDisplay: YES]; } - (void) removeRow: sender { if ([matrix selectedRow] >= 0) { [scrollView setNeedsDisplay: YES]; [matrix removeRow: [matrix selectedRow]]; [self setButtonTitles]; [matrix sizeToCells]; } } - (void) removeColumn: sender { if ([matrix selectedColumn] >= 0) { [matrix removeColumn: [matrix selectedColumn]]; [scrollView setNeedsDisplay: YES]; [self setButtonTitles]; [matrix sizeToCells]; } } - (void) setMatrixMode: sender { NSLog (@"setMatrixMode: %d", [[sender selectedCell] tag]); [matrix setMode: [[sender selectedCell] tag]]; } - (void) setMatrix: (NSMatrix*)aMatrix { [aMatrix retain]; [matrix release]; matrix = aMatrix; [matrix setDoubleAction: @selector(handleDoubleAction:)]; [matrix setTarget: self]; } - (void) applicationDidFinishLaunching: (NSNotification *)aNotification { NSWindow* window; Controller* controller = self; NSMatrix* newMatrix; NSMatrix* selectionMatrix; NSButtonCell* buttonCell; NSButton *addRowButton, *removeRowButton, *addColButton, *removeColButton; NSRect matrixRect = NSZeroRect; NSRect scrollViewRect = {{20, 115}, {350, 235}}; NSRect winRect = {{100, 100}, {400, 450}}; NSRect selectionMatrixRect = {{30, 15}, {85, 95}}; NSRect addRowRect = {{160, 70}, {95, 24}}; NSRect removeRowRect = {{160, 32}, {95, 24}}; NSRect addColRect = {{272, 70}, {95, 24}}; NSRect removeColRect = {{272, 32}, {95, 24}}; window = [[NSWindow alloc] init]; /* Setup the matrix */ buttonCell = [[NSButtonCell new] autorelease]; [buttonCell setButtonType: NSPushOnPushOffButton]; newMatrix = [[[NSMatrix alloc] initWithFrame: matrixRect mode: NSRadioModeMatrix prototype: buttonCell numberOfRows: 0 numberOfColumns: 0] autorelease]; [controller setMatrix: newMatrix]; scrollView = [[NSScrollView alloc] initWithFrame: scrollViewRect]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; // for NS compatibility [scrollView setDocumentView: newMatrix]; [[window contentView] addSubview: scrollView]; /* Setup the matrix for different selection types */ buttonCell = [[NSButtonCell new] autorelease]; [buttonCell setButtonType: NSRadioButton]; [buttonCell setBordered: NO]; [buttonCell setImagePosition: NSImageLeft]; // for NS compatibility selectionMatrix = [[[NSMatrix alloc] initWithFrame: selectionMatrixRect mode: NSRadioModeMatrix prototype: buttonCell numberOfRows: 4 numberOfColumns: 1] autorelease]; [selectionMatrix setTarget: controller]; [selectionMatrix setAutosizesCells: YES]; // for NS compatibility [selectionMatrix setAction: @selector(setMatrixMode: )]; buttonCell = [selectionMatrix cellAtRow: 0 column: 0]; [buttonCell setTitle: @"Radio"]; [buttonCell setTag: NSRadioModeMatrix]; buttonCell = [selectionMatrix cellAtRow: 1 column: 0]; [buttonCell setTitle: @"Highlight"]; [buttonCell setTag: NSHighlightModeMatrix]; buttonCell = [selectionMatrix cellAtRow: 2 column: 0]; [buttonCell setTitle: @"List"]; [buttonCell setTag: NSListModeMatrix]; buttonCell = [selectionMatrix cellAtRow: 3 column: 0]; [buttonCell setTitle: @"Track"]; [buttonCell setTag: NSTrackModeMatrix]; [[window contentView] addSubview: selectionMatrix]; addRowButton = [[NSButton alloc] initWithFrame: addRowRect]; [addRowButton setTitle: @"Add row"]; [addRowButton setTarget: controller]; [addRowButton setAction: @selector(addRow: )]; [[window contentView] addSubview: addRowButton]; removeRowButton = [[NSButton alloc] initWithFrame: removeRowRect]; [removeRowButton setTitle: @"Remove row"]; [removeRowButton setTarget: controller]; [removeRowButton setAction: @selector(removeRow: )]; [[window contentView] addSubview: removeRowButton]; addColButton = [[NSButton alloc] initWithFrame: addColRect]; [addColButton setTitle: @"Add column"]; [addColButton setTarget: controller]; [addColButton setAction: @selector(addColumn: )]; [[window contentView] addSubview: addColButton]; removeColButton = [[NSButton alloc] initWithFrame: removeColRect]; [removeColButton setTitle: @"Remove column"]; [removeColButton setTarget: controller]; [removeColButton setAction: @selector(removeColumn: )]; [[window contentView] addSubview: removeColButton]; [window setFrame: winRect display: YES]; [window orderFront: nil]; } @end int main(int argc, char** argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [Controller new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/ColorView.m0000664000175000017500000000410007710505774017377 0ustar fedorfedor/* ColorView.m Simple subclass of NSView. Copyright (C) 1997 Free Software Foundation, Inc. Author: Scott Christley Date: February 1997 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "ColorView.h" @implementation ColorView // Class methods // Instance methods - initWithFrame:(NSRect)rect { [super initWithFrame: rect]; ASSIGN(the_color, [NSColor blackColor]); ASSIGN(the_cursor, [NSCursor IBeamCursor]); return self; } - (void)setColor:(NSColor *)aColor { ASSIGN(the_color, aColor); } - (NSColor *)color { return the_color; } - (void)setCursor:(NSCursor *)aCursor { ASSIGN(the_cursor, aCursor); } - (NSCursor *)cursor { return the_cursor; } - (void)drawRect:(NSRect)rect { [the_color set]; NSRectFill([self bounds]); } - (void)mouseEntered:(NSEvent *)theEvent { NSLog(@"Entered color view\n"); } - (void)resetCursorRects { NSRect theFrame = [self frame]; NSRect theBounds = [self bounds]; NSLog(@"resetCursorRects: frame ((%f, %f) (%f, %f)), " @"bounds ((%f, %f) (%f, %f))", theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height, theBounds.origin.x, theBounds.origin.y, theBounds.size.width, theBounds.size.height); [self addCursorRect: theBounds cursor: the_cursor]; } @end gnustep-examples-1.4.0/gui/Old/popupbuttons.m0000775000175000017500000001260407710505774020263 0ustar fedorfedor/* buttons.m All of the various NSButtons Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Author: Ovidiu Predescu Date: June 1996 Author: Felipe A. Rodriguez Date: August 1998 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include "TestView.h" #include "ColorView.h" @interface buttonsController : NSObject { NSWindow *win; id textField; id textField1; NSView* anotherView1; NSView* anotherView2; } @end @implementation buttonsController - (void)buttonAction:(id)sender { NSLog (@"buttonAction:"); } - (void)buttonAction2:(id)sender { NSLog (@"buttonAction2:"); [textField setStringValue:[sender intValue] ? @"on" : @"off"]; } - (void)buttonSwitchView:(id)sender { NSString *title; NSLog(@"Sender = %@", sender); title = [sender titleOfSelectedItem]; NSLog (@"title value = %@, indexOfSelectedItem: %d, titleIndexOfSelectedItem: %d numItems: %d", title, [sender indexOfSelectedItem], [sender indexOfItem:[sender selectedItem]], [sender numberOfItems]); /* if ([title isEqualToString:@"Devices"]) [[win contentView] addSubview:anotherView1]; else [[win contentView] addSubview:anotherView2]; */ } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSRect wf = {{100, 100}, {400, 400}}; NSRect f = {{10, 10}, {380, 200}}; NSPopUpButton *pushb; id anItem; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; win = [[NSWindow alloc] initWithContentRect:wf styleMask:style backing:NSBackingStoreRetained defer:NO]; anotherView1 = [[NSScrollView alloc] initWithFrame:f]; [[win contentView] addSubview:anotherView1]; anotherView2 = [[TestView alloc] initWithFrame:f]; pushb = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(200,375,100,20)]; [pushb setTarget:self]; [pushb setAction:@selector(buttonSwitchView:)]; [pushb addItemWithTitle:@"Devices Pop"]; [pushb addItemWithTitle:@"Network"]; [pushb addItemWithTitle:@"Printers"]; [pushb addItemWithTitle:@"Austin"]; [pushb addItemWithTitle:@"Powers"]; [pushb addItemWithTitle:@"Shag"]; [[win contentView] addSubview:pushb]; RELEASE(pushb); pushb = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(200,175,100,20)]; [pushb setTarget:self]; [pushb setAction:@selector(buttonSwitchView:)]; [[win contentView] addSubview:pushb]; RELEASE(pushb); /* NB: popupbuttons with images are not possible in the present framework */ #if 0 pushb = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(15,275,64,64)]; [pushb addItemWithTitle:@""]; anItem = [pushb itemAtIndex:0]; [anItem setImage:[NSImage imageNamed:@"animations.tiff"]]; [pushb addItemWithTitle:@""]; anItem = [pushb itemAtIndex:1]; [anItem setImage:[NSImage imageNamed:@"appearance.tiff"]]; [pushb addItemWithTitle:@""]; anItem = [pushb itemAtIndex:2]; [anItem setImage:[NSImage imageNamed:@"configs.tiff"]]; [pushb addItemWithTitle:@""]; anItem = [pushb itemAtIndex:3]; [anItem setImage:[NSImage imageNamed:@"dock.tiff"]]; // [pushb setTarget:self]; // [pushb setAction:@selector(buttonSwitchView:)]; [[win contentView] addSubview:pushb]; #endif pushb = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(15,375,100,20) pullsDown:YES]; [pushb setTarget:self]; [pushb setAction:@selector(buttonSwitchView:)]; [pushb addItemWithTitle:@"Devices Pull"]; [pushb addItemWithTitle:@"Network"]; [pushb addItemWithTitle:@"Printers"]; [pushb addItemWithTitle:@"Austin"]; [pushb addItemWithTitle:@"Powers"]; [pushb addItemWithTitle:@"Shag"]; [[win contentView] addSubview:pushb]; RELEASE(pushb); pushb = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(15,175,100,20) pullsDown:YES]; [pushb setTarget:self]; [pushb setAction:@selector(buttonSwitchView:)]; [[win contentView] addSubview:pushb]; RELEASE(pushb); [win display]; [win orderFront:nil]; } @end int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; [theApp setDelegate: [buttonsController new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/GSImageTabViewItem.h0000664000175000017500000000050307226455374021043 0ustar fedorfedor#include #include @interface GSImageTabViewItem : NSTabViewItem { NSImage *item_image; } - (void)setImage:(NSImage *)image; - (NSImage *)image; - (NSSize)sizeOfLabel:(BOOL)shouldTruncateLabel; - (void)drawLabel:(BOOL)shouldTruncateLabel inRect:(NSRect)tabRect; @end gnustep-examples-1.4.0/gui/Old/alertpanel.m0000664000175000017500000001010307722470343017611 0ustar fedorfedor/* alertpanel.m Copyright (C) 1998 Free Software Foundation, Inc. Author: Richard Frith-Macdonald Date: December 1998 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import #import #import @interface myController : NSObject { } @end @implementation myController - (void) buttonAction1: (id)sender { NSLog (@"buttonAction1:"); NSRunAlertPanel(@"A Title", @"Some message text", @"default", @"alternate", @"other"); } - (void) buttonAction2: (id)sender { NSLog (@"buttonAction2:"); NSRunCriticalAlertPanel(@"A Title", @"Some message text", @"default", @"alternate", @"other"); } - (void) buttonAction3: (id)sender { NSLog (@"buttonAction3:"); NSRunInformationalAlertPanel(@"A Title", @"Some message text", @"default", @"alternate", @"other"); } - (void) buttonAction4: (id)sender { NSPanel *p; GMArchiver *a; NSLog (@"buttonAction4:"); p = NSGetAlertPanel(@"A Title", @"Some message text", @"default", @"alternate", @"other"); a = [GMArchiver new]; [a encodeRootObject: p withName: @"AlertPanel"]; [a writeToFile: @"archivedPanel"]; [a release]; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *win; NSRect wf = {{100, 100}, {200, 200}}; NSView *v; NSRect bf = {{10, 110}, {80, 80}}; id button; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; NSLog(@"Starting the application\n"); win = [[NSWindow alloc] initWithContentRect: wf styleMask: style backing: NSBackingStoreRetained defer: NO]; [win setTitle: @"GNUstep Alert panel"]; v = [win contentView]; NSLog(@"Create the panel buttons\n"); button = [[NSButton alloc] initWithFrame: bf]; [button setTitle: @"Std Panel"]; [button setTarget:self]; [button setAction:@selector(buttonAction1:)]; [v addSubview: button]; [button release]; bf.origin.x += 100; button = [[NSButton alloc] initWithFrame: bf]; [button setTitle: @"Crit Panel"]; [button setTarget:self]; [button setAction:@selector(buttonAction2:)]; [v addSubview: button]; [button release]; bf.origin.y -= 100; button = [[NSButton alloc] initWithFrame: bf]; [button setTitle: @"Make archive"]; [button setTarget:self]; [button setAction:@selector(buttonAction4:)]; [v addSubview: button]; [button release]; bf.origin.x -= 100; button = [[NSButton alloc] initWithFrame: bf]; [button setTitle: @"Info Panel"]; [button setTarget:self]; [button setAction:@selector(buttonAction3:)]; [v addSubview: button]; [button release]; [v display]; [win orderFront: nil]; } @end int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *app; app = [NSApplication sharedApplication]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [app setDelegate: [myController new]]; [app run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/gstextnetwork.m0000664000175000017500000000546407226455374020436 0ustar fedorfedor#import #import #import @interface buttonsController : NSObject { NSWindow *win; NSTextView *theTextView; NSScrollView *theScrollView; } @end @implementation buttonsController - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSRect wf = {{100, 100}, {400, 400}}; NSRect f = {{10, 10}, {380, 200}}; NSPopUpButton *pushb; NSView *aView; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; win = [[NSWindow alloc] initWithContentRect:wf styleMask:style backing:NSBackingStoreRetained defer:NO]; theScrollView = [[NSScrollView alloc] initWithFrame:[[win contentView] frame]]; [theScrollView setBorderType:NSNoBorder]; [theScrollView setHasVerticalScroller:YES]; [theScrollView setHasHorizontalScroller:NO]; [theScrollView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; theTextView = [[NSTextView alloc] initWithFrame:NSMakeRect(0,0,[theScrollView contentSize].width, 1e7)]; [theTextView setMinSize:NSMakeSize(0.0, [theScrollView contentSize].height)]; [theTextView setMaxSize:NSMakeSize(1e7, 1e7)]; [theTextView setVerticallyResizable:YES]; [theTextView setHorizontallyResizable:NO]; [theTextView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [theTextView setBackgroundColor:[NSColor whiteColor]]; [[theTextView textContainer] setContainerSize:NSMakeSize([theScrollView contentSize].width, 1e7)]; // [[theTextView textContainer] setWidthTracksTextView:YES]; [theTextView setString:[NSString stringWithContentsOfFile:@"Readme.txt"]]; [theScrollView setDocumentView:theTextView]; [win setContentView:theScrollView]; [win makeKeyAndOrderFront:nil]; [win makeFirstResponder:theTextView]; [win display]; } @end int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; NSAttributedString *attributedString; NSString *funString = @"SomethingNothing"; NSScanner *scanner; unsigned int sL; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif theApp = [NSApplication sharedApplication]; scanner = [[NSScanner alloc] initWithString:funString]; [scanner scanUpToString:[NSText newlineString] intoString:NULL]; sL = [scanner scanLocation]; NSLog(@"%d", sL + 2); attributedString = [[NSAttributedString alloc] initWithString:@"Hey!"]; NSLog(@"%@", [attributedString string]); [theApp setDelegate: [buttonsController new]]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } [theApp run]; [pool release]; return 0; } gnustep-examples-1.4.0/gui/Old/configs.tiff0000664000175000017500000002243207226455374017624 0ustar fedorfedorII*$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\\\NNffNNNNNNNNNNNNNNNNNNNNNNNN\\\NfNNfNNfNNfNNNNNNNNNNNNNNNNNNNNNNN\\\NfNNfNNfNNfNNNNNNNNNNNNNNNNNNNNNNN\\\NffNffNffNffNNNNNNNNNNNNNNNNNNNNNN\\\NfNNfNNNfNNfNNNNNNNNNNNNNNNNNNNNNN\\\NfNNfNNNfNNfNNNNNNNNNNNNNNNNNNNNNN\\\NNffNffNNNNNNNNNNNNNNNNNNNNNNN\\\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTT_T2&.qǤ[$=$s$$Duلq_v b B)i9TT_T2&.qǤ[$=$s$$Duلq_v b B)i9TT_T2&.qǤ[$=$s$$Duلq_v b B)i9TT_T2&.qǤ[$=$s$$Duلq_v b B)i9TT_T2&.qǤ[$=$s$$Duلq_v b B)i98:>==#W__77}#>pp8ZgG5e~NVFf CoO) ﯯ2bIi1aN&ze% 奥奥奥奥奥奥奥奥奥奥奥奥奥奥奥奥!AUOO^.bIyA>N^1Ncy9Uqqqqqqqqqq qqqqqqqqqq<<aAbBuv&:&&ffFRBkK*nnnnnnnnnn xnnnnnnnnnnw zꚪjjZZ::zz&zLJw xxxxxtt_VZV2rrRr J r r *jJj:B=b.Ύ g'ζV""bbbRR22r2r2r J*rN%E  G]l 4|||<|B¢BB""B""RrRKGG{ߕl<\\<<<||<<<\|"""'{[ߥ9,t, lL\<<<<<\\lܜ<< MG 4d ,LlL\lLlL,lL,\lܜ3=G֦& s} Lt, lL, lL,, lL,\lan#9^in#>800$  )$$ %*%R/usr/home/fatal/newprefs/miscprefs2.tiffCreated with The GIMPgnustep-examples-1.4.0/gui/Old/TestView.m0000664000175000017500000000740607710505774017254 0ustar fedorfedor/* TestView.h Simple subclass of NSView. Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: June 1996 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "TestView.h" @interface FlippedView : NSView @end @implementation FlippedView - (BOOL) isFlipped { return YES; } - (void)drawRect:(NSRect)rect { [[NSColor redColor] set]; NSRectFill ([self bounds]); } @end @interface UnflippedView : NSView @end @implementation UnflippedView - (BOOL) isFlipped { return NO; } - (void)drawRect:(NSRect)rect { [[NSColor greenColor] set]; NSRectFill ([self bounds]); } @end @implementation TestView // Class methods // Instance methods - (BOOL)isFlipped { return NO; } - (void)drawRect:(NSRect)rect { static BOOL beenHere = NO; NSFont *f; NSColor *c = [NSColor greenColor]; NSColor *blue = [NSColor blueColor]; NSColor *y = [NSColor yellowColor]; NSColor *orange = [NSColor orangeColor]; static NSView *fv; static NSView *uv; NSRectClip (rect); [orange set]; NSRectFill ([self bounds]); NSDrawGroove (NSMakeRect (10, 10, 100, 200), NSMakeRect (10, 10, 100, 200)); if (beenHere == NO) { beenHere = YES; fv = [[FlippedView alloc] initWithFrame: NSMakeRect(15,15,20,20)]; [self addSubview: fv]; uv = [[UnflippedView alloc] initWithFrame: NSMakeRect(45,15,20,20)]; [self addSubview: uv]; } [c set]; // Text f = [NSFont boldSystemFontOfSize: 24]; [f set]; PSmoveto(15, 20); PSshow("Bold system font."); f = [NSFont systemFontOfSize: 24]; [f set]; PSmoveto(15, 50); PSshow("System font."); f = [NSFont userFixedPitchFontOfSize: 24]; [f set]; PSmoveto(15, 100); PSshow("User fixed pitch font."); f = [NSFont userFontOfSize: 24]; [f set]; PSmoveto(15, 150); PSshow("User font."); // Absolute Lines [blue set]; PSnewpath (); PSmoveto (400, 400); PSlineto (420, 400); PSlineto (440, 380); PSlineto (440, 360); PSlineto (420, 340); PSlineto (400, 340); PSlineto (380, 360); PSlineto (380, 380); PSclosepath (); PSfill (); // Relative Lines [y set]; PSnewpath (); PSmoveto (400, 200); PSrlineto (20, 0); PSrlineto (20, -20); PSrlineto (0, -20); PSrlineto (-20, -20); PSrlineto (-20, 0); PSrlineto (-20, 20); PSrlineto (0, 20); PSclosepath (); PSstroke (); PSinitclip (); } - (void)mouseDown:(NSEvent *)theEvent { NSPoint location = [theEvent locationInWindow]; NSPoint p = [self convertPoint:location fromView:nil]; NSClipView* clipView = [self superview]; NSRect rect; NSLog (@"mouse down at (%2.2f, %2.2f), window location (%2.2f, %2.2f)", p.x, p.y, location.x, location.y); rect = [clipView bounds]; NSLog (@"clip view bounds = ((%f, %f) (%f, %f))", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); rect = [self bounds]; NSLog (@"self bounds = ((%f, %f) (%f, %f))\n", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); } @end gnustep-examples-1.4.0/gui/Old/Edit/0000775000175000017500000000000012204034631016161 5ustar fedorfedorgnustep-examples-1.4.0/gui/Old/Edit/rtfd.tiff0000664000175000017500000002230207226455544020013 0ustar fedorfedorII*$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3"""3"""3""333"3"3"UUUUUUUUUUUU"""""""""""""UUUUUUUU""""""""""""""UUUUUUUU"""""""""""UUUUUUUUw"wwwww"ww"www"UUUUUUUUwwwwwwwwwwwwwwwwwwwwwwwwwUUUUUUUUfwfwfwfwffwfwfwwfwfwwfwwfUUUUUUUUUUUUUUUU33333333333333333UUUUUUUUUUUU"3w"3"33"Dw3w3U3w3f"f"f"f"f"wUUUU"D3DDU3D"3"D"D"DDD"3"33w"w3wUUUUUDf3fDf3UDfff3f3f"U"UUUUUwwwfw33UDDfUfwUwUwDfUfDfDUDUDUUUUUDwDwDwDwffUwfffUUUUUUUUUwwwfwwffwwfwUfUwUUUUwwwwwwwwwUUUUwfwfwfwffffwfwwfwfUUUUwwfwwfwUwfDwUwUwẅw̙w݈f̈UUwfUUUUUUUUUUUU""""""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 00$$$$(R ' 'gnustep-examples-1.4.0/gui/Old/Edit/Readme.rtf0000664000175000017500000000356607226455544020127 0ustar fedorfedor{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;} \pard\plain\qc\f0\fs24 this is the GNU implementation of {\fs32\b NSText}\par \pard\plain\qc\f0\fs24 based on work one by {\b Daniel B*hringer}.\par \pard\plain\f0\fs24 \par \pard\plain\qc\f0\fs24 What it already does is laying out plain text. You can modify selectin and text as with NeXT's NSText class and even use the NeXT spell checking mechanism. there are problems remaining however (pasting newline characters at the end of a paragraph and performance on very large text)... but these problems will eventually fixed :-)\par \pard\plain\qc\f0\fs24 \par \pard\plain\qc\f0\fs24 Some annotations: \par \pard\plain\f0\fs24 \par \pard\plain\f0\fs24 it is implemented completely at foundation level and thus should be unicode ready. (a subclass might override the central rebuildPlainLineLayoutInformationStartingAtLine: lineformatting method using a plain c-string approach if the performance turns out to be limiting to usefulnes).\par \pard\plain\f0\fs24 \par \pard\plain\f0\fs24 at implementation level rtf is not treated different from rtfd since both are handled by NSAttributed string.\par \pard\plain\f0\fs24 \par \pard\plain\f0\fs24 currently refreshes the lines below the edited line up to the next paragraph (this may cause performance problems with large paragraphs). a simple workaorund is beeing worked out but not implemented yet (coming soon).\par \pard\plain\f0\fs24 \par \pard\plain\f0\fs24 in plain mode words wraps use the selectionGranularity configuration for word/ paragraph boundry detection.\par \pard\plain\f0\fs24 \par \pard\plain\f0\fs24 tabs are not treated differently from other characters but nevertheles work as expected thanks to NeXT's implementation of -sizeWithAttributes: and -drawAtPoint:withAttributes: (in plain mode tab information seems to come from [NSParagraphStyle defaultParagraphStyle]).\par \pard\plain\f0\fs24 \par }gnustep-examples-1.4.0/gui/Old/Edit/ScalingScrollView.h0000664000175000017500000000045407226455544021751 0ustar fedorfedor#import @class NSPopUpButton; @interface ScalingScrollView : NSScrollView { NSPopUpButton *_scalePopUpButton; float scaleFactor; } - (void)scalePopUpAction:(id)sender; - (void)_makeScalePopUpButton; - (void)setScaleFactor:(float)factor; - (float)scaleFactor; @end gnustep-examples-1.4.0/gui/Old/Edit/text.tiff0000664000175000017500000002230207226455544020040 0ustar fedorfedorII*$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUfUwDfUfUfUwDfUfUfUwUfUwUUUUUUUUDUDfUUDUDfDUUUDUDfDUUUDfDUUUDUDfUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUw3DUwUwUwUUUUUUUU333D333D3D333D333D333DUwUwUwUUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUw"3""UUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUw""UUUUUUUUUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 00$$$$(R ' 'gnustep-examples-1.4.0/gui/Old/Edit/Edit.tiff0000664000175000017500000002230207226455544017741 0ustar fedorfedorII*$U3DU3DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDUUUU3DUDU3UUUU3DDDU3U"UUUU3DUDU3U"U3UUUU3DDDU3U"U3U"UUUU3DUDU3U"U3f"U3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"UUUU3DUDU3U"U3U3U3U"D""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"D"3"UUUU3DUDU3U"U3f"U3U"D""3"D""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"D3"D""3"UUUU3DUDU3U"U3U3U3U"D""3"D""3"D""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"D"3"D""3"D""UUUU3DUDU3U"U3f"U3U"D""3"D""3"D""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"D3"D""3"D"UUUU3DUDU3U"U3U3U3U"D""3"D""3"D""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"D"3"D""3"D""UUUUU3DUDU3U"U3f"U3U"D""3"D""3"D""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3DDDU3U"U3U"U3U"D3"D""3"D"D3UUUUU3DUDU3U"U3U3U3U"D""3"D""3"D""""D3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffDU3U"U3U"U3U"D"3"D""3"D""D3UUUUfwU3U"U3f"U3U"D""3"D""3"D""""D3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffU3U"D3"D""3"D"D3UUUUUUUwfݙfwffD""3"D""3"D""""D3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUfffffD3f333"D""3"D""D3UUUUfwݙݙfwfDDD"333"D""D3"D""""D3UUUUUUUUUUUUUUUUUUUfffffD3D""3""D""D3"f33"D3UUUUwffwUD3D"333"D"3U33U3DwUUffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffwffUD3D""3""f3DU33DUUDwUUUUUUUUUUUUUfwݙwwfUUUD33"333"f33wUUUÜwUUUUUUUUUUUUUUUUUUUUUUUUUUUUffwffUUU33D""U33DUwUDwUUUUfwwUUf333""D"3UD3UÜwUUUUUUUUUUUUUUUUUUUUUUUUUUUUD""3""f33UDwUUUU"U3DffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 00$$$$(R ' 'gnustep-examples-1.4.0/gui/Old/Edit/Readme.txt0000664000175000017500000000302207226455544020136 0ustar fedorfedorthis is the GNU implementation of NSText as done by Daniel Bhringer. What it already does is laying out plain text. You can modify selectinon and text as with NeXT's NSText class and even use the NeXT spell checking mechanism. there are problems remaining however (pasting newline characters at the end of a paragraph and performance on very large text)... but these problems will eventually fixed :-) note that the "end" key forces a complete re-layout in case of display problems and pressing "num-lock" dumps some debug information Some annotations: it is implemented completely at foundation level and thus should be unicode ready. (a subclass might override the central rebuildPlainLineLayoutInformationStartingAtLine: lineformatting method using a plain c-string approach if the performance turns out to be limiting to usefulnes). at implementation level rtf is not treated different from rtfd since both are handled by NSAttributed string. currently refreshes the lines below the edited line up to the next paragraph (this may cause performance problems with large paragraphs). a simple workaorund is beeing worked out but not implemented yet (coming soon). in plain mode words wraps use the selectionGranularity configuration for word/ paragraph boundry detection. tabs are not treated differently from other characters but nevertheles work as expected thanks to NeXT's implementation of -sizeWithAttributes: and -drawAtPoint:withAttributes: (in plain mode tab information seems to come from [NSParagraphStyle defaultParagraphStyle]). gnustep-examples-1.4.0/gui/Old/Edit/Preferences.m0000664000175000017500000002400407226455544020622 0ustar fedorfedor/* Preferences.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. Preferences controller for Edit... To add new defaults search for one of the existing keys. Some keys have UI, others don't; use one similar to the one you're adding. displayedValues is a mirror of the UI. These are committed by copying these values to curValues. This module allows for UI where there is or there isn't an OK button. If you wish to have an OK button, connect OK to ok:, Revert to revert:, and don't call commitDisplayedValues from the various action messages. */ #import "Preferences.h" #import #import static NSDictionary *defaultValues() { static NSDictionary *dict = nil; if (!dict) { dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithBool:YES], DeleteBackup, [NSNumber numberWithBool:NO], SaveFilesWritable, [NSNumber numberWithBool:YES], RichText, [NSNumber numberWithBool:NO], ShowPageBreaks, [NSNumber numberWithBool:NO], OpenPanelFollowsMainWindow, [NSNumber numberWithInt:80], WindowWidth, [NSNumber numberWithInt:30], WindowHeight, [NSNumber numberWithInt:UnknownStringEncoding], PlainTextEncoding, [NSNumber numberWithInt:8], TabWidth, [NSNumber numberWithInt:100000], ForegroundLayoutToIndex, [NSFont userFixedPitchFontOfSize:0.0], PlainTextFont, [NSFont userFontOfSize:0.0], RichTextFont, nil]; } return dict; } @implementation Preferences static Preferences *sharedInstance = nil; + (id)objectForKey:(id)key { return [[[self sharedInstance] preferences] objectForKey:key]; } + (void)saveDefaults { if (sharedInstance) { [Preferences savePreferencesToDefaults:[sharedInstance preferences]]; } } + (Preferences *)sharedInstance { return sharedInstance ? sharedInstance : [[self alloc] init]; } - (id)init { if (sharedInstance) { [self dealloc]; } else { [super init]; curValues = [[[self class] preferencesFromDefaults] copyWithZone:[self zone]]; [self discardDisplayedValues]; sharedInstance = self; } return sharedInstance; } - (void)dealloc { } - (NSDictionary *)preferences { return curValues; } - (void)showPanel:(id)sender { if (!richTextFontNameField) { if (![NSBundle loadNibNamed:@"Preferences" owner:self]) { NSLog(@"Failed to load Preferences.nib"); NSBeep(); return; } [[richTextFontNameField window] setExcludedFromWindowsMenu:YES]; [[richTextFontNameField window] setMenu:nil]; [self updateUI]; [[richTextFontNameField window] center]; } [[richTextFontNameField window] makeKeyAndOrderFront:nil]; } static void showFontInField(NSFont *font, NSTextField *field) { [field setStringValue:font ? [NSString stringWithFormat:@"%@ %g", [font fontName], [font pointSize]] : @""]; } - (void)updateUI { showFontInField([displayedValues objectForKey:RichTextFont], richTextFontNameField); showFontInField([displayedValues objectForKey:PlainTextFont], plainTextFontNameField); [deleteBackupMatrix selectCellWithTag:[[displayedValues objectForKey:DeleteBackup] boolValue] ? 1 : 0]; [saveFilesWritableButton setState:[[displayedValues objectForKey:SaveFilesWritable] boolValue]]; [richTextMatrix selectCellWithTag:[[displayedValues objectForKey:RichText] boolValue] ? 1 : 0]; [showPageBreaksButton setState:[[displayedValues objectForKey:ShowPageBreaks] boolValue]]; [windowWidthField setIntValue:[[displayedValues objectForKey:WindowWidth] intValue]]; [windowHeightField setIntValue:[[displayedValues objectForKey:WindowHeight] intValue]]; SetUpEncodingPopupButton(plainTextEncodingPopup, [[displayedValues objectForKey:PlainTextEncoding] intValue], YES); } /* Gets everything from UI except for fonts... */ - (void)miscChanged:(id)sender { static NSNumber *yes = nil; static NSNumber *no = nil; int anInt; if (!yes) { yes = [[NSNumber alloc] initWithBool:YES]; no = [[NSNumber alloc] initWithBool:NO]; } [displayedValues setObject:[[deleteBackupMatrix selectedCell] tag] ? yes : no forKey:DeleteBackup]; [displayedValues setObject:[[richTextMatrix selectedCell] tag] ? yes : no forKey:RichText]; [displayedValues setObject:[saveFilesWritableButton state] ? yes : no forKey:SaveFilesWritable]; [displayedValues setObject:[showPageBreaksButton state] ? yes : no forKey:ShowPageBreaks]; [displayedValues setObject:[NSNumber numberWithInt:[[plainTextEncodingPopup selectedItem] tag]] forKey:PlainTextEncoding]; if ((anInt = [windowWidthField intValue]) < 1 || anInt > 10000) { if ((anInt = [[displayedValues objectForKey:WindowWidth] intValue]) < 1 || anInt > 10000) anInt = [[defaultValues() objectForKey:WindowWidth] intValue]; [windowWidthField setIntValue:anInt]; } else { [displayedValues setObject:[NSNumber numberWithInt:anInt] forKey:WindowWidth]; } if ((anInt = [windowHeightField intValue]) < 1 || anInt > 10000) { if ((anInt = [[displayedValues objectForKey:WindowHeight] intValue]) < 1 || anInt > 10000) anInt = [[defaultValues() objectForKey:WindowHeight] intValue]; [windowHeightField setIntValue:[[displayedValues objectForKey:WindowHeight] intValue]]; } else { [displayedValues setObject:[NSNumber numberWithInt:anInt] forKey:WindowHeight]; } [self commitDisplayedValues]; } /**** Font changing code ****/ static BOOL changingRTFFont = NO; - (void)changeRichTextFont:(id)sender { changingRTFFont = YES; [[richTextFontNameField window] makeFirstResponder:[richTextFontNameField window]]; [[NSFontManager sharedFontManager] setSelectedFont:[curValues objectForKey:RichTextFont] isMultiple:NO]; [[NSFontManager sharedFontManager] orderFrontFontPanel:self]; } - (void)changePlainTextFont:(id)sender { changingRTFFont = NO; [[richTextFontNameField window] makeFirstResponder:[richTextFontNameField window]]; [[NSFontManager sharedFontManager] setSelectedFont:[curValues objectForKey:PlainTextFont] isMultiple:NO]; [[NSFontManager sharedFontManager] orderFrontFontPanel:self]; } - (void)changeFont:(id)fontManager { if (changingRTFFont) { [displayedValues setObject:[fontManager convertFont:[curValues objectForKey:RichTextFont]] forKey:RichTextFont]; showFontInField([displayedValues objectForKey:RichTextFont], richTextFontNameField); } else { [displayedValues setObject:[fontManager convertFont:[curValues objectForKey:PlainTextFont]] forKey:PlainTextFont]; showFontInField([displayedValues objectForKey:PlainTextFont], plainTextFontNameField); } [self commitDisplayedValues]; } /**** Commit/revert etc ****/ - (void)commitDisplayedValues { if (curValues != displayedValues) { [curValues release]; curValues = [displayedValues copyWithZone:[self zone]]; } } - (void)discardDisplayedValues { if (curValues != displayedValues) { [displayedValues release]; displayedValues = [curValues mutableCopyWithZone:[self zone]]; [self updateUI]; } } - (void)ok:(id)sender { [self commitDisplayedValues]; } - (void)revertToDefault:(id)sender { curValues = [defaultValues() copyWithZone:[self zone]]; [self discardDisplayedValues]; } - (void)revert:(id)sender { [self discardDisplayedValues]; } /**** Code to deal with defaults ****/ #define getBoolDefault(name) \ {NSString *str = [defaults stringForKey:name]; \ [dict setObject:str ? [NSNumber numberWithBool:[str hasPrefix:@"Y"]] : [defaultValues() objectForKey:name] forKey:name];} #define getIntDefault(name) \ {NSString *str = [defaults stringForKey:name]; \ [dict setObject:str ? [NSNumber numberWithInt:[str intValue]] : [defaultValues() objectForKey:name] forKey:name];} + (NSDictionary *)preferencesFromDefaults { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:10]; getBoolDefault(RichText); getBoolDefault(DeleteBackup); getBoolDefault(ShowPageBreaks); getBoolDefault(SaveFilesWritable); getBoolDefault(OpenPanelFollowsMainWindow); getIntDefault(WindowWidth); getIntDefault(WindowHeight); getIntDefault(PlainTextEncoding); getIntDefault(TabWidth); getIntDefault(ForegroundLayoutToIndex); [dict setObject:[NSFont userFontOfSize:0.0] forKey:RichTextFont]; [dict setObject:[NSFont userFixedPitchFontOfSize:0.0] forKey:PlainTextFont]; return dict; } #define setBoolDefault(name) \ {if ([[defaultValues() objectForKey:name] isEqual:[dict objectForKey:name]]) [defaults removeObjectForKey:name]; else [defaults setBool:[[dict objectForKey:name] boolValue] forKey:name];} #define setIntDefault(name) \ {if ([[defaultValues() objectForKey:name] isEqual:[dict objectForKey:name]]) [defaults removeObjectForKey:name]; else [defaults setInteger:[[dict objectForKey:name] intValue] forKey:name];} + (void)savePreferencesToDefaults:(NSDictionary *)dict { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; setBoolDefault(RichText); setBoolDefault(DeleteBackup); setBoolDefault(ShowPageBreaks); setBoolDefault(SaveFilesWritable); setBoolDefault(OpenPanelFollowsMainWindow); setIntDefault(WindowWidth); setIntDefault(WindowHeight); setIntDefault(PlainTextEncoding); setIntDefault(TabWidth); setIntDefault(ForegroundLayoutToIndex); if (![[dict objectForKey:RichTextFont] isEqual:[NSFont userFontOfSize:0.0]]) [NSFont setUserFont:[dict objectForKey:RichTextFont]]; if (![[dict objectForKey:PlainTextFont] isEqual:[NSFont userFixedPitchFontOfSize:0.0]]) [NSFont setUserFixedPitchFont:[dict objectForKey:PlainTextFont]]; } @end /* 10/24/95 aozer Created. */ gnustep-examples-1.4.0/gui/Old/Edit/Controller.h0000664000175000017500000000137207226455544020502 0ustar fedorfedor#import #import #include @interface Controller : NSDocumentController { id infoPanel; } /* NSApplication delegate methods */ - (BOOL)application:(NSApplication *)app openFile:(NSString *)filename; - (BOOL)application:(NSApplication *)app openTempFile:(NSString *)filename; - (BOOL)applicationOpenUntitledFile:(NSApplication *)app; - (BOOL)applicationShouldTerminate:(NSApplication *)app; /* Action methods */ - (void)createNew:(id)sender; - (void)open:(id)sender; - (void)saveAll:(id)sender; - (void)showInfoPanel:(id)sender; /* Outlet methods */ - (void)setVersionField:(id)anObject; /* Fake; there's no outlet */ - (void)method:menuCell; // temp for sake of menu @end gnustep-examples-1.4.0/gui/Old/Edit/Preferences.h0000664000175000017500000000440207226455544020615 0ustar fedorfedor#import #import #import #import "Document.h" /* Keys in the dictionary... */ #define RichTextFont @"RichTextFont" #define PlainTextFont @"PlainTextFont" #define DeleteBackup @"DeleteBackup" #define SaveFilesWritable @"SaveFilesWritable" #define RichText @"RichText" #define ShowPageBreaks @"ShowPageBreaks" #define WindowWidth @"WidthInChars" #define WindowHeight @"HeightInChars" #define PlainTextEncoding @"PlainTextEncoding" #define TabWidth @"TabWidth" #define ForegroundLayoutToIndex @"ForegroundLayoutToIndex" #define OpenPanelFollowsMainWindow @"OpenPanelFollowsMainWindow" @interface Preferences : NSObject { id richTextFontNameField; id plainTextFontNameField; id deleteBackupMatrix; id saveFilesWritableButton; id richTextMatrix; id showPageBreaksButton; id windowWidthField; id windowHeightField; id plainTextEncodingPopup; id tabWidthField; NSDictionary *curValues; NSMutableDictionary *displayedValues; } + (id)objectForKey:(id)key; /* Convenience for getting global preferences */ + (void)saveDefaults; /* Convenience for saving global preferences */ + (Preferences *)sharedInstance; - (NSDictionary *)preferences; /* The current preferences; contains values for the documented keys */ - (void)showPanel:(id)sender; /* Shows the panel */ - (void)updateUI; /* Updates the displayed values in the UI */ - (void)commitDisplayedValues; /* The displayed values are made current */ - (void)discardDisplayedValues; /* The displayed values are replaced with current prefs and updateUI is called */ - (void)revert:(id)sender; /* Reverts the displayed values to the current preferences */ - (void)ok:(id)sender; /* Calls commitUI to commit the displayed values as current */ - (void)revertToDefault:(id)sender; - (void)miscChanged:(id)sender; /* Action message for most of the misc items in the UI to get displayedValues */ - (void)changeRichTextFont:(id)sender; /* Request to change the rich text font */ - (void)changePlainTextFont:(id)sender; /* Request to change the plain text font */ - (void)changeFont:(id)fontManager; /* Sent by the font manager */ + (NSDictionary *)preferencesFromDefaults; + (void)savePreferencesToDefaults:(NSDictionary *)dict; @end gnustep-examples-1.4.0/gui/Old/Edit/Document.m0000664000175000017500000001622007226455544020140 0ustar fedorfedor/* Document.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. Document object for Edit... */ #import #import #import // for NULL #import "Document.h" #import "MultiplePageView.h" #import "TextFinder.h" @implementation Document - (void)setupInitialTextViewSharedState { NSText *textView = [self firstTextView]; [textView setUsesFontPanel:YES]; [textView setDelegate:self]; [textView setRichText: YES]; // [self setRichText:[[Preferences objectForKey:RichText] boolValue]]; // [self setHyphenationFactor:0.0]; } - (id)init { static NSPoint cascadePoint = {0.0, 0.0}; NSZone *zone = [self zone]; self = [super init]; // This ensures the first view gets set up correctly [self setupInitialTextViewSharedState]; return self; } - (id)initWithPath:(NSString *)filename encoding:(int)encoding uniqueZone:(BOOL)flag { if (!(self = [self init])) { if (flag) NSRecycleZone([self zone]); return nil; } uniqueZone = flag; /* So if something goes wrong we can recycle the zone correctly in dealloc */ if (filename && ![self loadFromPath:filename encoding:encoding]) { [self release]; return nil; } if (filename) { [Document setLastOpenSavePanelDirectory:[filename stringByDeletingLastPathComponent]]; } [[self firstTextView] setSelectedRange:NSMakeRange(0, 0)]; [self setDocumentName:filename]; return self; } + (BOOL)openUntitled { NSZone *zone = NSCreateZone(NSPageSize(), NSPageSize(), YES); Document *document = [[self allocWithZone:zone] initWithPath:nil encoding:UnknownStringEncoding uniqueZone:YES]; if (document) { [document setPotentialSaveDirectory:[Document openSavePanelDirectory]]; [document setDocumentName:nil]; [[document window] makeKeyAndOrderFront:nil]; return YES; } else return NO; } /* Return the document in the specified window. */ + (Document *)documentForWindow:(NSWindow *)window { id delegate = [window delegate]; return (delegate && [delegate isKindOfClass:[Document class]]) ? delegate : nil; } + (Document *)documentForPath:(NSString *)path { return nil; } + (BOOL)openDocumentWithPath:(NSString *)filename encoding:(int)encoding { Document *document = [self documentForPath:filename]; if (!document) { NSZone *zone = NSCreateZone(NSPageSize(), NSPageSize(), YES); document = [[self allocWithZone:zone] initWithPath:filename encoding:encoding uniqueZone:YES]; } } /* Clear the delegates of the text views and window, then release all resources and go away... */ - (void)dealloc { [[self firstTextView] setDelegate:nil]; [[self window] setDelegate:nil]; [documentName release]; if (uniqueZone) { NSRecycleZone([self zone]); } [super dealloc]; } - (NSText *)firstTextView { static textView; if(!textView) textView = [NSText new]; return textView; } - (NSSize)viewSize { return [scrollView contentSize]; } - (void)setViewSize:(NSSize)size { NSWindow *window = [scrollView window]; NSRect origWindowFrame = [window frame]; NSSize scrollViewSize = [NSScrollView frameSizeForContentSize:size hasHorizontalScroller:[scrollView hasHorizontalScroller] hasVerticalScroller:[scrollView hasVerticalScroller] borderType:[scrollView borderType]]; [window setContentSize:scrollViewSize]; [window setFrameTopLeftPoint:NSMakePoint(origWindowFrame.origin.x, NSMaxY(origWindowFrame))]; } /* This method causes the text to be laid out in the foreground (approximately) up to the indicated character index. */ - (void)doForegroundLayoutToCharacterIndex:(unsigned)loc {} + (NSString *)cleanedUpPath:(NSString *)filename { NSString *resolvedSymlinks = [filename stringByResolvingSymlinksInPath]; if ([resolvedSymlinks length] > 0) { NSString *standardized = [resolvedSymlinks stringByStandardizingPath]; return [standardized length] ? standardized : resolvedSymlinks; } return filename; } - (void)setDocumentName:(NSString *)filename { [documentName autorelease]; if (filename) { documentName = [[filename stringByResolvingSymlinksInPath] copyWithZone:[self zone]]; [[self window] setTitleWithRepresentedFilename:documentName]; if (uniqueZone) NSSetZoneName([self zone], documentName); } else { NSString *untitled = NSLocalizedString(@"UNTITLED", @"Name of new, untitled document"); if ([self isRichText]) untitled = [untitled stringByAppendingPathExtension:@"rtf"]; if (potentialSaveDirectory) { [[self window] setTitleWithRepresentedFilename:[potentialSaveDirectory stringByAppendingPathComponent:untitled]]; } else { [[self window] setTitle:untitled]; } if (uniqueZone) NSSetZoneName([self zone], untitled); documentName = nil; } } - (NSString *)documentName { return documentName; } - (BOOL)isRichText { return isRichText; } - (void)setPotentialSaveDirectory:(NSString *)nm {} - (NSString *)potentialSaveDirectory {} - (void)setDocumentEdited:(BOOL)flag { if (flag != isDocumentEdited) { isDocumentEdited = flag; [[self window] setDocumentEdited:isDocumentEdited]; } } - (BOOL)isDocumentEdited { return isDocumentEdited; } - (NSWindow *)window { return [[self firstTextView] window]; } - (void)setPrintInfo:(NSPrintInfo *)anObject {} - (NSPrintInfo *)printInfo { return printInfo; } /* Multiple page related code */ - (unsigned)numberOfPages { if (hasMultiplePages) { return [[scrollView documentView] numberOfPages]; } else { return 1; } } - (BOOL)hasMultiplePages { return hasMultiplePages; } /* Outlet methods */ - (void)setScrollView:(id)anObject { scrollView = anObject; [scrollView setHasVerticalScroller:YES]; [scrollView setHasHorizontalScroller:NO]; [[scrollView contentView] setAutoresizesSubviews:YES]; [self fixUpScrollViewBackgroundColor:nil]; } static NSPopUpButton *encodingPopupButton = nil; static NSView *encodingAccessory = nil; - (void)close:(id)sender { [[self window] close]; } /* Not correct! */ - (void)saveTo:(id)sender { [self saveAs:sender]; } - (void)saveAs:(id)sender { (void)[self saveDocument:YES]; } - (void)save:(id)sender { (void)[self saveDocument:NO]; } - (BOOL)saveDocument:(BOOL)showSavePanel { NSLog(@"Save called!"); [[self firstTextView] writeRTFDToFile: @"test.rtf" atomically: NO]; return YES; } /* Window delegation messages */ - (BOOL)windowShouldClose:(id)sender { //return [self canCloseDocument]; return YES; } - (void)windowWillClose:(NSNotification *)notification { NSWindow *window = [self window]; [window setDelegate:nil]; [self release]; } /* Text view delegation messages */ - (void)textDidChange:(NSNotification *)textObject { //[self saveDocument: NO]; if (!isDocumentEdited) { [self setDocumentEdited:YES]; } } @end gnustep-examples-1.4.0/gui/Old/Edit/MultiplePageView.h0000664000175000017500000000137007226455544021600 0ustar fedorfedor#import @class NSPrintInfo; @class NSColor; @interface MultiplePageView : NSView { NSPrintInfo *printInfo; NSColor *lineColor; NSColor *marginColor; unsigned numPages; } - (void)setPrintInfo:(NSPrintInfo *)anObject; - (NSPrintInfo *)printInfo; - (float)pageSeparatorHeight; - (NSSize)documentSizeInPage; /* Returns the area where the document can draw */ - (NSRect)documentRectForPageNumber:(unsigned)pageNumber; /* First page is page 0 */ - (NSRect)pageRectForPageNumber:(unsigned)pageNumber; /* First page is page 0 */ - (void)setNumberOfPages:(unsigned)num; - (unsigned)numberOfPages; - (void)setLineColor:(NSColor *)color; - (NSColor *)lineColor; - (void)setMarginColor:(NSColor *)color; - (NSColor *)marginColor; @end gnustep-examples-1.4.0/gui/Old/Edit/GNUmakefile.preamble0000664000175000017500000000366007226455544022050 0ustar fedorfedor# # Makefile.preamble # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley # # This file is part of the GNUstep X/RAW GUI Backend. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # If you are interested in a warranty or support for this source code, # contact Scott Christley at scottc@net-community.com # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Makefile.preamble # # Project specific makefile variables, and additional # # Do not put any Makefile rules in this file, instead they should # be put into Makefile.postamble. # # # Flags dealing with compiling and linking # # Additional flags to pass to the preprocessor # ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler ADDITIONAL_OBJCFLAGS += -Wall # Additional flags to pass to the C compiler # ADDITIONAL_CFLAGS += # Additional include directories the compiler should search # ADDITIONAL_INCLUDE_DIRS += # Additional LDFLAGS to pass to the linker # ADDITIONAL_LDFLAGS += # Additional library directories the linker should search # ADDITIONAL_LIB_DIRS += # ADDITIONAL_TOOL_LIBS += # # Flags dealing with installing and uninstalling # # Additional directories to be created during installation # ADDITIONAL_INSTALL_DIRS += gnustep-examples-1.4.0/gui/Old/Edit/GNUmakefile0000664000175000017500000000307407226455544020261 0ustar fedorfedor# # Test apps makefile for GNUstep X/RAW GUI Backend # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley # Author: Felipe A. Rodriguez # # This file is part of the GNUstep X/RAW GUI Backend. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # If you are interested in a warranty or support for this source code, # contact Scott Christley at scottc@net-community.com # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # The application to be compiled TEST_APP_NAME = Edit # The Objective-C source files to be compiled Edit_OBJC_FILES = Edit.m Controller.m Document.m # The Resource files to be copied into the app's resources directory Edit_RESOURCE_FILES = text.tiff Readme.txt Readme.rtf -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/test-application.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/Old/Edit/MultiplePageView.m0000664000175000017500000001175207226455544021612 0ustar fedorfedor/* MultiplePageView.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. View which holds all the pages together in the multiple-page case */ #import #import "MultiplePageView.h" @implementation MultiplePageView - (id)initWithFrame:(NSRect)rect { if (self = [super initWithFrame:rect]) { numPages = 0; [self setLineColor:[NSColor lightGrayColor]]; [self setMarginColor:[NSColor whiteColor]]; /* This will set the frame to be whatever's appropriate... */ [self setPrintInfo:[NSPrintInfo sharedPrintInfo]]; } return self; } - (BOOL)isFlipped { return YES; } - (BOOL)isOpaque { return YES; } - (void)updateFrame { if ([self superview]) { NSRect rect = NSZeroRect; rect.size = [printInfo paperSize]; rect.size.height = rect.size.height * numPages; if (numPages > 1) rect.size.height += [self pageSeparatorHeight] * (numPages - 1); rect.size = [self convertSize:rect.size toView:[self superview]]; [self setFrame:rect]; } } - (void)setPrintInfo:(NSPrintInfo *)anObject { if (printInfo != anObject) { [printInfo autorelease]; printInfo = [anObject copyWithZone:[self zone]]; [self updateFrame]; [self setNeedsDisplay:YES]; /* Because the page size might change (could optimize this) */ } } - (NSPrintInfo *)printInfo { return printInfo; } - (void)setNumberOfPages:(unsigned)num { if (numPages != num) { NSRect oldFrame = [self frame]; NSRect newFrame; numPages = num; [self updateFrame]; newFrame = [self frame]; if (newFrame.size.height > oldFrame.size.height) { [self setNeedsDisplayInRect:NSMakeRect(oldFrame.origin.x, NSMaxY(oldFrame), oldFrame.size.width, NSMaxY(newFrame) - NSMaxY(oldFrame))]; } } } - (unsigned)numberOfPages { return numPages; } - (float)pageSeparatorHeight { return 5.0; } - (void)dealloc { [printInfo release]; [super dealloc]; } - (NSSize)documentSizeInPage { NSSize paperSize = [printInfo paperSize]; paperSize.width -= ([printInfo leftMargin] + [printInfo rightMargin]); paperSize.height -= ([printInfo topMargin] + [printInfo bottomMargin]); return paperSize; } - (NSRect)documentRectForPageNumber:(unsigned)pageNumber { /* First page is page 0, of course! */ NSRect rect = [self pageRectForPageNumber:pageNumber]; rect.origin.x += [printInfo leftMargin]; rect.origin.y += [printInfo topMargin]; rect.size = [self documentSizeInPage]; return rect; } - (NSRect)pageRectForPageNumber:(unsigned)pageNumber { NSRect rect; rect.size = [printInfo paperSize]; rect.origin = [self frame].origin; rect.origin.y += ((rect.size.height + [self pageSeparatorHeight]) * pageNumber); return rect; } - (void)setLineColor:(NSColor *)color { if (color != lineColor) { [lineColor autorelease]; lineColor = [color copyWithZone:[self zone]]; [self setNeedsDisplay:YES]; } } - (NSColor *)lineColor { return lineColor; } - (void)setMarginColor:(NSColor *)color { if (color != marginColor) { [marginColor autorelease]; marginColor = [color copyWithZone:[self zone]]; [self setNeedsDisplay:YES]; } } - (NSColor *)marginColor { return marginColor; } - (void)drawRect:(NSRect)rect { if ([[GSContext currentContext] isDrawingToScreen]) { NSSize paperSize = [printInfo paperSize]; unsigned firstPage = rect.origin.y / (paperSize.height + [self pageSeparatorHeight]); unsigned lastPage = NSMaxY(rect) / (paperSize.height + [self pageSeparatorHeight]); unsigned cnt; [marginColor set]; NSRectFill(rect); [lineColor set]; for (cnt = firstPage; cnt <= lastPage; cnt++) { NSRect docRect = NSInsetRect([self documentRectForPageNumber:cnt], -1.0, -1.0); NSFrameRectWithWidth(docRect, 0.0); } if ([[self superview] isKindOfClass:[NSClipView class]]) { NSColor *backgroundColor = [(NSClipView *)[self superview] backgroundColor]; [backgroundColor set]; for (cnt = firstPage; cnt <= lastPage; cnt++) { NSRect pageRect = [self pageRectForPageNumber:cnt]; NSRectFill (NSMakeRect(pageRect.origin.x, NSMaxY(pageRect), pageRect.size.width, [self pageSeparatorHeight])); } } } } /**** Printing support... ****/ - (BOOL)knowsPagesFirst:(int *)firstPageNum last:(int *)lastPageNum { *lastPageNum = [self numberOfPages]; return YES; } - (NSRect)rectForPage:(int)page { return [self documentRectForPageNumber:page-1]; /* Our page numbers start from 0; the kit's from 1 */ } @end /* 2/16/95 aozer Created for Edit II. 4/20/95 aozer Implemented printing */ gnustep-examples-1.4.0/gui/Old/Edit/DocumentReadWrite.m0000664000175000017500000002543407226455544021756 0ustar fedorfedor/* DocumentReadWrite.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. File I/O code... We define a few convenience methods on NSAttributedString as well. */ #import #import "Document.h" #import "Preferences.h" #import #define IgnoreRichText NO #import // For memcmp()... @interface NSAttributedString(EditExtensions) - (id)initWithRTF:(NSData *)data viewSize:(NSSize *)size hyphenationFactor:(float *)factor; - (id)initWithRTFDFile:(NSString *)path viewSize:(NSSize *)size hyphenationFactor:(float *)factor; - (BOOL)writeRTFDToFile:(NSString *)path updateFilenames:(BOOL)flag viewSize:(NSSize)size hyphenationFactor:(float)factor; - (NSData *)RTFFromRange:(NSRange)range viewSize:(NSSize)size hyphenationFactor:(float)factor; @end @implementation NSAttributedString(EditExtensions) static float defaultPadding(void) { static float padding = -1; if (padding < 0.0) { NSTextContainer *container = [[NSTextContainer alloc] init]; padding = [container lineFragmentPadding]; [container release]; } return padding; } - (id)initWithRTF:(NSData *)data viewSize:(NSSize *)size hyphenationFactor:(float *)factor { NSDictionary *docAttrs; if (self = [self initWithRTF:data documentAttributes:&docAttrs]) { NSValue *value; NSNumber *number; if (size && (value = [docAttrs objectForKey:@"PaperSize"])) { *size = [value sizeValue]; /* The size has the 12 pt padding from old Edit; compensate for that... Note that we should really be getting the margins here! */ if (size->width > 0 && size->height > 0) size->width = size->width - (6.0 * 2) + (defaultPadding() * 2); } if (factor && (number = [docAttrs objectForKey:@"HyphenationFactor"])) *factor = [number floatValue]; } return self; } - (id)initWithRTFDFile:(NSString *)path viewSize:(NSSize *)size hyphenationFactor:(float *)factor { NSDictionary *docAttrs; if (self = [self initWithPath:path documentAttributes:&docAttrs]) { NSValue *value; NSNumber *number; if (size && (value = [docAttrs objectForKey:@"PaperSize"])) { *size = [value sizeValue]; /* The size has the 12 pt padding from old Edit; compensate for that... Note that we should really be getting the margins here! */ if (size->width > 0 && size->height > 0) size->width = size->width - (6.0 * 2) + (defaultPadding() * 2); } if (factor && (number = [docAttrs objectForKey:@"HyphenationFactor"])) *factor = [number floatValue]; } return self; } - (BOOL)writeRTFDToFile:(NSString *)path updateFilenames:(BOOL)flag viewSize:(NSSize)size hyphenationFactor:(float)factor { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSValue valueWithSize:NSMakeSize(size.width + (6.0 * 2) - (defaultPadding() * 2), size.height)], @"PaperSize", [NSNumber numberWithFloat:factor], @"HyphenationFactor", nil]; NSFileWrapper *wrapper = [self RTFDFileWrapperFromRange:NSMakeRange(0, [self length]) documentAttributes:dict]; if (wrapper) { return [wrapper writeToFile:path atomically:YES updateFilenames:flag]; } else { return NO; } } - (NSData *)RTFFromRange:(NSRange)range viewSize:(NSSize)size hyphenationFactor:(float)factor { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSValue valueWithSize:NSMakeSize(size.width + (6.0 * 2) - (defaultPadding() * 2), size.height)], @"PaperSize", [NSNumber numberWithFloat:factor], @"HyphenationFactor", nil]; return [self RTFFromRange:range documentAttributes:dict]; } @end @implementation Document(ReadWrite) /* Loads from the specified path, sets encoding and textStorage. Note that if the file looks like RTF or RTFD, this method will open the file in rich text mode, regardless of the setting of encoding. */ - (BOOL)loadFromPath:(NSString *)fileName encoding:(int)encoding { NSData *fileContentsAsData = nil; NSDictionary *attrs; BOOL isDirectory; NSString *extension = [fileName pathExtension]; BOOL success = NO; if (!(attrs = [[NSFileManager defaultManager] fileAttributesAtPath:fileName traverseLink:YES])) return NO; isDirectory = [[attrs fileType] isEqualToString:NSFileTypeDirectory]; if (isDirectory) { if (![@"rtfd" isEqual:extension]) return NO; /* If directory, should be .rtfd */ encoding = RichTextWithGraphicsStringEncoding; } else if ([@"rtf" isEqual:extension] && !IgnoreRichText) { /* If file looks like RTF, ignore any choice they made */ encoding = RichTextStringEncoding; } else if (encoding == UnknownStringEncoding) { if (fileContentsAsData = [[NSData alloc] initWithContentsOfFile:fileName]) { unsigned len = [fileContentsAsData length]; const unsigned char *bytes = [fileContentsAsData bytes]; static const unsigned char bigUnicodeHeader[] = {0xff, 0xfe}; static const unsigned char littleUnicodeHeader[] = {0xfe, 0xff}; static const unsigned char rtfHeader[] = {'{', '\\', 'r', 't', 'f'}; /* Unicode plain text files start with the Unicode BOM char; check for that first... */ if (((len & 1) == 0) && (len >= 2) && (!memcmp(bytes, bigUnicodeHeader, 2) || !memcmp(bytes, littleUnicodeHeader, 2))) { encoding = NSUnicodeStringEncoding; } else if (((len >= 6) && !memcmp(bytes, rtfHeader, 5)) && !IgnoreRichText) { encoding = RichTextStringEncoding; } if (encoding == UnknownStringEncoding) { encoding = [[Preferences objectForKey:PlainTextEncoding] intValue]; if (encoding == UnknownStringEncoding) { encoding = [NSString defaultCStringEncoding]; } } } else { return NO; /* File couldn't be opened, I guess */ } } if (encoding == RichTextWithGraphicsStringEncoding) { NSSize size = NSZeroSize; float factor = 0.0; NSTextStorage *newTextStorage = [[NSTextStorage allocWithZone:[self zone]] initWithRTFDFile:fileName viewSize:&size hyphenationFactor:&factor]; if (newTextStorage) { [self setRichText:YES]; if (size.width > 0 && size.height > 0 && ![self hasMultiplePages]) [self setViewSize:size]; [self setHyphenationFactor:factor]; [[self layoutManager] replaceTextStorage:newTextStorage]; [textStorage release]; textStorage = newTextStorage; success = YES; } } else { if (!fileContentsAsData) fileContentsAsData = [[NSData alloc] initWithContentsOfFile:fileName]; if (fileContentsAsData) { if (encoding == RichTextStringEncoding) { NSSize size = NSZeroSize; float factor = 0.0; NSTextStorage *newTextStorage = [[NSTextStorage allocWithZone:[self zone]] initWithRTF:fileContentsAsData viewSize:&size hyphenationFactor:&factor]; if (newTextStorage) { [self setRichText:YES]; if (size.width > 0 && size.height > 0 && ![self hasMultiplePages]) [self setViewSize:size]; [self setHyphenationFactor:factor]; [[self layoutManager] replaceTextStorage:newTextStorage]; [textStorage release]; textStorage = newTextStorage; success = YES; } } else { NSString *fileContents = [[NSString alloc] initWithData:fileContentsAsData encoding:encoding]; if (fileContents) { [textStorage beginEditing]; [[textStorage mutableString] setString:fileContents]; [self setRichText:NO]; [textStorage endEditing]; [fileContents release]; encodingIfPlainText = encoding; success = YES; } } } } [fileContentsAsData release]; return success; } - (BOOL)saveToPath:(NSString *)fileName encoding:(int)encoding updateFilenames:(BOOL)updateFileNamesFlag { BOOL success = NO; NSFileManager *fileManager = [NSFileManager defaultManager]; NSDictionary *curAttributes = [fileManager fileAttributesAtPath:fileName traverseLink:YES]; NSString *actualFileNameToSave = [fileName stringByResolvingSymlinksInPath]; /* Follow links to save */ if (curAttributes) { /* If not nil, the file exists... */ NSString *backupFileName = [actualFileNameToSave stringByAppendingString:@"~"]; /* If there was a backup file name, delete it */ if ([fileManager fileExistsAtPath:backupFileName]) { (void)[fileManager removeFileAtPath:backupFileName handler:nil]; } /* If the user wishes to keep backups, simply remove the old file aside */ if (![[Preferences objectForKey:DeleteBackup] boolValue]) { (void)[fileManager movePath:actualFileNameToSave toPath:backupFileName handler:nil]; } } switch (encoding) { case RichTextWithGraphicsStringEncoding: { success = [textStorage writeRTFDToFile:actualFileNameToSave updateFilenames:updateFileNamesFlag viewSize:[self viewSize] hyphenationFactor:[self hyphenationFactor]]; break; } case RichTextStringEncoding: { NSData *data = [textStorage RTFFromRange:NSMakeRange(0, [textStorage length]) viewSize:[self viewSize] hyphenationFactor:[self hyphenationFactor]]; success = data && [data writeToFile:actualFileNameToSave atomically:YES]; break; } default: { NSData *data = [[textStorage string] dataUsingEncoding:encoding]; success = data && [data writeToFile:actualFileNameToSave atomically:YES]; break; } } /* Apply the original permissions to the new file. Also make it writable if needed. */ if (success && curAttributes) { id permissions = [curAttributes objectForKey:NSFilePosixPermissions]; if (permissions) { if ([[Preferences objectForKey:SaveFilesWritable] boolValue]) { permissions = [NSNumber numberWithUnsignedLong:([permissions unsignedLongValue] | 0200)]; } [fileManager changeFileAttributes:[NSDictionary dictionaryWithObjectsAndKeys:permissions, NSFilePosixPermissions, nil] atPath:actualFileNameToSave]; } } return success; } @end /* 2/21/95 aozer Created for Edit II. 4/11/95 aozer Added some preliminary paper size support 4/13/95 aozer Permissions 7/21/95 aozer Follow links correctly for saving 11/7/96 aozer Read/write hyphenation factor in RTF files */ gnustep-examples-1.4.0/gui/Old/Edit/rtf.tiff0000664000175000017500000002230207226455544017647 0ustar fedorfedorII*$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3"""3"""3""333"3"3"UUUUUUUUUUUU"""""""""""""UUUUUUUU""""""""""""""UUUUUUUU"""""""""""UUUUUUUUww"w"w"w"ww"ww"w"wUUUUUUUUw"wwww"www"www"www"wwww"www"wwww"UUUUUUUUfwfwfwfwffwfwfwwfwfwwfwwfUUUUUUUUUUUUUUUU"33333"33"3"33"33UUUUUUUUUUUUUfDUUfDUUfDUUfUfDUUfDUUfDUUfUfDUUfDUUfDUUfDUUfUfDUUfUUUUUUUUDUDU3DDUDUDU3DDUDU3DDUDUDU3DDUDUDU3DDUDU3DDUDUDU3DDUUUUUUUUU3D333D3D3D333D3D333D3D3D3D3D3D333D3D3D3D3D3D333D3D3DUUUUUUUU33"3"333"33333"333"333"3"333"333"33333"333"333"333UUUUUUUU""""""""""""""""""""""""""""""""""""""""""""""""""""""UUUUUUUU""""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 00$$$$(R ' 'gnustep-examples-1.4.0/gui/Old/Edit/GNUmakefile.postamble0000664000175000017500000000362007226455544022243 0ustar fedorfedor# # Makefile.postamble # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley # # This file is part of the GNUstep X/RAW GUI Backend. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # If you are interested in a warranty or support for this source code, # contact Scott Christley at scottc@net-community.com # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Makefile.postamble # # Project specific makefile rules # # Uncomment the targets you want. # The double colons (::) are important, do not make them single colons # otherwise the normal makefile rules will not be performed. # # Things to do before compiling # before-all:: # Things to do after compiling # after-all:: # Things to do before installing # before-install:: # Things to do after installing # after-install:: # Things to do before uninstalling # before-uninstall:: # Things to do after uninstalling # after-uninstall:: # Things to do before cleaning # before-clean:: # Things to do after cleaning # after-clean:: # Things to do before distcleaning # before-distclean:: # Things to do after distcleaning # after-distclean:: # Things to do before checking # before-check:: # Things to do after checking # after-check:: gnustep-examples-1.4.0/gui/Old/Edit/TextFinder.m0000664000175000017500000002302607226455544020440 0ustar fedorfedor/* TextFinder.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. Find and replace functionality with a minimal panel... In addition to including this class and FindPanel.nib in your app, you probably need to hook up the following action methods in your document object (or whatever object is first responder) to call the appropriate methods in [TextFinder sharedInstance]: orderFrontFindPanel: findNext: findPrevious: enterSelection: (calls setFindString:) */ #import #import "TextFinder.h" @implementation TextFinder - (id)init { if (!(self = [super init])) return nil; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidActivate:) name:NSApplicationDidBecomeActiveNotification object:[NSApplication sharedApplication]]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addWillDeactivate:) name:NSApplicationWillResignActiveNotification object:[NSApplication sharedApplication]]; [self setFindString:@""]; [self loadFindStringFromPasteboard]; return self; } - (void)appDidActivate:(NSNotification *)notification { [self loadFindStringFromPasteboard]; } - (void)addWillDeactivate:(NSNotification *)notification { [self loadFindStringToPasteboard]; } - (void)loadFindStringFromPasteboard { NSPasteboard *pasteboard = [NSPasteboard pasteboardWithName:NSFindPboard]; if ([[pasteboard types] containsObject:NSStringPboardType]) { NSString *string = [pasteboard stringForType:NSStringPboardType]; if (string && [string length]) { [self setFindString:string]; findStringChangedSinceLastPasteboardUpdate = NO; } } } - (void)loadFindStringToPasteboard { NSPasteboard *pasteboard = [NSPasteboard pasteboardWithName:NSFindPboard]; if (findStringChangedSinceLastPasteboardUpdate) { [pasteboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; [pasteboard setString:[self findString] forType:NSStringPboardType]; findStringChangedSinceLastPasteboardUpdate = NO; } } static id sharedFindObject = nil; + (id)sharedInstance { if (!sharedFindObject) { sharedFindObject = [[self allocWithZone:[[NSApplication sharedApplication] zone]] init]; } return sharedFindObject; } - (void)loadUI { if (!findTextField) { if (![NSBundle loadNibNamed:@"FindPanel" owner:self]) { NSLog(@"Failed to load FindPanel.nib"); NSBeep(); } if (self == sharedFindObject) [[findTextField window] setFrameAutosaveName:@"Find"]; } [findTextField setStringValue:[self findString]]; } - (void)dealloc { if (self != sharedFindObject) { [findString release]; [super dealloc]; } } - (NSString *)findString { return findString; } - (void)setFindString:(NSString *)string { if ([string isEqualToString:findString]) return; [findString autorelease]; findString = [string copyWithZone:[self zone]]; if (findTextField) { [findTextField setStringValue:string]; [findTextField selectText:nil]; } findStringChangedSinceLastPasteboardUpdate = YES; } - (NSTextView *)textObjectToSearchIn { id obj = [[NSApp mainWindow] firstResponder]; return (obj && [obj isKindOfClass:[NSTextView class]]) ? obj : nil; } - (NSPanel *)findPanel { if (!findTextField) [self loadUI]; return (NSPanel *)[findTextField window]; } /* The primitive for finding; this ends up setting the status field (and beeping if necessary)... */ - (BOOL)find:(BOOL)direction { NSTextView *text = [self textObjectToSearchIn]; lastFindWasSuccessful = NO; if (text) { NSString *textContents = [text string]; unsigned textLength; if (textContents && (textLength = [textContents length])) { NSRange range; unsigned options = 0; if (direction == Backward) options |= NSBackwardsSearch; if ([ignoreCaseButton state]) options |= NSCaseInsensitiveSearch; range = [textContents findString:[self findString] selectedRange:[text selectedRange] options:options wrap:YES]; if (range.length) { [text setSelectedRange:range]; [text scrollRangeToVisible:range]; lastFindWasSuccessful = YES; } } } if (!lastFindWasSuccessful) { NSBeep(); [statusField setStringValue:NSLocalizedStringFromTable(@"Not found", @"FindPanel", @"Status displayed in find panel when the find string is not found.")]; } else { [statusField setStringValue:@""]; } return lastFindWasSuccessful; } - (void)orderFrontFindPanel:(id)sender { NSPanel *panel = [self findPanel]; [findTextField selectText:nil]; [panel makeKeyAndOrderFront:nil]; } /**** Action methods for gadgets in the find panel; these should all end up setting or clearing the status field ****/ - (void)findNextAndOrderFindPanelOut:(id)sender { [findNextButton performClick:nil]; if (lastFindWasSuccessful) { [[self findPanel] orderOut:sender]; } else { [findTextField selectText:nil]; } } - (void)findNext:(id)sender { if (findTextField) [self setFindString:[findTextField stringValue]]; /* findTextField should be set */ (void)[self find:Forward]; } - (void)findPrevious:(id)sender { if (findTextField) [self setFindString:[findTextField stringValue]]; /* findTextField should be set */ (void)[self find:Backward]; } - (void)replace:(id)sender { NSTextView *text = [self textObjectToSearchIn]; if (!text) { NSBeep(); } else { [[text textStorage] replaceCharactersInRange:[text selectedRange] withString:[replaceTextField stringValue]]; [text didChangeText]; } [statusField setStringValue:@""]; } - (void)replaceAndFind:(id)sender { [self replace:sender]; [self findNext:sender]; } #define ReplaceAllScopeEntireFile 42 #define ReplaceAllScopeSelection 43 - (void)replaceAll:(id)sender { NSTextView *text = [self textObjectToSearchIn]; if (!text) { NSBeep(); } else { NSTextStorage *textStorage = [text textStorage]; NSString *textContents = [text string]; NSString *replaceString = [replaceTextField stringValue]; BOOL entireFile = replaceAllScopeMatrix ? ([replaceAllScopeMatrix selectedTag] == ReplaceAllScopeEntireFile) : YES; NSRange replaceRange = entireFile ? NSMakeRange(0, [textStorage length]) : [text selectedRange]; unsigned options = NSBackwardsSearch | ([ignoreCaseButton state] ? NSCaseInsensitiveSearch : 0); unsigned replaced = 0; if (findTextField) [self setFindString:[findTextField stringValue]]; while (1) { NSRange foundRange = [textContents rangeOfString:[self findString] options:options range:replaceRange]; if (foundRange.length == 0) break; if ([text shouldChangeTextInRange:foundRange replacementString:replaceString]) { if (replaced == 0) [textStorage beginEditing]; replaced++; [textStorage replaceCharactersInRange:foundRange withString:replaceString]; replaceRange.length = foundRange.location - replaceRange.location; } } if (replaced > 0) { /* There was at least one replacement */ [textStorage endEditing]; /* We need this to bracket the beginEditing */ [text didChangeText]; /* We need one of these to terminate the shouldChange... methods we sent */ [statusField setStringValue:[NSString localizedStringWithFormat:NSLocalizedStringFromTable(@"%d replaced", @"FindPanel", @"Status displayed in find panel when indicated number of matches are replaced."), replaced]]; } else { /* No replacements were done... */ NSBeep(); [statusField setStringValue:NSLocalizedStringFromTable(@"Not found", @"FindPanel", @"Status displayed in find panel when the find string is not found.")]; } } } @end @implementation NSString (NSStringTextFinding) - (NSRange)findString:(NSString *)string selectedRange:(NSRange)selectedRange options:(unsigned)options wrap:(BOOL)wrap { BOOL forwards = (options & NSBackwardsSearch) == 0; unsigned length = [self length]; NSRange searchRange, range; if (forwards) { searchRange.location = NSMaxRange(selectedRange); searchRange.length = length - searchRange.location; range = [self rangeOfString:string options:options range:searchRange]; if ((range.length == 0) && wrap) { /* If not found look at the first part of the string */ searchRange.location = 0; searchRange.length = selectedRange.location; range = [self rangeOfString:string options:options range:searchRange]; } } else { searchRange.location = 0; searchRange.length = selectedRange.location; range = [self rangeOfString:string options:options range:searchRange]; if ((range.length == 0) && wrap) { searchRange.location = NSMaxRange(selectedRange); searchRange.length = length - searchRange.location; range = [self rangeOfString:string options:options range:searchRange]; } } return range; } @end /* 2/21/95 aozer Created for Edit II. 2/24/95 aozer Find pasteboard support 8/16/95 aozer Replace functionality 10/4/95 aozer Status field update 11/12/96 aozer Correctly send shouldChange... to the textview while doing a replace */ gnustep-examples-1.4.0/gui/Old/Edit/ScalingScrollView.m0000664000175000017500000001263007226455544021755 0ustar fedorfedor/* ScalingScrollView.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Mike Ferris You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. */ #import "ScalingScrollView.h" #import #import #import #import #import /* For genstrings: NSLocalizedString(@"10%", @"Zoom popup entry") NSLocalizedString(@"25%", @"Zoom popup entry") NSLocalizedString(@"50%", @"Zoom popup entry") NSLocalizedString(@"75%", @"Zoom popup entry") NSLocalizedString(@"100%", @"Zoom popup entry") NSLocalizedString(@"128%", @"Zoom popup entry") NSLocalizedString(@"200%", @"Zoom popup entry") NSLocalizedString(@"400%", @"Zoom popup entry") NSLocalizedString(@"800%", @"Zoom popup entry") NSLocalizedString(@"1600%", @"Zoom popup entry") */ static NSString *_NSDefaultScaleMenuLabels[] = {/* @"Set...", */ @"10%", @"25%", @"50%", @"75%", @"100%", @"128%", @"200%", @"400%", @"800%", @"1600%"}; static float _NSDefaultScaleMenuFactors[] = {/* 0.0, */ 0.1, 0.25, 0.5, 0.75, 1.0, 1.28, 2.0, 4.0, 8.0, 16.0}; static unsigned _NSDefaultScaleMenuSelectedItemIndex = 4; static float _NSButtonPadding = 1.0; static float _NSScaleMenuFontSize = 10.0; @implementation ScalingScrollView - (id)initWithFrame:(NSRect)rect { if (self = [super initWithFrame:rect]) { scaleFactor = 1.0; } return self; } - (void)_makeScalePopUpButton { if (_scalePopUpButton == nil) { unsigned cnt, numberOfDefaultItems = (sizeof(_NSDefaultScaleMenuLabels) / sizeof(NSString *)); NSButtonCell *curItem; // create it _scalePopUpButton = [[NSPopUpButton allocWithZone:[self zone]] initWithFrame:NSMakeRect(0.0, 0.0, 1.0, 1.0) pullsDown:NO]; // fill it for (cnt = 0; cnt < numberOfDefaultItems; cnt++) { [_scalePopUpButton addItemWithTitle:NSLocalizedString(_NSDefaultScaleMenuLabels[cnt], nil)]; curItem = [_scalePopUpButton itemAtIndex:cnt]; if (_NSDefaultScaleMenuFactors[cnt] != 0.0) { [curItem setRepresentedObject:[NSNumber numberWithFloat:_NSDefaultScaleMenuFactors[cnt]]]; } } [_scalePopUpButton selectItemAtIndex:_NSDefaultScaleMenuSelectedItemIndex]; // hook it up [_scalePopUpButton setTarget:self]; [_scalePopUpButton setAction:@selector(scalePopUpAction:)]; // set a suitable font [_scalePopUpButton setFont:[NSFont systemFontOfSize:_NSScaleMenuFontSize]]; // Make sure the popup is big enough to fit the cells. [_scalePopUpButton sizeToFit]; // don't let it become first responder [_scalePopUpButton setRefusesFirstResponder:YES]; // put it in the scrollview [self addSubview:_scalePopUpButton]; [_scalePopUpButton release]; } } - (void)tile { // Let the superclass do most of the work. [super tile]; if (![self hasHorizontalScroller]) { if (_scalePopUpButton) [_scalePopUpButton removeFromSuperview]; _scalePopUpButton = nil; } else { NSScroller *horizScroller; NSRect horizScrollerFrame, buttonFrame, incrementLineFrame; if (!_scalePopUpButton) [self _makeScalePopUpButton]; horizScroller = [self horizontalScroller]; horizScrollerFrame = [horizScroller frame]; incrementLineFrame = [horizScroller rectForPart:NSScrollerIncrementLine]; buttonFrame = [_scalePopUpButton frame]; // Now we'll just adjust the horizontal scroller size and set the button size and location. horizScrollerFrame.size.width = horizScrollerFrame.size.width - buttonFrame.size.width - _NSButtonPadding; [horizScroller setFrameSize:horizScrollerFrame.size]; buttonFrame.origin.x = NSMaxX(horizScrollerFrame); buttonFrame.size.height = incrementLineFrame.size.height; buttonFrame.origin.y = horizScrollerFrame.origin.y + incrementLineFrame.origin.y; [_scalePopUpButton setFrame:buttonFrame]; } } - (void)scalePopUpAction:(id)sender { NSNumber *selectedFactorObject = [[sender selectedCell] representedObject]; if (selectedFactorObject == nil) { NSLog(@"Scale popup action: setting arbitrary zoom factors is not yet supported."); return; } else { [self setScaleFactor:[selectedFactorObject floatValue]]; } } - (float)scaleFactor { return scaleFactor; } - (void)setScaleFactor:(float)newScaleFactor { if (scaleFactor != newScaleFactor) { NSSize curDocFrameSize, newDocBoundsSize; NSView *clipView = [[self documentView] superview]; scaleFactor = newScaleFactor; // Get the frame. The frame must stay the same. curDocFrameSize = [clipView frame].size; // The new bounds will be frame divided by scale factor newDocBoundsSize.width = curDocFrameSize.width / newScaleFactor; newDocBoundsSize.height = curDocFrameSize.height / newScaleFactor; [clipView setBoundsSize:newDocBoundsSize]; } } - (void)setHasHorizontalScroller:(BOOL)flag { if (!flag) [self setScaleFactor:1.0]; [super setHasHorizontalScroller:flag]; } @end /* 12/94 mferris Created 3/4/95 aozer Use in Edit; added ability to turn popup off/on 5/4/95 aozer Scale the clipview rather than the docview 7/20/95 aozer Made popup entries localizable */ gnustep-examples-1.4.0/gui/Old/Edit/Edit.m0000664000175000017500000001770407226455544017257 0ustar fedorfedor/* Edit.m Copyright (C) 1996 Free Software Foundation, Inc. Author: Felipe A. Rodriguez Date: July 1998 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import #import "Controller.h" #import "Document.h" void createMenu(); int main(int argc, char **argv, char** env) { id pool = [NSAutoreleasePool new]; NSApplication *theApp; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; #endif //[NSObject enableDoubleReleaseCheck: YES]; theApp = [NSApplication sharedApplication]; [theApp setDelegate: [[Controller alloc] init]]; createMenu(); // create a generic menu [theApp run]; [pool release]; return 0; } //***************************************************************************** // // create interface modeller's menu // //***************************************************************************** void createMenu() { NSMenu* menu; NSMenu* info; NSMenu* file; NSMenu* format; NSMenu* base; NSMenu* text; NSMenu* edit; NSMenu* util; NSMenu* services; NSMenu* windows; SEL action = @selector(method:); /* * Create the app menu */ //menu = [[NSMenu alloc] initWithTitle: @"Edit"]; menu = [NSMenu new]; [menu addItemWithTitle: @"Info" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"File" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Edit" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Format" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Text" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Utilities" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Windows" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Print" action: action keyEquivalent: @"p"]; [menu addItemWithTitle: @"Services" action: action keyEquivalent: @""]; [menu addItemWithTitle: @"Hide" action: @selector(hide:) keyEquivalent: @"h"]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; /* * Create the info submenu */ info = [NSMenu new]; [menu setSubmenu: info forItem: [menu itemWithTitle: @"Info"]]; [info addItemWithTitle: @"Info Panel..." action: @selector(orderFrontStandardInfoPanel:) keyEquivalent: @""]; [info addItemWithTitle: @"Preferences..." action: action keyEquivalent: @""]; [info addItemWithTitle: @"Help" action: action keyEquivalent: @"?"]; /* * Create the file submenu */ file = [NSMenu new]; [menu setSubmenu: file forItem: [menu itemWithTitle: @"File"]]; [file addItemWithTitle: @"Open..." action: @selector(openDocument:) // action: @selector(open:) keyEquivalent: @"o"]; [file addItemWithTitle: @"New Application" action: action keyEquivalent: @"n"]; [file addItemWithTitle: @"New Module" action: action keyEquivalent: @""]; [file addItemWithTitle: @"Save" action: @selector(saveTo:) keyEquivalent: @"s"]; [file addItemWithTitle: @"Save As..." action: @selector(saveAs:) keyEquivalent: @"S"]; [file addItemWithTitle: @"Save All" action: @selector(saveAll:) keyEquivalent: @""]; [file addItemWithTitle: @"Revert to Saved" action: action keyEquivalent: @"u"]; [file addItemWithTitle: @"Test Interface" action: action keyEquivalent: @"O"]; [file addItemWithTitle: @"Close" action: action keyEquivalent: @""]; /* * Create the edit submenu */ edit = [NSMenu new]; [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: @"Delete" action: @selector(delete:) keyEquivalent: @""]; [edit addItemWithTitle: @"Undelete" action: NULL keyEquivalent: @""]; [edit addItemWithTitle: @"Select All" action: @selector(selectAll:) keyEquivalent: @"a"]; /* * Create the format submenu */ format = [[NSFontManager sharedFontManager] fontMenu: YES]; [menu setSubmenu: format forItem: [menu itemWithTitle: @"Format"]]; [format addItemWithTitle: @"Underline" action: @selector(underline:) keyEquivalent: @""]; [format addItemWithTitle: @"Baseline" action: NULL keyEquivalent: @""]; base = [NSMenu new]; [format setSubmenu: base forItem: [format itemWithTitle: @"Baseline"]]; [base addItemWithTitle: @"Superscript" action: @selector(superscript:) keyEquivalent: @""]; [base addItemWithTitle: @"Subscript" action: @selector(subscript:) keyEquivalent: @""]; [base addItemWithTitle: @"Unscript" action: @selector(unscript:) keyEquivalent: @""]; [format addItemWithTitle: @"Copy Font" action: @selector(copyFont:) keyEquivalent: @"3"]; [format addItemWithTitle: @"Paste Font" action: @selector(pasteFont:) keyEquivalent: @"4"]; /* * Create the text submenu */ text = [NSMenu new]; [menu setSubmenu: text forItem: [menu itemWithTitle: @"Text"]]; [text addItemWithTitle: @"Align Left" action: @selector(alignLeft:) keyEquivalent: @"{"]; [text addItemWithTitle: @"Center" action: @selector(alignCenter:) keyEquivalent: @"-"]; [text addItemWithTitle: @"Align Right" action: @selector(alignRight:) keyEquivalent: @"}"]; [text addItemWithTitle: @"Show Ruler" action: @selector(toggleRuler:) keyEquivalent: @""]; [text addItemWithTitle: @"Copy Ruler" action: @selector(copyRuler:) keyEquivalent: @"1"]; [text addItemWithTitle: @"Paste Ruler" action: @selector(pasteRuler:) keyEquivalent: @"2"]; /* * Create the edit submenu */ util = [NSMenu new]; [menu setSubmenu: util forItem: [menu itemWithTitle: @"Utilities"]]; [util addItemWithTitle: @"Inspector" action: @selector(showInspectorPanel:) keyEquivalent: @""]; [util addItemWithTitle: @"Palettes" action: @selector(showPalettePanel:) keyEquivalent: @""]; [util addItemWithTitle: @"Load Palette" action: action keyEquivalent: @""]; /* * Create the windows submenu */ windows = [NSMenu new]; [menu setSubmenu: windows forItem: [menu itemWithTitle: @"Windows"]]; [windows addItemWithTitle: @"Arrange" action: @selector(arrangeInFront:) keyEquivalent: @""]; [windows addItemWithTitle: @"Miniaturize" action: @selector(performMiniaturize:) keyEquivalent: @"m"]; [windows addItemWithTitle: @"Close" action: @selector(performClose:) keyEquivalent: @"w"]; /* * Create the windows submenu */ services = [NSMenu new]; [menu setSubmenu: services forItem: [menu itemWithTitle: @"Services"]]; [[NSApplication sharedApplication] setMainMenu: menu]; [[NSApplication sharedApplication] setServicesMenu: services]; NSLog (@"start displaying the menu..."); [menu update]; [menu display]; } gnustep-examples-1.4.0/gui/Old/Edit/TextFinder.h0000664000175000017500000000313107226455544020426 0ustar fedorfedor#import #define Forward YES #define Backward NO @interface TextFinder : NSObject { NSString *findString; id findTextField; id replaceTextField; id ignoreCaseButton; id findNextButton; id replaceAllScopeMatrix; id statusField; BOOL findStringChangedSinceLastPasteboardUpdate; BOOL lastFindWasSuccessful; /* A bit of a kludge */ } /* Common way to get a text finder. One instance of TextFinder per app is good enough. */ + (id)sharedInstance; /* Main method for external users; does a find in the first responder. Selects found range or beeps. */ - (BOOL)find:(BOOL)direction; /* Loads UI lazily */ - (NSPanel *)findPanel; /* Gets the first responder and returns it if it's an NSTextView */ - (NSTextView *)textObjectToSearchIn; /* Get/set the current find string. Will update UI if UI is loaded */ - (NSString *)findString; - (void)setFindString:(NSString *)string; /* Misc internal methods */ - (void)appDidActivate:(NSNotification *)notification; - (void)addWillDeactivate:(NSNotification *)notification; - (void)loadFindStringFromPasteboard; - (void)loadFindStringToPasteboard; /* Methods sent from the find panel UI */ - (void)findNext:(id)sender; - (void)findPrevious:(id)sender; - (void)findNextAndOrderFindPanelOut:(id)sender; - (void)replace:(id)sender; - (void)replaceAndFind:(id)sender; - (void)replaceAll:(id)sender; - (void)orderFrontFindPanel:(id)sender; @end @interface NSString (NSStringTextFinding) - (NSRange)findString:(NSString *)string selectedRange:(NSRange)selectedRange options:(unsigned)mask wrap:(BOOL)wrapFlag; @end gnustep-examples-1.4.0/gui/Old/Edit/Document.h0000664000175000017500000001243407226455544020136 0ustar fedorfedor#import #import #include @class NSTextView; @class NSTextStorage; @class NSPrintInfo; /* These get added to the string encodings so we have a common language to refer to file types */ enum { UnknownStringEncoding = -1000, RichTextStringEncoding = -1001, RichTextWithGraphicsStringEncoding = -1002 }; /* List of encodings to display in the open/save panels */ extern const int *SupportedEncodings (void); /* Set up an encoding popup with the specified parameters. If the popup contains 1 item, it's also initialized with the supported encodings. */ extern void SetUpEncodingPopupButton(NSPopUpButton *popup, int selectedEncoding, BOOL includeDefaultItem); @interface Document : NSDocument { NSTextStorage *textStorage; NSString *documentName; /* If nil, never saved */ NSScrollView *scrollView; /* ScrollView containing document */ NSPrintInfo *printInfo; /* PrintInfo, used when hasMultiplePages is true */ BOOL isDocumentEdited; BOOL hasMultiplePages; BOOL isRichText; BOOL uniqueZone; /* YES if the zone was created specially for this document */ int encodingIfPlainText; NSString *potentialSaveDirectory; /* if non-nil, is path prefix where to save it. */ } /* Don't call init; call one of these methods... */ - (id)initWithPath:(NSString *)filename encoding:(int)encoding uniqueZone:(BOOL)flag; /* Should be an absolute path here; nil for untitled. uniqueZone = YES indicates the zone should be recycled when the doc is dealloced. */ + (BOOL)openDocumentWithPath:(NSString *)filename encoding:(int)encoding; /* Brings window front. Checks to see if document already open. */ + (BOOL)openUntitled; /* Brings window front */ /* These set/get the documentName instance var and also set the window title accordingly. "nil" is used if no title. */ - (void)setDocumentName:(NSString *)fileName; - (NSString *)documentName; /* These determine if document has been edited since last save */ - (void)setDocumentEdited:(BOOL)flag; - (BOOL)isDocumentEdited; /* Is the document rich? */ - (BOOL)isRichText; - (void)setRichText:(BOOL)flag; /* Hyphenation factor (0.0-1.0, 0.0 == disabled) */ - (float)hyphenationFactor; - (void)setHyphenationFactor:(float)factor; /* View size (as it should be saved in a RTF file) */ - (NSSize)viewSize; - (void)setViewSize:(NSSize)size; /* Attributes */ - (NSTextStorage *)textStorage; - (NSText *)firstTextView; - (NSWindow *)window; //- (NSLayoutManager *)layoutManager; /* Misc methods */ + (Document *)documentForWindow:(NSWindow *)window; + (Document *)documentForPath:(NSString *)filename; + (NSString *)cleanedUpPath:(NSString *)filename; + (NSView *)encodingAccessory:(int)defaultEncoding includeDefaultEntry:(BOOL)includeDefaultItem; + (unsigned)numberOfOpenDocuments; - (void)doForegroundLayoutToCharacterIndex:(unsigned)loc; /* Page-oriented methods */ - (void)addPage; - (void)removePage; - (unsigned)numberOfPages; - (void)setHasMultiplePages:(BOOL)flag; - (BOOL)hasMultiplePages; - (void)setPrintInfo:(NSPrintInfo *)anObject; - (NSPrintInfo *)printInfo; /* Printing a document */ - (void)printDocumentUsingPrintPanel:(BOOL)uiFlag; /* Saving helpers. These return NO or nil if user cancels the save... */ - (BOOL)getDocumentName:(NSString **)newName encoding:(int *)encodingForSaving oldName:(NSString *)oldName oldEncoding:(int)encoding; - (BOOL)saveDocument:(BOOL)showSavePanel; /* Saves under documentName; if not set, tries to set it first */ - (BOOL)canCloseDocument; /* Assures document is saved or user doesn't care about the changes; returns NO if user cancels */ + (void)openWithEncodingAccessory:(BOOL)flag; /* Outlet methods */ + (void)setEncodingPopupButton:(id)anObject; /* In the save panel... */ + (void)setEncodingAccessory:(id)anObject; /* In the save panel... */ /* Action methods */ + (void)open:(id)sender; - (void)saveAs:(id)sender; - (void)saveTo:(id)sender; - (void)save:(id)sender; - (void)revert:(id)sender; - (void)close:(id)sender; - (void)runPageLayout:(id)sender; - (void)orderFrontFindPanel:(id)sender; - (void)findNext:(id)sender; - (void)findPrevious:(id)sender; - (void)enterSelection:(id)sender; - (void)jumpToSelection:(id)sender; - (void)toggleRich:(id)sender; - (void)togglePageBreaks:(id)sender; - (void)printDocument:(id)sender; /* action cover for [self printDocumentUsingPrintPanel:YES] */ /* When the preference "OpenPanelFollowsMainWindow" is set to YES, this is used to save/get the last used directory for the save/open panel. */ + (void)setLastOpenSavePanelDirectory:(NSString *)dir; + (NSString *)openSavePanelDirectory; /* setPotentialSaveDirectory gets called automatically when a doc is made "new" UNTITLED. The name is taken from the current main window, if any. The directory is used to put up the save panel the first time the doc is saved from the UNTITLED state. It is only used when the preference "OpenPanelFollowsMainWindow" is set to YES. */ - (void)setPotentialSaveDirectory:(NSString *)nm; - (NSString *)potentialSaveDirectory; @end @interface Document (ReadWrite) /* File loading. Returns NO if not successful. Doesn't set documentName. */ - (BOOL)loadFromPath:(NSString *)fileName encoding:(int)encoding; /* If Unknown, tries to guess */ - (BOOL)saveToPath:(NSString *)fileName encoding:(int)encoding updateFilenames:(BOOL)updateFIleNamesFlag; @end gnustep-examples-1.4.0/gui/Old/Edit/Controller.m0000664000175000017500000001775207226455544020520 0ustar fedorfedor/* Controller.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. Central controller object for Edit... GNUstep changes are: Copyright (C) 1996 Free Software Foundation, Inc. Author: Felipe A. Rodriguez Date: November 1998 This file is part of the GNUstep GUI X/RAW Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import "Controller.h" #import "Document.h" @implementation Controller - (void)method:menuCell // temp for sake of menu { NSLog (@"method invoked from cell with title '%@'", [menuCell title]); } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow *window; NSScrollView* scrollView; NSTextView* textView; Document *document; NSString *string; NSRect scrollViewRect = {{0, 0}, {470, 400}}; NSRect winRect = {{100, 100}, {470, 400}}; id openPanel; NSColor* backColor; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; window = [[NSWindow alloc] initWithContentRect:winRect styleMask:style backing:NSBackingStoreRetained defer:NO]; [window setRepresentedFilename: @"Edit"]; [window setFrameUsingName: @"Edit"]; [window setFrameAutosaveName: @"Edit"]; [window setDocumentEdited: NO]; document = [[Document new] initWithPath:nil encoding:UnknownStringEncoding uniqueZone:NO]; scrollView = [[NSScrollView alloc] initWithFrame:scrollViewRect]; [scrollView setHasHorizontalScroller:NO]; [scrollView setHasVerticalScroller:YES]; [scrollView setAutoresizingMask: NSViewHeightSizable]; textView = [document firstTextView]; [textView setFrame:[[scrollView contentView] frame]]; backColor = [NSColor colorWithCalibratedWhite:0.85 alpha:1.0]; // off white [textView setBackgroundColor:backColor]; // [textView setBackgroundColor:[NSColor whiteColor]]; /* string = [NSString stringWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Resources/Readme.txt"]]; [textView setString:string]; */ string = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Resources/Readme.rtf"]; [textView readRTFDFromFile:string]; [scrollView setDocumentView:textView]; [[window contentView] addSubview: scrollView]; [window setDelegate: document]; [window setTitle:@"Edit"]; [window display]; [window orderFront:nil]; // openPanel = [NSOpenPanel openPanel]; // [openPanel display]; // [openPanel runModalForDirectory:@"/" file:@""]; } - (BOOL)applicationShouldTerminate:(NSApplication *)app { NSArray *windows = [NSApp windows]; unsigned count = [windows count]; BOOL needsSaving = NO; // Determine if there are any unsaved documents... while (!needsSaving && count--) { NSWindow *window = [windows objectAtIndex:count]; Document *document = [Document documentForWindow:window]; if (document && [document isDocumentEdited]) needsSaving = YES; } if (needsSaving) { int choice = NSRunAlertPanel(NSLocalizedString(@"Quit", @"Title of alert panel which comes up when user chooses Quit and there are unsaved documents."), NSLocalizedString(@"You have unsaved documents.", @"Message in the alert panel which comes up when user chooses Quit and there are unsaved documents."), NSLocalizedString(@"Review Unsaved", @"Choice (on a button) given to user which allows him/her to review all unsaved documents if he/she quits the application without saving them all first."), NSLocalizedString(@"Quit Anyway", @"Choice (on a button) given to user which allows him/her to quit the application even though there are unsaved documents."), NSLocalizedString(@"Cancel", @"Button choice allowing user to cancel.")); if (choice == NSAlertOtherReturn) { /* Cancel */ return NO; } else if (choice != NSAlertAlternateReturn) { /* Review unsaved; Quit Anyway falls through */ count = [windows count]; while (count--) { NSWindow *window = [windows objectAtIndex:count]; Document *document = [Document documentForWindow:window]; if (document) { [window makeKeyAndOrderFront:nil]; if (![document canCloseDocument]) { return NO; } } } } } // [Preferences saveDefaults]; return YES; } - (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename { #ifdef WIN32 /* If the document is in a .rtfd and it's name is TXT.rtf or index.rtf, open the parent dir... This is because on windows it doesn't seem trivial to double-click to open folders as documents. */ NSString *parentDir = [filename stringByDeletingLastPathComponent]; if ([[[parentDir pathExtension] lowercaseString] isEqualToString:@"rtfd"]) { NSString *lastPathComponent = [[filename lastPathComponent] lowercaseString]; if ([lastPathComponent isEqualToString:@"txt.rtf"] || [lastPathComponent isEqualToString:@"index.rtf"]) { filename = parentDir; } } #endif return [Document openDocumentWithPath:filename encoding:UnknownStringEncoding] ? YES : NO; } - (BOOL)application:(NSApplication *)sender openTempFile:(NSString *)filename { /* ??? Why? */ return [Document openDocumentWithPath:filename encoding:UnknownStringEncoding] ? YES : NO; } - (BOOL)applicationOpenUntitledFile:(NSApplication *)sender { return [Document openUntitled]; } - (BOOL)application:(NSApplication *)sender printFile:(NSString *)filename { BOOL retval = NO; BOOL releaseDoc = NO; Document *document = [Document documentForPath:filename]; if (!document) { document = [[Document alloc] initWithPath:filename encoding:UnknownStringEncoding uniqueZone:NO]; releaseDoc = YES; } if (document) { BOOL useUI = [NSPrintInfo defaultPrinter] ? NO : YES; [document printDocumentUsingPrintPanel:useUI]; retval = YES; if (releaseDoc) { // If we created it, we get rid of it. [document release]; } } return retval; } - (void)createNew:(id)sender { (void)[Document openUntitled]; } - (void)open:(id)sender { (void)[Document open:sender]; } - (void)saveAll:(id)sender { NSArray *windows = [[NSApplication sharedApplication] windows]; unsigned count = [windows count]; while (count--) { NSWindow *window = [windows objectAtIndex:count]; Document *document = [Document documentForWindow:window]; if (document) { if ([document isDocumentEdited]) { if (![document saveDocument:NO]) return; } } } } /*** Info Panel related stuff ***/ - (void)showInfoPanel:(id)sender { if (!infoPanel) { if (![NSBundle loadNibNamed:@"Info" owner:self]) { NSLog(@"Failed to load Info.nib"); NSBeep(); return; } [infoPanel center]; } [infoPanel makeKeyAndOrderFront:nil]; } @end /* 1/28/95 aozer Created for Edit II. 7/21/95 aozer Command line file names */ gnustep-examples-1.4.0/gui/Old/TestView.h0000664000175000017500000000221107710505774017234 0ustar fedorfedor/* TestView.h Simple subclass of NSView. Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: June 1996 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GNUstep_H_TestView #define _GNUstep_H_TestView #include @interface TestView : NSView { } @end #endif /* _GNUstep_H_TestView */ gnustep-examples-1.4.0/gui/Old/ColorView.h0000664000175000017500000000253107710505774017400 0ustar fedorfedor/* ColorView.h Simple subclass of NSView. Copyright (C) 1997 Free Software Foundation, Inc. Author: Scott Christley Date: February 1997 This file is part of the GNUstep GUI X/RAW Backend. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GNUstep_H_ColorView #define _GNUstep_H_ColorView #include @class NSColor; @class NSCursor; @interface ColorView : NSView { NSColor *the_color; NSCursor *the_cursor; } - (void)setColor:(NSColor *)aColor; - (NSColor *)color; - (void)setCursor:(NSCursor *)aCursor; - (NSCursor *)cursor; @end #endif /* _GNUstep_H_ColorView */ gnustep-examples-1.4.0/gui/.cvsignore0000664000175000017500000000007006711220677016570 0ustar fedorfedor*.app *.debug *.profile *obj GNUmakefile.local .gdbinit gnustep-examples-1.4.0/gui/MyTransparentGL/0000775000175000017500000000000012204034626017614 5ustar fedorfedorgnustep-examples-1.4.0/gui/MyTransparentGL/README0000664000175000017500000000063312165046601020500 0ustar fedorfedorThis is a modification of the MyGL example which tests creation of a transparent NSOpenGLView. AUTHOR: Ivan Vucica Readme from MyGL follows. --------- This is a simple example of how to use NSOpenGLView in GNUstep. The example demonstrates parsing a simple COLLADA file with a simple but very incomplete method. The example simulate lighting using dot product of vertice normals. AUTHOR: Banlu Kemiyatorn gnustep-examples-1.4.0/gui/MyTransparentGL/AppController.h0000664000175000017500000000021411361444477022562 0ustar fedorfedor/* All Rights reserved */ #include @interface AppController : NSObject { id window; NSMutableArray *glViews; } @end gnustep-examples-1.4.0/gui/MyTransparentGL/AppController.m0000664000175000017500000002650012202523526022561 0ustar fedorfedor/* All Rights reserved */ #include #include #include "AppController.h" #define id gl_id #include #undef id #include #include #include typedef struct _Vector { float X; float Y; float Z; } Vector; typedef struct _Tri { int p1; int p2; int p3; } Tri; typedef struct tagMATRIX { float Data[16]; } MATRIX; @interface Mesh : NSObject { @public int vcount; Vector *vertices; int nvcount; Vector *nvertices; int pcount; /* FIXME rewrite to separate tris/quads/polygons */ Tri *polygons; Tri *pnormals; } @end @implementation Mesh static float DotProduct (Vector *v1, Vector *v2) { return v1->X * v2->X + v1->Y * v2->Y + v1->Z * v2->Z; } static float Magnitude (Vector *v) { return sqrtf(v->X * v->X + v->Y * v->Y + v->Z * v->Z); } static void Normalize (Vector *v) { float m = Magnitude(v); if (m != 0.0f) { v->X /= m; v->Y /= m; v->Z /= m; } } - (void) drawCelShadeWithRtx: (GLfloat)rtx rty: (GLfloat)rty rtz: (GLfloat)rtz { int t; Vector light; Vector vv; float xx; light.X = 1.0f + rtx; light.Y = 1.0f + rty; light.Z = 1.0f + rtz;; Normalize(&light); for (t = 0; t < pcount; t++) { glBegin( GL_TRIANGLES ); vv = nvertices[pnormals[t].p1]; Normalize(&vv); xx = DotProduct(&light,&vv); if (xx < 0.0f) { xx = 0; } glColor3f(xx,xx,xx); glVertex3f(vertices[polygons[t].p1].X, vertices[polygons[t].p1].Y, vertices[polygons[t].p1].Z); vv = nvertices[pnormals[t].p2]; Normalize(&vv); xx = DotProduct(&light,&vv); if (xx < 0.0f) { xx = 0; } glColor3f(xx,xx,xx); glVertex3f(vertices[polygons[t].p2].X, vertices[polygons[t].p2].Y, vertices[polygons[t].p2].Z); vv = nvertices[pnormals[t].p3]; Normalize(&vv); xx = DotProduct(&light,&vv); if (xx < 0.0f) { xx = 0; } glColor3f(xx,xx,xx); glVertex3f(vertices[polygons[t].p3].X, vertices[polygons[t].p3].Y, vertices[polygons[t].p3].Z); glEnd(); } } - (void) draw { int t; /* glBegin( GL_POINTS ); for(t = 0; t < vcount-1; t++) { glVertex3f(vertices[t].X, vertices[t].Y, vertices[t].Z); } */ glColor3f(0.8f,0.5f,0.3f); glBegin( GL_TRIANGLES ); for (t = 0; t < pcount; t++) { glVertex3f(vertices[polygons[t].p1].X, vertices[polygons[t].p1].Y, vertices[polygons[t].p1].Z); glVertex3f(vertices[polygons[t].p2].X, vertices[polygons[t].p2].Y, vertices[polygons[t].p2].Z); glVertex3f(vertices[polygons[t].p3].X, vertices[polygons[t].p3].Y, vertices[polygons[t].p3].Z); } glEnd(); } @end @interface MySAX : GSSAXHandler { BOOL trackMeshVertices; BOOL trackNormalVertices; BOOL trackPolygons; Mesh *mesh; int idx; } @end @implementation MySAX - (id) init { self = [super init]; if (self == nil) { return nil; } idx = 0; mesh = [Mesh new]; trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = NO; return self; } - (Mesh *) currentMesh { return mesh; } - (void) characters:(NSString *)str { int p; NSEnumerator *en; if (trackMeshVertices) { NSArray *ar, *parray; str = [[str stringByTrimmingSpaces] stringByReplacingString:@"\t" withString:@""]; parray = [str componentsSeparatedByString:@"\n"]; mesh->vcount = [parray count]; mesh->vertices = malloc(sizeof(Vector) * mesh->vcount); NSLog(@"import %d vertices",mesh->vcount); p = 0; en = [parray objectEnumerator]; while ((str = [en nextObject])) { ar = [str componentsSeparatedByString:@" "]; if ([ar count] == 3) { mesh->vertices[p].X = [[ar objectAtIndex:0] floatValue]; mesh->vertices[p].Y = [[ar objectAtIndex:1] floatValue]; mesh->vertices[p].Z = [[ar objectAtIndex:2] floatValue]; p++; } } } else if (trackNormalVertices) { NSArray *ar, *parray; str = [[str stringByTrimmingSpaces] stringByReplacingString:@"\t" withString:@""]; parray = [str componentsSeparatedByString:@"\n"]; mesh->nvcount = [parray count]; mesh->nvertices = malloc(sizeof(Vector) * mesh->nvcount); NSLog(@"import %d normal vertices",mesh->nvcount); p = 0; en = [parray objectEnumerator]; while ((str = [en nextObject])) { ar = [str componentsSeparatedByString:@" "]; if ([ar count] == 3) { mesh->nvertices[p].X = [[ar objectAtIndex:0] floatValue]; mesh->nvertices[p].Y = [[ar objectAtIndex:1] floatValue]; mesh->nvertices[p].Z = [[ar objectAtIndex:2] floatValue]; p++; } } } else if (trackPolygons) { NSArray *parray = [str componentsSeparatedByString:@" "]; mesh->polygons[idx].p1 = [[parray objectAtIndex:0] intValue]; mesh->polygons[idx].p2 = [[parray objectAtIndex:2] intValue]; mesh->polygons[idx].p3 = [[parray objectAtIndex:4] intValue]; mesh->pnormals[idx].p1 = [[parray objectAtIndex:1] intValue]; mesh->pnormals[idx].p2 = [[parray objectAtIndex:3] intValue]; mesh->pnormals[idx].p3 = [[parray objectAtIndex:5] intValue]; idx ++; } } - (void) startElement: (NSString *)elementName attributes: (NSMutableDictionary *)elementAttributes { if ([elementName isEqualToString: @"float_array"]) { NSString *sourceName = [elementAttributes objectForKey: @"name"]; if ([sourceName isEqualToString: @"Sphere-Pos-Array"]) { trackMeshVertices = YES; trackNormalVertices = NO; trackPolygons = NO; } else if ([sourceName isEqualToString: @"Sphere-Normal-Array"]) { trackMeshVertices = NO; trackNormalVertices = YES; trackPolygons = NO; } } if ([elementName isEqualToString:@"polygons"]) { int pc = [[elementAttributes objectForKey: @"count"] intValue]; mesh->polygons = malloc(sizeof(Tri) * pc); mesh->pnormals = malloc(sizeof(Tri) * pc); mesh->pcount = pc; } /* if ([elementName isEqualToString:@"polygons"]) { NSString *sourceName = [elementAttributes objectForKey:@"source"]; if ([sourceName isEqualToString:@"#Mesh-Normal"]) { trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = YES; } } */ if ([elementName isEqualToString: @"p"]) { trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = YES; } } - (void) endElement:(NSString*)elementName { trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = NO; } - (void) endDocument { NSLog(@"end %d tris",idx); } @end @interface MyGLView : NSOpenGLView { NSMutableArray *meshArray; GLfloat _rtx; GLfloat _rty; GLfloat _rtz; GLfloat _artx; GLfloat _arty; GLfloat _artz; GLfloat _artl; } @end @implementation MyGLView - (void) scrollWheel:(NSEvent *)theEvent { _artl += [theEvent deltaY]; [self reshape]; } - (void) mouseDragged: (NSEvent*)theEvent { NSRect bounds = [self bounds]; _arty = [theEvent deltaX]/NSWidth(bounds) * 180; _artx = -[theEvent deltaY]/NSHeight(bounds) * 180; _artz = sqrtf(_arty * _artz); _rtz += _artz; _rty += _arty; _rtx += _artx; } - (void) prepareOpenGL { _artl = 50; meshArray = [NSMutableArray new]; glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.5f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glMatrixMode(GL_MODELVIEW); [self reshape]; } - (void) reshape { GLfloat ratio; NSRect sceneBounds = [self bounds]; [super reshape]; ratio = NSWidth(sceneBounds)/ NSHeight(sceneBounds); glViewport(0, 0, NSWidth(sceneBounds), NSHeight(sceneBounds)); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(_artl, ratio, 0.1f, 100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); [self setNeedsDisplay:YES]; } - (void) drawRect:(NSRect)r { unsigned int i; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); glTranslatef(-1.5f, 0.0f, -6.0f); glRotatef(_rtx,1.0f,0.0f,0.0f); glRotatef(_rty,0.0f,1.0f,0.0f); glRotatef(_rtz,0.0f,0.0f,1.0f); for (i=0; i<[meshArray count]; i++) { [[meshArray objectAtIndex: i] drawCelShadeWithRtx: _rtx rty: _rty rtz: _rtz]; } [[self openGLContext] flushBuffer]; } -(void) refresh { [self setNeedsDisplay: YES]; } - (void) loadModel { GSXMLParser *p; MySAX *h; h = [MySAX new]; p = [GSXMLParser parserWithSAXHandler: h withContentsOfFile: [[NSBundle mainBundle] pathForResource: @"girl" ofType: @"dae"]]; if ([p parse]) { [meshArray addObject: [h currentMesh]]; } RELEASE(h); } @end @interface MyTransparentGLView : MyGLView { } @end @implementation MyTransparentGLView + (NSOpenGLPixelFormat*)defaultPixelFormat { static NSOpenGLPixelFormatAttribute pf [] = { NSOpenGLPFADoubleBuffer, NSOpenGLPFAAccelerated, NSOpenGLPFADoubleBuffer, NSOpenGLPFADepthSize, 24, NSOpenGLPFAColorSize, 24, NSOpenGLPFAAlphaSize, 8, 0 }; return [[NSOpenGLPixelFormat alloc] initWithAttributes: pf]; } @end @implementation AppController -(void) applicationDidFinishLaunching: (NSNotification *)not { int i; for (i = 0; i < [glViews count]; i++) { [NSTimer scheduledTimerWithTimeInterval: 0.05 //(1.0 / 30) target: [glViews objectAtIndex: i] selector: @selector(refresh) userInfo: nil repeats: YES]; [[glViews objectAtIndex: i] loadModel]; } } -(void) applicationWillFinishLaunching: (NSNotification *)not { NSView *glview1, *glview2, *glview3; NSSplitView *splitView1, *splitView2; glViews = [NSMutableArray new]; glview1 = [[MyGLView alloc] initWithFrame: [window frame]]; glview2 = [[MyGLView alloc] initWithFrame: [window frame]]; glview3 = [[MyTransparentGLView alloc] initWithFrame: [window frame]]; [glViews addObject: glview1]; [glViews addObject: glview2]; [glViews addObject: glview3]; /* RELEASE(glview1); RELEASE(glview2); RELEASE(glview3); */ splitView1 = [[[NSSplitView alloc] initWithFrame: [window frame]] autorelease]; [splitView1 addSubview: glview1]; [splitView1 addSubview: glview2]; splitView2 = [[[NSSplitView alloc] initWithFrame: [window frame]] autorelease]; [splitView2 addSubview: splitView1]; [splitView2 addSubview: glview3]; [splitView2 setVertical: YES]; //RELEASE(splitView1); [window setContentView: splitView2]; //RELEASE(splitView2); } @end gnustep-examples-1.4.0/gui/MyTransparentGL/GNUmakefile0000664000175000017500000000101212202523526021660 0ustar fedorfedorinclude $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = MyTransparentGL VERSION = 0.0.1 APP_NAME = MyTransparentGL MyTransparentGL_MAIN_MODEL_FILE=MyTransparentGL.gorm MyTransparentGL_APPLICATION_ICON=MyTransparentGL.tiff MyTransparentGL_OBJC_FILES = main.m AppController.m MyTransparentGL_RESOURCE_FILES = MyTransparentGL.gorm girl.dae ifeq ($(GNUSTEP_TARGET_OS), mingw32) ADDITIONAL_TOOL_LIBS += -lopengl32 -lglu32 -lm else ADDITIONAL_TOOL_LIBS += -lGL -lGLU -lm endif include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/MyTransparentGL/girl.dae0000664000175000017500000036777210625210160021244 0ustar fedorfedor Mikael Lagr Blender 239 COLLADA Exporter Z_UP -0.004722 -0.002401 1.509695 0.311156 0.004351 1.480164 0.629647 0.008786 1.347267 0.921111 0.025292 1.130402 1.122592 0.083112 0.765116 1.239940 0.219754 0.312435 1.269134 0.272864 -0.122613 1.261864 0.140740 -1.064949 1.144060 0.050491 -1.594448 0.649391 0.667220 -1.684135 1.083963 0.729821 -1.115975 1.083077 0.771315 -0.239883 1.066184 0.838755 0.264698 0.953774 0.760155 0.687563 0.756961 0.605039 1.124273 0.514784 0.376324 1.344748 0.255439 0.178294 1.479648 0.109361 0.284999 1.479574 0.212266 0.598612 1.344036 0.302261 0.946982 1.120865 0.367671 1.190207 0.691367 0.414458 1.284230 0.304565 0.412982 1.192497 -0.185306 0.401581 1.005254 -1.072600 0.326199 0.825622 -1.839507 -0.273964 0.707633 -1.872376 -0.305607 0.982777 -1.142334 -0.331440 1.190482 -0.174864 -0.342235 1.283612 0.317032 -0.326613 1.190429 0.697237 -0.252741 0.947251 1.122650 -0.161903 0.598866 1.345249 -0.072001 0.285711 1.480219 -0.224155 0.183832 1.483643 -0.504501 0.358729 1.216835 -0.718857 0.610836 1.126683 -0.905933 0.764893 0.694979 -0.961533 0.833022 0.312938 -0.962111 0.761352 -0.191240 -0.960067 0.660070 -1.092785 -0.910650 0.244254 -1.690766 -1.019364 0.043162 -1.680333 -1.237329 0.104716 -1.138870 -1.260625 0.216101 -0.069309 -1.245367 0.180612 0.368657 -1.175600 0.119664 0.769293 -0.840585 0.080183 1.234514 -0.517876 0.105730 1.178017 -0.301644 0.031480 1.491102 -0.209093 -0.195590 1.479248 -0.443608 -0.790323 1.054834 -0.349852 -0.943614 0.899967 -0.628759 -0.585050 0.586619 -0.781555 -0.059511 0.303312 -0.783916 -0.084866 -0.174364 -0.863104 -0.218909 -1.074160 -0.778934 -0.190462 -1.403816 -0.295863 -0.767635 0.600673 -0.187051 -1.083770 1.013120 -0.161524 -0.903705 1.161562 -0.068937 -0.277937 1.480934 0.109575 -0.274210 1.480509 0.209021 -0.883003 1.170416 0.202917 -1.175503 1.080349 0.118804 -0.919126 0.806724 1.071139 -0.336300 -1.410787 1.011269 0.045758 -1.093950 0.946156 0.113247 -0.071089 0.904837 -0.410710 -0.002696 0.557823 -0.945804 0.523642 0.709204 -0.868993 1.043998 0.510802 -0.348053 1.345189 0.255193 -0.167826 1.480127 -0.281194 -0.088853 1.481929 -0.527478 -0.193360 1.172431 -0.813893 -0.279046 0.994867 -1.023565 -0.492329 0.610528 -1.072917 -0.341830 0.256991 -1.124655 -0.205320 -0.076424 -1.186205 -0.268088 -1.127160 -1.012706 -0.422234 -1.620123 -0.906462 0.334661 -1.885313 -0.600611 0.027463 -4.152149 -0.902469 -0.254369 -1.893761 -0.600611 -0.476965 -4.141292 -0.796291 0.522206 -2.070430 -0.791491 -0.498892 -2.090665 -0.872797 0.325550 -2.606121 -0.780885 -0.627010 -2.552040 -0.667682 0.346570 -3.086238 -0.667682 -0.346682 -3.037199 -0.368392 0.122804 -4.151479 -0.404268 0.229136 -1.690712 -0.368392 -0.621854 -4.140828 -0.269364 -0.271419 -1.797420 -0.450661 0.606843 -2.005300 -0.450661 -0.634985 -2.035331 -0.475053 0.722042 -2.503450 -0.475053 -0.945204 -2.587085 -0.428623 0.550897 -3.062177 -0.428623 -0.631592 -3.007573 -2.849967 0.228890 -2.214467 -2.843373 0.210322 -2.592588 -1.185474 0.385261 -2.075310 -2.849967 -0.210875 -2.260902 -2.843373 -0.164425 -2.574024 -0.964709 -0.259255 -2.642335 -1.007266 -0.343004 -2.142704 -0.650048 -0.215183 -4.152543 -0.776221 0.035946 -3.046509 -0.904445 0.037201 -1.815258 -0.338934 -0.049336 -1.768054 -2.849967 0.006906 -2.084436 -1.179483 0.032026 -1.956811 -0.785792 0.495180 -5.731670 -0.486012 0.566762 -5.107398 -0.772311 -0.617992 -4.834346 -0.452368 -0.646480 -4.927737 -1.011787 -0.001875 -4.983307 -0.189588 -0.142943 -5.766425 -0.334203 -0.478415 -5.680429 -0.787421 -0.121649 -7.797594 -0.716177 0.145200 -7.797594 -0.554710 -0.439352 -7.957712 -0.398849 -0.373740 -7.955990 -0.348998 0.158352 -7.809487 -0.910050 -0.147146 -8.235917 -0.827776 0.267856 -8.216660 -0.685408 -0.483216 -8.310151 -0.235146 -0.338859 -8.275166 -0.215891 0.267589 -8.217410 -0.822575 0.026974 -11.460099 -0.686746 0.259639 -11.443349 -0.701690 -0.350001 -11.435402 -0.448276 -0.311457 -11.425807 -0.463848 0.088348 -11.367784 -0.698044 0.298932 -11.668348 -0.930870 0.214389 -11.633876 -0.905757 -0.692238 -11.653914 -0.464277 0.021691 -11.671431 -0.393220 -0.578550 -11.627039 -0.906575 0.586451 -11.832888 -0.538132 0.580866 -11.908137 -1.249761 -1.380246 -11.960634 -0.417916 0.042952 -11.924186 -0.291094 -1.615938 -11.784433 -0.422043 0.606663 -12.157771 -0.957004 0.545073 -12.135144 -1.271261 -1.369496 -12.179194 -0.417916 0.042952 -12.173820 -0.231968 -1.605188 -12.173820 -3.121521 0.315855 -2.238085 -3.090795 0.292085 -2.666415 -3.121521 -0.247101 -2.297528 -3.090795 -0.187638 -2.642651 -3.121521 0.031686 -2.071629 -5.131486 0.129013 -2.251881 -5.127014 0.116419 -2.508353 -5.131486 -0.169271 -2.283377 -5.127014 -0.137765 -2.495762 -5.131486 -0.021555 -2.163684 -5.683405 0.304309 -2.171108 -5.700045 0.278530 -2.380086 -5.484571 -0.247125 -2.235577 -5.501211 -0.182635 -2.354313 -5.559806 -0.003882 -1.990581 -6.266573 0.309951 -2.219281 -6.293324 0.278530 -2.380086 -6.293324 -0.241748 -2.354313 -6.276685 -0.306238 -2.235577 -6.289582 -0.003883 -2.106658 -5.353882 -0.387935 -2.303842 -5.356596 -0.370550 -2.550598 -5.636520 -0.427928 -2.361123 -5.601425 -0.463514 -2.272283 -5.666198 -0.652199 -2.303842 -5.658709 -0.636316 -2.470270 -5.776525 -0.533331 -2.392218 -5.786028 -0.570041 -2.277466 -5.980045 0.304309 -2.171108 -5.996685 0.278530 -2.380086 -5.996685 -0.241748 -2.354313 -5.980045 -0.306238 -2.235577 -5.986494 -0.003883 -2.048619 0.869797 0.334660 -1.885314 0.563946 0.027462 -4.152150 0.865803 -0.254370 -1.893762 0.563945 -0.476966 -4.141294 -0.018333 0.166353 -4.159896 -0.005916 0.383901 -1.634407 -0.018333 -0.665016 -4.149249 -0.009166 -0.354324 -1.750714 0.759625 0.522205 -2.070432 0.754826 -0.498893 -2.090666 -0.018333 0.618264 -1.969282 -0.018333 -0.629968 -2.260230 0.836131 0.325549 -2.606122 0.744219 -0.627011 -2.552041 -0.018333 0.737524 -2.502885 -0.018333 -0.818295 -2.597813 0.631017 0.346569 -3.086239 0.631017 -0.346682 -3.037200 -0.018333 0.547982 -3.026368 -0.018333 -0.638049 -2.955011 0.331727 0.122803 -4.151480 0.383644 0.229135 -1.690712 0.331726 -0.621855 -4.140829 0.251032 -0.271419 -1.797420 0.413996 0.606842 -2.005301 0.413996 -0.634986 -2.035332 0.438387 0.722042 -2.503451 0.438387 -0.945205 -2.587087 0.391958 0.550896 -3.062178 0.391958 -0.631593 -3.007575 2.813301 0.228890 -2.214468 2.806707 0.210321 -2.592589 1.148809 0.385260 -2.075311 2.813301 -0.210876 -2.260903 2.806707 -0.164425 -2.574025 0.928044 -0.259255 -2.642337 0.970601 -0.343004 -2.142705 0.613382 -0.215183 -4.152544 0.739555 0.035945 -3.046510 0.867780 0.037200 -1.815259 0.320601 -0.049336 -1.768054 2.813301 0.006905 -2.084437 1.142818 0.032025 -1.956813 0.749695 0.495180 -5.731672 0.449914 0.566761 -5.107400 -0.018049 0.508939 -4.912330 0.736214 -0.617993 -4.834347 0.416271 -0.646481 -4.927739 -0.018049 -0.708696 -4.956696 0.975690 -0.001876 -4.983308 0.153491 -0.142943 -5.766426 -0.018049 -0.299746 -5.811651 0.298105 -0.478416 -5.680431 -0.018049 -0.599093 -5.619873 0.750755 -0.121649 -7.797596 0.679511 0.145199 -7.797596 0.518045 -0.439353 -7.957714 0.362183 -0.373740 -7.955991 0.312333 0.158351 -7.809488 0.873385 -0.147147 -8.235919 0.791111 0.267856 -8.216662 0.648742 -0.483217 -8.310153 0.198481 -0.338859 -8.275167 0.179226 0.267588 -8.217412 0.785909 0.026973 -11.460100 0.650081 0.259639 -11.443350 0.665024 -0.350002 -11.435403 0.411611 -0.311458 -11.425808 0.427182 0.088348 -11.367785 0.661378 0.298931 -11.668349 0.894205 0.214388 -11.633877 0.869091 -0.692238 -11.653915 0.427612 0.021690 -11.671432 0.356555 -0.578551 -11.627040 0.869909 0.586450 -11.832889 0.501467 0.580865 -11.908139 1.213096 -1.380247 -11.960635 0.381250 0.042951 -11.924187 0.254428 -1.615939 -11.784434 0.385378 0.606663 -12.157773 0.920339 0.545073 -12.135145 1.234596 -1.369497 -12.179195 0.381250 0.042951 -12.173820 0.195303 -1.605189 -12.173820 3.084856 0.315854 -2.238086 3.054130 0.292084 -2.666416 3.084856 -0.247102 -2.297529 3.054130 -0.187639 -2.642652 3.084856 0.031685 -2.071630 5.094821 0.129013 -2.251881 5.090348 0.116418 -2.508354 5.094821 -0.169272 -2.283378 5.090348 -0.137765 -2.495762 5.094821 -0.021555 -2.163684 5.646740 0.304309 -2.171109 5.663380 0.278529 -2.380086 5.447906 -0.247125 -2.235578 5.464546 -0.182636 -2.354313 5.523140 -0.003883 -1.990581 6.229908 0.309951 -2.219281 6.256659 0.278529 -2.380086 6.256659 -0.241748 -2.354313 6.240019 -0.306238 -2.235577 6.252917 -0.003883 -2.106658 5.317216 -0.387935 -2.303843 5.319931 -0.370550 -2.550599 5.599854 -0.427928 -2.361124 5.564760 -0.463514 -2.272284 5.629532 -0.652199 -2.303843 5.622043 -0.636316 -2.470270 5.739859 -0.533331 -2.392218 5.749362 -0.570041 -2.277466 5.943379 0.304309 -2.171109 5.960019 0.278529 -2.380086 5.960019 -0.241748 -2.354313 5.943379 -0.306238 -2.235577 5.949828 -0.003883 -2.048620 -0.401867 0.086738 1.034123 -0.644789 0.137001 0.876974 -0.821133 0.155520 0.559323 -0.885422 0.224405 0.020399 -0.843232 0.224480 -0.275906 -0.824983 0.207474 -0.567571 -0.684017 0.169814 -0.826495 -0.505359 0.141634 -1.050827 -0.326739 0.057394 -1.196920 -0.186452 0.190676 -1.168547 -0.454857 0.317351 -1.039432 -0.511561 0.549504 -0.803566 -0.701011 0.705175 -0.536782 -0.725640 0.747127 -0.250692 -0.748927 0.757165 0.034190 -0.694429 0.681802 0.577343 -0.453658 0.480258 0.899515 -0.264153 0.309679 1.078010 -0.002755 0.728528 0.919224 -0.002755 1.087470 0.031783 -0.002755 1.085113 -0.250692 -0.002755 0.972154 -0.452221 -0.002755 0.232208 -1.218666 -0.002755 -0.716161 -1.230561 -0.189255 -0.250827 1.023784 -0.378846 -0.486542 0.840604 -0.407728 -0.820409 0.493326 -0.178799 -0.769572 -0.108254 -0.265032 -0.999147 -0.486702 -0.319394 -0.853698 -0.669922 -0.367428 -0.675422 -0.930869 -0.265455 -0.477535 -1.153310 -0.162261 -0.251309 -1.235422 -0.293096 -0.126452 -1.226803 -0.465127 -0.173759 -1.076408 -0.742281 -0.264702 -0.896087 -0.848727 -0.337326 -0.673489 -0.825404 -0.365804 -0.386482 -0.682520 -0.358963 -0.095895 -0.674626 -0.427158 0.531773 -0.573154 -0.203271 0.828115 -0.306227 -0.101054 1.021222 -0.865486 0.189488 0.285943 -0.767019 0.732744 0.283508 -0.212613 -0.749916 0.187274 -0.633660 -0.408668 0.220779 -0.002755 -0.002952 1.094305 0.396357 0.086738 1.034123 0.639279 0.137001 0.876974 0.815622 0.155520 0.559323 0.879912 0.224405 0.020399 0.837722 0.224480 -0.275906 0.819473 0.207474 -0.567571 0.678507 0.169814 -0.826495 0.499849 0.141634 -1.050827 0.317663 0.057394 -1.196921 0.178876 0.190676 -1.168547 0.449346 0.317351 -1.039432 0.506051 0.549504 -0.803566 0.695500 0.705175 -0.536782 0.720129 0.747127 -0.250692 0.743417 0.757165 0.034190 0.688919 0.681802 0.577343 0.448148 0.480258 0.899515 0.258643 0.309679 1.078010 -0.002755 0.337748 1.104096 -0.002755 0.978527 0.547346 -0.002755 0.792813 -0.766052 -0.002755 0.466917 -0.998166 -0.002755 -0.370290 -1.268588 -0.002755 -0.890309 -0.917104 -0.002755 -1.007790 -0.640426 -0.002755 -1.119306 -0.432375 -0.002755 -0.888411 -0.052545 -0.002755 -0.915245 0.481985 -0.002755 -0.645154 0.859502 -0.002755 -0.344570 1.027871 0.183745 -0.250827 1.023784 0.373336 -0.486542 0.840604 0.402218 -0.820409 0.493326 0.173289 -0.769572 -0.108254 0.259522 -0.999147 -0.486702 0.313883 -0.853699 -0.669922 0.361918 -0.675422 -0.930869 0.259944 -0.477535 -1.153310 0.156751 -0.251309 -1.235422 0.287585 -0.126452 -1.226803 0.459616 -0.173759 -1.076408 0.736771 -0.264702 -0.896087 0.843216 -0.337326 -0.673489 0.819893 -0.365804 -0.386482 0.677010 -0.358963 -0.095895 0.669116 -0.427158 0.531773 0.567644 -0.203271 0.828115 0.300717 -0.101054 1.021222 0.859976 0.189488 0.285943 0.761509 0.732744 0.283508 -0.002755 1.067321 0.319980 -0.002755 -0.871789 0.192234 0.207103 -0.749916 0.187274 0.628150 -0.408668 0.220779 0.232612 0.138768 0.962584 0.000824 -0.007721 0.999969 0.272561 -0.027192 0.961730 0.090823 0.273415 0.957579 0.000824 -0.007721 0.999969 0.232612 0.138768 0.962584 -0.059786 0.235572 0.970000 0.000824 -0.007721 0.999969 0.090823 0.273415 0.957579 -0.403058 0.208777 0.891018 0.000824 -0.007721 0.999969 -0.059786 0.235572 0.970000 -0.472396 0.055940 0.879604 0.000824 -0.007721 0.999969 -0.403058 0.208777 0.891018 -0.135319 -0.332377 0.933378 0.000824 -0.007721 0.999969 -0.368694 -0.279733 0.886441 0.111118 -0.282266 0.952849 0.000824 -0.007721 0.999969 -0.135319 -0.332377 0.933378 0.201361 -0.145360 0.968657 0.000824 -0.007721 0.999969 0.111118 -0.282266 0.952849 0.272561 -0.027192 0.961730 0.000824 -0.007721 0.999969 0.201361 -0.145360 0.968657 -0.525895 -0.169744 0.833399 0.000824 -0.007721 0.999969 -0.472396 0.055940 0.879604 -0.368694 -0.279733 0.886441 0.000824 -0.007721 0.999969 -0.525895 -0.169744 0.833399 -0.380627 -0.463881 0.799921 -0.497696 -0.826014 0.264534 -0.502792 -0.767479 0.397687 -0.350749 0.490341 0.797784 -0.400952 0.891446 0.211005 -0.281014 0.876736 0.390271 -0.400952 0.891446 0.211005 -0.612140 0.675222 -0.411451 -0.281014 0.876736 0.390271 -0.958098 0.073672 -0.276681 -0.612140 0.675222 -0.411451 -0.724174 0.625904 -0.289438 -0.958098 0.073672 -0.276681 -0.639851 -0.370403 -0.673299 -0.612140 0.675222 -0.411451 -0.862758 -0.425550 -0.272958 -0.639851 -0.370403 -0.673299 -0.958098 0.073672 -0.276681 -0.862758 -0.425550 -0.272958 -0.710746 -0.693289 -0.118870 -0.639851 -0.370403 -0.673299 -0.210273 -0.760186 0.614704 -0.380627 -0.463881 0.799921 -0.502792 -0.767479 0.397687 -0.210273 -0.760186 0.614704 -0.510330 -0.615497 0.600574 -0.380627 -0.463881 0.799921 -0.637013 -0.767907 0.067019 0.082125 -0.912076 -0.401685 -0.207007 -0.977874 -0.029389 -0.502213 0.864406 -0.023072 -0.033876 0.998840 0.033937 0.675008 0.565355 -0.474044 0.794641 0.558214 -0.238502 0.536729 0.050081 -0.842250 -0.587603 0.638905 -0.496445 -0.393231 0.878842 0.270119 -0.801538 0.426466 -0.419050 -0.668294 -0.031465 0.743217 0.382305 -0.464370 0.798853 0.502792 -0.767479 0.397687 0.497696 -0.826014 0.264534 0.352886 0.490829 0.796564 0.281014 0.876736 0.390271 0.400952 0.891446 0.211005 0.400952 0.891446 0.211005 0.281014 0.876736 0.390271 0.612140 0.675222 -0.411451 0.958098 0.073672 -0.276681 0.724174 0.625904 -0.289438 0.612140 0.675222 -0.411451 0.958098 0.073672 -0.276681 0.612140 0.675222 -0.411451 0.639851 -0.370403 -0.673299 0.862758 -0.425550 -0.272958 0.958098 0.073672 -0.276681 0.639851 -0.370403 -0.673299 0.862758 -0.425550 -0.272958 0.639851 -0.370403 -0.673299 0.710746 -0.693289 -0.118870 0.210486 -0.760857 0.613788 0.502792 -0.767479 0.397687 0.382305 -0.464370 0.798853 0.210486 -0.760857 0.613788 0.382305 -0.464370 0.798853 0.514664 -0.620502 0.591662 0.637013 -0.767907 0.067232 0.207007 -0.977874 -0.029298 -0.082156 -0.912076 -0.401624 0.502243 0.864376 -0.023041 -0.675039 0.565355 -0.473952 0.033937 0.998840 0.034028 -0.794641 0.558214 -0.238502 0.587603 0.638905 -0.496445 -0.536729 0.050081 -0.842250 0.393231 0.878842 0.270119 0.668294 -0.031465 0.743217 0.801538 0.426466 -0.419050 0.000000 -0.121616 0.992553 -0.262612 0.191076 0.945769 -0.426710 -0.063051 0.902158 0.000000 0.361583 0.932310 -0.262612 0.191076 0.945769 0.000000 -0.121616 0.992553 -0.249825 -0.279641 0.927000 0.000000 -0.387707 0.921751 0.000000 -0.121616 0.992553 -0.357707 -0.244819 0.901151 -0.249825 -0.279641 0.927000 0.000000 -0.121616 0.992553 -0.426710 -0.063051 0.902158 -0.357707 -0.244819 0.901151 0.000000 -0.121616 0.992553 0.001617 0.976745 -0.214393 0.007233 0.890500 0.454848 -0.390179 0.866878 -0.310190 0.000000 -0.999939 0.008087 -0.576647 -0.815607 0.047090 0.000000 -0.880093 -0.474776 -0.576647 -0.815607 0.047090 -0.558214 -0.758568 -0.336039 0.000000 -0.880093 -0.474776 0.262612 0.191076 0.945769 0.000000 -0.121616 0.992553 0.426710 -0.063051 0.902158 0.000000 0.361583 0.932310 0.000000 -0.121616 0.992553 0.262612 0.191076 0.945769 0.249825 -0.279641 0.927000 0.000000 -0.121616 0.992553 0.000000 -0.387707 0.921751 0.357707 -0.244819 0.901151 0.000000 -0.121616 0.992553 0.249825 -0.279641 0.927000 0.426710 -0.063051 0.902158 0.000000 -0.121616 0.992553 0.357707 -0.244819 0.901151 0.001617 0.976745 -0.214393 0.392956 0.864071 -0.314493 0.007233 0.890500 0.454848 0.000000 -0.999939 0.008087 0.000000 -0.880093 -0.474776 0.576647 -0.815607 0.047090 0.576647 -0.815607 0.047090 0.000000 -0.880093 -0.474776 0.558214 -0.758568 -0.336039 0.987457 -0.086123 0.132267 0.939817 -0.045991 0.338542 0.822871 -0.559771 -0.097476 0.822871 -0.559771 -0.097476 0.939817 -0.045991 0.338542 0.860622 -0.424726 0.280862 0.997742 0.045930 -0.048708 0.987457 -0.086123 0.132267 0.875607 -0.466506 0.125095 0.875607 -0.466506 0.125095 0.987457 -0.086123 0.132267 0.822871 -0.559771 -0.097476 0.822871 -0.559771 -0.097476 0.554613 -0.817103 0.157048 0.512925 -0.842280 -0.165654 0.822871 -0.559771 -0.097476 0.860622 -0.424726 0.280862 0.554613 -0.817103 0.157048 0.875607 -0.466506 0.125095 0.822871 -0.559771 -0.097476 0.621296 -0.751823 0.220740 0.621296 -0.751823 0.220740 0.822871 -0.559771 -0.097476 0.512925 -0.842280 -0.165654 0.512925 -0.842280 -0.165654 0.000000 -0.999329 0.036134 0.000000 -0.999146 -0.040742 0.512925 -0.842280 -0.165654 0.554613 -0.817103 0.157048 0.000000 -0.999329 0.036134 0.621296 -0.751823 0.220740 0.512925 -0.842280 -0.165654 0.000000 -0.948637 0.316324 0.000000 -0.948637 0.316324 0.512925 -0.842280 -0.165654 0.000000 -0.999146 -0.040742 0.000000 0.980590 0.195959 0.694174 0.568529 0.441389 0.830775 0.538438 0.140934 0.000000 0.980590 0.195959 0.000000 0.841762 0.539842 0.694174 0.568529 0.441389 0.000000 0.999969 -0.003265 0.000000 0.980590 0.195959 0.696463 0.717368 -0.016511 0.696463 0.717368 -0.016511 0.000000 0.980590 0.195959 0.830775 0.538438 0.140934 0.830775 0.538438 0.140934 0.694174 0.568529 0.441389 0.987457 -0.086123 0.132267 0.987457 -0.086123 0.132267 0.694174 0.568529 0.441389 0.939817 -0.045991 0.338542 0.696463 0.717368 -0.016511 0.830775 0.538438 0.140934 0.997742 0.045930 -0.048708 0.997742 0.045930 -0.048708 0.830775 0.538438 0.140934 0.987457 -0.086123 0.132267 0.847926 0.157842 -0.506027 0.708762 -0.305368 0.635884 0.543290 0.441328 0.714133 0.847926 0.157842 -0.506027 0.875088 -0.382092 -0.296976 0.708762 -0.305368 0.635884 0.875088 -0.382092 -0.296976 0.514664 -0.620502 0.591662 0.708762 -0.305368 0.635884 0.875088 -0.382092 -0.296976 0.591052 -0.653737 -0.472457 0.514664 -0.620502 0.591662 0.591052 -0.653737 -0.472457 -0.000031 -0.909146 0.416456 0.514664 -0.620502 0.591662 0.591052 -0.653737 -0.472457 0.000427 -0.500504 -0.865688 -0.000031 -0.909146 0.416456 0.392956 0.864071 -0.314493 0.543290 0.441328 0.714133 0.007233 0.890500 0.454848 0.392956 0.864071 -0.314493 0.847926 0.157842 -0.506027 0.543290 0.441328 0.714133 0.875088 -0.382092 -0.296976 0.847926 0.157842 -0.506027 0.619770 -0.137944 -0.772546 0.619770 -0.137944 -0.772546 0.847926 0.157842 -0.506027 0.688314 0.100833 -0.718345 0.619770 -0.137944 -0.772546 0.790338 0.216346 -0.573168 0.712119 -0.138401 -0.688253 0.619770 -0.137944 -0.772546 0.688314 0.100833 -0.718345 0.790338 0.216346 -0.573168 0.712119 -0.138401 -0.688253 0.790338 0.216346 -0.573168 0.901669 -0.303415 -0.308023 0.901669 -0.303415 -0.308023 0.790338 0.216346 -0.573168 0.939512 0.174993 -0.294351 0.901669 -0.303415 -0.308023 0.939512 0.174993 -0.294351 0.881405 -0.444441 0.159764 0.881405 -0.444441 0.159764 0.939512 0.174993 -0.294351 0.998840 0.045778 -0.014496 0.881405 -0.444441 0.159764 0.998840 0.045778 -0.014496 0.875607 -0.466506 0.125095 0.875607 -0.466506 0.125095 0.998840 0.045778 -0.014496 0.997742 0.045930 -0.048708 0.860622 -0.424726 0.280862 0.939817 -0.045991 0.338542 0.671926 -0.301340 0.676473 0.671926 -0.301340 0.676473 0.939817 -0.045991 0.338542 0.725883 0.040864 0.686575 0.671926 -0.301340 0.676473 0.426710 -0.063051 0.902158 0.357707 -0.244819 0.901151 0.671926 -0.301340 0.676473 0.725883 0.040864 0.686575 0.426710 -0.063051 0.902158 0.452712 -0.467055 0.759514 0.357707 -0.244819 0.901151 0.249825 -0.279641 0.927000 0.452712 -0.467055 0.759514 0.671926 -0.301340 0.676473 0.357707 -0.244819 0.901151 0.554613 -0.817103 0.157048 0.860622 -0.424726 0.280862 0.452712 -0.467055 0.759514 0.452712 -0.467055 0.759514 0.860622 -0.424726 0.280862 0.671926 -0.301340 0.676473 0.576647 -0.815607 0.047090 0.881405 -0.444441 0.159764 0.621296 -0.751823 0.220740 0.621296 -0.751823 0.220740 0.881405 -0.444441 0.159764 0.875607 -0.466506 0.125095 0.558214 -0.758568 -0.336039 0.881405 -0.444441 0.159764 0.576647 -0.815607 0.047090 0.558214 -0.758568 -0.336039 0.901669 -0.303415 -0.308023 0.881405 -0.444441 0.159764 0.586718 -0.575610 -0.569536 0.901669 -0.303415 -0.308023 0.558214 -0.758568 -0.336039 0.586718 -0.575610 -0.569536 0.712119 -0.138401 -0.688253 0.901669 -0.303415 -0.308023 0.514206 -0.235664 -0.824610 0.619770 -0.137944 -0.772546 0.586718 -0.575610 -0.569536 0.586718 -0.575610 -0.569536 0.619770 -0.137944 -0.772546 0.712119 -0.138401 -0.688253 0.591052 -0.653737 -0.472457 0.619770 -0.137944 -0.772546 0.514206 -0.235664 -0.824610 0.591052 -0.653737 -0.472457 0.875088 -0.382092 -0.296976 0.619770 -0.137944 -0.772546 0.000427 -0.500504 -0.865688 0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 0.000427 -0.500504 -0.865688 0.591052 -0.653737 -0.472457 0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 0.000000 -0.547472 -0.836787 0.514206 -0.235664 -0.824610 0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 0.558214 -0.758568 -0.336039 0.000000 -0.880093 -0.474776 0.000000 -0.888363 -0.459090 0.586718 -0.575610 -0.569536 0.558214 -0.758568 -0.336039 0.000000 -0.999939 0.008087 0.576647 -0.815607 0.047090 0.000000 -0.948637 0.316324 0.000000 -0.948637 0.316324 0.576647 -0.815607 0.047090 0.621296 -0.751823 0.220740 0.000000 -0.999329 0.036134 0.554613 -0.817103 0.157048 0.000000 -0.681295 0.731986 0.000000 -0.681295 0.731986 0.554613 -0.817103 0.157048 0.452712 -0.467055 0.759514 0.000000 -0.681295 0.731986 0.452712 -0.467055 0.759514 0.000000 -0.387707 0.921751 0.000000 -0.387707 0.921751 0.452712 -0.467055 0.759514 0.249825 -0.279641 0.927000 0.392956 0.864071 -0.314493 0.000366 0.635487 -0.772088 0.449568 0.445143 -0.774407 0.392956 0.864071 -0.314493 0.001617 0.976745 -0.214393 0.000366 0.635487 -0.772088 0.449568 0.445143 -0.774407 0.000366 0.635487 -0.772088 0.490158 0.581530 -0.649251 0.490158 0.581530 -0.649251 0.000366 0.635487 -0.772088 0.000000 0.738212 -0.674551 0.490158 0.581530 -0.649251 0.000000 0.891354 -0.453230 0.745720 0.552538 -0.372204 0.490158 0.581530 -0.649251 0.000000 0.738212 -0.674551 0.000000 0.891354 -0.453230 0.745720 0.552538 -0.372204 0.000000 0.891354 -0.453230 0.712180 0.682150 -0.165532 0.712180 0.682150 -0.165532 0.000000 0.891354 -0.453230 0.000000 0.965758 -0.259407 0.712180 0.682150 -0.165532 0.000000 0.999969 -0.003265 0.696463 0.717368 -0.016511 0.712180 0.682150 -0.165532 0.000000 0.965758 -0.259407 0.000000 0.999969 -0.003265 0.694174 0.568529 0.441389 0.000000 0.841762 0.539842 0.494247 0.463546 0.735405 0.494247 0.463546 0.735405 0.000000 0.841762 0.539842 0.000000 0.645039 0.764122 0.494247 0.463546 0.735405 0.000000 0.361583 0.932310 0.262612 0.191076 0.945769 0.494247 0.463546 0.735405 0.000000 0.645039 0.764122 0.000000 0.361583 0.932310 0.725883 0.040864 0.686575 0.494247 0.463546 0.735405 0.426710 -0.063051 0.902158 0.426710 -0.063051 0.902158 0.494247 0.463546 0.735405 0.262612 0.191076 0.945769 0.939817 -0.045991 0.338542 0.494247 0.463546 0.735405 0.725883 0.040864 0.686575 0.939817 -0.045991 0.338542 0.694174 0.568529 0.441389 0.494247 0.463546 0.735405 0.998840 0.045778 -0.014496 0.712180 0.682150 -0.165532 0.997742 0.045930 -0.048708 0.997742 0.045930 -0.048708 0.712180 0.682150 -0.165532 0.696463 0.717368 -0.016511 0.939512 0.174993 -0.294351 0.745720 0.552538 -0.372204 0.998840 0.045778 -0.014496 0.998840 0.045778 -0.014496 0.745720 0.552538 -0.372204 0.712180 0.682150 -0.165532 0.790338 0.216346 -0.573168 0.490158 0.581530 -0.649251 0.939512 0.174993 -0.294351 0.939512 0.174993 -0.294351 0.490158 0.581530 -0.649251 0.745720 0.552538 -0.372204 0.688314 0.100833 -0.718345 0.449568 0.445143 -0.774407 0.790338 0.216346 -0.573168 0.790338 0.216346 -0.573168 0.449568 0.445143 -0.774407 0.490158 0.581530 -0.649251 0.847926 0.157842 -0.506027 0.449568 0.445143 -0.774407 0.688314 0.100833 -0.718345 0.847926 0.157842 -0.506027 0.392956 0.864071 -0.314493 0.449568 0.445143 -0.774407 -0.987457 -0.086123 0.132267 -0.822871 -0.559771 -0.097476 -0.939817 -0.045991 0.338542 -0.939817 -0.045991 0.338542 -0.822871 -0.559771 -0.097476 -0.860622 -0.424726 0.280862 -0.997742 0.045930 -0.048708 -0.875607 -0.466506 0.125095 -0.987457 -0.086123 0.132267 -0.987457 -0.086123 0.132267 -0.875607 -0.466506 0.125095 -0.822871 -0.559771 -0.097476 -0.822871 -0.559771 -0.097476 -0.554613 -0.817103 0.157048 -0.860622 -0.424726 0.280862 -0.822871 -0.559771 -0.097476 -0.512925 -0.842280 -0.165654 -0.554613 -0.817103 0.157048 -0.875607 -0.466506 0.125095 -0.621296 -0.751823 0.220740 -0.822871 -0.559771 -0.097476 -0.822871 -0.559771 -0.097476 -0.621296 -0.751823 0.220740 -0.512925 -0.842280 -0.165654 -0.512925 -0.842280 -0.165654 0.000000 -0.999329 0.036134 -0.554613 -0.817103 0.157048 -0.512925 -0.842280 -0.165654 0.000000 -0.999146 -0.040742 0.000000 -0.999329 0.036134 -0.621296 -0.751823 0.220740 0.000000 -0.948637 0.316324 -0.512925 -0.842280 -0.165654 -0.512925 -0.842280 -0.165654 0.000000 -0.948637 0.316324 0.000000 -0.999146 -0.040742 0.000000 0.980590 0.195959 -0.694174 0.568529 0.441389 0.000000 0.841762 0.539842 0.000000 0.980590 0.195959 -0.830775 0.538438 0.140934 -0.694174 0.568529 0.441389 0.000000 0.999969 -0.003265 -0.696463 0.717368 -0.016511 0.000000 0.980590 0.195959 0.000000 0.980590 0.195959 -0.696463 0.717368 -0.016511 -0.830775 0.538438 0.140934 -0.830775 0.538438 0.140934 -0.987457 -0.086123 0.132267 -0.694174 0.568529 0.441389 -0.694174 0.568529 0.441389 -0.987457 -0.086123 0.132267 -0.939817 -0.045991 0.338542 -0.696463 0.717368 -0.016511 -0.997742 0.045930 -0.048708 -0.830775 0.538438 0.140934 -0.830775 0.538438 0.140934 -0.997742 0.045930 -0.048708 -0.987457 -0.086123 0.132267 -0.853755 0.150884 -0.498276 -0.698782 -0.310556 0.644337 -0.875057 -0.391217 -0.284921 -0.853755 0.150884 -0.498276 -0.482528 0.504898 0.715659 -0.698782 -0.310556 0.644337 -0.875057 -0.391217 -0.284921 -0.510330 -0.615497 0.600574 -0.592853 -0.656331 -0.466567 -0.875057 -0.391217 -0.284921 -0.698782 -0.310556 0.644337 -0.510330 -0.615497 0.600574 -0.592853 -0.656331 -0.466567 -0.000031 -0.909146 0.416456 0.000427 -0.500504 -0.865688 -0.592853 -0.656331 -0.466567 -0.510330 -0.615497 0.600574 -0.000031 -0.909146 0.416456 -0.390179 0.866878 -0.310190 -0.482528 0.504898 0.715659 -0.853755 0.150884 -0.498276 -0.390179 0.866878 -0.310190 0.007233 0.890500 0.454848 -0.482528 0.504898 0.715659 -0.875057 -0.391217 -0.284921 -0.620380 -0.139683 -0.771722 -0.853755 0.150884 -0.498276 -0.853755 0.150884 -0.498276 -0.620380 -0.139683 -0.771722 -0.691641 0.100803 -0.715140 -0.620380 -0.139683 -0.771722 -0.790338 0.216346 -0.573168 -0.691641 0.100803 -0.715140 -0.620380 -0.139683 -0.771722 -0.712119 -0.138401 -0.688253 -0.790338 0.216346 -0.573168 -0.712119 -0.138401 -0.688253 -0.901669 -0.303415 -0.308023 -0.790338 0.216346 -0.573168 -0.790338 0.216346 -0.573168 -0.901669 -0.303415 -0.308023 -0.939512 0.174993 -0.294351 -0.901669 -0.303415 -0.308023 -0.881405 -0.444441 0.159764 -0.939512 0.174993 -0.294351 -0.939512 0.174993 -0.294351 -0.881405 -0.444441 0.159764 -0.998840 0.045778 -0.014496 -0.881405 -0.444441 0.159764 -0.875607 -0.466506 0.125095 -0.998840 0.045778 -0.014496 -0.998840 0.045778 -0.014496 -0.875607 -0.466506 0.125095 -0.997742 0.045930 -0.048708 -0.860622 -0.424726 0.280862 -0.671926 -0.301340 0.676473 -0.939817 -0.045991 0.338542 -0.939817 -0.045991 0.338542 -0.671926 -0.301340 0.676473 -0.725883 0.040864 0.686575 -0.426710 -0.063051 0.902158 -0.671926 -0.301340 0.676473 -0.357707 -0.244819 0.901151 -0.426710 -0.063051 0.902158 -0.725883 0.040864 0.686575 -0.671926 -0.301340 0.676473 -0.452712 -0.467055 0.759514 -0.357707 -0.244819 0.901151 -0.671926 -0.301340 0.676473 -0.452712 -0.467055 0.759514 -0.249825 -0.279641 0.927000 -0.357707 -0.244819 0.901151 -0.554613 -0.817103 0.157048 -0.452712 -0.467055 0.759514 -0.860622 -0.424726 0.280862 -0.860622 -0.424726 0.280862 -0.452712 -0.467055 0.759514 -0.671926 -0.301340 0.676473 -0.576647 -0.815607 0.047090 -0.621296 -0.751823 0.220740 -0.881405 -0.444441 0.159764 -0.881405 -0.444441 0.159764 -0.621296 -0.751823 0.220740 -0.875607 -0.466506 0.125095 -0.558214 -0.758568 -0.336039 -0.881405 -0.444441 0.159764 -0.901669 -0.303415 -0.308023 -0.558214 -0.758568 -0.336039 -0.576647 -0.815607 0.047090 -0.881405 -0.444441 0.159764 -0.586718 -0.575610 -0.569536 -0.901669 -0.303415 -0.308023 -0.712119 -0.138401 -0.688253 -0.586718 -0.575610 -0.569536 -0.558214 -0.758568 -0.336039 -0.901669 -0.303415 -0.308023 -0.514206 -0.235664 -0.824610 -0.586718 -0.575610 -0.569536 -0.620380 -0.139683 -0.771722 -0.620380 -0.139683 -0.771722 -0.586718 -0.575610 -0.569536 -0.712119 -0.138401 -0.688253 -0.592853 -0.656331 -0.466567 -0.620380 -0.139683 -0.771722 -0.875057 -0.391217 -0.284921 -0.592853 -0.656331 -0.466567 -0.514206 -0.235664 -0.824610 -0.620380 -0.139683 -0.771722 0.000427 -0.500504 -0.865688 -0.514206 -0.235664 -0.824610 -0.592853 -0.656331 -0.466567 0.000427 -0.500504 -0.865688 0.000000 -0.547472 -0.836787 -0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 -0.586718 -0.575610 -0.569536 -0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 0.000000 -0.888363 -0.459090 -0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 -0.558214 -0.758568 -0.336039 -0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 0.000000 -0.880093 -0.474776 -0.558214 -0.758568 -0.336039 0.000000 -0.999939 0.008087 0.000000 -0.948637 0.316324 -0.576647 -0.815607 0.047090 -0.576647 -0.815607 0.047090 0.000000 -0.948637 0.316324 -0.621296 -0.751823 0.220740 0.000000 -0.999329 0.036134 0.000000 -0.681295 0.731986 -0.554613 -0.817103 0.157048 -0.554613 -0.817103 0.157048 0.000000 -0.681295 0.731986 -0.452712 -0.467055 0.759514 0.000000 -0.681295 0.731986 0.000000 -0.387707 0.921751 -0.452712 -0.467055 0.759514 -0.452712 -0.467055 0.759514 0.000000 -0.387707 0.921751 -0.249825 -0.279641 0.927000 -0.390179 0.866878 -0.310190 0.000366 0.635487 -0.772088 0.001617 0.976745 -0.214393 -0.390179 0.866878 -0.310190 -0.450758 0.445936 -0.773247 0.000366 0.635487 -0.772088 -0.450758 0.445936 -0.773247 -0.490158 0.581530 -0.649251 0.000366 0.635487 -0.772088 0.000366 0.635487 -0.772088 -0.490158 0.581530 -0.649251 0.000000 0.738212 -0.674551 -0.490158 0.581530 -0.649251 0.000000 0.891354 -0.453230 0.000000 0.738212 -0.674551 -0.490158 0.581530 -0.649251 -0.745720 0.552538 -0.372204 0.000000 0.891354 -0.453230 -0.745720 0.552538 -0.372204 -0.712180 0.682150 -0.165532 0.000000 0.891354 -0.453230 0.000000 0.891354 -0.453230 -0.712180 0.682150 -0.165532 0.000000 0.965758 -0.259407 -0.712180 0.682150 -0.165532 0.000000 0.999969 -0.003265 0.000000 0.965758 -0.259407 -0.712180 0.682150 -0.165532 -0.696463 0.717368 -0.016511 0.000000 0.999969 -0.003265 -0.694174 0.568529 0.441389 -0.494247 0.463546 0.735405 0.000000 0.841762 0.539842 0.000000 0.841762 0.539842 -0.494247 0.463546 0.735405 0.000000 0.645039 0.764122 -0.494247 0.463546 0.735405 0.000000 0.361583 0.932310 0.000000 0.645039 0.764122 -0.494247 0.463546 0.735405 -0.262612 0.191076 0.945769 0.000000 0.361583 0.932310 -0.262612 0.191076 0.945769 -0.494247 0.463546 0.735405 -0.426710 -0.063051 0.902158 -0.426710 -0.063051 0.902158 -0.494247 0.463546 0.735405 -0.725883 0.040864 0.686575 -0.939817 -0.045991 0.338542 -0.494247 0.463546 0.735405 -0.694174 0.568529 0.441389 -0.939817 -0.045991 0.338542 -0.725883 0.040864 0.686575 -0.494247 0.463546 0.735405 -0.998840 0.045778 -0.014496 -0.997742 0.045930 -0.048708 -0.712180 0.682150 -0.165532 -0.712180 0.682150 -0.165532 -0.997742 0.045930 -0.048708 -0.696463 0.717368 -0.016511 -0.939512 0.174993 -0.294351 -0.998840 0.045778 -0.014496 -0.745720 0.552538 -0.372204 -0.745720 0.552538 -0.372204 -0.998840 0.045778 -0.014496 -0.712180 0.682150 -0.165532 -0.790338 0.216346 -0.573168 -0.939512 0.174993 -0.294351 -0.490158 0.581530 -0.649251 -0.490158 0.581530 -0.649251 -0.939512 0.174993 -0.294351 -0.745720 0.552538 -0.372204 -0.691641 0.100803 -0.715140 -0.790338 0.216346 -0.573168 -0.450758 0.445936 -0.773247 -0.450758 0.445936 -0.773247 -0.790338 0.216346 -0.573168 -0.490158 0.581530 -0.649251 -0.853755 0.150884 -0.498276 -0.450758 0.445936 -0.773247 -0.390179 0.866878 -0.310190 -0.853755 0.150884 -0.498276 -0.691641 0.100803 -0.715140 -0.450758 0.445936 -0.773247 -0.002869 -0.930570 0.366070 0.668294 -0.031465 0.743217 0.128208 0.035157 0.991119 -0.002869 -0.930570 0.366070 0.406018 -0.913511 0.024354 0.668294 -0.031465 0.743217 0.107913 -0.499954 0.859279 -0.002869 -0.930570 0.366070 -0.156590 -0.073519 0.984893 -0.156590 -0.073519 0.984893 -0.002869 -0.930570 0.366070 0.128208 0.035157 0.991119 0.128208 0.035157 0.991119 0.668294 -0.031465 0.743217 0.060030 0.859066 0.508286 0.060030 0.859066 0.508286 0.668294 -0.031465 0.743217 0.393231 0.878842 0.270119 -0.156590 -0.073519 0.984893 0.128208 0.035157 0.991119 -0.111118 0.817377 0.565233 -0.111118 0.817377 0.565233 0.128208 0.035157 0.991119 0.060030 0.859066 0.508286 -0.009125 0.633931 -0.773309 0.609272 -0.324046 -0.723716 -0.020966 -0.530503 -0.847407 -0.009125 0.633931 -0.773309 0.801538 0.426466 -0.419050 0.609272 -0.324046 -0.723716 -0.058565 0.731040 -0.679769 -0.020966 -0.530503 -0.847407 0.390088 -0.125095 -0.912198 -0.058565 0.731040 -0.679769 -0.009125 0.633931 -0.773309 -0.020966 -0.530503 -0.847407 -0.020966 -0.530503 -0.847407 0.406018 -0.913511 0.024354 -0.002869 -0.930570 0.366070 -0.020966 -0.530503 -0.847407 0.609272 -0.324046 -0.723716 0.406018 -0.913511 0.024354 0.390088 -0.125095 -0.912198 -0.002869 -0.930570 0.366070 0.107913 -0.499954 0.859279 0.390088 -0.125095 -0.912198 -0.020966 -0.530503 -0.847407 -0.002869 -0.930570 0.366070 0.060030 0.859066 0.508286 0.393231 0.878842 0.270119 -0.009125 0.633931 -0.773309 -0.009125 0.633931 -0.773309 0.393231 0.878842 0.270119 0.801538 0.426466 -0.419050 -0.111118 0.817377 0.565233 0.060030 0.859066 0.508286 -0.058565 0.731040 -0.679769 -0.058565 0.731040 -0.679769 0.060030 0.859066 0.508286 -0.009125 0.633931 -0.773309 0.055361 -0.600116 -0.797967 0.883206 -0.102939 -0.457472 0.115909 -0.864772 0.488571 0.115909 -0.864772 0.488571 0.883206 -0.102939 -0.457472 0.728477 0.263649 0.632252 0.199591 0.108798 0.973815 0.115909 -0.864772 0.488571 0.728477 0.263649 0.632252 0.199591 0.108798 0.973815 -0.590136 -0.661275 0.463027 0.115909 -0.864772 0.488571 0.738456 0.656819 -0.152379 0.728477 0.263649 0.632252 0.883206 -0.102939 -0.457472 0.738456 0.656819 -0.152379 0.199591 0.108798 0.973815 0.728477 0.263649 0.632252 0.053713 -0.065615 -0.996368 0.738456 0.656819 -0.152379 0.055361 -0.600116 -0.797967 0.055361 -0.600116 -0.797967 0.738456 0.656819 -0.152379 0.883206 -0.102939 -0.457472 -0.590136 -0.661275 0.463027 0.055361 -0.600116 -0.797967 0.115909 -0.864772 0.488571 -0.590136 -0.661275 0.463027 0.053713 -0.065615 -0.996368 0.055361 -0.600116 -0.797967 0.107913 -0.499954 0.859279 -0.590136 -0.661275 0.463027 0.199591 0.108798 0.973815 0.107913 -0.499954 0.859279 -0.263649 -0.792077 0.550523 -0.590136 -0.661275 0.463027 0.390088 -0.125095 -0.912198 0.107913 -0.499954 0.859279 0.738456 0.656819 -0.152379 0.738456 0.656819 -0.152379 0.107913 -0.499954 0.859279 0.199591 0.108798 0.973815 -0.130314 -0.674001 -0.727103 0.390088 -0.125095 -0.912198 0.053713 -0.065615 -0.996368 0.053713 -0.065615 -0.996368 0.390088 -0.125095 -0.912198 0.738456 0.656819 -0.152379 -0.263649 -0.792077 0.550523 -0.130314 -0.674001 -0.727103 -0.590136 -0.661275 0.463027 -0.590136 -0.661275 0.463027 -0.130314 -0.674001 -0.727103 0.053713 -0.065615 -0.996368 0.801538 0.426466 -0.419050 0.668294 -0.031465 0.743217 0.609272 -0.324046 -0.723716 0.609272 -0.324046 -0.723716 0.668294 -0.031465 0.743217 0.406018 -0.913511 0.024354 -0.151402 -0.306833 0.939634 0.107913 -0.499954 0.859279 -0.156590 -0.073519 0.984893 -0.151402 -0.306833 0.939634 -0.263649 -0.792077 0.550523 0.107913 -0.499954 0.859279 -0.166692 0.838435 0.518845 -0.156590 -0.073519 0.984893 -0.111118 0.817377 0.565233 -0.166692 0.838435 0.518845 -0.151402 -0.306833 0.939634 -0.156590 -0.073519 0.984893 -0.130314 -0.674001 -0.727103 0.138340 0.542528 -0.828547 0.390088 -0.125095 -0.912198 0.390088 -0.125095 -0.912198 0.138340 0.542528 -0.828547 -0.058565 0.731040 -0.679769 0.138340 0.542528 -0.828547 -0.166692 0.838435 0.518845 -0.058565 0.731040 -0.679769 -0.058565 0.731040 -0.679769 -0.166692 0.838435 0.518845 -0.111118 0.817377 0.565233 -0.001160 0.022187 0.999725 -0.024781 -0.959044 0.282144 -0.151402 -0.306833 0.939634 -0.151402 -0.306833 0.939634 -0.024781 -0.959044 0.282144 -0.263649 -0.792077 0.550523 -0.093265 0.949797 0.298593 -0.001160 0.022187 0.999725 -0.166692 0.838435 0.518845 -0.166692 0.838435 0.518845 -0.001160 0.022187 0.999725 -0.151402 -0.306833 0.939634 -0.103336 -0.450545 -0.886715 0.138340 0.542528 -0.828547 -0.130314 -0.674001 -0.727103 -0.103336 -0.450545 -0.886715 -0.153813 0.660939 -0.734489 0.138340 0.542528 -0.828547 -0.024781 -0.959044 0.282144 -0.130314 -0.674001 -0.727103 -0.263649 -0.792077 0.550523 -0.024781 -0.959044 0.282144 -0.103336 -0.450545 -0.886715 -0.130314 -0.674001 -0.727103 -0.153813 0.660939 -0.734489 -0.093265 0.949797 0.298593 0.138340 0.542528 -0.828547 0.138340 0.542528 -0.828547 -0.093265 0.949797 0.298593 -0.166692 0.838435 0.518845 0.017487 -0.076327 0.996918 0.017853 -0.829279 0.558489 -0.001160 0.022187 0.999725 -0.001160 0.022187 0.999725 0.017853 -0.829279 0.558489 -0.024781 -0.959044 0.282144 -0.041139 0.739006 0.672414 -0.001160 0.022187 0.999725 -0.093265 0.949797 0.298593 -0.041139 0.739006 0.672414 0.017487 -0.076327 0.996918 -0.001160 0.022187 0.999725 -0.083438 -0.839381 -0.537065 -0.169897 0.662221 -0.729789 -0.103336 -0.450545 -0.886715 -0.103336 -0.450545 -0.886715 -0.169897 0.662221 -0.729789 -0.153813 0.660939 -0.734489 0.017853 -0.829279 0.558489 -0.083438 -0.839381 -0.537065 -0.024781 -0.959044 0.282144 -0.024781 -0.959044 0.282144 -0.083438 -0.839381 -0.537065 -0.103336 -0.450545 -0.886715 -0.169897 0.662221 -0.729789 -0.093265 0.949797 0.298593 -0.153813 0.660939 -0.734489 -0.169897 0.662221 -0.729789 -0.041139 0.739006 0.672414 -0.093265 0.949797 0.298593 0.587603 0.638905 -0.496445 0.513291 -0.324870 -0.794305 -0.536729 0.050081 -0.842250 -0.536729 0.050081 -0.842250 0.513291 -0.324870 -0.794305 -0.612476 -0.696707 -0.373363 -0.957518 0.180792 0.224616 -0.794641 0.558214 -0.238502 -0.536729 0.050081 -0.842250 -0.957518 0.180792 0.224616 -0.439192 0.762261 0.475417 -0.794641 0.558214 -0.238502 0.804193 -0.431654 0.408490 -0.612476 -0.696707 -0.373363 0.513291 -0.324870 -0.794305 0.804193 -0.431654 0.408490 -0.521256 -0.435316 0.734001 -0.612476 -0.696707 -0.373363 -0.521256 -0.435316 0.734001 -0.957518 0.180792 0.224616 -0.612476 -0.696707 -0.373363 -0.612476 -0.696707 -0.373363 -0.957518 0.180792 0.224616 -0.536729 0.050081 -0.842250 0.638234 0.557207 0.531175 0.804193 -0.431654 0.408490 0.587603 0.638905 -0.496445 0.587603 0.638905 -0.496445 0.804193 -0.431654 0.408490 0.513291 -0.324870 -0.794305 -0.439192 0.762261 0.475417 0.587603 0.638905 -0.496445 -0.794641 0.558214 -0.238502 -0.439192 0.762261 0.475417 0.638234 0.557207 0.531175 0.587603 0.638905 -0.496445 -0.908292 0.412763 0.067934 -0.425611 0.700858 0.572375 -0.957518 0.180792 0.224616 -0.957518 0.180792 0.224616 -0.425611 0.700858 0.572375 -0.439192 0.762261 0.475417 0.543870 -0.204016 0.813959 -0.521256 -0.435316 0.734001 0.804193 -0.431654 0.408490 0.543870 -0.204016 0.813959 -0.698813 -0.222144 0.679891 -0.521256 -0.435316 0.734001 -0.698813 -0.222144 0.679891 -0.957518 0.180792 0.224616 -0.521256 -0.435316 0.734001 -0.698813 -0.222144 0.679891 -0.908292 0.412763 0.067934 -0.957518 0.180792 0.224616 0.772637 0.297647 0.560717 0.543870 -0.204016 0.813959 0.638234 0.557207 0.531175 0.638234 0.557207 0.531175 0.543870 -0.204016 0.813959 0.804193 -0.431654 0.408490 -0.425611 0.700858 0.572375 0.638234 0.557207 0.531175 -0.439192 0.762261 0.475417 -0.425611 0.700858 0.572375 0.772637 0.297647 0.560717 0.638234 0.557207 0.531175 -0.848720 0.524064 -0.070803 0.180578 0.966002 0.184881 -0.908292 0.412763 0.067934 -0.908292 0.412763 0.067934 0.180578 0.966002 0.184881 -0.425611 0.700858 0.572375 0.517624 -0.628956 0.580035 -0.698813 -0.222144 0.679891 0.543870 -0.204016 0.813959 0.517624 -0.628956 0.580035 -0.820521 -0.543229 0.177770 -0.698813 -0.222144 0.679891 -0.820521 -0.543229 0.177770 -0.908292 0.412763 0.067934 -0.698813 -0.222144 0.679891 -0.820521 -0.543229 0.177770 -0.848720 0.524064 -0.070803 -0.908292 0.412763 0.067934 0.973174 -0.073336 0.217994 0.517624 -0.628956 0.580035 0.772637 0.297647 0.560717 0.772637 0.297647 0.560717 0.517624 -0.628956 0.580035 0.543870 -0.204016 0.813959 0.180578 0.966002 0.184881 0.772637 0.297647 0.560717 -0.425611 0.700858 0.572375 0.180578 0.966002 0.184881 0.973174 -0.073336 0.217994 0.772637 0.297647 0.560717 -0.711356 0.685903 0.153264 0.306192 0.935484 0.176305 -0.848720 0.524064 -0.070803 -0.848720 0.524064 -0.070803 0.306192 0.935484 0.176305 0.180578 0.966002 0.184881 0.378246 -0.924497 0.047090 -0.820521 -0.543229 0.177770 0.517624 -0.628956 0.580035 0.378246 -0.924497 0.047090 -0.839259 -0.531632 0.113895 -0.820521 -0.543229 0.177770 -0.839259 -0.531632 0.113895 -0.848720 0.524064 -0.070803 -0.820521 -0.543229 0.177770 -0.839259 -0.531632 0.113895 -0.711356 0.685903 0.153264 -0.848720 0.524064 -0.070803 0.979827 -0.105380 0.169683 0.378246 -0.924497 0.047090 0.973174 -0.073336 0.217994 0.973174 -0.073336 0.217994 0.378246 -0.924497 0.047090 0.517624 -0.628956 0.580035 0.306192 0.935484 0.176305 0.979827 -0.105380 0.169683 0.180578 0.966002 0.184881 0.180578 0.966002 0.184881 0.979827 -0.105380 0.169683 0.973174 -0.073336 0.217994 -0.690237 0.643178 0.331462 0.306192 0.935484 0.176305 -0.711356 0.685903 0.153264 -0.690237 0.643178 0.331462 0.536882 0.819117 0.201910 0.306192 0.935484 0.176305 0.172857 -0.980834 0.089724 -0.839259 -0.531632 0.113895 0.378246 -0.924497 0.047090 0.172857 -0.980834 0.089724 -0.814539 -0.574786 0.078188 -0.839259 -0.531632 0.113895 -0.814539 -0.574786 0.078188 -0.690237 0.643178 0.331462 -0.839259 -0.531632 0.113895 -0.839259 -0.531632 0.113895 -0.690237 0.643178 0.331462 -0.711356 0.685903 0.153264 0.988983 -0.144261 0.032411 0.172857 -0.980834 0.089724 0.979827 -0.105380 0.169683 0.979827 -0.105380 0.169683 0.172857 -0.980834 0.089724 0.378246 -0.924497 0.047090 0.536882 0.819117 0.201910 0.979827 -0.105380 0.169683 0.306192 0.935484 0.176305 0.536882 0.819117 0.201910 0.988983 -0.144261 0.032411 0.979827 -0.105380 0.169683 -0.675039 0.565355 -0.473952 0.536882 0.819117 0.201910 -0.690237 0.643178 0.331462 -0.675039 0.565355 -0.473952 0.502243 0.864376 -0.023041 0.536882 0.819117 0.201910 0.637013 -0.767907 0.067232 -0.082156 -0.912076 -0.401624 0.172857 -0.980834 0.089724 0.172857 -0.980834 0.089724 -0.082156 -0.912076 -0.401624 -0.814539 -0.574786 0.078188 -0.082156 -0.912076 -0.401624 -0.675039 0.565355 -0.473952 -0.814539 -0.574786 0.078188 -0.814539 -0.574786 0.078188 -0.675039 0.565355 -0.473952 -0.690237 0.643178 0.331462 0.971282 0.124454 0.202734 0.637013 -0.767907 0.067232 0.988983 -0.144261 0.032411 0.988983 -0.144261 0.032411 0.637013 -0.767907 0.067232 0.172857 -0.980834 0.089724 0.502243 0.864376 -0.023041 0.988983 -0.144261 0.032411 0.536882 0.819117 0.201910 0.502243 0.864376 -0.023041 0.971282 0.124454 0.202734 0.988983 -0.144261 0.032411 -0.675039 0.565355 -0.473952 -0.082156 -0.912076 -0.401624 0.000000 0.012329 -0.999908 0.000000 0.012329 -0.999908 -0.082156 -0.912076 -0.401624 0.000000 -0.828303 -0.560259 0.207007 -0.977874 -0.029298 0.000000 -0.997131 -0.075411 -0.082156 -0.912076 -0.401624 -0.082156 -0.912076 -0.401624 0.000000 -0.997131 -0.075411 0.000000 -0.828303 -0.560259 0.000000 0.993286 -0.115574 -0.675039 0.565355 -0.473952 0.000000 0.012329 -0.999908 0.000000 0.993286 -0.115574 0.033937 0.998840 0.034028 -0.675039 0.565355 -0.473952 0.986267 -0.091617 0.137211 0.637013 -0.767907 0.067232 0.971282 0.124454 0.202734 0.986267 -0.091617 0.137211 0.714438 -0.692892 0.097262 0.637013 -0.767907 0.067232 0.783013 0.607440 0.133610 0.971282 0.124454 0.202734 0.502243 0.864376 -0.023041 0.783013 0.607440 0.133610 0.986267 -0.091617 0.137211 0.971282 0.124454 0.202734 0.294565 -0.955229 0.027039 0.000000 -0.997131 -0.075411 0.207007 -0.977874 -0.029298 0.294565 -0.955229 0.027039 0.000000 -0.999786 0.020478 0.000000 -0.997131 -0.075411 0.714438 -0.692892 0.097262 0.207007 -0.977874 -0.029298 0.637013 -0.767907 0.067232 0.714438 -0.692892 0.097262 0.294565 -0.955229 0.027039 0.207007 -0.977874 -0.029298 0.000000 0.995086 -0.098849 0.293771 0.954375 0.053438 0.000000 0.993286 -0.115574 0.000000 0.993286 -0.115574 0.293771 0.954375 0.053438 0.033937 0.998840 0.034028 0.293771 0.954375 0.053438 0.783013 0.607440 0.133610 0.033937 0.998840 0.034028 0.033937 0.998840 0.034028 0.783013 0.607440 0.133610 0.502243 0.864376 -0.023041 0.305032 -0.077059 0.949187 0.382305 -0.464370 0.798853 0.345897 -0.087130 0.934202 0.345897 -0.087130 0.934202 0.382305 -0.464370 0.798853 0.497696 -0.826014 0.264534 0.352886 0.490829 0.796564 0.345897 -0.087130 0.934202 0.281014 0.876736 0.390271 0.352886 0.490829 0.796564 0.305032 -0.077059 0.949187 0.345897 -0.087130 0.934202 0.345897 -0.087130 0.934202 0.017853 -0.829279 0.558489 0.017487 -0.076327 0.996918 0.345897 -0.087130 0.934202 0.497696 -0.826014 0.264534 0.017853 -0.829279 0.558489 0.281014 0.876736 0.390271 0.345897 -0.087130 0.934202 -0.041139 0.739006 0.672414 -0.041139 0.739006 0.672414 0.345897 -0.087130 0.934202 0.017487 -0.076327 0.996918 0.708762 -0.305368 0.635884 0.382305 -0.464370 0.798853 0.305032 -0.077059 0.949187 0.708762 -0.305368 0.635884 0.514664 -0.620502 0.591662 0.382305 -0.464370 0.798853 0.305032 -0.077059 0.949187 0.543290 0.441328 0.714133 0.708762 -0.305368 0.635884 0.305032 -0.077059 0.949187 0.352886 0.490829 0.796564 0.543290 0.441328 0.714133 0.986267 -0.091617 0.137211 0.783013 0.607440 0.133610 0.958098 0.073672 -0.276681 0.958098 0.073672 -0.276681 0.783013 0.607440 0.133610 0.724174 0.625904 -0.289438 0.714438 -0.692892 0.097262 0.986267 -0.091617 0.137211 0.862758 -0.425550 -0.272958 0.862758 -0.425550 -0.272958 0.986267 -0.091617 0.137211 0.958098 0.073672 -0.276681 0.502792 -0.767479 0.397687 0.710746 -0.693289 -0.118870 0.497696 -0.826014 0.264534 0.497696 -0.826014 0.264534 0.710746 -0.693289 -0.118870 0.639851 -0.370403 -0.673299 -0.169897 0.662221 -0.729789 0.639851 -0.370403 -0.673299 0.612140 0.675222 -0.411451 -0.169897 0.662221 -0.729789 -0.083438 -0.839381 -0.537065 0.639851 -0.370403 -0.673299 0.017853 -0.829279 0.558489 0.497696 -0.826014 0.264534 -0.083438 -0.839381 -0.537065 -0.083438 -0.839381 -0.537065 0.497696 -0.826014 0.264534 0.639851 -0.370403 -0.673299 0.612140 0.675222 -0.411451 0.281014 0.876736 0.390271 -0.169897 0.662221 -0.729789 -0.169897 0.662221 -0.729789 0.281014 0.876736 0.390271 -0.041139 0.739006 0.672414 0.294565 -0.955229 0.027039 0.714438 -0.692892 0.097262 0.425764 -0.868984 -0.252113 0.425764 -0.868984 -0.252113 0.714438 -0.692892 0.097262 0.862758 -0.425550 -0.272958 0.000000 -0.999786 0.020478 0.425764 -0.868984 -0.252113 0.000000 -0.935606 -0.352977 0.000000 -0.999786 0.020478 0.294565 -0.955229 0.027039 0.425764 -0.868984 -0.252113 0.425764 -0.868984 -0.252113 0.710746 -0.693289 -0.118870 0.107639 -0.993286 -0.041597 0.425764 -0.868984 -0.252113 0.862758 -0.425550 -0.272958 0.710746 -0.693289 -0.118870 0.000000 -0.935606 -0.352977 0.107639 -0.993286 -0.041597 0.000000 -0.999786 0.019715 0.000000 -0.935606 -0.352977 0.425764 -0.868984 -0.252113 0.107639 -0.993286 -0.041597 0.293771 0.954375 0.053438 0.000000 0.995086 -0.098849 0.337443 0.885983 -0.317972 0.337443 0.885983 -0.317972 0.000000 0.995086 -0.098849 0.000000 0.948515 -0.316721 0.783013 0.607440 0.133610 0.293771 0.954375 0.053438 0.724174 0.625904 -0.289438 0.724174 0.625904 -0.289438 0.293771 0.954375 0.053438 0.337443 0.885983 -0.317972 0.337443 0.885983 -0.317972 0.000000 0.948515 -0.316721 0.293802 0.949339 -0.111423 0.293802 0.949339 -0.111423 0.000000 0.948515 -0.316721 0.000000 0.999329 0.036103 0.724174 0.625904 -0.289438 0.337443 0.885983 -0.317972 0.612140 0.675222 -0.411451 0.612140 0.675222 -0.411451 0.337443 0.885983 -0.317972 0.293802 0.949339 -0.111423 0.107639 -0.993286 -0.041597 0.710746 -0.693289 -0.118870 0.210486 -0.760857 0.613788 0.210486 -0.760857 0.613788 0.710746 -0.693289 -0.118870 0.502792 -0.767479 0.397687 0.000000 -0.999786 0.019715 0.107639 -0.993286 -0.041597 -0.000549 -0.876461 0.481429 -0.000549 -0.876461 0.481429 0.107639 -0.993286 -0.041597 0.210486 -0.760857 0.613788 0.293802 0.949339 -0.111423 0.000000 0.999329 0.036103 0.183020 0.847316 0.498489 0.183020 0.847316 0.498489 0.000000 0.999329 0.036103 -0.079928 0.870418 0.485733 0.612140 0.675222 -0.411451 0.293802 0.949339 -0.111423 0.400952 0.891446 0.211005 0.400952 0.891446 0.211005 0.293802 0.949339 -0.111423 0.183020 0.847316 0.498489 -0.000549 -0.876461 0.481429 0.210486 -0.760857 0.613788 -0.000031 -0.909146 0.416456 -0.000031 -0.909146 0.416456 0.210486 -0.760857 0.613788 0.514664 -0.620502 0.591662 0.183020 0.847316 0.498489 0.007233 0.890500 0.454848 0.543290 0.441328 0.714133 0.183020 0.847316 0.498489 -0.079928 0.870418 0.485733 0.007233 0.890500 0.454848 0.543290 0.441328 0.714133 0.352886 0.490829 0.796564 0.183020 0.847316 0.498489 0.183020 0.847316 0.498489 0.352886 0.490829 0.796564 0.400952 0.891446 0.211005 0.002869 -0.930570 0.366070 -0.668294 -0.031465 0.743217 -0.406018 -0.913511 0.024354 0.002869 -0.930570 0.366070 -0.128208 0.035157 0.991119 -0.668294 -0.031465 0.743217 -0.107913 -0.499954 0.859279 0.156590 -0.073519 0.984893 0.002869 -0.930570 0.366070 0.002869 -0.930570 0.366070 0.156590 -0.073519 0.984893 -0.128208 0.035157 0.991119 -0.128208 0.035157 0.991119 -0.060030 0.859066 0.508286 -0.668294 -0.031465 0.743217 -0.668294 -0.031465 0.743217 -0.060030 0.859066 0.508286 -0.393231 0.878842 0.270119 0.156590 -0.073519 0.984893 0.111118 0.817377 0.565264 -0.128208 0.035157 0.991119 -0.128208 0.035157 0.991119 0.111118 0.817377 0.565264 -0.060030 0.859066 0.508286 0.009125 0.633931 -0.773309 -0.609272 -0.324046 -0.723716 -0.801538 0.426466 -0.419050 0.009125 0.633931 -0.773309 0.020966 -0.530503 -0.847407 -0.609272 -0.324046 -0.723716 0.058565 0.731040 -0.679769 0.020966 -0.530503 -0.847407 0.009125 0.633931 -0.773309 0.058565 0.731040 -0.679769 -0.390088 -0.125095 -0.912198 0.020966 -0.530503 -0.847407 0.020966 -0.530503 -0.847407 -0.406018 -0.913511 0.024354 -0.609272 -0.324046 -0.723716 0.020966 -0.530503 -0.847407 0.002869 -0.930570 0.366070 -0.406018 -0.913511 0.024354 -0.390088 -0.125095 -0.912198 0.002869 -0.930570 0.366070 0.020966 -0.530503 -0.847407 -0.390088 -0.125095 -0.912198 -0.107913 -0.499954 0.859279 0.002869 -0.930570 0.366070 -0.060030 0.859066 0.508286 0.009125 0.633931 -0.773309 -0.393231 0.878842 0.270119 -0.393231 0.878842 0.270119 0.009125 0.633931 -0.773309 -0.801538 0.426466 -0.419050 0.111118 0.817377 0.565264 0.058565 0.731040 -0.679769 -0.060030 0.859066 0.508286 -0.060030 0.859066 0.508286 0.058565 0.731040 -0.679769 0.009125 0.633931 -0.773309 -0.055361 -0.600116 -0.797967 -0.115940 -0.864772 0.488571 -0.883206 -0.102939 -0.457472 -0.883206 -0.102939 -0.457472 -0.115940 -0.864772 0.488571 -0.728477 0.263649 0.632252 -0.199591 0.108798 0.973815 -0.115940 -0.864772 0.488571 0.590136 -0.661275 0.463027 -0.199591 0.108798 0.973815 -0.728477 0.263649 0.632252 -0.115940 -0.864772 0.488571 -0.738456 0.656819 -0.152379 -0.728477 0.263649 0.632252 -0.199591 0.108798 0.973815 -0.738456 0.656819 -0.152379 -0.883206 -0.102939 -0.457472 -0.728477 0.263649 0.632252 -0.053713 -0.065615 -0.996368 -0.055361 -0.600116 -0.797967 -0.738456 0.656819 -0.152379 -0.738456 0.656819 -0.152379 -0.055361 -0.600116 -0.797967 -0.883206 -0.102939 -0.457472 0.590136 -0.661275 0.463027 -0.055361 -0.600116 -0.797967 -0.053713 -0.065615 -0.996368 0.590136 -0.661275 0.463027 -0.115940 -0.864772 0.488571 -0.055361 -0.600116 -0.797967 -0.107913 -0.499954 0.859279 0.590136 -0.661275 0.463027 0.263649 -0.792077 0.550523 -0.107913 -0.499954 0.859279 -0.199591 0.108798 0.973815 0.590136 -0.661275 0.463027 -0.390088 -0.125095 -0.912198 -0.738456 0.656819 -0.152379 -0.107913 -0.499954 0.859279 -0.107913 -0.499954 0.859279 -0.738456 0.656819 -0.152379 -0.199591 0.108798 0.973815 0.130345 -0.674001 -0.727103 -0.053713 -0.065615 -0.996368 -0.390088 -0.125095 -0.912198 -0.390088 -0.125095 -0.912198 -0.053713 -0.065615 -0.996368 -0.738456 0.656819 -0.152379 0.263649 -0.792077 0.550523 0.590136 -0.661275 0.463027 0.130345 -0.674001 -0.727103 0.130345 -0.674001 -0.727103 0.590136 -0.661275 0.463027 -0.053713 -0.065615 -0.996368 -0.801538 0.426466 -0.419050 -0.609272 -0.324046 -0.723716 -0.668294 -0.031465 0.743217 -0.668294 -0.031465 0.743217 -0.609272 -0.324046 -0.723716 -0.406018 -0.913511 0.024354 0.151402 -0.306833 0.939634 -0.107913 -0.499954 0.859279 0.263649 -0.792077 0.550523 0.151402 -0.306833 0.939634 0.156590 -0.073519 0.984893 -0.107913 -0.499954 0.859279 0.166692 0.838435 0.518845 0.156590 -0.073519 0.984893 0.151402 -0.306833 0.939634 0.166692 0.838435 0.518845 0.111118 0.817377 0.565264 0.156590 -0.073519 0.984893 0.130345 -0.674001 -0.727103 -0.390088 -0.125095 -0.912198 -0.138340 0.542528 -0.828547 -0.138340 0.542528 -0.828547 -0.390088 -0.125095 -0.912198 0.058565 0.731040 -0.679769 -0.138340 0.542528 -0.828547 0.058565 0.731040 -0.679769 0.166692 0.838435 0.518845 0.166692 0.838435 0.518845 0.058565 0.731040 -0.679769 0.111118 0.817377 0.565264 0.001160 0.022187 0.999725 0.151402 -0.306833 0.939634 0.024781 -0.959044 0.282144 0.024781 -0.959044 0.282144 0.151402 -0.306833 0.939634 0.263649 -0.792077 0.550523 0.093265 0.949797 0.298593 0.166692 0.838435 0.518845 0.001160 0.022187 0.999725 0.001160 0.022187 0.999725 0.166692 0.838435 0.518845 0.151402 -0.306833 0.939634 0.103336 -0.450545 -0.886715 -0.138340 0.542528 -0.828547 0.153813 0.660939 -0.734489 0.103336 -0.450545 -0.886715 0.130345 -0.674001 -0.727103 -0.138340 0.542528 -0.828547 0.024781 -0.959044 0.282144 0.130345 -0.674001 -0.727103 0.103336 -0.450545 -0.886715 0.024781 -0.959044 0.282144 0.263649 -0.792077 0.550523 0.130345 -0.674001 -0.727103 0.153813 0.660939 -0.734489 -0.138340 0.542528 -0.828547 0.093265 0.949797 0.298593 0.093265 0.949797 0.298593 -0.138340 0.542528 -0.828547 0.166692 0.838435 0.518845 -0.017487 -0.076327 0.996918 0.001160 0.022187 0.999725 -0.017853 -0.829279 0.558489 -0.017853 -0.829279 0.558489 0.001160 0.022187 0.999725 0.024781 -0.959044 0.282144 0.041139 0.739006 0.672414 0.001160 0.022187 0.999725 -0.017487 -0.076327 0.996918 0.041139 0.739006 0.672414 0.093265 0.949797 0.298593 0.001160 0.022187 0.999725 0.083438 -0.839381 -0.537065 0.103336 -0.450545 -0.886715 0.169897 0.662221 -0.729789 0.169897 0.662221 -0.729789 0.103336 -0.450545 -0.886715 0.153813 0.660939 -0.734489 -0.017853 -0.829279 0.558489 0.024781 -0.959044 0.282144 0.083438 -0.839381 -0.537065 0.083438 -0.839381 -0.537065 0.024781 -0.959044 0.282144 0.103336 -0.450545 -0.886715 0.169897 0.662221 -0.729789 0.093265 0.949797 0.298593 0.041139 0.739006 0.672414 0.169897 0.662221 -0.729789 0.153813 0.660939 -0.734489 0.093265 0.949797 0.298593 -0.587603 0.638905 -0.496445 0.536729 0.050081 -0.842250 -0.513291 -0.324870 -0.794305 -0.513291 -0.324870 -0.794305 0.536729 0.050081 -0.842250 0.612476 -0.696707 -0.373363 0.957518 0.180792 0.224616 0.794641 0.558214 -0.238502 0.439192 0.762261 0.475417 0.957518 0.180792 0.224616 0.536729 0.050081 -0.842250 0.794641 0.558214 -0.238502 -0.804193 -0.431654 0.408490 0.612476 -0.696707 -0.373363 0.521256 -0.435316 0.734001 -0.804193 -0.431654 0.408490 -0.513291 -0.324870 -0.794305 0.612476 -0.696707 -0.373363 0.521256 -0.435316 0.734001 0.612476 -0.696707 -0.373363 0.957518 0.180792 0.224616 0.957518 0.180792 0.224616 0.612476 -0.696707 -0.373363 0.536729 0.050081 -0.842250 -0.638234 0.557207 0.531175 -0.587603 0.638905 -0.496445 -0.804193 -0.431654 0.408490 -0.804193 -0.431654 0.408490 -0.587603 0.638905 -0.496445 -0.513291 -0.324870 -0.794305 0.439192 0.762261 0.475417 -0.587603 0.638905 -0.496445 -0.638234 0.557207 0.531175 0.439192 0.762261 0.475417 0.794641 0.558214 -0.238502 -0.587603 0.638905 -0.496445 0.908292 0.412763 0.067934 0.957518 0.180792 0.224616 0.425611 0.700858 0.572375 0.425611 0.700858 0.572375 0.957518 0.180792 0.224616 0.439192 0.762261 0.475417 -0.543870 -0.204016 0.813959 0.521256 -0.435316 0.734001 0.698813 -0.222144 0.679891 -0.543870 -0.204016 0.813959 -0.804193 -0.431654 0.408490 0.521256 -0.435316 0.734001 0.698813 -0.222144 0.679891 0.957518 0.180792 0.224616 0.908292 0.412763 0.067934 0.698813 -0.222144 0.679891 0.521256 -0.435316 0.734001 0.957518 0.180792 0.224616 -0.772637 0.297647 0.560717 -0.638234 0.557207 0.531175 -0.543870 -0.204016 0.813959 -0.543870 -0.204016 0.813959 -0.638234 0.557207 0.531175 -0.804193 -0.431654 0.408490 0.425611 0.700858 0.572375 -0.638234 0.557207 0.531175 -0.772637 0.297647 0.560717 0.425611 0.700858 0.572375 0.439192 0.762261 0.475417 -0.638234 0.557207 0.531175 0.848720 0.524064 -0.070803 0.908292 0.412763 0.067934 -0.180578 0.966002 0.184881 -0.180578 0.966002 0.184881 0.908292 0.412763 0.067934 0.425611 0.700858 0.572375 -0.517624 -0.628956 0.580035 0.698813 -0.222144 0.679891 0.820521 -0.543229 0.177770 -0.517624 -0.628956 0.580035 -0.543870 -0.204016 0.813959 0.698813 -0.222144 0.679891 0.820521 -0.543229 0.177770 0.908292 0.412763 0.067934 0.848720 0.524064 -0.070803 0.820521 -0.543229 0.177770 0.698813 -0.222144 0.679891 0.908292 0.412763 0.067934 -0.973174 -0.073336 0.217994 -0.772637 0.297647 0.560717 -0.517624 -0.628956 0.580035 -0.517624 -0.628956 0.580035 -0.772637 0.297647 0.560717 -0.543870 -0.204016 0.813959 -0.180578 0.966002 0.184881 -0.772637 0.297647 0.560717 -0.973174 -0.073336 0.217994 -0.180578 0.966002 0.184881 0.425611 0.700858 0.572375 -0.772637 0.297647 0.560717 0.711356 0.685903 0.153264 0.848720 0.524064 -0.070803 -0.306192 0.935484 0.176305 -0.306192 0.935484 0.176305 0.848720 0.524064 -0.070803 -0.180578 0.966002 0.184881 -0.378246 -0.924497 0.047090 0.820521 -0.543229 0.177770 0.839259 -0.531632 0.113895 -0.378246 -0.924497 0.047090 -0.517624 -0.628956 0.580035 0.820521 -0.543229 0.177770 0.839259 -0.531632 0.113895 0.848720 0.524064 -0.070803 0.711356 0.685903 0.153264 0.839259 -0.531632 0.113895 0.820521 -0.543229 0.177770 0.848720 0.524064 -0.070803 -0.979827 -0.105380 0.169683 -0.973174 -0.073336 0.217994 -0.378246 -0.924497 0.047090 -0.378246 -0.924497 0.047090 -0.973174 -0.073336 0.217994 -0.517624 -0.628956 0.580035 -0.306192 0.935484 0.176305 -0.180578 0.966002 0.184881 -0.979827 -0.105380 0.169683 -0.979827 -0.105380 0.169683 -0.180578 0.966002 0.184881 -0.973174 -0.073336 0.217994 0.690237 0.643178 0.331431 -0.306192 0.935484 0.176305 -0.536882 0.819117 0.201910 0.690237 0.643178 0.331431 0.711356 0.685903 0.153264 -0.306192 0.935484 0.176305 -0.172887 -0.980834 0.089724 0.839259 -0.531632 0.113895 0.814539 -0.574816 0.078066 -0.172887 -0.980834 0.089724 -0.378246 -0.924497 0.047090 0.839259 -0.531632 0.113895 0.814539 -0.574816 0.078066 0.839259 -0.531632 0.113895 0.690237 0.643178 0.331431 0.690237 0.643178 0.331431 0.839259 -0.531632 0.113895 0.711356 0.685903 0.153264 -0.988983 -0.144230 0.032563 -0.979827 -0.105380 0.169683 -0.172887 -0.980834 0.089724 -0.172887 -0.980834 0.089724 -0.979827 -0.105380 0.169683 -0.378246 -0.924497 0.047090 -0.536882 0.819117 0.201910 -0.979827 -0.105380 0.169683 -0.988983 -0.144230 0.032563 -0.536882 0.819117 0.201910 -0.306192 0.935484 0.176305 -0.979827 -0.105380 0.169683 0.675008 0.565355 -0.474044 -0.536882 0.819117 0.201910 -0.502213 0.864406 -0.023072 0.675008 0.565355 -0.474044 0.690237 0.643178 0.331431 -0.536882 0.819117 0.201910 -0.637013 -0.767907 0.067019 -0.172887 -0.980834 0.089724 0.082125 -0.912076 -0.401685 0.082125 -0.912076 -0.401685 -0.172887 -0.980834 0.089724 0.814539 -0.574816 0.078066 0.082125 -0.912076 -0.401685 0.814539 -0.574816 0.078066 0.675008 0.565355 -0.474044 0.675008 0.565355 -0.474044 0.814539 -0.574816 0.078066 0.690237 0.643178 0.331431 -0.971313 0.124424 0.202490 -0.988983 -0.144230 0.032563 -0.637013 -0.767907 0.067019 -0.637013 -0.767907 0.067019 -0.988983 -0.144230 0.032563 -0.172887 -0.980834 0.089724 -0.502213 0.864406 -0.023072 -0.988983 -0.144230 0.032563 -0.971313 0.124424 0.202490 -0.502213 0.864406 -0.023072 -0.536882 0.819117 0.201910 -0.988983 -0.144230 0.032563 0.675008 0.565355 -0.474044 0.000000 0.012329 -0.999908 0.082125 -0.912076 -0.401685 0.082125 -0.912076 -0.401685 0.000000 0.012329 -0.999908 0.000000 -0.828303 -0.560259 -0.207007 -0.977874 -0.029389 0.082125 -0.912076 -0.401685 0.000000 -0.997131 -0.075411 0.000000 -0.997131 -0.075411 0.082125 -0.912076 -0.401685 0.000000 -0.828303 -0.560259 0.000000 0.993286 -0.115574 0.675008 0.565355 -0.474044 -0.033876 0.998840 0.033937 0.000000 0.993286 -0.115574 0.000000 0.012329 -0.999908 0.675008 0.565355 -0.474044 -0.986328 -0.091647 0.136876 -0.637013 -0.767907 0.067019 -0.714469 -0.692892 0.097049 -0.986328 -0.091647 0.136876 -0.971313 0.124424 0.202490 -0.637013 -0.767907 0.067019 -0.783044 0.607471 0.133427 -0.971313 0.124424 0.202490 -0.986328 -0.091647 0.136876 -0.783044 0.607471 0.133427 -0.502213 0.864406 -0.023072 -0.971313 0.124424 0.202490 -0.294565 -0.955229 0.026948 0.000000 -0.997131 -0.075411 0.000000 -0.999786 0.020478 -0.294565 -0.955229 0.026948 -0.207007 -0.977874 -0.029389 0.000000 -0.997131 -0.075411 -0.714469 -0.692892 0.097049 -0.207007 -0.977874 -0.029389 -0.294565 -0.955229 0.026948 -0.714469 -0.692892 0.097049 -0.637013 -0.767907 0.067019 -0.207007 -0.977874 -0.029389 0.000000 0.995086 -0.098849 0.000000 0.993286 -0.115574 -0.293741 0.954375 0.053407 -0.293741 0.954375 0.053407 0.000000 0.993286 -0.115574 -0.033876 0.998840 0.033937 -0.293741 0.954375 0.053407 -0.033876 0.998840 0.033937 -0.783044 0.607471 0.133427 -0.783044 0.607471 0.133427 -0.033876 0.998840 0.033937 -0.502213 0.864406 -0.023072 -0.301523 -0.076998 0.950316 -0.345897 -0.087130 0.934202 -0.380627 -0.463881 0.799921 -0.380627 -0.463881 0.799921 -0.345897 -0.087130 0.934202 -0.497696 -0.826014 0.264534 -0.350749 0.490341 0.797784 -0.345897 -0.087130 0.934202 -0.301523 -0.076998 0.950316 -0.350749 0.490341 0.797784 -0.281014 0.876736 0.390271 -0.345897 -0.087130 0.934202 -0.345897 -0.087130 0.934202 -0.017853 -0.829279 0.558489 -0.497696 -0.826014 0.264534 -0.345897 -0.087130 0.934202 -0.017487 -0.076327 0.996918 -0.017853 -0.829279 0.558489 -0.281014 0.876736 0.390271 0.041139 0.739006 0.672414 -0.345897 -0.087130 0.934202 -0.345897 -0.087130 0.934202 0.041139 0.739006 0.672414 -0.017487 -0.076327 0.996918 -0.698782 -0.310556 0.644337 -0.380627 -0.463881 0.799921 -0.510330 -0.615497 0.600574 -0.698782 -0.310556 0.644337 -0.301523 -0.076998 0.950316 -0.380627 -0.463881 0.799921 -0.301523 -0.076998 0.950316 -0.482528 0.504898 0.715659 -0.350749 0.490341 0.797784 -0.301523 -0.076998 0.950316 -0.698782 -0.310556 0.644337 -0.482528 0.504898 0.715659 -0.986328 -0.091647 0.136876 -0.958098 0.073672 -0.276681 -0.783044 0.607471 0.133427 -0.783044 0.607471 0.133427 -0.958098 0.073672 -0.276681 -0.724174 0.625904 -0.289438 -0.714469 -0.692892 0.097049 -0.862758 -0.425550 -0.272958 -0.986328 -0.091647 0.136876 -0.986328 -0.091647 0.136876 -0.862758 -0.425550 -0.272958 -0.958098 0.073672 -0.276681 -0.502792 -0.767479 0.397687 -0.497696 -0.826014 0.264534 -0.710746 -0.693289 -0.118870 -0.710746 -0.693289 -0.118870 -0.497696 -0.826014 0.264534 -0.639851 -0.370403 -0.673299 0.169897 0.662221 -0.729789 -0.639851 -0.370403 -0.673299 0.083438 -0.839381 -0.537065 0.169897 0.662221 -0.729789 -0.612140 0.675222 -0.411451 -0.639851 -0.370403 -0.673299 -0.017853 -0.829279 0.558489 0.083438 -0.839381 -0.537065 -0.497696 -0.826014 0.264534 -0.497696 -0.826014 0.264534 0.083438 -0.839381 -0.537065 -0.639851 -0.370403 -0.673299 -0.612140 0.675222 -0.411451 0.169897 0.662221 -0.729789 -0.281014 0.876736 0.390271 -0.281014 0.876736 0.390271 0.169897 0.662221 -0.729789 0.041139 0.739006 0.672414 -0.294565 -0.955229 0.026948 -0.425764 -0.868984 -0.252113 -0.714469 -0.692892 0.097049 -0.714469 -0.692892 0.097049 -0.425764 -0.868984 -0.252113 -0.862758 -0.425550 -0.272958 0.000000 -0.999786 0.020478 -0.425764 -0.868984 -0.252113 -0.294565 -0.955229 0.026948 0.000000 -0.999786 0.020478 0.000000 -0.935606 -0.352977 -0.425764 -0.868984 -0.252113 -0.425764 -0.868984 -0.252113 -0.710746 -0.693289 -0.118870 -0.862758 -0.425550 -0.272958 -0.425764 -0.868984 -0.252113 -0.107639 -0.993286 -0.041597 -0.710746 -0.693289 -0.118870 0.000000 -0.935606 -0.352977 -0.107639 -0.993286 -0.041597 -0.425764 -0.868984 -0.252113 0.000000 -0.935606 -0.352977 0.000000 -0.999786 0.019715 -0.107639 -0.993286 -0.041597 -0.293741 0.954375 0.053407 -0.337443 0.885983 -0.317972 0.000000 0.995086 -0.098849 0.000000 0.995086 -0.098849 -0.337443 0.885983 -0.317972 0.000000 0.948515 -0.316721 -0.783044 0.607471 0.133427 -0.724174 0.625904 -0.289438 -0.293741 0.954375 0.053407 -0.293741 0.954375 0.053407 -0.724174 0.625904 -0.289438 -0.337443 0.885983 -0.317972 -0.337443 0.885983 -0.317972 -0.293802 0.949339 -0.111423 0.000000 0.948515 -0.316721 0.000000 0.948515 -0.316721 -0.293802 0.949339 -0.111423 0.000000 0.999329 0.036103 -0.724174 0.625904 -0.289438 -0.612140 0.675222 -0.411451 -0.337443 0.885983 -0.317972 -0.337443 0.885983 -0.317972 -0.612140 0.675222 -0.411451 -0.293802 0.949339 -0.111423 -0.107639 -0.993286 -0.041597 -0.210273 -0.760186 0.614704 -0.710746 -0.693289 -0.118870 -0.710746 -0.693289 -0.118870 -0.210273 -0.760186 0.614704 -0.502792 -0.767479 0.397687 0.000000 -0.999786 0.019715 -0.000549 -0.876461 0.481429 -0.107639 -0.993286 -0.041597 -0.107639 -0.993286 -0.041597 -0.000549 -0.876461 0.481429 -0.210273 -0.760186 0.614704 -0.293802 0.949339 -0.111423 -0.156560 0.856960 0.490982 0.000000 0.999329 0.036103 0.000000 0.999329 0.036103 -0.156560 0.856960 0.490982 -0.079928 0.870418 0.485733 -0.612140 0.675222 -0.411451 -0.400952 0.891446 0.211005 -0.293802 0.949339 -0.111423 -0.293802 0.949339 -0.111423 -0.400952 0.891446 0.211005 -0.156560 0.856960 0.490982 -0.000549 -0.876461 0.481429 -0.000031 -0.909146 0.416456 -0.210273 -0.760186 0.614704 -0.210273 -0.760186 0.614704 -0.000031 -0.909146 0.416456 -0.510330 -0.615497 0.600574 -0.156560 0.856960 0.490982 -0.482528 0.504898 0.715659 -0.079928 0.870418 0.485733 -0.079928 0.870418 0.485733 -0.482528 0.504898 0.715659 0.007233 0.890500 0.454848 -0.482528 0.504898 0.715659 -0.156560 0.856960 0.490982 -0.350749 0.490341 0.797784 -0.350749 0.490341 0.797784 -0.156560 0.856960 0.490982 -0.400952 0.891446 0.211005 -0.513321 -0.853816 0.086306 0.304758 -0.933958 0.186590 -0.564714 -0.823603 -0.052248 0.304758 -0.933958 0.186590 0.220985 -0.974517 0.037721 -0.564714 -0.823603 -0.052248 -0.928465 0.080081 -0.362590 -0.513321 -0.853816 0.086306 -0.564714 -0.823603 -0.052248 -0.928465 0.080081 -0.362590 -0.564714 -0.823603 -0.052248 -0.971282 0.132359 -0.197577 -0.564714 -0.823603 -0.052248 0.220985 -0.974517 0.037721 -0.453352 -0.891232 -0.011353 0.220985 -0.974517 0.037721 0.351970 -0.932798 0.077364 -0.453352 -0.891232 -0.011353 -0.971282 0.132359 -0.197577 -0.564714 -0.823603 -0.052248 -0.453352 -0.891232 -0.011353 -0.971282 0.132359 -0.197577 -0.453352 -0.891232 -0.011353 -0.977447 0.210242 -0.018311 -0.453352 -0.891232 -0.011353 0.351970 -0.932798 0.077364 0.439955 -0.782586 -0.440413 -0.453352 -0.891232 -0.011353 0.439955 -0.782586 -0.440413 -0.554582 -0.804621 -0.212104 -0.977447 0.210242 -0.018311 -0.453352 -0.891232 -0.011353 -0.992767 0.044588 0.111301 -0.453352 -0.891232 -0.011353 -0.554582 -0.804621 -0.212104 -0.992767 0.044588 0.111301 -0.554582 -0.804621 -0.212104 0.439955 -0.782586 -0.440413 -0.469832 -0.882565 -0.017487 0.439955 -0.782586 -0.440413 -0.485549 -0.841060 -0.238350 -0.469832 -0.882565 -0.017487 -0.992767 0.044588 0.111301 -0.554582 -0.804621 -0.212104 -0.918027 -0.037812 0.394665 -0.554582 -0.804621 -0.212104 -0.469832 -0.882565 -0.017487 -0.918027 -0.037812 0.394665 -0.469832 -0.882565 -0.017487 -0.485549 -0.841060 -0.238350 -0.639180 -0.548906 0.538621 -0.485549 -0.841060 -0.238350 -0.678030 -0.734519 0.026856 -0.639180 -0.548906 0.538621 -0.918027 -0.037812 0.394665 -0.469832 -0.882565 -0.017487 -0.639180 -0.548906 0.538621 -0.918027 -0.037812 0.394665 -0.639180 -0.548906 0.538621 -0.319285 -0.118656 0.940184 -0.639180 -0.548906 0.538621 -0.678030 -0.734519 0.026856 -0.569231 -0.472152 0.673055 -0.639180 -0.548906 0.538621 -0.569231 -0.472152 0.673055 -0.488449 -0.264412 0.831538 -0.319285 -0.118656 0.940184 -0.639180 -0.548906 0.538621 -0.488449 -0.264412 0.831538 -0.319285 -0.118656 0.940184 -0.488449 -0.264412 0.831538 -0.520951 -0.005737 0.853542 -0.488449 -0.264412 0.831538 -0.569231 -0.472152 0.673055 -0.368694 -0.279733 0.886441 -0.488449 -0.264412 0.831538 -0.368694 -0.279733 0.886441 -0.525895 -0.169744 0.833399 -0.520951 -0.005737 0.853542 -0.488449 -0.264412 0.831538 -0.525895 -0.169744 0.833399 -0.520951 -0.005737 0.853542 -0.525895 -0.169744 0.833399 -0.472396 0.055940 0.879604 0.964904 -0.060610 0.255409 0.982330 -0.092135 -0.162755 0.590747 -0.791681 0.155644 0.982330 -0.092135 -0.162755 0.962676 -0.268990 -0.029664 0.590747 -0.791681 0.155644 0.590747 -0.791681 0.155644 0.962676 -0.268990 -0.029664 0.916898 -0.397382 0.036836 0.590747 -0.791681 0.155644 0.916898 -0.397382 0.036836 0.643513 -0.733787 -0.217658 0.643513 -0.733787 -0.217658 0.916898 -0.397382 0.036836 0.989105 -0.144963 0.025178 0.643513 -0.733787 -0.217658 0.989105 -0.144963 0.025178 0.902768 -0.401563 -0.153905 0.902768 -0.401563 -0.153905 0.989105 -0.144963 0.025178 0.953887 -0.142521 0.264077 0.902768 -0.401563 -0.153905 0.953887 -0.142521 0.264077 0.678701 -0.734367 0.006745 0.678701 -0.734367 0.006745 0.953887 -0.142521 0.264077 0.627644 -0.638020 0.445998 0.953887 -0.142521 0.264077 0.703360 -0.011750 0.710685 0.627644 -0.638020 0.445998 0.627644 -0.638020 0.445998 0.703360 -0.011750 0.710685 0.388775 -0.268715 0.881252 0.703360 -0.011750 0.710685 0.472427 0.020753 0.881100 0.388775 -0.268715 0.881252 0.388775 -0.268715 0.881252 0.472427 0.020753 0.881100 0.272561 -0.027192 0.961730 0.388775 -0.268715 0.881252 0.272561 -0.027192 0.961730 0.201361 -0.145360 0.968657 0.118900 -0.390973 0.912656 0.388775 -0.268715 0.881252 0.111118 -0.282266 0.952849 0.388775 -0.268715 0.881252 0.201361 -0.145360 0.968657 0.111118 -0.282266 0.952849 0.084872 -0.891171 0.445601 0.627644 -0.638020 0.445998 0.118900 -0.390973 0.912656 0.627644 -0.638020 0.445998 0.388775 -0.268715 0.881252 0.118900 -0.390973 0.912656 0.087130 -0.860042 -0.502670 0.678701 -0.734367 0.006745 0.627644 -0.638020 0.445998 0.087130 -0.860042 -0.502670 0.627644 -0.638020 0.445998 0.084872 -0.891171 0.445601 -0.236763 -0.794122 -0.559709 0.087130 -0.860042 -0.502670 -0.378307 -0.916471 -0.130100 0.087130 -0.860042 -0.502670 0.084872 -0.891171 0.445601 -0.378307 -0.916471 -0.130100 -0.378307 -0.916471 -0.130100 0.084872 -0.891171 0.445601 -0.342387 -0.501450 0.794519 0.084872 -0.891171 0.445601 0.118900 -0.390973 0.912656 -0.342387 -0.501450 0.794519 -0.342387 -0.501450 0.794519 0.118900 -0.390973 0.912656 -0.135319 -0.332377 0.933378 0.118900 -0.390973 0.912656 0.111118 -0.282266 0.952849 -0.135319 -0.332377 0.933378 -0.569231 -0.472152 0.673055 -0.342387 -0.501450 0.794519 -0.135319 -0.332377 0.933378 -0.569231 -0.472152 0.673055 -0.135319 -0.332377 0.933378 -0.368694 -0.279733 0.886441 -0.678030 -0.734519 0.026856 -0.378307 -0.916471 -0.130100 -0.342387 -0.501450 0.794519 -0.678030 -0.734519 0.026856 -0.342387 -0.501450 0.794519 -0.569231 -0.472152 0.673055 -0.485549 -0.841060 -0.238350 -0.236763 -0.794122 -0.559709 -0.678030 -0.734519 0.026856 -0.236763 -0.794122 -0.559709 -0.378307 -0.916471 -0.130100 -0.678030 -0.734519 0.026856 -0.336894 0.077853 0.938292 -0.520951 -0.005737 0.853542 -0.403058 0.208777 0.891018 -0.520951 -0.005737 0.853542 -0.472396 0.055940 0.879604 -0.403058 0.208777 0.891018 -0.519425 0.376659 0.766991 -0.319285 -0.118656 0.940184 -0.336894 0.077853 0.938292 -0.319285 -0.118656 0.940184 -0.520951 -0.005737 0.853542 -0.336894 0.077853 0.938292 -0.724052 0.587176 0.361888 -0.918027 -0.037812 0.394665 -0.519425 0.376659 0.766991 -0.918027 -0.037812 0.394665 -0.319285 -0.118656 0.940184 -0.519425 0.376659 0.766991 -0.742729 0.667348 0.053987 -0.992767 0.044588 0.111301 -0.724052 0.587176 0.361888 -0.992767 0.044588 0.111301 -0.918027 -0.037812 0.394665 -0.724052 0.587176 0.361888 -0.687155 0.718223 -0.109256 -0.977447 0.210242 -0.018311 -0.742729 0.667348 0.053987 -0.977447 0.210242 -0.018311 -0.992767 0.044588 0.111301 -0.742729 0.667348 0.053987 -0.715354 0.652821 -0.249092 -0.971282 0.132359 -0.197577 -0.977447 0.210242 -0.018311 -0.715354 0.652821 -0.249092 -0.977447 0.210242 -0.018311 -0.687155 0.718223 -0.109256 -0.755089 0.504532 -0.418592 -0.928465 0.080081 -0.362590 -0.971282 0.132359 -0.197577 -0.755089 0.504532 -0.418592 -0.971282 0.132359 -0.197577 -0.715354 0.652821 -0.249092 -0.410443 0.817927 -0.403088 -0.755089 0.504532 -0.418592 -0.715354 0.652821 -0.249092 -0.410443 0.817927 -0.403088 -0.715354 0.652821 -0.249092 -0.277047 0.929563 -0.243171 -0.277047 0.929563 -0.243171 -0.715354 0.652821 -0.249092 -0.687155 0.718223 -0.109256 -0.277047 0.929563 -0.243171 -0.687155 0.718223 -0.109256 -0.255226 0.948515 -0.187445 -0.255226 0.948515 -0.187445 -0.687155 0.718223 -0.109256 -0.742729 0.667348 0.053987 -0.255226 0.948515 -0.187445 -0.742729 0.667348 0.053987 -0.246956 0.966247 0.073122 -0.246956 0.966247 0.073122 -0.742729 0.667348 0.053987 -0.350810 0.868038 0.351299 -0.742729 0.667348 0.053987 -0.724052 0.587176 0.361888 -0.350810 0.868038 0.351299 -0.350810 0.868038 0.351299 -0.724052 0.587176 0.361888 -0.201697 0.708060 0.676687 -0.724052 0.587176 0.361888 -0.519425 0.376659 0.766991 -0.201697 0.708060 0.676687 -0.201697 0.708060 0.676687 -0.519425 0.376659 0.766991 -0.207587 0.366405 0.906980 -0.519425 0.376659 0.766991 -0.336894 0.077853 0.938292 -0.207587 0.366405 0.906980 -0.207587 0.366405 0.906980 -0.336894 0.077853 0.938292 -0.403058 0.208777 0.891018 -0.207587 0.366405 0.906980 -0.403058 0.208777 0.891018 -0.059786 0.235572 0.970000 0.152623 0.455611 0.876980 -0.207587 0.366405 0.906980 0.090823 0.273415 0.957579 -0.207587 0.366405 0.906980 -0.059786 0.235572 0.970000 0.090823 0.273415 0.957579 0.291818 0.690176 0.662160 -0.201697 0.708060 0.676687 0.152623 0.455611 0.876980 -0.201697 0.708060 0.676687 -0.207587 0.366405 0.906980 0.152623 0.455611 0.876980 0.193213 0.902615 0.384564 -0.350810 0.868038 0.351299 -0.201697 0.708060 0.676687 0.193213 0.902615 0.384564 -0.201697 0.708060 0.676687 0.291818 0.690176 0.662160 0.299234 0.953001 0.046846 -0.246956 0.966247 0.073122 0.193213 0.902615 0.384564 -0.246956 0.966247 0.073122 -0.350810 0.868038 0.351299 0.193213 0.902615 0.384564 0.327921 0.928983 -0.171545 -0.255226 0.948515 -0.187445 0.299234 0.953001 0.046846 -0.255226 0.948515 -0.187445 -0.246956 0.966247 0.073122 0.299234 0.953001 0.046846 0.252235 0.943236 -0.216010 -0.277047 0.929563 -0.243171 -0.255226 0.948515 -0.187445 0.252235 0.943236 -0.216010 -0.255226 0.948515 -0.187445 0.327921 0.928983 -0.171545 0.121860 0.949705 -0.288400 -0.410443 0.817927 -0.403088 -0.277047 0.929563 -0.243171 0.121860 0.949705 -0.288400 -0.277047 0.929563 -0.243171 0.252235 0.943236 -0.216010 0.529252 0.746788 -0.402661 0.121860 0.949705 -0.288400 0.252235 0.943236 -0.216010 0.529252 0.746788 -0.402661 0.252235 0.943236 -0.216010 0.729270 0.627033 -0.273782 0.729270 0.627033 -0.273782 0.252235 0.943236 -0.216010 0.761803 0.643666 -0.072695 0.252235 0.943236 -0.216010 0.327921 0.928983 -0.171545 0.761803 0.643666 -0.072695 0.761803 0.643666 -0.072695 0.327921 0.928983 -0.171545 0.795740 0.600940 0.075137 0.327921 0.928983 -0.171545 0.299234 0.953001 0.046846 0.795740 0.600940 0.075137 0.795740 0.600940 0.075137 0.299234 0.953001 0.046846 0.725944 0.566424 0.389996 0.299234 0.953001 0.046846 0.193213 0.902615 0.384564 0.725944 0.566424 0.389996 0.725944 0.566424 0.389996 0.193213 0.902615 0.384564 0.291818 0.690176 0.662160 0.725944 0.566424 0.389996 0.291818 0.690176 0.662160 0.603259 0.400220 0.689810 0.603259 0.400220 0.689810 0.291818 0.690176 0.662160 0.152623 0.455611 0.876980 0.603259 0.400220 0.689810 0.152623 0.455611 0.876980 0.394971 0.267006 0.878994 0.394971 0.267006 0.878994 0.152623 0.455611 0.876980 0.090823 0.273415 0.957579 0.394971 0.267006 0.878994 0.090823 0.273415 0.957579 0.232612 0.138768 0.962584 0.472427 0.020753 0.881100 0.394971 0.267006 0.878994 0.232612 0.138768 0.962584 0.472427 0.020753 0.881100 0.232612 0.138768 0.962584 0.272561 -0.027192 0.961730 0.703360 -0.011750 0.710685 0.603259 0.400220 0.689810 0.394971 0.267006 0.878994 0.703360 -0.011750 0.710685 0.394971 0.267006 0.878994 0.472427 0.020753 0.881100 0.953887 -0.142521 0.264077 0.725944 0.566424 0.389996 0.603259 0.400220 0.689810 0.953887 -0.142521 0.264077 0.603259 0.400220 0.689810 0.703360 -0.011750 0.710685 0.989105 -0.144963 0.025178 0.795740 0.600940 0.075137 0.725944 0.566424 0.389996 0.989105 -0.144963 0.025178 0.725944 0.566424 0.389996 0.953887 -0.142521 0.264077 0.916898 -0.397382 0.036836 0.761803 0.643666 -0.072695 0.795740 0.600940 0.075137 0.916898 -0.397382 0.036836 0.795740 0.600940 0.075137 0.989105 -0.144963 0.025178 0.962676 -0.268990 -0.029664 0.729270 0.627033 -0.273782 0.761803 0.643666 -0.072695 0.962676 -0.268990 -0.029664 0.761803 0.643666 -0.072695 0.916898 -0.397382 0.036836 0.982330 -0.092135 -0.162755 0.529252 0.746788 -0.402661 0.729270 0.627033 -0.273782 0.982330 -0.092135 -0.162755 0.729270 0.627033 -0.273782 0.962676 -0.268990 -0.029664

16 0 0 1 1 2

17 3 0 4 16 5

32 6 0 7 17 8

33 9 0 10 32 11

48 12 0 13 33 14

60 15 0 16 49 17

61 18 0 19 60 20

72 21 0 22 61 23

1 24 0 25 72 26

73 27 0 28 48 29

49 30 0 31 73 32

83 33 107 34 86 35

81 36 85 37 103 38

85 39 87 40 103 41

109 42 87 43 89 44

109 45 106 46 87 47

90 48 106 49 109 50

90 51 88 52 106 53

96 54 83 55 86 56

96 57 94 58 83 59

116 60 120 61 117 62

114 63 115 64 119 65

146 66 149 67 147 68

166 69 167 70 170 71

186 72 193 73 220 74

184 75 216 76 192 77

192 78 216 79 196 80

222 81 200 82 196 83

222 84 196 85 219 86

201 87 222 88 219 89

201 90 219 91 197 92

209 93 193 94 186 95

209 96 186 97 207 98

230 99 231 100 236 101

227 102 234 103 228 104

263 105 264 106 266 107

283 108 287 109 284 110

347 111 318 112 301 113

366 114 318 115 347 116

325 117 377 118 347 119

342 120 325 121 347 122

301 123 342 124 347 125

323 126 189 127 310 128

373 129 329 130 372 131

329 132 330 133 372 134

365 135 347 136 348 137

366 138 347 139 365 140

378 141 347 142 377 143

395 144 347 145 378 146

348 147 347 148 395 149

323 150 357 151 189 152

373 153 372 154 382 155

382 156 372 157 383 158

396 159 350 160 401 161

401 162 350 163 393 164

351 165 396 166 392 167

392 168 396 169 401 170

401 171 380 172 400 173

401 174 393 175 380 176

392 177 401 178 381 179

381 180 401 181 400 182

400 183 375 184 399 185

400 186 380 187 375 188

381 189 400 190 374 191

374 192 400 193 399 194

398 195 363 196 397 197

398 198 367 199 363 200

320 201 398 202 362 203

362 204 398 205 397 206

397 207 363 208 396 209

396 210 363 211 350 212

362 213 397 214 351 215

351 216 397 217 396 218

356 219 224 220 205 221

356 222 387 223 224 224

387 225 207 226 224 227

387 228 386 229 207 230

386 231 191 232 207 233

386 234 370 235 191 236

357 237 205 238 189 239

357 240 356 241 205 242

387 243 356 244 388 245

388 246 356 247 355 248

388 249 354 250 389 251

388 252 355 253 354 254

389 255 354 256 390 257

390 258 354 259 353 260

390 261 353 262 391 263

391 264 353 265 352 266

391 267 352 268 392 269

392 270 352 271 351 272

393 273 350 274 394 275

394 276 350 277 349 278

394 279 348 280 395 281

394 282 349 283 348 284

379 285 395 286 378 287

379 288 394 289 395 290

380 291 393 292 379 293

379 294 393 295 394 296

382 297 391 298 381 299

381 300 391 301 392 302

383 303 391 304 382 305

383 306 390 307 391 308

384 309 390 310 383 311

384 312 389 313 390 314

385 315 388 316 384 317

384 318 388 319 389 320

386 321 388 322 385 323

386 324 387 325 388 326

370 327 385 328 324 329

370 330 386 331 385 332

324 333 384 334 371 335

324 336 385 337 384 338

371 339 383 340 372 341

371 342 384 343 383 344

373 345 382 346 374 347

374 348 382 349 381 350

375 351 380 352 376 353

376 354 380 355 379 356

376 357 379 358 377 359

377 360 379 361 378 362

357 363 369 364 358 365

357 366 323 367 369 368

358 369 369 370 359 371

359 372 369 373 368 374

359 375 322 376 360 377

359 378 368 379 322 380

360 381 322 382 361 383

361 384 322 385 321 386

361 387 320 388 362 389

361 390 321 391 320 392

363 393 367 394 364 395

364 396 367 397 319 398

364 399 366 400 365 401

364 402 319 403 366 404

349 405 364 406 348 407

348 408 364 409 365 410

350 411 364 412 349 413

350 414 363 415 364 416

352 417 361 418 351 419

351 420 361 421 362 422

353 423 360 424 352 425

352 426 360 427 361 428

354 429 359 430 353 431

353 432 359 433 360 434

355 435 358 436 354 437

354 438 358 439 359 440

356 441 358 442 355 443

356 444 357 445 358 446

343 447 346 448 303 449

303 450 346 451 340 452

304 453 339 454 343 455

343 456 339 457 346 458

346 459 327 460 340 461

346 462 345 463 327 464

339 465 328 466 346 467

346 468 328 469 345 470

345 471 375 472 327 473

345 474 399 475 375 476

328 477 374 478 345 479

345 480 374 481 399 482

398 483 316 484 367 485

398 486 344 487 316 488

320 489 315 490 398 491

398 492 315 493 344 494

344 495 343 496 316 497

316 498 343 499 303 500

315 501 304 502 344 503

344 504 304 505 343 506

309 507 111 508 334 509

309 510 92 511 111 512

334 513 94 514 333 515

334 516 111 517 94 518

333 519 191 520 370 521

333 522 94 523 191 524

310 525 92 526 309 527

310 528 189 529 92 530

334 531 335 532 309 533

309 534 335 535 308 536

335 537 307 538 308 539

335 540 336 541 307 542

336 543 337 544 307 545

307 546 337 547 306 548

337 549 338 550 306 551

306 552 338 553 305 554

338 555 339 556 305 557

305 558 339 559 304 560

340 561 341 562 303 563

303 564 341 565 302 566

301 567 341 568 342 569

301 570 302 571 341 572

326 573 342 574 341 575

326 576 325 577 342 578

327 579 326 580 340 581

340 582 326 583 341 584

329 585 328 586 338 587

338 588 328 589 339 590

330 591 338 592 337 593

330 594 329 595 338 596

331 597 337 598 336 599

331 600 330 601 337 602

332 603 331 604 335 605

335 606 331 607 336 608

333 609 335 610 334 611

333 612 332 613 335 614

370 615 332 616 333 617

370 618 324 619 332 620

324 621 331 622 332 623

324 624 371 625 331 626

371 627 330 628 331 629

371 630 372 631 330 632

373 633 374 634 329 635

329 636 374 637 328 638

375 639 376 640 327 641

327 642 376 643 326 644

376 645 377 646 326 647

326 648 377 649 325 650

310 651 369 652 323 653

310 654 311 655 369 656

311 657 312 658 369 659

369 660 312 661 368 662

312 663 322 664 368 665

312 666 313 667 322 668

313 669 314 670 322 671

322 672 314 673 321 674

314 675 320 676 321 677

314 678 315 679 320 680

316 681 317 682 367 683

367 684 317 685 319 686

317 687 366 688 319 689

317 690 318 691 366 692

318 693 317 694 301 695

301 696 317 697 302 698

303 699 317 700 316 701

303 702 302 703 317 704

305 705 304 706 314 707

314 708 304 709 315 710

306 711 305 712 313 713

313 714 305 715 314 716

307 717 306 718 312 719

312 720 306 721 313 722

308 723 307 724 311 725

311 726 307 727 312 728

309 729 311 730 310 731

309 732 308 733 311 734

299 735 287 736 300 737

299 738 286 739 287 740

280 741 299 742 282 743

282 744 299 745 300 746

300 747 287 748 296 749

296 750 287 751 283 752

282 753 300 754 278 755

278 756 300 757 296 758

297 759 285 760 298 761

297 762 284 763 285 764

279 765 298 766 281 767

279 768 297 769 298 770

298 771 286 772 299 773

298 774 285 775 286 776

281 777 299 778 280 779

281 780 298 781 299 782

296 783 283 784 297 785

297 786 283 787 284 788

278 789 296 790 279 791

279 792 296 793 297 794

293 795 294 796 292 797

292 798 294 799 295 800

291 801 292 802 295 803

291 804 288 805 292 806

290 807 295 808 294 809

290 810 291 811 295 812

289 813 290 814 293 815

293 816 290 817 294 818

288 819 293 820 292 821

288 822 289 823 293 824

280 825 288 826 291 827

280 828 275 829 288 830

281 831 280 832 290 833

290 834 280 835 291 836

276 837 281 838 289 839

289 840 281 841 290 842

275 843 276 844 288 845

288 846 276 847 289 848

284 849 287 850 285 851

285 852 287 853 286 854

277 855 280 856 282 857

277 858 275 859 280 860

273 861 282 862 278 863

273 864 277 865 282 866

276 867 274 868 281 869

281 870 274 871 279 872

274 873 273 874 279 875

279 876 273 877 278 878

272 879 270 880 277 881

277 882 270 883 275 884

268 885 272 886 273 887

273 888 272 889 277 890

271 891 274 892 276 893

271 894 269 895 274 896

270 897 276 898 275 899

270 900 271 901 276 902

269 903 268 904 274 905

274 906 268 907 273 908

225 909 217 910 272 911

272 912 217 913 270 914

214 915 272 916 268 917

214 918 225 919 272 920

218 921 215 922 271 923

271 924 215 925 269 926

217 927 218 928 270 929

270 930 218 931 271 932

215 933 268 934 269 935

215 936 214 937 268 938

264 939 265 940 266 941

266 942 265 943 267 944

261 945 263 946 266 947

261 948 259 949 263 950

260 951 267 952 265 953

260 954 262 955 267 956

262 957 261 958 267 959

267 960 261 961 266 962

258 963 260 964 264 965

264 966 260 967 265 968

259 969 264 970 263 971

259 972 258 973 264 974

256 975 253 976 261 977

261 978 253 979 259 980

255 981 262 982 260 983

255 984 257 985 262 986

257 987 261 988 262 989

257 990 256 991 261 992

254 993 255 994 258 995

258 996 255 997 260 998

253 999 258 1000 259 1001

253 1002 254 1003 258 1004

252 1005 249 1006 256 1007

256 1008 249 1009 253 1010

250 1011 257 1012 255 1013

250 1014 251 1015 257 1016

251 1017 256 1018 257 1019

251 1020 252 1021 256 1022

248 1023 250 1024 254 1025

254 1026 250 1027 255 1028

249 1029 254 1030 253 1031

249 1032 248 1033 254 1034

247 1035 244 1036 252 1037

252 1038 244 1039 249 1040

245 1041 251 1042 250 1043

245 1044 246 1045 251 1046

246 1047 252 1048 251 1049

246 1050 247 1051 252 1052

243 1053 245 1054 248 1055

248 1056 245 1057 250 1058

244 1059 243 1060 249 1061

249 1062 243 1063 248 1064

242 1065 244 1066 247 1067

242 1068 239 1069 244 1070

240 1071 246 1072 245 1073

240 1074 241 1075 246 1076

241 1077 242 1078 246 1079

246 1080 242 1081 247 1082

238 1083 240 1084 243 1085

243 1086 240 1087 245 1088

239 1089 243 1090 244 1091

239 1092 238 1093 243 1094

234 1095 239 1096 242 1097

234 1098 227 1099 239 1100

230 1101 236 1102 240 1103

240 1104 236 1105 241 1106

236 1107 234 1108 241 1109

241 1110 234 1111 242 1112

233 1113 230 1114 238 1115

238 1116 230 1117 240 1118

227 1119 238 1120 239 1121

227 1122 233 1123 238 1124

234 1125 236 1126 235 1127

235 1128 236 1129 237 1130

231 1131 232 1132 236 1133

236 1134 232 1135 237 1136

229 1137 234 1138 235 1139

229 1140 228 1141 234 1142

221 1143 230 1144 233 1145

221 1146 187 1147 230 1148

185 1149 233 1150 227 1151

185 1152 221 1153 233 1154

206 1155 232 1156 231 1157

206 1158 190 1159 232 1160

187 1161 231 1162 230 1163

187 1164 206 1165 231 1166

188 1167 204 1168 229 1169

229 1170 204 1171 228 1172

204 1173 185 1174 228 1175

228 1176 185 1177 227 1178

223 1179 186 1180 226 1181

226 1182 186 1183 220 1184

184 1185 226 1186 216 1187

184 1188 223 1189 226 1190

226 1191 217 1192 225 1193

226 1194 220 1195 217 1196

216 1197 226 1198 214 1199

214 1200 226 1201 225 1202

224 1203 186 1204 223 1205

224 1206 207 1207 186 1208

223 1209 205 1210 224 1211

223 1212 184 1213 205 1214

221 1215 185 1216 222 1217

222 1218 185 1219 200 1220

187 1221 221 1222 201 1223

201 1224 221 1225 222 1226

193 1227 197 1228 220 1229

220 1230 197 1231 219 1232

215 1233 219 1234 196 1235

215 1236 218 1237 219 1238

217 1239 220 1240 218 1241

218 1242 220 1243 219 1244

196 1245 216 1246 215 1247

215 1248 216 1249 214 1250

206 1251 187 1252 213 1253

213 1254 187 1255 201 1256

190 1257 213 1258 203 1259

190 1260 206 1261 213 1262

213 1263 197 1264 211 1265

213 1266 201 1267 197 1268

203 1269 211 1270 199 1271

203 1272 213 1273 211 1274

204 1275 188 1276 212 1277

212 1278 188 1279 202 1280

185 1281 204 1282 200 1283

200 1284 204 1285 212 1286

212 1287 202 1288 210 1289

210 1290 202 1291 198 1292

200 1293 212 1294 196 1295

196 1296 212 1297 210 1298

211 1299 197 1300 209 1301

209 1302 197 1303 193 1304

199 1305 211 1306 195 1307

195 1308 211 1309 209 1310

210 1311 198 1312 208 1313

208 1314 198 1315 194 1316

196 1317 210 1318 192 1319

192 1320 210 1321 208 1322

195 1323 209 1324 191 1325

191 1326 209 1327 207 1328

208 1329 189 1330 205 1331

208 1332 194 1333 189 1334

205 1335 184 1336 208 1337

208 1338 184 1339 192 1340

182 1341 170 1342 169 1343

182 1344 183 1345 170 1346

163 1347 165 1348 182 1349

182 1350 165 1351 183 1352

183 1353 179 1354 170 1355

170 1356 179 1357 166 1358

165 1359 161 1360 183 1361

183 1362 161 1363 179 1364

180 1365 168 1366 167 1367

180 1368 181 1369 168 1370

162 1371 181 1372 180 1373

162 1374 164 1375 181 1376

181 1377 169 1378 168 1379

181 1380 182 1381 169 1382

164 1383 182 1384 181 1385

164 1386 163 1387 182 1388

179 1389 180 1390 166 1391

166 1392 180 1393 167 1394

161 1395 162 1396 179 1397

179 1398 162 1399 180 1400

176 1401 175 1402 177 1403

177 1404 175 1405 178 1406

174 1407 175 1408 171 1409

174 1410 178 1411 175 1412

173 1413 178 1414 174 1415

173 1416 177 1417 178 1418

172 1419 176 1420 173 1421

173 1422 176 1423 177 1424

171 1425 176 1426 172 1427

171 1428 175 1429 176 1430

163 1431 171 1432 158 1433

163 1434 174 1435 171 1436

164 1437 173 1438 163 1439

163 1440 173 1441 174 1442

159 1443 172 1444 164 1445

164 1446 172 1447 173 1448

158 1449 171 1450 159 1451

159 1452 171 1453 172 1454

167 1455 168 1456 170 1457

170 1458 168 1459 169 1460

160 1461 163 1462 158 1463

160 1464 165 1465 163 1466

156 1467 165 1468 160 1469

156 1470 161 1471 165 1472

159 1473 164 1474 157 1475

157 1476 164 1477 162 1478

157 1479 162 1480 156 1481

156 1482 162 1483 161 1484

155 1485 160 1486 153 1487

153 1488 160 1489 158 1490

151 1491 156 1492 155 1493

155 1494 156 1495 160 1496

154 1497 157 1498 152 1499

154 1500 159 1501 157 1502

153 1503 159 1504 154 1505

153 1506 158 1507 159 1508

152 1509 157 1510 151 1511

151 1512 157 1513 156 1514

112 1515 155 1516 104 1517

104 1518 155 1519 153 1520

101 1521 155 1522 112 1523

101 1524 151 1525 155 1526

105 1527 154 1528 102 1529

102 1530 154 1531 152 1532

104 1533 153 1534 105 1535

105 1536 153 1537 154 1538

102 1539 151 1540 101 1541

102 1542 152 1543 151 1544

147 1545 149 1546 148 1547

148 1548 149 1549 150 1550

144 1551 146 1552 142 1553

144 1554 149 1555 146 1556

143 1557 150 1558 145 1559

143 1560 148 1561 150 1562

145 1563 150 1564 144 1565

144 1566 150 1567 149 1568

141 1569 147 1570 143 1571

143 1572 147 1573 148 1574

142 1575 147 1576 141 1577

142 1578 146 1579 147 1580

139 1581 144 1582 136 1583

136 1584 144 1585 142 1586

138 1587 145 1588 140 1589

138 1590 143 1591 145 1592

140 1593 144 1594 139 1595

140 1596 145 1597 144 1598

137 1599 141 1600 138 1601

138 1602 141 1603 143 1604

136 1605 141 1606 137 1607

136 1608 142 1609 141 1610

135 1611 139 1612 132 1613

132 1614 139 1615 136 1616

133 1617 140 1618 134 1619

133 1620 138 1621 140 1622

134 1623 139 1624 135 1625

134 1626 140 1627 139 1628

131 1629 137 1630 133 1631

133 1632 137 1633 138 1634

132 1635 137 1636 131 1637

132 1638 136 1639 137 1640

130 1641 135 1642 127 1643

127 1644 135 1645 132 1646

128 1647 134 1648 129 1649

128 1650 133 1651 134 1652

129 1653 135 1654 130 1655

129 1656 134 1657 135 1658

126 1659 131 1660 128 1661

128 1662 131 1663 133 1664

127 1665 132 1666 126 1667

126 1668 132 1669 131 1670

125 1671 127 1672 122 1673

125 1674 130 1675 127 1676

123 1677 129 1678 124 1679

123 1680 128 1681 129 1682

124 1683 129 1684 125 1685

125 1686 129 1687 130 1688

121 1689 126 1690 123 1691

123 1692 126 1693 128 1694

122 1695 126 1696 121 1697

122 1698 127 1699 126 1700

119 1701 122 1702 114 1703

119 1704 125 1705 122 1706

116 1707 123 1708 120 1709

120 1710 123 1711 124 1712

120 1713 124 1714 119 1715

119 1716 124 1717 125 1718

118 1719 121 1720 116 1721

116 1722 121 1723 123 1724

114 1725 121 1726 118 1727

114 1728 122 1729 121 1730

119 1731 235 1732 120 1733

120 1734 235 1735 237 1736

117 1737 120 1738 232 1739

232 1740 120 1741 237 1742

229 1743 119 1744 115 1745

229 1746 235 1747 119 1748

108 1749 116 1750 84 1751

108 1752 118 1753 116 1754

82 1755 118 1756 108 1757

82 1758 114 1759 118 1760

93 1761 232 1762 190 1763

93 1764 117 1765 232 1766

84 1767 117 1768 93 1769

84 1770 116 1771 117 1772

188 1773 229 1774 91 1775

91 1776 229 1777 115 1778

91 1779 115 1780 82 1781

82 1782 115 1783 114 1784

110 1785 113 1786 83 1787

83 1788 113 1789 107 1790

81 1791 113 1792 110 1793

81 1794 103 1795 113 1796

113 1797 104 1798 107 1799

113 1800 112 1801 104 1802

103 1803 101 1804 113 1805

113 1806 101 1807 112 1808

111 1809 83 1810 94 1811

111 1812 110 1813 83 1814

110 1815 92 1816 81 1817

110 1818 111 1819 92 1820

108 1821 109 1822 82 1823

82 1824 109 1825 89 1826

84 1827 90 1828 108 1829

108 1830 90 1831 109 1832

86 1833 107 1834 88 1835

88 1836 107 1837 106 1838

102 1839 106 1840 105 1841

102 1842 87 1843 106 1844

104 1845 105 1846 107 1847

107 1848 105 1849 106 1850

87 1851 102 1852 103 1853

103 1854 102 1855 101 1856

93 1857 100 1858 84 1859

84 1860 100 1861 90 1862

190 1863 100 1864 93 1865

190 1866 203 1867 100 1868

100 1869 88 1870 90 1871

100 1872 98 1873 88 1874

203 1875 98 1876 100 1877

203 1878 199 1879 98 1880

91 1881 99 1882 188 1883

188 1884 99 1885 202 1886

82 1887 89 1888 91 1889

91 1890 89 1891 99 1892

99 1893 97 1894 202 1895

202 1896 97 1897 198 1898

89 1899 87 1900 99 1901

99 1902 87 1903 97 1904

98 1905 96 1906 88 1907

88 1908 96 1909 86 1910

199 1911 195 1912 98 1913

98 1914 195 1915 96 1916

97 1917 95 1918 198 1919

198 1920 95 1921 194 1922

87 1923 85 1924 97 1925

97 1926 85 1927 95 1928

195 1929 191 1930 96 1931

96 1932 191 1933 94 1934

95 1935 92 1936 194 1937

194 1938 92 1939 189 1940

92 1941 95 1942 81 1943

81 1944 95 1945 85 1946

80 1947 56 1948 79 1949

56 1950 55 1951 79 1952

41 1953 80 1954 79 1955

41 1956 79 1957 42 1958

79 1959 55 1960 78 1961

55 1962 54 1963 78 1964

42 1965 79 1966 78 1967

42 1968 78 1969 43 1970

78 1971 54 1972 53 1973

78 1974 53 1975 77 1976

43 1977 78 1978 44 1979

78 1980 77 1981 44 1982

77 1983 53 1984 76 1985

53 1986 52 1987 76 1988

44 1989 77 1990 45 1991

77 1992 76 1993 45 1994

76 1995 52 1996 75 1997

52 1998 51 1999 75 2000

45 2001 76 2002 75 2003

45 2004 75 2005 46 2006

75 2007 51 2008 50 2009

75 2010 50 2011 74 2012

46 2013 75 2014 74 2015

46 2016 74 2017 47 2018

74 2019 50 2020 49 2021

74 2022 49 2023 73 2024

47 2025 74 2026 73 2027

47 2028 73 2029 48 2030

65 2031 8 2032 66 2033

8 2034 7 2035 66 2036

66 2037 7 2038 6 2039

66 2040 6 2041 67 2042

67 2043 6 2044 5 2045

67 2046 5 2047 68 2048

68 2049 5 2050 4 2051

68 2052 4 2053 69 2054

69 2055 4 2056 70 2057

4 2058 3 2059 70 2060

70 2061 3 2062 71 2063

3 2064 2 2065 71 2066

71 2067 2 2068 1 2069

71 2070 1 2071 72 2072

62 2073 71 2074 61 2075

71 2076 72 2077 61 2078

63 2079 70 2080 62 2081

70 2082 71 2083 62 2084

64 2085 69 2086 70 2087

64 2088 70 2089 63 2090

57 2091 64 2092 58 2093

64 2094 63 2095 58 2096

58 2097 63 2098 59 2099

63 2100 62 2101 59 2102

59 2103 62 2104 60 2105

62 2106 61 2107 60 2108

50 2109 59 2110 60 2111

50 2112 60 2113 49 2114

51 2115 58 2116 59 2117

51 2118 59 2119 50 2120

52 2121 57 2122 51 2123

57 2124 58 2125 51 2126

34 2127 47 2128 33 2129

47 2130 48 2131 33 2132

35 2133 46 2134 34 2135

46 2136 47 2137 34 2138

36 2139 45 2140 35 2141

45 2142 46 2143 35 2144

37 2145 44 2146 36 2147

44 2148 45 2149 36 2150

38 2151 43 2152 37 2153

43 2154 44 2155 37 2156

39 2157 42 2158 43 2159

39 2160 43 2161 38 2162

40 2163 41 2164 42 2165

40 2166 42 2167 39 2168

25 2169 40 2170 39 2171

25 2172 39 2173 26 2174

26 2175 39 2176 38 2177

26 2178 38 2179 27 2180

27 2181 38 2182 37 2183

27 2184 37 2185 28 2186

28 2187 37 2188 29 2189

37 2190 36 2191 29 2192

29 2193 36 2194 30 2195

36 2196 35 2197 30 2198

30 2199 35 2200 31 2201

35 2202 34 2203 31 2204

31 2205 34 2206 33 2207

31 2208 33 2209 32 2210

18 2211 31 2212 17 2213

31 2214 32 2215 17 2216

19 2217 30 2218 18 2219

30 2220 31 2221 18 2222

20 2223 29 2224 30 2225

20 2226 30 2227 19 2228

21 2229 28 2230 20 2231

28 2232 29 2233 20 2234

22 2235 27 2236 21 2237

27 2238 28 2239 21 2240

23 2241 26 2242 27 2243

23 2244 27 2245 22 2246

24 2247 25 2248 26 2249

24 2250 26 2251 23 2252

9 2253 24 2254 23 2255

9 2256 23 2257 10 2258

10 2259 23 2260 11 2261

23 2262 22 2263 11 2264

11 2265 22 2266 12 2267

22 2268 21 2269 12 2270

12 2271 21 2272 13 2273

21 2274 20 2275 13 2276

13 2277 20 2278 19 2279

13 2280 19 2281 14 2282

14 2283 19 2284 18 2285

14 2286 18 2287 15 2288

15 2289 18 2290 17 2291

15 2292 17 2293 16 2294

2 2295 15 2296 16 2297

2 2298 16 2299 1 2300

3 2301 14 2302 15 2303

3 2304 15 2305 2 2306

4 2307 13 2308 14 2309

4 2310 14 2311 3 2312

5 2313 12 2314 13 2315

5 2316 13 2317 4 2318

6 2319 11 2320 12 2321

6 2322 12 2323 5 2324

7 2325 10 2326 11 2327

7 2328 11 2329 6 2330

8 2331 9 2332 10 2333

8 2334 10 2335 7 2336

121.234129 0.100000 100.000000 1.000000 0.000000 0.000000 0.050444 0.000000 1.000000 0.000000 -7.286306 0.000000 0.000000 1.000000 -10.535123 0.000000 0.000000 0.000000 1.000000 0.793371 -0.461340 0.397150 17.643236 0.060611 0.709040 0.702559 12.496111 -0.605713 -0.533318 0.590494 6.573533 0.000000 0.000000 0.000000 1.000000 1.000000 0.000000 0.000000 -3.988720 0.000000 0.199065 -0.979986 -30.006611 -0.000000 0.979986 0.199065 -9.506567 0.000000 0.000000 0.000000 1.000000 0.666453 0.649649 -0.365783 -14.331261 -0.481145 0.000000 -0.876641 -28.204964 -0.569509 0.760234 0.312575 0.429052 0.000000 0.000000 0.000000 1.000000 0.976276 -0.118482 0.181237 5.521922 0.160485 -0.165959 -0.972986 -44.924263 0.145359 0.978989 -0.143007 -18.600327 0.000000 0.000000 0.000000 1.000000
gnustep-examples-1.4.0/gui/MyTransparentGL/main.m0000664000175000017500000000016111423132403020706 0ustar fedorfedor#include int main(int argc, const char **argv) { NSApplicationMain(argc, argv); return 0; } gnustep-examples-1.4.0/gui/MyTransparentGL/MyTransparentGL.gorm/0000775000175000017500000000000012204034626023611 5ustar fedorfedorgnustep-examples-1.4.0/gui/MyTransparentGL/MyTransparentGL.gorm/objects.gorm0000664000175000017500000000334110625210160026123 0ustar fedorfedorGNUstep archive00002af9:00000016:00000035:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0& % NSApplication0&%GSCustomClassMap0&0& % NSVisible01NSMutableArray1NSArray&0 1NSWindow1 NSResponder%  D C&% C D!0 1 NSView%  D C  D C&0 &0 1 NSColor0 &%NSNamedColorSpace0&%System0&%windowBackgroundColor0&%Window0& % My Window ? ? F@ F@%0& % My Window 0& % AppController01 GSNibItem  &0&%MenuItem01 NSMenuItem0&%Hide0&%h&&%01NSImage01NSMutableString&% common_2DCheckMark00& %  common_2DDash%0& %  MenuItem10 0&%Quit0 &%q&&%%0!&%NSMenu0"1NSMenu0#& % Main Menu0$&0%&  0&1NSNibConnector0'&%NSOwner0(!'0)!0*1NSNibControlConnector0+&%NSFirst0,&%hide:0-!0.+0/& % terminate:00'011NSNibOutletConnector02&% window03'04&% delegate051 GSMutableSet1 NSMutableSet1NSSet&" gnustep-examples-1.4.0/gui/MyTransparentGL/MyTransparentGL.gorm/data.classes0000664000175000017500000000024210625210160026071 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; AppController = { Actions = ( ); Outlets = ( window ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/MyTransparentGL/MyTransparentGL.gorm/data.info0000664000175000017500000000027010625210160025370 0ustar fedorfedorGNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/TestDrawing/0000775000175000017500000000000012204034626017015 5ustar fedorfedorgnustep-examples-1.4.0/gui/TestDrawing/English.lproj/0000775000175000017500000000000012204034626021533 5ustar fedorfedorgnustep-examples-1.4.0/gui/TestDrawing/English.lproj/GNUstep.tiff0000664000175000017500000001312211403730633023732 0ustar fedorfedorII*:vv:::JJ%%eeee%%JJ::::vvvv::::JJ%%eeee%%JJ:::vv:00 %<@BJ(R/home/deek/public_html/GNUstep2.tiffLogo (C) Free Software Foundation, Inc. Made with The GIMP.HHgnustep-examples-1.4.0/gui/TestDrawing/English.lproj/InfoPlist.strings0000664000175000017500000000005511403730633025056 0ustar fedorfedor/* Localized versions of Info.plist keys */ gnustep-examples-1.4.0/gui/TestDrawing/English.lproj/MainMenu.xib0000664000175000017500000053630711403731542023767 0ustar fedorfedor 1060 10A432 732 1038 437.00 com.apple.InterfaceBuilder.CocoaPlugin 732 YES YES com.apple.InterfaceBuilder.CocoaPlugin YES YES YES YES NSApplication FirstResponder NSApplication AMainMenu YES TestDrawInRect 1048576 2147483647 NSImage NSMenuCheckmark NSImage NSMenuMixedState submenuAction: TestDrawInRect YES About TestDrawInRect 2147483647 YES YES 1048576 2147483647 Preferences… , 1048576 2147483647 YES YES 1048576 2147483647 Services 1048576 2147483647 submenuAction: Services YES _NSServicesMenu YES YES 1048576 2147483647 Hide TestDrawInRect h 1048576 2147483647 Hide Others h 1572864 2147483647 Show All 1048576 2147483647 YES YES 1048576 2147483647 Quit TestDrawInRect q 1048576 2147483647 _NSAppleMenu File 1048576 2147483647 submenuAction: File YES New n 1048576 2147483647 Open… o 1048576 2147483647 Open Recent 1048576 2147483647 submenuAction: Open Recent YES Clear Menu 1048576 2147483647 _NSRecentDocumentsMenu YES YES 1048576 2147483647 Close w 1048576 2147483647 Save s 1048576 2147483647 Save As… S 1179648 2147483647 Revert to Saved 2147483647 YES YES 1048576 2147483647 Page Setup... P 1179648 2147483647 Print… p 1048576 2147483647 Edit 1048576 2147483647 submenuAction: Edit YES Undo z 1048576 2147483647 Redo Z 1179648 2147483647 YES YES 1048576 2147483647 Cut x 1048576 2147483647 Copy c 1048576 2147483647 Paste v 1048576 2147483647 Paste and Match Style V 1572864 2147483647 Delete 1048576 2147483647 Select All a 1048576 2147483647 YES YES 1048576 2147483647 Find 1048576 2147483647 submenuAction: Find YES Find… f 1048576 2147483647 1 Find Next g 1048576 2147483647 2 Find Previous G 1179648 2147483647 3 Use Selection for Find e 1048576 2147483647 7 Jump to Selection j 1048576 2147483647 Spelling and Grammar 1048576 2147483647 submenuAction: Spelling and Grammar YES Show Spelling and Grammar : 1048576 2147483647 Check Document Now ; 1048576 2147483647 YES YES 2147483647 Check Spelling While Typing 1048576 2147483647 Check Grammar With Spelling 1048576 2147483647 Correct Spelling Automatically 2147483647 Substitutions 1048576 2147483647 submenuAction: Substitutions YES Show Substitutions 2147483647 YES YES 2147483647 Smart Copy/Paste f 1048576 2147483647 1 Smart Quotes g 1048576 2147483647 2 Smart Dashes 2147483647 Smart Links G 1179648 2147483647 3 Text Replacement 2147483647 Transformations 2147483647 submenuAction: Transformations YES Make Upper Case 2147483647 Make Lower Case 2147483647 Capitalize 2147483647 Speech 1048576 2147483647 submenuAction: Speech YES Start Speaking 1048576 2147483647 Stop Speaking 1048576 2147483647 Format 2147483647 submenuAction: Format YES Font 2147483647 submenuAction: Font YES Show Fonts t 1048576 2147483647 Bold b 1048576 2147483647 2 Italic i 1048576 2147483647 1 Underline u 1048576 2147483647 YES YES 2147483647 Bigger + 1048576 2147483647 3 Smaller - 1048576 2147483647 4 YES YES 2147483647 Kern 2147483647 submenuAction: Kern YES Use Default 2147483647 Use None 2147483647 Tighten 2147483647 Loosen 2147483647 Ligature 2147483647 submenuAction: Ligature YES Use Default 2147483647 Use None 2147483647 Use All 2147483647 Baseline 2147483647 submenuAction: Baseline YES Use Default 2147483647 Superscript 2147483647 Subscript 2147483647 Raise 2147483647 Lower 2147483647 YES YES 2147483647 Show Colors C 1048576 2147483647 YES YES 2147483647 Copy Style c 1572864 2147483647 Paste Style v 1572864 2147483647 _NSFontMenu Text 2147483647 submenuAction: Text YES Align Left { 1048576 2147483647 Center | 1048576 2147483647 Justify 2147483647 Align Right } 1048576 2147483647 YES YES 2147483647 Writing Direction 2147483647 submenuAction: Writing Direction YES YES Paragraph 2147483647 CURlZmF1bHQ 2147483647 CUxlZnQgdG8gUmlnaHQ 2147483647 CVJpZ2h0IHRvIExlZnQ 2147483647 YES YES 2147483647 YES Selection 2147483647 CURlZmF1bHQ 2147483647 CUxlZnQgdG8gUmlnaHQ 2147483647 CVJpZ2h0IHRvIExlZnQ 2147483647 YES YES 2147483647 Show Ruler 2147483647 Copy Ruler c 1310720 2147483647 Paste Ruler v 1310720 2147483647 View 1048576 2147483647 submenuAction: View YES Show Toolbar t 1572864 2147483647 Customize Toolbar… 1048576 2147483647 Window 1048576 2147483647 submenuAction: Window YES Minimize m 1048576 2147483647 Zoom 1048576 2147483647 YES YES 1048576 2147483647 Bring All to Front 1048576 2147483647 _NSWindowsMenu Help 2147483647 submenuAction: Help YES TestDrawInRect Help ? 1048576 2147483647 _NSHelpMenu _NSMainMenu 15 2 {{335, 390}, {480, 360}} 1954021376 TestDrawing NSWindow {3.40282e+38, 3.40282e+38} 256 {480, 360} {{0, 0}, {1920, 1178}} {3.40282e+38, 3.40282e+38} NSFontManager Controller YES performMiniaturize: 37 arrangeInFront: 39 print: 86 runPageLayout: 87 clearRecentDocuments: 127 orderFrontStandardAboutPanel: 142 performClose: 193 toggleContinuousSpellChecking: 222 undo: 223 copy: 224 checkSpelling: 225 paste: 226 stopSpeaking: 227 cut: 228 showGuessPanel: 230 redo: 231 selectAll: 232 startSpeaking: 233 delete: 235 performZoom: 240 performFindPanelAction: 241 centerSelectionInVisibleArea: 245 toggleGrammarChecking: 347 toggleSmartInsertDelete: 355 toggleAutomaticQuoteSubstitution: 356 toggleAutomaticLinkDetection: 357 saveDocument: 362 saveDocumentAs: 363 revertDocumentToSaved: 364 runToolbarCustomizationPalette: 365 toggleToolbarShown: 366 hide: 367 hideOtherApplications: 368 unhideAllApplications: 370 newDocument: 373 openDocument: 374 addFontTrait: 421 addFontTrait: 422 modifyFont: 423 orderFrontFontPanel: 424 modifyFont: 425 raiseBaseline: 426 lowerBaseline: 427 copyFont: 428 subscript: 429 superscript: 430 tightenKerning: 431 underline: 432 orderFrontColorPanel: 433 useAllLigatures: 434 loosenKerning: 435 pasteFont: 436 unscript: 437 useStandardKerning: 438 useStandardLigatures: 439 turnOffLigatures: 440 turnOffKerning: 441 terminate: 449 toggleAutomaticSpellingCorrection: 456 orderFrontSubstitutionsPanel: 458 toggleAutomaticDashSubstitution: 461 toggleAutomaticTextReplacement: 463 uppercaseWord: 464 capitalizeWord: 467 lowercaseWord: 468 pasteAsPlainText: 486 performFindPanelAction: 487 performFindPanelAction: 488 performFindPanelAction: 489 showHelp: 493 alignCenter: 518 pasteRuler: 519 toggleRuler: 520 alignRight: 521 copyRuler: 522 alignJustified: 523 alignLeft: 524 makeBaseWritingDirectionNatural: 525 makeBaseWritingDirectionLeftToRight: 526 makeBaseWritingDirectionRightToLeft: 527 makeTextWritingDirectionNatural: 528 makeTextWritingDirectionLeftToRight: 529 makeTextWritingDirectionRightToLeft: 530 window 535 delegate 536 YES 0 -2 File's Owner -1 First Responder -3 Application 29 YES 19 YES 56 YES 217 YES 83 YES 81 YES 75 80 78 72 82 124 YES 77 73 79 112 74 125 YES 126 205 YES 202 198 207 214 199 203 197 206 215 218 YES 216 YES 200 YES 219 201 204 220 YES 213 210 221 208 209 57 YES 58 134 150 136 144 129 143 236 131 YES 149 145 130 24 YES 92 5 239 23 295 YES 296 YES 297 298 211 YES 212 YES 195 196 346 348 YES 349 YES 350 351 354 371 YES 372 375 YES 376 YES 377 YES 388 YES 389 390 391 392 393 394 395 396 397 YES 398 YES 399 YES 400 401 402 403 404 405 YES 406 407 408 409 410 411 YES 412 413 414 415 YES 416 417 418 419 420 450 YES 451 YES 452 453 454 457 459 460 462 465 466 485 490 YES 491 YES 492 496 YES 497 YES 498 499 500 501 502 503 YES 504 505 506 507 508 YES 509 510 511 512 513 514 515 516 517 533 YES YES -3.IBPluginDependency 112.IBPluginDependency 112.ImportedFromIB2 124.IBPluginDependency 124.ImportedFromIB2 125.IBPluginDependency 125.ImportedFromIB2 125.editorWindowContentRectSynchronizationRect 126.IBPluginDependency 126.ImportedFromIB2 129.IBPluginDependency 129.ImportedFromIB2 130.IBPluginDependency 130.ImportedFromIB2 130.editorWindowContentRectSynchronizationRect 131.IBPluginDependency 131.ImportedFromIB2 134.IBPluginDependency 134.ImportedFromIB2 136.IBPluginDependency 136.ImportedFromIB2 143.IBPluginDependency 143.ImportedFromIB2 144.IBPluginDependency 144.ImportedFromIB2 145.IBPluginDependency 145.ImportedFromIB2 149.IBPluginDependency 149.ImportedFromIB2 150.IBPluginDependency 150.ImportedFromIB2 19.IBPluginDependency 19.ImportedFromIB2 195.IBPluginDependency 195.ImportedFromIB2 196.IBPluginDependency 196.ImportedFromIB2 197.IBPluginDependency 197.ImportedFromIB2 198.IBPluginDependency 198.ImportedFromIB2 199.IBPluginDependency 199.ImportedFromIB2 200.IBEditorWindowLastContentRect 200.IBPluginDependency 200.ImportedFromIB2 200.editorWindowContentRectSynchronizationRect 201.IBPluginDependency 201.ImportedFromIB2 202.IBPluginDependency 202.ImportedFromIB2 203.IBPluginDependency 203.ImportedFromIB2 204.IBPluginDependency 204.ImportedFromIB2 205.IBEditorWindowLastContentRect 205.IBPluginDependency 205.ImportedFromIB2 205.editorWindowContentRectSynchronizationRect 206.IBPluginDependency 206.ImportedFromIB2 207.IBPluginDependency 207.ImportedFromIB2 208.IBPluginDependency 208.ImportedFromIB2 209.IBPluginDependency 209.ImportedFromIB2 210.IBPluginDependency 210.ImportedFromIB2 211.IBPluginDependency 211.ImportedFromIB2 212.IBPluginDependency 212.ImportedFromIB2 212.editorWindowContentRectSynchronizationRect 213.IBPluginDependency 213.ImportedFromIB2 214.IBPluginDependency 214.ImportedFromIB2 215.IBPluginDependency 215.ImportedFromIB2 216.IBPluginDependency 216.ImportedFromIB2 217.IBPluginDependency 217.ImportedFromIB2 218.IBPluginDependency 218.ImportedFromIB2 219.IBPluginDependency 219.ImportedFromIB2 220.IBEditorWindowLastContentRect 220.IBPluginDependency 220.ImportedFromIB2 220.editorWindowContentRectSynchronizationRect 221.IBPluginDependency 221.ImportedFromIB2 23.IBPluginDependency 23.ImportedFromIB2 236.IBPluginDependency 236.ImportedFromIB2 239.IBPluginDependency 239.ImportedFromIB2 24.IBEditorWindowLastContentRect 24.IBPluginDependency 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 29.IBEditorWindowLastContentRect 29.IBPluginDependency 29.ImportedFromIB2 29.WindowOrigin 29.editorWindowContentRectSynchronizationRect 295.IBPluginDependency 296.IBEditorWindowLastContentRect 296.IBPluginDependency 296.editorWindowContentRectSynchronizationRect 297.IBPluginDependency 298.IBPluginDependency 346.IBPluginDependency 346.ImportedFromIB2 348.IBPluginDependency 348.ImportedFromIB2 349.IBEditorWindowLastContentRect 349.IBPluginDependency 349.ImportedFromIB2 349.editorWindowContentRectSynchronizationRect 350.IBPluginDependency 350.ImportedFromIB2 351.IBPluginDependency 351.ImportedFromIB2 354.IBPluginDependency 354.ImportedFromIB2 371.IBEditorWindowLastContentRect 371.IBPluginDependency 371.IBWindowTemplateEditedContentRect 371.NSWindowTemplate.visibleAtLaunch 371.editorWindowContentRectSynchronizationRect 371.windowTemplate.maxSize 372.IBPluginDependency 375.IBPluginDependency 376.IBEditorWindowLastContentRect 376.IBPluginDependency 377.IBPluginDependency 388.IBEditorWindowLastContentRect 388.IBPluginDependency 389.IBPluginDependency 390.IBPluginDependency 391.IBPluginDependency 392.IBPluginDependency 393.IBPluginDependency 394.IBPluginDependency 395.IBPluginDependency 396.IBPluginDependency 397.IBPluginDependency 398.IBPluginDependency 399.IBPluginDependency 400.IBPluginDependency 401.IBPluginDependency 402.IBPluginDependency 403.IBPluginDependency 404.IBPluginDependency 405.IBPluginDependency 406.IBPluginDependency 407.IBPluginDependency 408.IBPluginDependency 409.IBPluginDependency 410.IBPluginDependency 411.IBPluginDependency 412.IBPluginDependency 413.IBPluginDependency 414.IBPluginDependency 415.IBPluginDependency 416.IBPluginDependency 417.IBPluginDependency 418.IBPluginDependency 419.IBPluginDependency 450.IBPluginDependency 451.IBEditorWindowLastContentRect 451.IBPluginDependency 452.IBPluginDependency 453.IBPluginDependency 454.IBPluginDependency 457.IBPluginDependency 459.IBPluginDependency 460.IBPluginDependency 462.IBPluginDependency 465.IBPluginDependency 466.IBPluginDependency 485.IBPluginDependency 490.IBPluginDependency 491.IBEditorWindowLastContentRect 491.IBPluginDependency 492.IBPluginDependency 496.IBPluginDependency 497.IBEditorWindowLastContentRect 497.IBPluginDependency 498.IBPluginDependency 499.IBPluginDependency 5.IBPluginDependency 5.ImportedFromIB2 500.IBPluginDependency 501.IBPluginDependency 502.IBPluginDependency 503.IBPluginDependency 504.IBPluginDependency 505.IBPluginDependency 506.IBPluginDependency 507.IBPluginDependency 508.IBEditorWindowLastContentRect 508.IBPluginDependency 509.IBPluginDependency 510.IBPluginDependency 511.IBPluginDependency 512.IBPluginDependency 513.IBPluginDependency 514.IBPluginDependency 515.IBPluginDependency 516.IBPluginDependency 517.IBPluginDependency 56.IBPluginDependency 56.ImportedFromIB2 57.IBEditorWindowLastContentRect 57.IBPluginDependency 57.ImportedFromIB2 57.editorWindowContentRectSynchronizationRect 58.IBPluginDependency 58.ImportedFromIB2 72.IBPluginDependency 72.ImportedFromIB2 73.IBPluginDependency 73.ImportedFromIB2 74.IBPluginDependency 74.ImportedFromIB2 75.IBPluginDependency 75.ImportedFromIB2 77.IBPluginDependency 77.ImportedFromIB2 78.IBPluginDependency 78.ImportedFromIB2 79.IBPluginDependency 79.ImportedFromIB2 80.IBPluginDependency 80.ImportedFromIB2 81.IBEditorWindowLastContentRect 81.IBPluginDependency 81.ImportedFromIB2 81.editorWindowContentRectSynchronizationRect 82.IBPluginDependency 82.ImportedFromIB2 83.IBPluginDependency 83.ImportedFromIB2 92.IBPluginDependency 92.ImportedFromIB2 YES com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{522, 812}, {146, 23}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{436, 809}, {64, 6}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{753, 187}, {275, 113}} com.apple.InterfaceBuilder.CocoaPlugin {{608, 612}, {275, 83}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{547, 180}, {254, 283}} com.apple.InterfaceBuilder.CocoaPlugin {{187, 434}, {243, 243}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{608, 612}, {167, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{753, 217}, {238, 103}} com.apple.InterfaceBuilder.CocoaPlugin {{608, 612}, {241, 103}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{654, 239}, {194, 73}} com.apple.InterfaceBuilder.CocoaPlugin {{525, 802}, {197, 73}} {{140, 379}, {479, 20}} com.apple.InterfaceBuilder.CocoaPlugin {74, 862} {{6, 978}, {478, 20}} com.apple.InterfaceBuilder.CocoaPlugin {{604, 269}, {231, 43}} com.apple.InterfaceBuilder.CocoaPlugin {{475, 832}, {234, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{746, 287}, {220, 133}} com.apple.InterfaceBuilder.CocoaPlugin {{608, 612}, {215, 63}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{380, 396}, {480, 360}} com.apple.InterfaceBuilder.CocoaPlugin {{380, 396}, {480, 360}} {{33, 99}, {480, 360}} {3.40282e+38, 3.40282e+38} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{591, 420}, {83, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{523, 2}, {178, 283}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{753, 197}, {170, 63}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{725, 289}, {246, 23}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{674, 260}, {204, 183}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{878, 180}, {164, 173}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{286, 129}, {275, 183}} com.apple.InterfaceBuilder.CocoaPlugin {{23, 794}, {245, 183}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{452, 109}, {196, 203}} com.apple.InterfaceBuilder.CocoaPlugin {{145, 474}, {199, 203}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin YES YES YES YES 536 YES Controller NSObject IBProjectSource Controller.h Controller NSObject window id IBUserSource YES NSApplication NSResponder IBFrameworkSource AppKit.framework/Headers/NSApplication.h NSApplication IBFrameworkSource AppKit.framework/Headers/NSApplicationScripting.h NSApplication IBFrameworkSource AppKit.framework/Headers/NSColorPanel.h NSApplication IBFrameworkSource AppKit.framework/Headers/NSHelpManager.h NSApplication IBFrameworkSource AppKit.framework/Headers/NSPageLayout.h NSApplication IBFrameworkSource AppKit.framework/Headers/NSUserInterfaceItemSearching.h NSBrowser NSControl IBFrameworkSource AppKit.framework/Headers/NSBrowser.h NSControl NSView IBFrameworkSource AppKit.framework/Headers/NSControl.h NSDocument NSObject YES YES printDocument: revertDocumentToSaved: runPageLayout: saveDocument: saveDocumentAs: saveDocumentTo: YES id id id id id id IBFrameworkSource AppKit.framework/Headers/NSDocument.h NSDocument IBFrameworkSource AppKit.framework/Headers/NSDocumentScripting.h NSDocumentController NSObject YES YES clearRecentDocuments: newDocument: openDocument: saveAllDocuments: YES id id id id IBFrameworkSource AppKit.framework/Headers/NSDocumentController.h NSFontManager NSObject IBFrameworkSource AppKit.framework/Headers/NSFontManager.h NSFormatter NSObject IBFrameworkSource Foundation.framework/Headers/NSFormatter.h NSMatrix NSControl IBFrameworkSource AppKit.framework/Headers/NSMatrix.h NSMenu NSObject IBFrameworkSource AppKit.framework/Headers/NSMenu.h NSMenuItem NSObject IBFrameworkSource AppKit.framework/Headers/NSMenuItem.h NSMovieView NSView IBFrameworkSource AppKit.framework/Headers/NSMovieView.h NSObject IBFrameworkSource AppKit.framework/Headers/NSAccessibility.h NSObject NSObject NSObject NSObject NSObject IBFrameworkSource AppKit.framework/Headers/NSDictionaryController.h NSObject IBFrameworkSource AppKit.framework/Headers/NSDragging.h NSObject NSObject IBFrameworkSource AppKit.framework/Headers/NSFontPanel.h NSObject IBFrameworkSource AppKit.framework/Headers/NSKeyValueBinding.h NSObject NSObject IBFrameworkSource AppKit.framework/Headers/NSNibLoading.h NSObject IBFrameworkSource AppKit.framework/Headers/NSOutlineView.h NSObject IBFrameworkSource AppKit.framework/Headers/NSPasteboard.h NSObject IBFrameworkSource AppKit.framework/Headers/NSSavePanel.h NSObject IBFrameworkSource AppKit.framework/Headers/NSTableView.h NSObject IBFrameworkSource AppKit.framework/Headers/NSToolbarItem.h NSObject IBFrameworkSource AppKit.framework/Headers/NSView.h NSObject IBFrameworkSource Foundation.framework/Headers/NSArchiver.h NSObject IBFrameworkSource Foundation.framework/Headers/NSClassDescription.h NSObject IBFrameworkSource Foundation.framework/Headers/NSError.h NSObject IBFrameworkSource Foundation.framework/Headers/NSFileManager.h NSObject IBFrameworkSource Foundation.framework/Headers/NSKeyValueCoding.h NSObject IBFrameworkSource Foundation.framework/Headers/NSKeyValueObserving.h NSObject IBFrameworkSource Foundation.framework/Headers/NSKeyedArchiver.h NSObject IBFrameworkSource Foundation.framework/Headers/NSObject.h NSObject IBFrameworkSource Foundation.framework/Headers/NSObjectScripting.h NSObject IBFrameworkSource Foundation.framework/Headers/NSPortCoder.h NSObject IBFrameworkSource Foundation.framework/Headers/NSRunLoop.h NSObject IBFrameworkSource Foundation.framework/Headers/NSScriptClassDescription.h NSObject IBFrameworkSource Foundation.framework/Headers/NSScriptKeyValueCoding.h NSObject IBFrameworkSource Foundation.framework/Headers/NSScriptObjectSpecifiers.h NSObject IBFrameworkSource Foundation.framework/Headers/NSScriptWhoseTests.h NSObject IBFrameworkSource Foundation.framework/Headers/NSThread.h NSObject IBFrameworkSource Foundation.framework/Headers/NSURL.h NSObject IBFrameworkSource Foundation.framework/Headers/NSURLConnection.h NSObject IBFrameworkSource Foundation.framework/Headers/NSURLDownload.h NSResponder IBFrameworkSource AppKit.framework/Headers/NSInterfaceStyle.h NSResponder NSObject IBFrameworkSource AppKit.framework/Headers/NSResponder.h NSTableView NSControl NSText NSView IBFrameworkSource AppKit.framework/Headers/NSText.h NSTextView NSText IBFrameworkSource AppKit.framework/Headers/NSTextView.h NSView IBFrameworkSource AppKit.framework/Headers/NSClipView.h NSView NSView IBFrameworkSource AppKit.framework/Headers/NSRulerView.h NSView NSResponder NSWindow IBFrameworkSource AppKit.framework/Headers/NSDrawer.h NSWindow NSResponder IBFrameworkSource AppKit.framework/Headers/NSWindow.h NSWindow IBFrameworkSource AppKit.framework/Headers/NSWindowScripting.h 0 com.apple.InterfaceBuilder.CocoaPlugin.macosx com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 YES ../TestDrawInRect.xcodeproj 3 gnustep-examples-1.4.0/gui/TestDrawing/TestDrawing.xcodeproj/0000775000175000017500000000000012204034626023244 5ustar fedorfedorgnustep-examples-1.4.0/gui/TestDrawing/TestDrawing.xcodeproj/project.pbxproj0000664000175000017500000002570411403731542026331 0ustar fedorfedor// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 45; objects = { /* Begin PBXBuildFile section */ 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; 605E6DB611775EB9000EC540 /* GNUstep.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 605E6DB411775EB9000EC540 /* GNUstep.tiff */; }; 6082CBE31090B562007D5464 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 6082CBE21090B562007D5464 /* Controller.m */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 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 = ""; }; 605E6DB511775EB9000EC540 /* English */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = English; path = English.lproj/GNUstep.tiff; sourceTree = ""; }; 6082CBE11090B562007D5464 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = ""; }; 6082CBE21090B562007D5464 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* TestDrawing-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TestDrawing-Info.plist"; sourceTree = ""; }; 8D1107320486CEB800E47090 /* TestDrawInRect.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestDrawInRect.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( 6082CBE11090B562007D5464 /* Controller.h */, 6082CBE21090B562007D5464 /* Controller.m */, ); name = Classes; sourceTree = ""; }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* TestDrawInRect.app */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* TestDrawInRect */ = { isa = PBXGroup; children = ( 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, ); name = TestDrawInRect; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( 29B97316FDCFA39411CA2CEA /* main.m */, ); name = "Other Sources"; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( 605E6DB411775EB9000EC540 /* GNUstep.tiff */, 8D1107310486CEB800E47090 /* TestDrawing-Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 8D1107260486CEB800E47090 /* TestDrawing */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "TestDrawing" */; buildPhases = ( 8D1107290486CEB800E47090 /* Resources */, 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = TestDrawing; productInstallPath = "$(HOME)/Applications"; productName = TestDrawInRect; productReference = 8D1107320486CEB800E47090 /* TestDrawInRect.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestDrawing" */; compatibilityVersion = "Xcode 3.1"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* TestDrawInRect */; projectDirPath = ""; projectRoot = ""; targets = ( 8D1107260486CEB800E47090 /* TestDrawing */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, 605E6DB611775EB9000EC540 /* GNUstep.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D11072D0486CEB800E47090 /* main.m in Sources */, 6082CBE31090B562007D5464 /* Controller.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C165DFE840E0CC02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 1DDD58150DA1D0A300B32029 /* English */, ); name = MainMenu.xib; sourceTree = ""; }; 605E6DB411775EB9000EC540 /* GNUstep.tiff */ = { isa = PBXVariantGroup; children = ( 605E6DB511775EB9000EC540 /* English */, ); name = GNUstep.tiff; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; INFOPLIST_FILE = "TestDrawing-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = TestDrawInRect; }; name = Debug; }; C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; INFOPLIST_FILE = "TestDrawing-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = TestDrawInRect; }; name = Release; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; PREBINDING = NO; SDKROOT = macosx10.6; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; SDKROOT = macosx10.6; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "TestDrawing" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4B08A954540054247B /* Debug */, C01FCF4C08A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestDrawing" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4F08A954540054247B /* Debug */, C01FCF5008A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } gnustep-examples-1.4.0/gui/TestDrawing/Controller.h0000664000175000017500000000040211403730633021306 0ustar fedorfedor#import #import #ifdef ETOILEAPP #import #import #import #endif @interface Controller : NSObject { NSWindow *window; } @end gnustep-examples-1.4.0/gui/TestDrawing/TestDrawing-Info.plist0000664000175000017500000000175211403730633023224 0ustar fedorfedor CFBundleDevelopmentRegion English CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile CFBundleIdentifier com.yourcompany.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleSignature ???? CFBundleShortVersionString 1.0 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} CFBundleVersion 1 NSMainNibFile MainMenu NSPrincipalClass NSApplication gnustep-examples-1.4.0/gui/TestDrawing/GNUmakefile0000664000175000017500000000036311403730633021072 0ustar fedorfedorinclude $(GNUSTEP_MAKEFILES)/common.make APP_NAME = TestDrawing $(APP_NAME)_OBJC_FILES = $(wildcard *.m) $(APP_NAME)_MAIN_MODEL_FILE = MainMenu.gorm $(APP_NAME)_RESOURCE_FILES = MainMenu.gorm include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/TestDrawing/MainMenu.gorm/0000775000175000017500000000000012204034626021471 5ustar fedorfedorgnustep-examples-1.4.0/gui/TestDrawing/MainMenu.gorm/objects.gorm0000664000175000017500000000346311403730633024017 0ustar fedorfedorGNUstep archive00002e7d:00000018:00000038:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01NSMenu01NSString& % Main Menu01NSMutableArray1 NSArray&01 NSMenuItem0&%Hide0&%h&&%0 1 NSImage0 1 NSMutableString&%common_2DCheckMark0 0 & % common_2DDash%0 0&%Quit0&%q&&% %01 GSWindowTemplate1GSClassSwapper0&%NSWindow1NSWindow1 NSResponder% @ @ D C&% Cf D01NSView% @ @ D C  D C&0&01NSColor0&%NSNamedColorSpace0&%System0&%windowBackgroundColor0&%Window0& % My Window A0 A F@ F@%&  D D@01 GSNibItem0& % Controller  &0&0&01NSMutableDictionary1 NSDictionary&0&%NSOwner0 & % NSApplication0!& % MenuItem(1) 0"& % MenuItem(0)0#& % Controller(0)0$&%NSMenu0%& % MenuItem(2) 0&&%View(0)0'&  0(1NSNibConnector0)&%NSOwner0*&0+$)0,"$0-1NSNibControlConnector"0.&%NSFirst0/&%hide:00%$01%.02& % terminate:03#)041NSNibOutletConnector)#05 &%delegate06#07&%window08&gnustep-examples-1.4.0/gui/TestDrawing/MainMenu.gorm/data.classes0000664000175000017500000000023711403730633023764 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; Controller = { Actions = ( ); Outlets = ( window ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/TestDrawing/MainMenu.gorm/data.info0000664000175000017500000000027011403730633023257 0ustar fedorfedorGNUstep archive00002e7d:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/TestDrawing/Controller.m0000664000175000017500000000673711403730633021334 0ustar fedorfedor#import "Controller.h" @interface TestView : NSView { @public BOOL isFlipped; } @end @interface CopyBitsView : NSView { @public BOOL isFlipped; } @end @implementation TestView #ifdef GNUSTEP - (BOOL) isFlipped { return _rFlags.flipped_view; } #else - (BOOL) isFlipped { return isFlipped; } #endif - (void) drawRect: (NSRect)aRect { NSImage *appImg = [[NSImage imageNamed: @"GNUstep"] copy]; /*[appImg setScalesWhenResized: YES]; [appImg setSize: NSMakeSize(200, 200)]; [appImg setScalesWhenResized: NO];*/ NSSize imgSize = [appImg size]; NSAffineTransform *xform = [NSAffineTransform transform]; /*if ([self isFlipped] == NO) { [xform translateXBy: 0 yBy: [self frame].size.height]; [xform scaleXBy: 1.0 yBy: -1.0]; [xform concat]; }*/ [xform rotateByDegrees: 15]; [xform concat]; NSLog(@"Image data flipped: %d", [appImg isFlipped]); [appImg drawInRect: NSMakeRect(0, 50, 200, 200) fromRect: NSMakeRect(0, 0, imgSize.width, imgSize.height) operation: NSCompositeSourceOver fraction: 0.5]; id imgCell = [[NSImageCell alloc] initImageCell: appImg]; [imgCell drawWithFrame: NSMakeRect(150, 50, 25, 25) inView: self]; [[NSColor redColor] set]; NSRectFill(NSMakeRect(50, 0, 50, 50)); [appImg setScalesWhenResized: YES]; [appImg setSize: NSMakeSize(48, 48)]; [appImg compositeToPoint: NSMakePoint(100, 50) operation: NSCompositeSourceOver]; [appImg dissolveToPoint: NSMakePoint(150, 50) fraction: 0.5]; [[NSColor colorWithPatternImage: appImg] set]; NSRectFill(NSMakeRect(150, 100, 100, 150)); /*if ([self isFlipped] == NO) { [xform invert]; [xform concat]; }*/ [xform invert]; [xform concat]; } - (BOOL) canDraw { return YES; } @end @implementation CopyBitsView #ifdef GNUSTEP - (BOOL) isFlipped { return _rFlags.flipped_view; } #else - (BOOL) isFlipped { return isFlipped; } #endif - (void) drawRect: (NSRect)aRect { NSAffineTransform *flip = [NSAffineTransform transform]; NSAffineTransform *xform = [NSAffineTransform transform]; /*[flip translateXBy: 0 yBy: [self frame].size.height]; [flip scaleXBy: 1.0 yBy: -1.0]; [flip concat];*/ [[NSColor redColor] set]; NSRectFill(NSMakeRect(0, 0, 50, 50)); NSRectFill(NSMakeRect(50, 50, 30, 30)); // FIXME: NSCopyBits doesn't draw at the right location with a rotation [xform rotateByDegrees: 25]; [xform concat]; NSRect copyRect = NSMakeRect(0, 0, 80, 80); NSLog(@"Copy bits"); NSCopyBits([self gState], copyRect, NSMakePoint(130, 0)); NSImage *appImg = [[NSImage imageNamed: @"GNUstep"] copy]; [appImg compositeToPoint: NSMakePoint(130, 0) operation: NSCompositeSourceOver]; [xform invert]; [xform concat]; [[NSColor blackColor] setStroke]; [NSBezierPath strokeRect: copyRect]; [NSBezierPath strokeRect: NSMakeRect(100, 0, 80, 80)]; [NSBezierPath strokeRect: [self bounds]]; /*[flip invert]; [flip concat];*/ } @end @implementation Controller - (void) awakeFromNib { TestView *view1 = [[TestView alloc] initWithFrame: NSMakeRect(0, 0, 200, 200)]; TestView *view2 = [[TestView alloc] initWithFrame: NSMakeRect(200, 0, 200, 200)]; CopyBitsView *view3 = [[CopyBitsView alloc] initWithFrame: NSMakeRect(200, 200, 200, 150)]; #ifdef GNUSTEP view1->_rFlags.flipped_view = YES; [view1 _rebuildCoordinates]; //view3->_rFlags.flipped_view = YES; //[view3 _rebuildCoordinates]; #else view1->isFlipped = YES; //view3->isFlipped = YES; #endif [[window contentView] addSubview: view1]; [[window contentView] addSubview: view2]; [[window contentView] addSubview: view3]; } @end gnustep-examples-1.4.0/gui/TestDrawing/main.m0000664000175000017500000000050311403730633020116 0ustar fedorfedor#import #import #ifdef ETOILEAPP #import #endif #import "Controller.h" int main(int argc, char *argv[]) { #ifdef ETOILEAPP return ETApplicationMain(argc, (const char **) argv); #else return NSApplicationMain(argc, (const char **) argv); #endif } gnustep-examples-1.4.0/gui/Finger/0000775000175000017500000000000012204034630015767 5ustar fedorfedorgnustep-examples-1.4.0/gui/Finger/PreferencesController.m0000664000175000017500000002420710554545756022505 0ustar fedorfedor/* * PreferencesController.m: Finger.app Preferences Panel * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 #import "PreferencesController.h" /* We cache here the shared file manager for speed */ static NSFileManager *fm; /* * The Preferences Panel * */ static NSBox * setup_box (NSString *command, NSTextField *field, int tag, id target) { NSBox *box; NSButton *button; GSHbox *hbox; [field setStringValue: @"Very Big, Long Long Sentence"]; [field sizeToFit]; [field setStringValue: @""]; [field setDelegate: target]; [field setTag: tag]; [field setEditable: YES]; [field setAutoresizingMask: (NSViewWidthSizable | NSViewMinYMargin | NSViewMaxYMargin)]; button = AUTORELEASE ([NSButton new]); [button setTitle: @"File Panel..."]; [button sizeToFit]; [button setAutoresizingMask: NSViewNotSizable]; [button setTag: tag]; [button setTarget: target]; [button setAction: @selector(changePreference:)]; hbox = AUTORELEASE ([GSHbox new]); [hbox setBorder: 0]; [hbox setDefaultMinXMargin: 8]; [hbox addView: field]; [hbox addView: button enablingXResizing: NO]; [hbox setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; box = AUTORELEASE ([NSBox new]); [box setTitlePosition: NSAtTop]; [box setTitle: command]; [box setBorderType: NSGrooveBorder]; [box addSubview: hbox]; [box sizeToFit]; [box setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; return box; } @implementation PreferencesController -(id)init { GSVbox *vbox; NSBox *box; GSHbox *hbox, *bshbox; NSButton *defaultButton; NSRect panFrame; NSSize buttonSize; if (fm == nil) { fm = [NSFileManager defaultManager]; } vbox = AUTORELEASE ([GSVbox new]); [vbox setBorder: 10]; [vbox setDefaultMinYMargin: 10]; [vbox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; /* Buttons */ hbox = AUTORELEASE ([GSHbox new]); [hbox setDefaultMinXMargin: 10]; defaultButton = AUTORELEASE ([NSButton new]); [defaultButton setTitle: @"Default"]; [defaultButton sizeToFit]; buttonSize = [defaultButton frame].size; [defaultButton setAutoresizingMask: NSViewMaxXMargin]; [defaultButton setTarget: self]; [defaultButton setAction: @selector (resetToDefault:)]; #if SET_BUTTON setButton = AUTORELEASE ([NSButton new]); [setButton setTitle: @"Set"]; [setButton sizeToFit]; [setButton setAutoresizingMask: NSViewMinXMargin]; [setButton setTarget: self]; /* We have a nice trick here. When the user presses the 'set' button, the first responder is changed, so that editing ends -- and this saves the setting. We need to do nothing more. */ [setButton setAction: NULL]; if ([setButton frame].size.width > buttonSize.width) { buttonSize.width = [setButton frame].size.width; } [setButton setFrameSize: buttonSize]; #endif [defaultButton setFrameSize: buttonSize]; [hbox addView: defaultButton]; #if SET_BUTTON [hbox addView: setButton]; #endif [hbox setAutoresizingMask: NSViewWidthSizable]; [vbox addView: hbox enablingYResizing: NO]; /* Preferences */ buttonsSize = AUTORELEASE ([NSPopUpButton new]); [buttonsSize setPullsDown: NO]; [buttonsSize addItemWithTitle: @"Large"]; [buttonsSize addItemWithTitle: @"Small"]; [buttonsSize setTarget: self]; [buttonsSize setAction: @selector(set:)]; [buttonsSize sizeToFit]; [buttonsSize setAutoresizingMask: (NSViewWidthSizable | NSViewMinYMargin | NSViewMaxYMargin)]; bshbox = AUTORELEASE ([GSHbox new]); [bshbox setBorder: 0]; [bshbox setDefaultMinXMargin: 8]; [bshbox addView: buttonsSize]; [bshbox setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; box = AUTORELEASE ([NSBox new]); [box setTitlePosition: NSAtTop]; [box setTitle: @"Button Size"]; [box setBorderType: NSGrooveBorder]; [box addSubview: bshbox]; [box sizeToFit]; [box setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [vbox addView: box]; tracerouteCommand = AUTORELEASE ([NSTextField new]); box = setup_box (@"Traceroute Command", tracerouteCommand, TRACEROUTE_TAG, self); [vbox addView: box]; pingCommand = AUTORELEASE ([NSTextField new]); box = setup_box (@"Ping Command", pingCommand, PING_TAG, self); [vbox addView: box]; whoisCommand = AUTORELEASE ([NSTextField new]); box = setup_box (@"Whois Command", whoisCommand, WHOIS_TAG, self); [vbox addView: box]; fingerCommand = AUTORELEASE ([NSTextField new]); box = setup_box (@"Finger Command", fingerCommand, FINGER_TAG, self); [vbox addView: box]; [fingerCommand setNextText: whoisCommand]; [whoisCommand setNextText: pingCommand]; [pingCommand setNextText: tracerouteCommand]; [tracerouteCommand setNextText: fingerCommand]; panFrame.size = [vbox frame].size; panFrame.origin = NSMakePoint (150, 150); pan = [[NSPanel alloc] initWithContentRect: panFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [pan setTitle: @"Preferences"]; [pan setContentView: vbox]; // Set min Size ? return [super init]; } -(void) reset { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; [fingerCommand setStringValue: [ud stringForKey: @"FingerCommand"]]; [whoisCommand setStringValue: [ud stringForKey: @"WhoisCommand"]]; [pingCommand setStringValue: [ud stringForKey: @"PingCommand"]]; [tracerouteCommand setStringValue: [ud stringForKey: @"TracerouteCommand"]]; [buttonsSize selectItemWithTitle: [ud stringForKey: @"ButtonSize"]]; } -(void) resetToDefault:(id)sender { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; [ud removeObjectForKey: @"FingerCommand"]; [ud removeObjectForKey: @"WhoisCommand"]; [ud removeObjectForKey: @"PingCommand"]; [ud removeObjectForKey: @"TracerouteCommand"]; [ud removeObjectForKey: @"ButtonSize"]; [self reset]; } -(void) set:(id)sender { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; [ud setObject: [fingerCommand stringValue] forKey: @"FingerCommand"]; [ud setObject: [whoisCommand stringValue] forKey: @"WhoisCommand"]; [ud setObject: [pingCommand stringValue] forKey: @"PingCommand"]; [ud setObject: [tracerouteCommand stringValue] forKey: @"TracerouteCommand"]; [ud setObject: [buttonsSize titleOfSelectedItem] forKey: @"ButtonSize"]; [ud synchronize]; } -(void) changePreference: (id)sender { NSOpenPanel *openPanel; NSString *file; int result; openPanel = [NSOpenPanel openPanel]; [openPanel setTitle: @"Choose Command"]; [openPanel setAllowsMultipleSelection: NO]; switch ([sender tag]) { case PING_TAG: [openPanel setPrompt: @"Ping Command:"]; file = [pingCommand stringValue]; break; case WHOIS_TAG: [openPanel setPrompt: @"Whois Command:"]; file = [whoisCommand stringValue]; break; case FINGER_TAG: [openPanel setPrompt: @"Finger Command:"]; file = [fingerCommand stringValue]; break; case TRACEROUTE_TAG: [openPanel setPrompt: @"Traceroute Command:"]; file = [tracerouteCommand stringValue]; break; default: return; } [openPanel setDelegate: self]; result = [openPanel runModalForDirectory: [file stringByDeletingLastPathComponent] file: [file lastPathComponent] types: nil]; if (result == NSOKButton) { switch ([sender tag]) { case PING_TAG: [pingCommand setStringValue: [openPanel filename]]; break; case WHOIS_TAG: [whoisCommand setStringValue: [openPanel filename]]; break; case FINGER_TAG: [fingerCommand setStringValue: [openPanel filename]]; break; case TRACEROUTE_TAG: [tracerouteCommand setStringValue: [openPanel filename]]; break; } [self set: self]; } } - (void)controlTextDidEndEditing: (NSNotification *)aNotification { NSTextField *sender = (NSTextField *)[aNotification object]; NSString *filename = [sender stringValue]; BOOL bip, bop; bip = [fm fileExistsAtPath: filename isDirectory: &bop]; if (bip) bip = [fm isExecutableFileAtPath: filename]; if ((bip == YES) && (bop == NO)) { #if SET_BUTTON [setButton performClick: self]; #endif [self set: self]; } else { NSString *alert; NSString *pref; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; alert = [filename stringByAppendingString: @" is not executable!"]; NSRunAlertPanel (NULL, alert, @"OK", NULL, NULL); switch ([sender tag]) { case PING_TAG: pref = @"PingCommand"; break; case WHOIS_TAG: pref = @"WhoisCommand"; break; case FINGER_TAG: pref = @"FingerCommand"; break; case TRACEROUTE_TAG: pref = @"TracerouteCommand"; break; default: return; } [sender setStringValue: [ud stringForKey: pref]]; } } -(void) orderFrontPanel { [self reset]; [pan orderFront: self]; } -(void) dealloc { RELEASE (pan); [super dealloc]; } - (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename { /* NB: We show directories here */ return [fm isExecutableFileAtPath: filename]; } - (BOOL)panel:(id)sender isValidFilename:(NSString *)filename { BOOL bip, bop; /* Do not accept not existing files or directories */ bip = [fm fileExistsAtPath: filename isDirectory: &bop]; return ((bip) && (!bop)); } @end gnustep-examples-1.4.0/gui/Finger/Finger.h0000664000175000017500000000266507722470343017401 0ustar fedorfedor/* * Finger.h: A GNUstep simple demo: a finger front-end * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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. */ /* * You may edit the following ones (recommended if you are * distributing this program bundled in some distribution.) */ #define FINGER_DEFAULT_COMMAND @"/usr/bin/finger" #define PING_DEFAULT_COMMAND @"/bin/ping" #define TRACEROUTE_DEFAULT_COMMAND @"/usr/sbin/traceroute" #define WHOIS_DEFAULT_COMMAND @"/usr/bin/whois" #define DEFAULT_BUTTON_SIZE @"Large" /* * Libraries */ #import #import #import #import gnustep-examples-1.4.0/gui/Finger/README0000664000175000017500000000225007374502511016660 0ustar fedorfedorDESCRIPTION This is a little demo program meant to show the power of the GNUstep libraries. It is a simple front-end to finger, ping and traceroute. COMPILE, RUN AND INSTALL To compile it, type 'make'. To run it, type 'openapp Finger.app'. To install it, type 'make install'. If you want, you can edit the default location for the finger, ping and traceroute executables in the file Finger.h before compiling. If you are bundling this program in a distribution, it is recommended that you do it. COPYING This program is free software; to protect at best your rights to use, modify and distribute it, this program is released under the GNU General Public License v2.0, as published by the Free Software Foundation. NO WARRANTY BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. [See GNU GPL for more details] AUTHORS This demo program is part of the GNUstep library; it was written by Nicola Pero . The Free Software Foundation owns the copyright. Rob Burns contributed whois support and sizable buttons. BUGS Send bug reports to gnustep-examples-1.4.0/gui/Finger/TrivialTextView.m0000664000175000017500000000600210554545756021303 0ustar fedorfedor/* * TrivialTextView.m: A Text View for Finger.app * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 #import "TrivialTextView.h" @implementation TrivialTextView -(id) init { NSDictionary *dict; dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSFont userFixedPitchFontOfSize: 0], NSFontAttributeName, [NSColor textColor], NSForegroundColorAttributeName, nil]; ASSIGN (normal, dict); dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSFont boldSystemFontOfSize: 0], NSFontAttributeName, [NSColor textColor], NSForegroundColorAttributeName, nil]; ASSIGN (bold, dict); return [super init]; } -(void) dealloc { RELEASE (normal); RELEASE (bold); TEST_RELEASE (str); [super dealloc]; } -(void) setString: (NSString *)s { NSMutableAttributedString *attr; attr = [[NSMutableAttributedString alloc] initWithString: s attributes: normal]; AUTORELEASE (attr); ASSIGN (str, attr); [self sizeToFit]; } -(NSString *)string { return [str string]; } -(void) appendAttributedString: (NSMutableAttributedString *)s { if (str) [str appendAttributedString: s]; else ASSIGN (str, s); [self sizeToFit]; } -(void) appendString: (NSString *)s { NSMutableAttributedString *attr; attr = [[NSMutableAttributedString alloc] initWithString: s attributes: normal]; AUTORELEASE (attr); [self appendAttributedString: attr]; } -(void) appendBoldString: (NSString *)s { NSMutableAttributedString *attr; attr = [[NSMutableAttributedString alloc] initWithString: s attributes: bold]; AUTORELEASE (attr); /* Now we check that the last character in the text is a newline. If it isn't, we append a newline to it before the bold string */ if ([[str mutableString] hasSuffix: @"\n"] == NO) [self appendString: @"\n"]; [self appendAttributedString: attr]; } -(void) sizeToFit { if (str) [self setFrameSize: [str size]]; else [self setFrameSize: NSZeroSize]; /* A hard way of acting but anyway we want no risks */ [[self window] display]; } -(void) drawRect: (NSRect)rect { if (str) [str drawInRect: [self bounds]]; } @end gnustep-examples-1.4.0/gui/Finger/whois32.tiff0000664000175000017500000001050707405267477020172 0ustar fedorfedorMM* $ N Bj,-)~ F ?:88.mmnn  8b(((32487;A=SA=ESNg^R_TeWeVkYkYiXfVkYjXgWaUOJgJIVUL=^'CaRc5209IHQ\QfUhWkXeT]QaU_TYO]Q]ScTiWiWhVdTJGfCDAUڱiP԰nҺ욑{ @A9YNkXgW\PKHY788%&!xT=65B3.IEZbSiVhWiWfUCCUYRCְhЫ[Iz؛~zlFEM]QkYZOEEF !$%&mYR*K+MIacTgVgWiXVMED?hǥUDƋ̵śEC:OGEW`RiWQKh12/.((PA4Y J=2RL{gVfViXVMCCCmΫZ̥WЮjrʻtHDZ`RgULIYm!K23^! X?0OJqeUfUiXXNCCCrֳdÚHWːԡ޴21,5DFFTMu]RIGOT K7@SJ>5PKreUhViXSJzIHCŴ}ϰgNԻ}џ̚ժED=I))'))*,+2))+ 2IA ^% U8%CEGZOiXeV]QBCLTPC}Ā̍߶ϺѡVRFd 8JM6,CFKTLxeUhWZODDH9[QgVYPIJcNCDrL/]{͓ Œ&Ҝ2cvɎ۪ڬĢeE !rYOfUYOE@@[. 0 Pa }ˎ$ٞ2ߢ9VڸsʓΝ˖ΥduAGD>U<< [oߗ3ؘ/͋%ԛBѪdŌڽҮręYO)m13.WJHN |# 6=Kgԃ(h&Ϗ<˚SΪmWJM* Y@=f |(( 2 = IP DX_"o7OIH~Au]D ) ,+%$eg,#l cRFV|,a'^,\h$|< t?ÐXf22/+676;NFlB?RA?G:>@S.$gpl iU 4 ֑V{IR%JZ$…OLl=nZI ?=KbT]QYNHIQW.t!+ }%2t= >~E~HIg&Bd-c6e:(3& ~* VJ@ QKGRJddTjXaRKHbI n xy t? AQJo.k&JQ!Q" +, 1 3F!@*)9%$RCkgWgU_PLIeF i ojoc=DL_#`YH\1H5 1 ('2 'OEcYSTOYQHKXG#\j ji Z 3f3h6rB\$TV P GFFI  X8&e- b"m. a)KOLOZ \ U f }-z1=~<q0 y<s9]%^' Y# TXQV0nN8j4 j.Gq9XRQUZS R ]ho"A>e(y>v; `&`*a+ a(d*S![6)kI.u@{C QKm/ a&`']#d&YY\l~/Cw5r7 y?Eh1d1 p<o7u;a/b? dE-{HNS$M!v:n3 m1 d)b$^afj l#t/s4 |AFKu>h3 r>w?y>o;lF& aB,|F!M#~GuCq@l9zEv@b,[%[#i- b'g- r;q<{H tCqBrEf=mE!uJ%rDpG$oJ* c>,D!K#G!t@rA}K#T,R*N&r=k5 m7d/ vAvCp@R+wJ#pDlGpO'vV0yU.wQ'nN%lO,     @(1; Rwhois32.tiff@@@(#)ImageMagick 4.2.9 99/09/01 cristy@mystic.es.dupont.comgnustep-examples-1.4.0/gui/Finger/FingerInfo.plist0000664000175000017500000000061007455423566021115 0ustar fedorfedor{ ApplicationName = "Finger"; ApplicationDescription = "A GNUstep Frontend to Finger, Ping, Traceroute"; ApplicationRelease = "Finger 0.9.3"; FullVersionID = "0.9.3, Apr 2002"; Authors = ("Nicola Pero "); Copyright = "Copyright (C) 1999, 2000 Free Software Foundation, Inc."; CopyrightDescription = "Released under the GNU General Public License 2.0"; } gnustep-examples-1.4.0/gui/Finger/Controller.h0000664000175000017500000000236607143631314020302 0ustar fedorfedor/* * Controller.h: Main Object of Finger.app * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 "Finger.h" #import "FingerWindow.h" #import "PreferencesController.h" @interface Controller : NSObject { /* Preferences Panel */ PreferencesController *pref; } +(void)initialize; -(void)applicationDidFinishLaunching: (NSNotification *)aNotification; -(void)runPreferencesPanel: (id)sender; -(void)startNewFingerWindow: (id)sender; @end gnustep-examples-1.4.0/gui/Finger/finger.tiff0000664000175000017500000002230207065024657020133 0ustar fedorfedorMM*$: ?|RL܌zoچqlC86 ?{s藌ǽ㗈o]Og<41?=(&?{sx[PƄz¸wjqd1?=(&?zi\c[왍ꘋꕈ薋靑咆qdxD;|RL}puiPE똋ꗈ蕆摃~䟓쮡Ĺ䏂l_[P{s}pwjZP䑈똊蕅瓃吁݇x܆xݒޙᝐ꫞naxD;=(&?}|pxl\Roh왍蕅撂䐀އxنrوwۖߚ㟑⢔䤘rfxD;=(&?zmzmzmg[i_閇撂|چrچpَ{ە⠐䣔ޖݔ׊xD;{s{nzmzmshVJ䐇ꗉ瓃䐀}݈wچmهtِ|ߗ㜊壒㟏ݖۗ⥛xn==(&?z|pylymuj_TcZꗉ甅䐁}߈yچqهqډvڒ}塐㝌ܒڑख़ӆzуw٨ٲph{szmzm~svqfOE홎甅呂|݇wچqنoهrډuے~㜊䟍ݔهsۖ֊vjti͇{Ԩpi{s鎂zmylt둆pfypꖇ摂|چsنnنmنnنmڇpے⚈ޖڈuډx׎}siqgodpďǣ(=(&?|pzm|p}kaˆz撃~چrنmنmنmنmنmچnهrڒ~ډuنs؋zxmpfncnbn`sh(=(&?w{o~r}dZꗊ䏀݇wنmنmنmنmچmچmمmنnيwփmڇuwkpdnbnan_n^qf(xo~|p|py뗍[Q蓇{نtنmنmنmنmنmنm؆mنm~mنqӁoodnbn`n^n]m\l`({ss~qw葃蔊RI혐옎吃އyنtنmنmنmچmچmׄmنm~m{l}kodnbn`n^n\n[j[WKg`(=(&?zuw혋똎[Q옏뗍ꕋ㍁܆zنvنmنmنmنmւmԀmՃmwkrhodnbn`n^n\nZm\`Vz>4R'!=(&?{vv|搁e[zo锋璉⌁܆{چvنoمmنmׂm|mymvlsipfnbn`n^n\nZm[cTB9_,$({svvz搁吁څ{ZOֈ}呇ዂ܆zچvنqكm׀m|mymwltjqgncn`n^n\nZnZkZJ@p4,R'!{swuy揀摂吁ꕈodtg㎄዁܇{نwلrׁn~mzmwmukrhodnan_n\nZn\lZWLs6-i0)(=(&?xuu}摂摂摂吁吁摂땉䓈k]كy߉܇|مw؂tp|nxmvlsipfnbn_n]n\n\kXYL@7w7/Z*#=(&?ztsu~摂吁y݀tހut{p߂w莁{ugh\wnۅz؂wu}rzpxmtjqgocnan^n\mZgVRD|;2t4,Y)# ?=(&?ztsrt~叀xykuhtjshrgrgtf{i{l߅zقxj_k`qhrhodj_mbl`m_m]n\gWYJI@7j0)==(&?x~q~q}p|o{n{mylwitgsesesfsfoaoaocm`ndsfsdp`ud|kzhtcrap`l]_RKBJ?J?E;>4k0)==(&?w~q}q|p{o{nzmylxjvitgqcqaqdqdm_pcrfodoesguep`p_scsap^o\p_k[\OLBH>C9<2l2)R'!=(&?w}q}p|o{n{mzlxkwjvithsfqdqeqcpan`pcqen`n`o`o^n]n[lXiTcS^PZNVILBF;>4y7/i0)=v}p|o{o{nzmylxkwjuhugrdqdsisirep`n`oapcn^n[nYnXmVjTcS\PXLSFLBK@C9}90l2)a-&=~q{o{n{nzmzlxkwjviuhsfrdn`n`qeqerepcpcqcn_n[nXnXmTiSaS\QYNTHLBH>@6v6-a,$[*$={o{mzmylxkxkwjvithsgqdqcqcrereoenfneocn`n]nXmVlTjScS^RZNTHKBI>D:x6-_,$d/'=zlylviocpduhuhsgrfqepcqcpak]kalhmjlcn`n_n\mWlThSfSaS[PSFKBH>D:}90c-&d/'=pdsgtgj]J@WKm`qepdocnapan`cX_We]kcnanao`n]mXjVfS`S]RVJLBI?C9{9/a,&^,$=dYi]tgqel_]RJ?VJj]m`m`n`pdocfZ^TaVi\m_n_kXkXiTaS[QYLPDI?E;}90a-&[*#>k^cWocsfqem`eYZOI?SHh[k^l`l`j]dXaTcVgZk[gVfTdS`SZOTHI?E;<3g/'[*#?rfVK]Rpdpdl_`VeYeYYNI>RHeYi\cXdWeW_S\Q_S_S^R^RZOSIPEH>?6q3*^*$>sfl_I?k^ock^ODeYh[_S^RYLI>VJLB\QcW^SYOYOYOTJRHQFPEJ@C:x6-`-$>repc\QK@m`k_\QQEdW]PH<]QgZcV^SNC_S\QZQYPXNQFOEOEJ@E;~90X)#=pdocj^QF]Rk^i\VKJ?fYaTI>`Tj\fXODVKXNXPYQVNPFOELBH>?6g/'=nanam`cXF]QgY\PF\PaVTJF<_Sj]k]eXXKH>PENDLBK@H>>3`-& ?j^j]i\eYI?WKcWaTI>RFaT_SVJK@fXdWXKH@7i0)(j]i]h\fZaWI?VKh[h[ZNWJcT_SWKE;VITII?J@KBI?@7k2)=i\h[gZfYfZdXJ?SIZO`S^R_S]QWKSIXLSHLCKBI?B7j0)R'!h[gZfYdXfZg[fYRFH>I?NCSHVJSISHRHPENCJ?B7l2*=gZfYdXcWaV`TaVcW_SYNTJOELBQFRHQFK@H>B9l2*= 00$$$$(R ' 'gnustep-examples-1.4.0/gui/Finger/whois.tiff0000664000175000017500000002234407405267477020027 0ustar fedorfedorII*$hhhhhhhhhhhhxxxUUhhhhhhhhh8\<܂AAppphhhU,,,c""""""""RbZRbzb:""b"rfzJ"""""VۦҹZlz \‰|ⰰpxxxU"""b"rRvb22^Zrq&-ƪ FJZrQz&M&Mz: irRF""""""""V~Xyj^R:\""2FRZrQF*U#jjc#jC#j#j#F*jr2Z""b2b}9ÅF.\#%%q2RJjjCjcfjJrQJE: )ZrZ: Jz&MfJE2"""""" Fn Ѣ:As-I &Fzf""J&uRNbZ""""""""<<Se% #E{Ǔs=aFFzb*& b""""xxxMut|bJ#jCjJz"""^ǣպi.T;CM!Yrjfj 6""UTTb`̠@B@""bFJfjcmr"""+]C*- =.#CVx؄"*ƪM""""pppDD<`\ :2|lzizb"""^.AKu] = IJۓKes jFU""R<<58<<b.\̤ښUJ*2F"rb"r"""""TW@İvĨ:0>yfYy48==U~!BܜUFJyra*2J"""F&tN@q8.8`(>Wrjcb"r80xPxh~$ph\=iQr]n,͖!0^HQtbp РPT`@TĀ@rr*r!fjFUrb"XhNNXֈ8p6h1ִܰaRav4Md9JH>ѪQlB@l,t Ԡ@@ `,ظJ&Zrrf""8ڨx&( XzPV  * >"i4Q*)j* Ƭn$Pp,04 @ ```tHHL2rZrQJF*Ur"""Xp&6ذfHPX0`f`!,%-΂teN||b01"PrtztH|P0PP`d`L(Lb"r"Jbb"rrf""""b2PzhPfP*`0ԠRlNRqHYʄfȀb(`|P| l0 ̰t`\XHhRhr$ d"X<BX"PR@ ((P(P`P@Z昀ARvlz$`*JXJ@Z8hJ J@:PfV>LR8~f4 >Bh|v̠d$`FTz$@f4Ā$* hnJt .Lv0|PbHʄZ@dZ Z&x@PHd (hn,.lLn<"t@l,p6LP.&tZtPZXnJtNt.XbHAhQRAf pڄz$4H(@h:H@HFNDdA| n\pނa2b0 \\\ PFnJth(v2D"a ! aj>hvLv̐lp44Ġ$ x@fx f8քv ^|~"b!RR<6v\p6n.(&T`t06P`6 \(\HBR"NHޒ"86ܨVh|XD.B|"nJtXh(Rx8r.|hnbHZ,.r$*TffnJtQ44ad.|~x4AaDaDqj>"~bh8tޢBhn"XQt!T2~N"XNX>j*td$jDVnJt00$  $$*$R/home/rob/whois.tiffgnustep-examples-1.4.0/gui/Finger/TrivialTextView.h0000664000175000017500000000261707053363217021274 0ustar fedorfedor/* * TrivialTextView.h: A Text View for Finger.app * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 "Finger.h" /* * Taken with modifications from GSTest/StringDrawing */ /* * This object displays uneditable, unselectable attributed text. */ @interface TrivialTextView: NSView { NSDictionary *bold; NSDictionary *normal; NSMutableAttributedString *str; } -(void) setString: (NSString *)s; -(NSString *) string; -(void) appendAttributedString: (NSMutableAttributedString *)s; -(void) appendString: (NSString *)s; -(void) appendBoldString: (NSString *)s; -(void) sizeToFit; @end gnustep-examples-1.4.0/gui/Finger/.cvsignore0000664000175000017500000000002007310713761017772 0ustar fedorfedor*obj Finger.app gnustep-examples-1.4.0/gui/Finger/FingerWindow.m0000664000175000017500000003237110554545756020603 0ustar fedorfedor/* * FingerWindow.m: One of Finger.app windows * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 #import "FingerWindow.h" @implementation FingerWindow -(void) dealloc { if (task && [task isRunning]) { [task terminate]; } TEST_RELEASE (task); TEST_RELEASE (pipe[0]); TEST_RELEASE (pipe[1]); [[NSNotificationCenter defaultCenter] removeObserver: self]; [super dealloc]; } - (id) init { GSVbox *vbox; GSHbox *hbox; NSButton* fingerButton; NSButton* pingButton; NSButton* traceButton; NSButton* whoisButton; NSScrollView* scroll; NSRect winFrame; float f = 0; NSSize bs; BOOL bigButtons; NSFont *font; if ([[[NSUserDefaults standardUserDefaults] stringForKey: @"ButtonSize"] isEqualToString: @"Small"]) { font = [NSFont systemFontOfSize: SMALL_FONT_SIZE]; bigButtons = NO; } else { font = [NSFont systemFontOfSize: BIG_FONT_SIZE]; bigButtons = YES; } vbox = AUTORELEASE ([GSVbox new]); [vbox setBorder: 5]; [vbox setDefaultMinYMargin: 5]; text = AUTORELEASE ([TrivialTextView new]); scroll = AUTORELEASE ([[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 300, 300)]); [scroll setDocumentView: text]; [scroll setHasHorizontalScroller: YES]; [scroll setHasVerticalScroller: YES]; [scroll setBorderType: NSBezelBorder]; [scroll setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [vbox addView: scroll]; hbox = AUTORELEASE ([GSHbox new]); [hbox setBorder: 0]; [hbox setDefaultMinXMargin: 8]; form = AUTORELEASE ([NSForm new]); [form addEntry: @"User:"]; [form addEntry: @"Host:"]; [form setAutoresizingMask: (NSViewWidthSizable | NSViewMinYMargin | NSViewMaxYMargin)]; [form setAutosizesCells: YES]; [form sizeToFit]; [form setEntryWidth: 240]; [hbox addView: form]; whoisButton = AUTORELEASE ([NSButton new]); if (bigButtons) { [whoisButton setImage: [NSImage imageNamed: @"whois"]]; } else { [whoisButton setImage: [NSImage imageNamed: @"whois32"]]; } [whoisButton setTitle: @"Whois"]; [whoisButton setFont: font]; [whoisButton setImagePosition: NSImageAbove]; [whoisButton setAlignment: NSCenterTextAlignment]; [whoisButton sizeToFit]; bs = [whoisButton frame].size; if (bs.width > f) { f = bs.width; } if (bs.height > f) { f = bs.height; } [whoisButton setAutoresizingMask: NSViewNotSizable]; [whoisButton setTarget: self]; [whoisButton setAction: @selector (startWhois:)]; fingerButton = AUTORELEASE ([NSButton new]); if (bigButtons) { [fingerButton setImage: [NSImage imageNamed: @"finger"]]; } else { [fingerButton setImage: [NSImage imageNamed: @"finger32"]]; } [fingerButton setTitle: @"Finger"]; [fingerButton setFont: font]; [fingerButton setImagePosition: NSImageAbove]; [fingerButton setAlignment: NSCenterTextAlignment]; [fingerButton sizeToFit]; bs = [fingerButton frame].size; if (bs.width > f) { f = bs.width; } if (bs.height > f) { f = bs.height; } [fingerButton setAutoresizingMask: NSViewNotSizable]; [fingerButton setTarget: self]; [fingerButton setAction: @selector (startFinger:)]; pingButton = AUTORELEASE ([NSButton new]); if (bigButtons) { [pingButton setImage: [NSImage imageNamed: @"ping"]]; } else { [pingButton setImage: [NSImage imageNamed: @"ping32"]]; } [pingButton setTitle: @"Ping"]; [pingButton setFont: font]; [pingButton setImagePosition: NSImageAbove]; [pingButton setAlignment: NSCenterTextAlignment]; [pingButton sizeToFit]; bs = [pingButton frame].size; if (bs.width > f) { f = bs.width; } if (bs.height > f) { f = bs.height; } [pingButton setAutoresizingMask: NSViewNotSizable]; [pingButton setTarget: self]; [pingButton setAction: @selector (startPing:)]; traceButton = AUTORELEASE ([NSButton new]); if (bigButtons) { [traceButton setImage: [NSImage imageNamed: @"traceroute"]]; } else { [traceButton setImage: [NSImage imageNamed: @"traceroute32"]]; } [traceButton setTitle: @"Trace"]; [traceButton setFont: font]; [traceButton setImagePosition: NSImageAbove]; [traceButton setAlignment: NSCenterTextAlignment]; [traceButton sizeToFit]; bs = [traceButton frame].size; if (bs.width > f) { f = bs.width; } if (bs.height > f) { f = bs.height; } [traceButton setAutoresizingMask: NSViewNotSizable]; [traceButton setTarget: self]; [traceButton setAction: @selector (startTraceroute:)]; stopButton = AUTORELEASE ([NSButton new]); if (bigButtons) { [stopButton setImage: [NSImage imageNamed: @"stop"]]; } else { [stopButton setImage: [NSImage imageNamed: @"stop32"]]; } [stopButton setTitle: @"Stop"]; [stopButton setFont: font]; [stopButton setImagePosition: NSImageAbove]; [stopButton setAlignment: NSCenterTextAlignment]; [stopButton sizeToFit]; bs = [stopButton frame].size; if (bs.width > f) { f = bs.width; } if (bs.height > f) { f = bs.height; } [stopButton setAutoresizingMask: NSViewNotSizable]; [stopButton setTarget: self]; [stopButton setAction: @selector (stopTask:)]; [stopButton setEnabled: NO]; /* Make all the buttons of the same square size */ bs = NSMakeSize (f, f); [fingerButton setFrameSize: bs]; [whoisButton setFrameSize: bs]; [pingButton setFrameSize: bs]; [traceButton setFrameSize: bs]; [stopButton setFrameSize: bs]; [hbox addView: fingerButton enablingXResizing: NO withMinXMargin: 12]; [hbox addView: whoisButton enablingXResizing: NO]; [hbox addView: pingButton enablingXResizing: NO]; [hbox addView: traceButton enablingXResizing: NO]; [hbox addView: stopButton enablingXResizing: NO]; [hbox setAutoresizingMask: NSViewWidthSizable]; [vbox addView: hbox enablingYResizing: NO]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); self = [super initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [self setTitle: @"Finger.app"]; [self setContentView: vbox]; [self setMinSize: [NSWindow frameRectForContentRect: winFrame styleMask: [self styleMask]].size]; return self; } - (void)taskEnded: (NSNotification *)aNotification { [stopButton setEnabled: NO]; } -(void)startFinger: (id)sender { NSString *username; NSString *hostname; NSString *command; NSString *argument; command = [[NSUserDefaults standardUserDefaults] stringForKey: @"FingerCommand"]; username = [[form cellAtIndex: 0] stringValue]; hostname = [[form cellAtIndex: 1] stringValue]; if ([hostname length] > 0) hostname = [@"@" stringByAppendingString: hostname]; if (username) argument = [username stringByAppendingString: hostname]; else argument = hostname; [self startTask: command withArgument: argument]; } -(void)startWhois: (id)sender { NSString *command; NSString *argument; command = [[NSUserDefaults standardUserDefaults] stringForKey: @"WhoisCommand"]; argument = [[form cellAtIndex: 1] stringValue]; [self startTask: command withArgument: argument]; } -(void)startPing: (id)sender { NSString *command; NSString *argument; command = [[NSUserDefaults standardUserDefaults] stringForKey: @"PingCommand"]; argument = [[form cellAtIndex: 1] stringValue]; [self startTask: command withArgument: argument]; } -(void)startTraceroute: (id)sender { NSString *command; NSString *argument; command = [[NSUserDefaults standardUserDefaults] stringForKey: @"TracerouteCommand"]; argument = [[form cellAtIndex: 1] stringValue]; [self startTask: command withArgument: argument]; } -(void)startTask: (NSString *)fullBinaryPath withArgument: (NSString *)argument { NSArray *arguments; NSFileHandle *fileHandle; NSString *stringToShow; NSFileManager *fm; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [self stopTask: self]; /* Check if binary is executable */ fm = [NSFileManager defaultManager]; /* Uhm -- if it is a directory, we are "executing" it. This will not do any harm ?. */ if ([fm isExecutableFileAtPath: fullBinaryPath] == NO) { NSString *alert; int result; alert = [fullBinaryPath stringByAppendingString: @" is not executable!"]; result = NSRunAlertPanel (NULL, alert, @"Cancel", @"Change command", NULL); if (result == NS_ALERTALTERNATE) { [(Controller *)[NSApp delegate] runPreferencesPanel: self]; } return; } /* Show command we are issuing in the text view */ stringToShow = [fullBinaryPath stringByAppendingString: @" "]; stringToShow = [stringToShow stringByAppendingString: argument]; stringToShow = [stringToShow stringByAppendingString: @"\n"]; [text appendBoldString: stringToShow]; /* Show command in the window title */ stringToShow = [fullBinaryPath lastPathComponent]; stringToShow = [stringToShow stringByAppendingString: @" "]; stringToShow = [stringToShow stringByAppendingString: argument]; [self setTitle: stringToShow]; /* Run the task */ ASSIGN (task, AUTORELEASE ([NSTask new])); [task setLaunchPath: fullBinaryPath]; arguments = [NSArray arrayWithObjects: argument, nil]; [task setArguments: arguments]; ASSIGN (pipe[0], [NSPipe pipe]); fileHandle = [pipe[0] fileHandleForReading]; [task setStandardOutput: pipe[0]]; [fileHandle readInBackgroundAndNotify]; [nc addObserver: self selector: @selector(readData:) name: NSFileHandleReadCompletionNotification object: (id) fileHandle]; ASSIGN (pipe[1], [NSPipe pipe]); fileHandle = [pipe[1] fileHandleForReading]; [task setStandardError: pipe[1]]; [fileHandle readInBackgroundAndNotify]; [nc addObserver: self selector: @selector(readData:) name: NSFileHandleReadCompletionNotification object: (id) fileHandle]; [nc addObserver: self selector: @selector(taskEnded:) name: NSTaskDidTerminateNotification object: (id) task]; [task launch]; [stopButton setEnabled: YES]; } -(void)stopTask: (id)sender { NSFileHandle *fileHandle; if ([task isRunning]) { /* Be fine so that ping gives us all the statistical infos */ [task interrupt]; if ([task isRunning]) [task terminate]; /* Now wait 0.1 seconds for the ping statistical info */ /* [FIXME Some better solution -- or at least make the 0.1 seconds configurable] */ [[NSRunLoop currentRunLoop] runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]]; /* Then discard the remaining data */ fileHandle = [pipe[0] fileHandleForReading]; [fileHandle closeFile]; fileHandle = [pipe[1] fileHandleForReading]; [fileHandle closeFile]; /* Remove us from notifications */ [[NSNotificationCenter defaultCenter] removeObserver: self name: NSFileHandleReadCompletionNotification object: nil]; [[NSNotificationCenter defaultCenter] removeObserver: self name: NSTaskDidTerminateNotification object: nil]; } } -(void)readData: (NSNotification *)aNotification { NSData *readData; NSString *readString; NSFileHandle *fileHandle; readData = [[aNotification userInfo] objectForKey: NSFileHandleNotificationDataItem]; readString = [[NSString alloc] initWithData: readData encoding: NSNonLossyASCIIStringEncoding]; AUTORELEASE (readString); [text appendString: readString]; if ([task isRunning]) { fileHandle = [pipe[0] fileHandleForReading]; if ([fileHandle readInProgress] == NO) [fileHandle readInBackgroundAndNotify]; fileHandle = [pipe[1] fileHandleForReading]; if ([fileHandle readInProgress] == NO) [fileHandle readInBackgroundAndNotify]; } } - (void)resetResults: (id)sender { [self stopTask: self]; [text setString: nil]; } - (void)saveResults: (id)sender { NSSavePanel *savePanel; int result; [self stopTask: self]; savePanel = [NSSavePanel savePanel]; result = [savePanel runModal]; if (result == NSOKButton) { /* TODO: Ask before overwriting file ?*/ [[text string] writeToFile: [savePanel filename] atomically: YES]; } } /* Not used now */ - (void)controlTextDidEndEditing: (NSNotification *)aNotification { [self startFinger: self]; } @end gnustep-examples-1.4.0/gui/Finger/stop.tiff0000664000175000017500000002230207374500026017636 0ustar fedorfedorMM*$:::?uuusssiiigggxxxbbb000?zzzfjwfiwdivehudhu---?===?hkx?__ __:PR]XXX{{{il{> _     ~ :MQ[)))?46> #:'?,I2Q4L-F#@,*~ U26fjw(((?@CKa ;*S;Y@]C_E_D\@V9L*ECB?>2_-/6&&&?46> 6$V?dNhQhQhOgNeJ`DY:P,H!FEC@>:/~ -/6y}$$$?46>~  ?*[EjWs^oYjQgKdF`B\;W4P)K#J!I!FDB>:6T04w|###?{{{46>B/\FmYs^q[iOaD]<[7Y3W0S*P&O$N#L#J!H!EC?;6,-3vz<<T/S)S'T'V'W)X)X)X)X)W'V'S&Q&O$K#HD?;7_^bo{|*** <<  E2dPq]s]iOZ9R*R&T'W)Y*Z*[*\*\*\*\*[*Z)X)V'S&P$L#I!D@;7:sw^^^Filz0$^Jp\t_mS] P>mXt_oVaBW/V)Y*\,^-`-a/c/c/d/d/d/d/d/d/a-`-],Z*W'R&N#I!D@;:pux{VVV Gwwwc4'eOt_s\gHX0T'Y*],`-c/e/f0f0f2g2g0g0h2h2h0g/e/a-^,Z)V'Q$N#I!D?3 [^j}jjjphky I9oYv_mR]9T)Y)],`/e0i3k6m:oqZt[fEX-Z,f:yR³Ķ}휁흂︥}Ꞅ뮙wǸó죈쭙ꤎƺ}^d<[3O$FC@@CKLLLy<ooodiv# $P?mTmR`?W,Z-f;lBa뜁윁︥Ꞇꭙvǹô룉ǹᆵ矉oJd<[4N$EB?@CJHHHy<mmmdhu#$J9eKeH\:V,Y*d9kd︨{{{{驓nĴ]xVmIc;X2K#C@>?CJ~CCCy<llldhu! 7)Y<[>>y<jjjj 'S7W9S0Q)R&Y,h?õö럇]^ô쥏\}W{±ƷafǹoqJjBa:X0L$C><)sgkx[^j:::y<iiii  #O3R4Q/N'O$S'Y,`3tNqHrIvNwPwPwNuJsFqCuI{QsEtHrFpElBh>a7Y/P$F?;:'t fjxY\h444y<028 9&N0L,K$K!P$S&X)]/c4g9k>m@nBnBnBnBo@o@n@n@m?j>g:c4]2W*P#IB<97$',fjwEHMw: aer 0E'F$F!H!L#O$S&W'Z*]-_0d3e6f7f7f7f7f6f6e6d4`2\-X)T&P#JC<96- >@Hz,,- m+cccg<>@DH!K#O$R&T'X)Y)[*\*\,],],],]*\*\*[*X'V&R$O#JC<744$ t divTXb)))y]/27& 9<@DH!K#O$Q&S'V'W)X)X)Y)Y)Y)Y)X)W)V'S&Q$N#JD>7333$&*chuTX`yC___~f47;?CFJ!L#O$Q&S&T'V'V'V'V'V'T'S&Q&O$K!HC<7300! t QT_fjw###yo' /0637:>BEH!J#L#O$P$Q&Q&R&Q&Q$P$N#K!IE@;62//'  $&*bgt:@DFI!J!K#L#N#N#L#K!J!IEC>942/-& :bgtdivyo( {< 26:<?CDFH!I!I!IHFDB?;740/-& FQS^x}7:?yQ ***?chu:269<?@CDEEDCB?<9632/-&  QS^bfs47>zh$ (((?bfs:269;>?@B@@?>;96320/& t QS]bfschuyu< '''?adr< $ 69:<>>>><;97430) :QS^bfschuyuM%%%?oouuy,-2a & ' :;;<;:976-#  $&*QS^w}NQ[yrOccd^an> )' ' &  :QT_bgtx}78>zuM[[\EHQ)*0_ _$',>?Hchux~QS]yuM777aaaxzCFMCENCDN:____?BJ>BI>@Ifjv{zgkw!yyh<7FFFqqqijmwz}~}||Y\dBDJ''' yoQ$\$$$999LLL]]]XXX`agilugirdgpadn<<<999333zyvb. 'Ibiv,,,)))'''$$$yyyyoeQ66<C_eeeQ<<(       00$$$$(R ' 'gnustep-examples-1.4.0/gui/Finger/ping32.tiff0000664000175000017500000001050207374500026017752 0ustar fedorfedorII*,5MMM )1 8889=== 8w G T 6 A   """  : E: E???@c5 ?k k e xB N+3h |"""#uuu*B Ne x #*5 ?F S[lYjdddbbbnnn*H UH U > J&.kkkccclllooonnn*H UH U#*e xB Nccc___cccqqqppppppnnnmmm*> J | L [: EB Ne x)1xxxdddnnnqqqqqqpppooonnnmmm*5 ?L [| [lF S5 ?ppp~~~qqqqqqpppooonnnnnnlllkkk*,5,5bbbYYY}}}pppoooooonnnmmmlllkkkjjj*t \mYj5 ?{{{JRJ|||nnnnnnmmmlllkkkjjjiiihhh*t {{{llllllllljjjiiihhhgggfff*xxxjjjiiiiiihhhgggfffdddccc*B OWhvvvhhhggggggfffdddcccaaa```*m : Essseeeeeecccbbb``````^^^]]]*Yjm D Qqqqbbbaaa```___^^^]]]\\\[[[*)1)1< G t \mnnn___^^^]]]\\\[[[ZZZXXXYYY*,5)1 5 ?#*G Tw kkk\\\\\\ZZZYYYYYYWWWVVVTTT* )1 > JhhhZZZYYYWWWVVVTTTSSSPPPPPP*w G T#*e xB NIIeeeWWWVVVTTTSSSNNN666BBBNNN*Yj5 ?)1 bbbTTTSSSDDDAAA111BBBAAALLL*G TG T: Ek k ~~~```KKK333<<D| _HNQ;iUq[iPcD_>Y5R+L#J"GD>9 n9;y}su{1]]_ceOU$L:jUoYeI\;X1U,T)R'Q%P$L#I!D?5 U7;ZZ^ ⋂"YFnZjQ\=S+T(V(X)Y)Y)Y)X(T'Q%L"G?: bXd~'''z ]]]cs95 F5nZpY]# [_kGHLeppsvK0P0M%Q%Y,g=mBqGtKtJrFqCtHsFqDnBg<`5S(H=9z ^bn89;d888Ge@B :#H(H"L#R%X)^/b3g8h:i;i:i9h9f7a3Z,T'J@93Z**]al[Ƅv  :@EK#P%T'W(Z*[+\+\+[*Z*X(U&P#J ?74% _KRBEK > UUUqr1,,:?FJ!O$R&U'V(W(W(V(U'R&N#H A82.s X\h$%'|!jnz.8>BG!J"N#O%P%P%O#M"H D<60- FIR@BITCCDcc??.9=BEH J"K!J GE@;40,U(*afr !$o+ ZZ\U>F.7<?BDCB@<731,r55]an#Dfgl[13& 8;>??>;841' `)*]an=@Hd99ASWaWZefiuX[e)*-oD $)))y@ABWX\hioiksosmp|adnOQVACG)*+ ]-"@T rne\D+  #46*   -@2:(R/home/nicola/examples/gui/Finger/stop32.tiffCreated with The GIMPHHgnustep-examples-1.4.0/gui/Finger/TODO0000664000175000017500000000023107065025213016461 0ustar fedorfedor* Add a 'Preferites' ['Addressbook' ?] Panel with a list of commonly used hosts/users. * Add a 'License...' menuitem to Info, displaying the GNU GPL ? gnustep-examples-1.4.0/gui/Finger/GNUmakefile0000664000175000017500000000302110554545035020051 0ustar fedorfedor# GNUmakefile: makefile for Finger.app # # Copyright (C) 2000 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 2000 # # This file is part of GNUstep. # # 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 APP_NAME = Finger Finger_OBJC_FILES = \ main.m \ Controller.m \ FingerWindow.m \ PreferencesController.m \ TrivialTextView.m Finger_OBJC_PRECOMPILED_HEADERS = \ FingerIncludeAll.h Finger_HEADERS = \ Finger.h \ Controller.h \ FingerWindow.h \ PreferencesController.h \ TrivialTextView.h Finger_RESOURCE_FILES = \ finger.tiff \ traceroute.tiff \ ping.tiff \ stop.tiff \ whois.tiff \ finger32.tiff \ traceroute32.tiff \ ping32.tiff \ stop32.tiff \ whois32.tiff Finger_APPLICATION_ICON = finger.tiff include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/Finger/PreferencesController.h0000664000175000017500000000332607374501370022465 0ustar fedorfedor/* * PreferencesController.h: Finger.app Preferences Panel * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 "Finger.h" /* Define SET_BUTTON to 1 to have the Set button compiled in the panel With or without the set button, everything is set as soon as you press return or end editing in any way. */ #define SET_BUTTON 1 #define FINGER_TAG 0 #define PING_TAG 1 #define TRACEROUTE_TAG 2 #define WHOIS_TAG 3 @interface PreferencesController : NSObject { NSPanel *pan; NSTextField *fingerCommand; NSTextField *pingCommand; NSTextField *tracerouteCommand; NSTextField *whoisCommand; NSPopUpButton *buttonsSize; #if SET_BUTTON NSButton *setButton; #endif } - (id) init; - (void)reset; - (void)resetToDefault: (id)sender; - (void)set: (id)sender; - (void)changePreference: (id)sender; - (void)orderFrontPanel; - (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename; @end gnustep-examples-1.4.0/gui/Finger/finger32.tiff0000664000175000017500000001050407374500026020271 0ustar fedorfedorII*!#J.*UJ+&U<%G R63Uoh鞒⧚vkƂMBN/(c  ^W|pnd晌eZ)&@ԃyti_ׄ|蕆咂ߊzچvݕᜎ鬟{qL*%qW85\Ձv~qqetj똋呁}ۆs؉vݗណ៑ធᄉȆ{5UXR}zmth`U똋撃}ވwڇp؍yᙆ䠏ߙۘޝog GYSwl{o~rh^zp擄~݇vمp؇rڏ{㜊ᚈٍ{ړznΉ}˜3%#U^Xwzm}si攊ꖉ}ۆs؅l؅l؅mڌwޕۋw׉xxlodnbƌ[B=X96\مz|pvvl욑撄܇u؅m؅l؅lچm؅n؉uنsylodm`m^~uX?;(*Ӂwtv앉neꕋ}؅q؅l؅l؅lׅlփl~l}lmbm_m\l[qfS:5 jdzu玀md뗍璈ވ{؅r؅l؅l׃lԁl|ktgocm_m\mZgYyC:*q`Yv|铅peԄz䏅݇|چt؄mւl|lwlrhncm_m\mYfVG=E R63U}wz揀璄ֆ{ti⍃݇|؅tׂn|lxltipem`m]mZmZSGq5-#q5# 8}tvu摂~}~ꒆ엌yl}sڄzׂu~qymukpfnbm]m[iWVH{91P%~uzst}|nxmvkwl~o{l|rwlshukpfncmam_l[cRPB?4N$85# 8~tvr}p}pv}nugtgrfpcpaxh匀{no_eWRHUKVKNCJ@F;D9g0'8{qx~q}p{nzmwiugtftfpbobmaretesdzisbj[gYRGE;E;B8g/(&q5" 8ypt}p{o{nylxjuhrdqcqcnaqeocqdrao^p^m[iXfVRGF<=3g/'$q{qv|p{ozmylwjuhrerfrgqbnapcn^n\nYlWdT]OUHODC9{8/_+$&q|p{nzmylwjvitgrdoaqdpepdpco`nYmWjSbSZOSHJ?@6j1(V'" Uzmxkrfuhuhsgqeqcoamamhmen`n]mVjTeS^QSGKAC9s4,Y*"&qmasfeYXLdWl`nboal_cYd\k_n`n]kWfT]RWKJ@B9l2*V(" Ug[maqej^[OVJ`Tk^maj^bVdWj\jYgUbSYNODD:x7.V'!%qk_YNocm`^SfYWLSH^R^RbVaT\Q]RZOXMQFI?}8/[)" Uqd^S^Rl_XLaTYLXK^QZOWL^SYPYOQGPFJ@@6Y)"%qocl`VLbVdWRG_RWK]QfXRGTJXPVNOELBC9g/' Ul_j]\QRG]Q_TQF_R]QeXXLNCSJPGLBH>w6..j^gZXMZOVKTH[PRG]QfY`SMBODLCI>=47j]i\aVQG^R`TXL_RYMQFYLMBKAJA?5Y)"h[gZfYeYSHTIXMZOYMTIUINDI?@6N$9gZeYcWbWaUYNSIQGPERHPEK@@7Z*# *   /@4<(R/home/nicola/examples/gui/Finger/finger32.tiffCreated with The GIMPHHgnustep-examples-1.4.0/gui/Finger/FingerIncludeAll.h0000664000175000017500000000271310554545756021340 0ustar fedorfedor/* * FingerIncludeAll.h: A GNUstep simple demo: a finger front-end * * Copyright (c) 2007 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2007 * * This sample program is part of GNUstep. * * 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. */ /* This file includes all the library headers that all files in this project use. */ /* The reason for having such a wide include is to speed up * compilation where precompiled headers are available. By setting * xxx_OBJC_PRECOMPILED_HEADERS = in the GNUmakefile, the * file gets precompiled and then automatically reused when compiled * the rest, gaining a massive speed up in compilation speed. */ #import #import #import #import gnustep-examples-1.4.0/gui/Finger/FingerWindow.h0000664000175000017500000000320607374500244020556 0ustar fedorfedor/* * FingerWindow.h: One of Finger.app windows * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 "Finger.h" #import "Controller.h" #import "TrivialTextView.h" #define SMALL_FONT_SIZE 10 #define BIG_FONT_SIZE 12 @interface FingerWindow : NSWindow { NSButton *stopButton; NSForm *form; TrivialTextView *text; NSPipe *pipe[2]; NSTask *task; } -(void)resetResults: (id)sender; -(void)saveResults: (id)sender; -(void)startFinger: (id)sender; -(void)startWhois: (id)sender; -(void)startPing: (id)sender; -(void)startTraceroute: (id)sender; -(void)startTask: (NSString *)fullBinaryPath withArgument: (NSString *)argument; -(void)stopTask: (id)sender; -(void)taskEnded: (NSNotification *)aNotification; -(void)readData: (NSNotification *)aNotification; -(void)controlTextDidEndEditing: (NSNotification *)aNotification; @end gnustep-examples-1.4.0/gui/Finger/traceroute32.tiff0000664000175000017500000001051007374500026021171 0ustar fedorfedorII*U))))UUUUU))))U))))U))))UUUUUUUUUUUUUUUUUU` $$` U9UUUUUUU9UUUUH UH UH UH Uq9UU))))))))))))))))))))))))))H UH H H UH UH UH UH UH UH UH UH UH UH 0 9UUUUUUUUUUUU9Uq9UUUUUUUUUq   3"@8@(R/home/nicola/examples/gui/Finger/traceroute32.tiffCreated with The GIMPHHgnustep-examples-1.4.0/gui/Finger/Controller.m0000664000175000017500000000412410554545756020317 0ustar fedorfedor/* * Controller.m: Main Object of Finger.app * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 #import "Controller.h" @implementation Controller +(void)initialize { if (self == [Controller class]) { NSUserDefaults *defaults; NSMutableDictionary *dict; defaults = [NSUserDefaults standardUserDefaults]; dict = AUTORELEASE ([NSMutableDictionary new]); [dict setObject: WHOIS_DEFAULT_COMMAND forKey: @"WhoisCommand"]; [dict setObject: FINGER_DEFAULT_COMMAND forKey: @"FingerCommand"]; [dict setObject: PING_DEFAULT_COMMAND forKey: @"PingCommand"]; [dict setObject: TRACEROUTE_DEFAULT_COMMAND forKey: @"TracerouteCommand"]; [dict setObject: DEFAULT_BUTTON_SIZE forKey: @"ButtonSize"]; [defaults registerDefaults: dict]; } } -(id) init { return self; } -(void) dealloc { TEST_RELEASE (pref); [super dealloc]; } - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; { [self startNewFingerWindow: self]; } - (void)startNewFingerWindow: (id) sender { FingerWindow *win; win = [FingerWindow new]; [win orderFront: self]; } -(void) runPreferencesPanel: (id) sender { if (pref == nil) pref = [PreferencesController new]; [pref orderFrontPanel]; } @end gnustep-examples-1.4.0/gui/Finger/ping.tiff0000664000175000017500000002230207065024657017616 0ustar fedorfedorMM*$%999]n%qqq(((]n%TTT )%]n]nIII ]n%))KKK?)]n]nSSS%]nTTTTTT)))%TTTTTTnnnppp))%]n]n%]n%MMMRRRnnnqqqpppooo)))FFFRRRlllrrrqqqppppppooo))))JJJEEEQQQsssrrrrrrqqqqqqpppooonnn%]n%]n)]nhhh|||nnnJJJFFFQQQssssssrrrrrrqqqqqqpppoooooonnn]n%hhhmmmJJJfffssssssrrrrrrrrrqqqqqqpppoooooonnnmmm]n%)hhh[[[JJJrrrrrrrrrrrrqqqqqqppppppoooooonnnmmmlll))%hhhuuurrrqqqqqqqqqqqqppppppooonnnnnnmmmlllkkk%]nhhhttt;;;qqqqqqpppppppppoooooonnnmmmmmmlllkkkjjjgggHHHsssppppppooooooooonnnmmmmmmlllkkkkkkjjjiii)gggEEooonnnnnnnnnmmmmmmllllllkkkjjjiiiiiihhh]nfffnnnmmmmmmllllllkkkkkkjjjiiiiiihhhgggffffffllllllkkkkkkjjjjjjiiiiiihhhgggffffffddd%dddkkkjjjjjjiiiiiihhhhhhgggffffffdddcccbbb %]neeeiiiiiihhhhhhggggggfffdddcccdddbbbaaa``` %]ndddgggggggggfffddddddcccbbbbbbaaa```______ ]n]n%)bbbfffdddeeedddcccbbbaaa``````___^^^]]]]]] ))%]naaaccccccbbbaaaaaa```___^^^^^^]]]\\\\\\[[[]n]n)aaaaaaaaa```______^^^]]]]]]\\\[[[ZZZZZZYYY]n%aaa```___^^^^^^]]]\\\[[[[[[ZZZYYYXXXXXXWWW%)))```^^^]]]\\\\\\[[[ZZZYYYYYYZZZWWWWWWUUUTTT%]n%]n]n%))___\\\[[[[[[ZZZYYYXXXXXXWWWUUUTTTTTTSSSSSS)))^^^ssLLZZZZZZYYYXXXWWWWWWUUUTTTSSSSSSRRRCCCQQQ))))^^^YYYXXXWWWUUUUUUTTTSSSRRRCCC222PPPPPP]n)]n%]n%]]]~~~WWWUUUUUUTTTSSSRRRCCC000PPPOOOOOOOOO%]n\\\|||UUUTTTSSSRRR222AAAPPPOOO000???LLL)%]n\\\{{{TTTSSS333AAAPPP@@@///???LLLLLLKKK%))[[[yyySSSRRRQQQPPP000///LLLLLL///<<>>KKKKKKJJJJJJIIICCC***~~zU ]ngggaaawwwOOOOOOMMMLLLKKKKKKJJJJJJ<<<***~~zf??$$$aaawwwOOOMMMLLLLLLKKKJJJ<<< ~~zf?$$$aaawwwMMMMMMLLLEEE222 ~~tT8$$$wwwwwwMMMEEE***~~tT) ?rrr,,,~zmT) ?'''~~{f? 7Pcic? 00$$$$(R ' 'gnustep-examples-1.4.0/gui/Finger/main.m0000664000175000017500000001024710554545756017123 0ustar fedorfedor/* * main.m: main function of Finger.app * * Copyright (c) 2000 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: February 2000 * * This sample program is part of GNUstep. * * 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 #import "Finger.h" #import "Controller.h" int main (void) { NSAutoreleasePool *pool; NSApplication *app; NSMenu *mainMenu; NSMenu *menu; NSMenuItem *menuItem; Controller *controller; pool = [NSAutoreleasePool new]; app = [NSApplication sharedApplication]; // // Create the Menu // // Main Menu mainMenu = AUTORELEASE ([NSMenu new]); // Info SubMenu menuItem = [mainMenu addItemWithTitle: @"Info" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"Info Panel..." action: @selector (orderFrontStandardInfoPanel:) keyEquivalent: @""]; [menu addItemWithTitle: @"Preferences..." action: @selector (runPreferencesPanel:) keyEquivalent: @""]; [menu addItemWithTitle: @"Help..." action: @selector (orderFrontHelpPanel:) keyEquivalent: @"?"]; // Document Submenu menuItem = [mainMenu addItemWithTitle: @"Document" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"New Finger Window" action: @selector (startNewFingerWindow:) keyEquivalent: @"n"]; [menu addItemWithTitle: @"Save Results As..." action: @selector (saveResults:) keyEquivalent: @"s"]; [menu addItemWithTitle: @"Reset Results" action: @selector (resetResults:) keyEquivalent: @""]; [menu addItemWithTitle: @"Miniaturize" action: @selector(performMiniaturize:) keyEquivalent: @"m"]; [menu addItemWithTitle: @"Close" action: @selector(performClose:) keyEquivalent: @"w"]; // Edit SubMenu menuItem = [mainMenu addItemWithTitle: @"Edit" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"Cut" action: @selector (cut:) keyEquivalent: @"x"]; [menu addItemWithTitle: @"Copy" action: @selector (copy:) keyEquivalent: @"c"]; [menu addItemWithTitle: @"Paste" action: @selector (paste:) keyEquivalent: @"v"]; [menu addItemWithTitle: @"SelectAll" action: @selector (selectAll:) keyEquivalent: @"a"]; // Windows SubMenu menuItem = [mainMenu addItemWithTitle:@"Windows" action: NULL keyEquivalent:@""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"Arrange" action: @selector(arrangeInFront:) keyEquivalent: @""]; [menu addItemWithTitle: @"Miniaturize" action: @selector(performMiniaturize:) keyEquivalent: @"m"]; [menu addItemWithTitle: @"Close" action: @selector(performClose:) keyEquivalent: @"w"]; [app setWindowsMenu: menu]; // Hide MenuItem [mainMenu addItemWithTitle: @"Hide" action: @selector (hide:) keyEquivalent: @"h"]; // Quit MenuItem [mainMenu addItemWithTitle: @"Quit" action: @selector (terminate:) keyEquivalent: @"q"]; [app setMainMenu: mainMenu]; controller = [Controller new]; [app setDelegate: controller]; [app run]; [[NSUserDefaults standardUserDefaults] synchronize]; /* Useless anyway, since everything is automatically released on exit. */ RELEASE (controller); RELEASE (pool); return 0; } gnustep-examples-1.4.0/gui/Finger/ChangeLog0000664000175000017500000000777410554545035017574 0ustar fedorfedorSun Jan 21 02:01:18 2007 Nicola Pero * GNUmakefile: Added precompiled header to demonstrate how to use it. * FingerIncludeAll.h: New file. * main.m: Import the new file at the very beginning. * FingerWindow.m: Same change. * PreferencesController.m: Same change. * TrivialTextView.m: Same change. * Controller.m: Same change. Thu Apr 11 23:04:35 2002 Nicola Pero * PreferencesController.m ([PreferencesController -init]): Updated for newer gnustep-gui - no need to fixup button size computer by the library. * FingerWindow.m ([FingerWindow -init]): Idem. Tue Jan 8 16:14:46 2002 Nicola Pero * main.m (main): Set the windows menu. Tue Dec 18 15:25:02 2001 Nicola Pero * main.m (main): Removed unused variable i. Tue Dec 11 02:25:25 2001 Nicola Pero * FingerWindow.m ([FingerWindow -init]): Set the font of the whois button. * whois.tiff: Updated. * whois32.tiff: Updated. Wed Nov 14 16:55:21 2001 Nicola Pero * main.m (main): Added 'n' as a key equivalent for a new Finger window. * FingerInfo.plist: Version 0.9.1. Wed Nov 14 16:51:42 2001 Nicola Pero Added whois command and sizable buttons - based on code contributed by Rob Burns . * ping32.tiff: New file. * stop32.tiff: Idem. * traceroute32.tiff: Idem. * finger32.tiff: Idem. * whois.tiff: Idem. * whois32.tiff: Idem. * stop.tiff: New file replacing stop_button.tiff. * stop_button.tiff: Removed. * GNUmakefile (Finger_RESOURCE_FILES): Added the new files; renamed stop_button.tiff to stop.tiff. * Finger.h (WHOIS_DEFAULT_COMMAND): Define. (DEFAULT_BUTTON_SIZE): Define. * Controller.m ([+initialize]): Set default for WhoisCommand and ButtonSize. * FingerWindow.h (BIG_FONT_SIZE, SMALL_FONT_SIZE): Define. ([-startWhois:]): Declare. * FingerWindow.m ([-init]): Added whois button; manage having size of buttons controlled by used defaults. ([-startWhois:]): New method. * PreferencesController.h: New ivars for whois button and for button size popup. (WHOIS_TAG): Define. * PreferencesController.m ([PreferencesController -init]): Added popup for button size, and textfield for whois command. ([-reset], [-resetToDefault:], [-set]): Manage whois command and button size popup too. ([-set:]): Synchronize user defaults immediately. ([-changePreference:]): Manage whois too. ([-controlTextDidEndEditing:]): Idem. * FingerInfo.plist: Version is now 0.9.0. * README: Mention Rob. Sun Jun 10 20:09:23 2001 Nicola Pero * PreferencesController.m ([-changePreference:]): Use an open panel rather than a save panel to choose programs. Thu Aug 3 19:53:38 2000 Nicola Pero * FingerInfo.plist: Fixed typo. Sat Jul 29 22:54:57 2000 Nicola Pero * Finger.h: Removed preprocessor defines used to display an info panel. * Controller.m ([-runInfoPanel:]): Removed. * Controller.h: Removed runInfoPanel: * main.m (main): Removed initialize_gnustep_backend; use orderFrontStandardInfoPanel: to display the info panel; do not set application icon. * FingerInfo.plist: New file. * GNUmakefile: Removed unused includes; (Finger_APPLICATION_ICON): Added. Sun Mar 19 01:11:40 2000 Nicola Pero Added images by Andrew Lindesay : * finger.tiff: New file. * ping.tiff: New file. * stop_button.tiff: New file. * traceroute.tiff: New file. * GNUmakefile: Updated for images. * main.m: Idem. * FingerWindow.m: Idem. Sun Feb 13 01:55:21 2000 Nicola Pero New program: * GNUmakefile: New file. * README: Idem. * TODO: Idem. * Finger.h: Idem. * main.m: Idem. * Controller.h: Idem. * Controller.m: Idem. * FingerWindow.h: Idem. * FingerWindow.m: Idem. * PreferencesController.h: Idem. * PreferencesController.m: Idem. * TrivialTextView.h: Idem. * TrivialTextView.m: Idem. gnustep-examples-1.4.0/gui/Finger/traceroute.tiff0000664000175000017500000002230207065024657021036 0ustar fedorfedorMM*$)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 00$$$$(R ' 'gnustep-examples-1.4.0/gui/GNUmakefile.preamble0000664000175000017500000000370607215265670020443 0ustar fedorfedor# # Makefile.preamble # # Copyright (C) 1997 Free Software Foundation, Inc. # # Author: Scott Christley # # This file is part of the GNUstep X/RAW GUI Backend. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # If you are interested in a warranty or support for this source code, # contact Scott Christley at scottc@net-community.com # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Makefile.preamble # # Project specific makefile variables, and additional # # Do not put any Makefile rules in this file, instead they should # be put into Makefile.postamble. # # # Flags dealing with compiling and linking # # Additional flags to pass to the preprocessor # ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler ADDITIONAL_OBJCFLAGS += -Wall # Additional flags to pass to the C compiler # ADDITIONAL_CFLAGS += # Additional include directories the compiler should search # ADDITIONAL_INCLUDE_DIRS += # Additional LDFLAGS to pass to the linker # ADDITIONAL_LDFLAGS += # Additional library directories the linker should search # ADDITIONAL_LIB_DIRS += # ADDITIONAL_TOOL_LIBS += # # Flags dealing with installing and uninstalling # # Additional directories to be created during installation # ADDITIONAL_INSTALL_DIRS += # # Local configuration # gnustep-examples-1.4.0/gui/GNUmakefile0000664000175000017500000000234711345031656016647 0ustar fedorfedor# # Gui examples makefile # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Nicola Pero # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ Calculator \ Classes \ CurrencyConverter \ Ink \ ExampleService \ GSTest # MyGL commented out because it required OpenGL which some people # don't have. # MyGL include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make gnustep-examples-1.4.0/gui/MyGL/0000775000175000017500000000000012204034627015373 5ustar fedorfedorgnustep-examples-1.4.0/gui/MyGL/README0000664000175000017500000000040110625210160016237 0ustar fedorfedor This is a simple example of how to use NSOpenGLView in GNUstep. The example demonstrates parsing a simple COLLADA file with a simple but very incomplete method. The example simulate lighting using dot product of vertice normals. AUTHOR: Banlu Kemiyatorn gnustep-examples-1.4.0/gui/MyGL/MyGL.gorm/0000775000175000017500000000000012204034627017146 5ustar fedorfedorgnustep-examples-1.4.0/gui/MyGL/MyGL.gorm/objects.gorm0000664000175000017500000000334110625210160021457 0ustar fedorfedorGNUstep archive00002af9:00000016:00000035:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0& % NSApplication0&%GSCustomClassMap0&0& % NSVisible01NSMutableArray1NSArray&0 1NSWindow1 NSResponder%  D C&% C D!0 1 NSView%  D C  D C&0 &0 1 NSColor0 &%NSNamedColorSpace0&%System0&%windowBackgroundColor0&%Window0& % My Window ? ? F@ F@%0& % My Window 0& % AppController01 GSNibItem  &0&%MenuItem01 NSMenuItem0&%Hide0&%h&&%01NSImage01NSMutableString&% common_2DCheckMark00& %  common_2DDash%0& %  MenuItem10 0&%Quit0 &%q&&%%0!&%NSMenu0"1NSMenu0#& % Main Menu0$&0%&  0&1NSNibConnector0'&%NSOwner0(!'0)!0*1NSNibControlConnector0+&%NSFirst0,&%hide:0-!0.+0/& % terminate:00'011NSNibOutletConnector02&% window03'04&% delegate051 GSMutableSet1 NSMutableSet1NSSet&" gnustep-examples-1.4.0/gui/MyGL/MyGL.gorm/data.classes0000664000175000017500000000024210625210160021425 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; AppController = { Actions = ( ); Outlets = ( window ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/MyGL/MyGL.gorm/data.info0000664000175000017500000000027010625210160020724 0ustar fedorfedorGNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/MyGL/AppController.h0000664000175000017500000000021411361444477020340 0ustar fedorfedor/* All Rights reserved */ #include @interface AppController : NSObject { id window; NSMutableArray *glViews; } @end gnustep-examples-1.4.0/gui/MyGL/AppController.m0000664000175000017500000002341111565145225020344 0ustar fedorfedor/* All Rights reserved */ #include #include #include "AppController.h" #define id gl_id #include #undef id #include #include #include typedef struct _Vector { float X; float Y; float Z; } Vector; typedef struct _Tri { int p1; int p2; int p3; } Tri; typedef struct tagMATRIX { float Data[16]; } MATRIX; @interface Mesh : NSObject { @public int vcount; Vector *vertices; int nvcount; Vector *nvertices; int pcount; /* FIXME rewrite to separate tris/quads/polygons */ Tri *polygons; Tri *pnormals; } @end @implementation Mesh static float DotProduct (Vector *v1, Vector *v2) { return v1->X * v2->X + v1->Y * v2->Y + v1->Z * v2->Z; } static float Magnitude (Vector *v) { return sqrtf(v->X * v->X + v->Y * v->Y + v->Z * v->Z); } static void Normalize (Vector *v) { float m = Magnitude(v); if (m != 0.0f) { v->X /= m; v->Y /= m; v->Z /= m; } } - (void) drawCelShadeWithRtx: (GLfloat)rtx rty: (GLfloat)rty rtz: (GLfloat)rtz { int t; Vector light; Vector vv; float xx; light.X = 1.0f + rtx; light.Y = 1.0f + rty; light.Z = 1.0f + rtz;; Normalize(&light); for(t = 0; t < pcount; t++) { glBegin( GL_TRIANGLES ); vv = nvertices[pnormals[t].p1]; Normalize(&vv); xx = DotProduct(&light,&vv); if (xx < 0.0f) xx = 0; glColor3f(xx,xx,xx); glVertex3f(vertices[polygons[t].p1].X, vertices[polygons[t].p1].Y, vertices[polygons[t].p1].Z); vv = nvertices[pnormals[t].p2]; Normalize(&vv); xx = DotProduct(&light,&vv); if (xx < 0.0f) xx = 0; glColor3f(xx,xx,xx); glVertex3f(vertices[polygons[t].p2].X, vertices[polygons[t].p2].Y, vertices[polygons[t].p2].Z); vv = nvertices[pnormals[t].p3]; Normalize(&vv); xx = DotProduct(&light,&vv); if (xx < 0.0f) xx = 0; glColor3f(xx,xx,xx); glVertex3f(vertices[polygons[t].p3].X, vertices[polygons[t].p3].Y, vertices[polygons[t].p3].Z); glEnd( ); } } - (void) draw { int t; /* glBegin( GL_POINTS ); for(t = 0; t < vcount-1; t++) { glVertex3f(vertices[t].X, vertices[t].Y, vertices[t].Z); } */ glColor3f(0.8f,0.5f,0.3f); glBegin( GL_TRIANGLES ); for(t = 0; t < pcount; t++) { glVertex3f(vertices[polygons[t].p1].X, vertices[polygons[t].p1].Y, vertices[polygons[t].p1].Z); glVertex3f(vertices[polygons[t].p2].X, vertices[polygons[t].p2].Y, vertices[polygons[t].p2].Z); glVertex3f(vertices[polygons[t].p3].X, vertices[polygons[t].p3].Y, vertices[polygons[t].p3].Z); } glEnd( ); } @end @interface MySAX : GSSAXHandler { BOOL trackMeshVertices; BOOL trackNormalVertices; BOOL trackPolygons; Mesh *mesh; int idx; } @end @implementation MySAX - (id) init { idx = 0; mesh = [Mesh new]; trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = NO; return [super init]; } - (Mesh *) currentMesh { return mesh; } - (void) characters:(NSString *)str { int p; NSEnumerator *en; if (trackMeshVertices) { NSArray *ar, *parray; str = [[str stringByTrimmingSpaces] stringByReplacingString:@"\t" withString:@""]; parray = [str componentsSeparatedByString:@"\n"]; mesh->vcount = [parray count]; mesh->vertices = malloc(sizeof(Vector) * mesh->vcount); NSLog(@"import %d vertices",mesh->vcount); p = 0; en = [parray objectEnumerator]; while ((str = [en nextObject])) { ar = [str componentsSeparatedByString:@" "]; if ([ar count] == 3) { mesh->vertices[p].X = [[ar objectAtIndex:0] floatValue]; mesh->vertices[p].Y = [[ar objectAtIndex:1] floatValue]; mesh->vertices[p].Z = [[ar objectAtIndex:2] floatValue]; p++; } } } else if (trackNormalVertices) { NSArray *ar, *parray; str = [[str stringByTrimmingSpaces] stringByReplacingString:@"\t" withString:@""]; parray = [str componentsSeparatedByString:@"\n"]; mesh->nvcount = [parray count]; mesh->nvertices = malloc(sizeof(Vector) * mesh->nvcount); NSLog(@"import %d normal vertices",mesh->nvcount); p = 0; en = [parray objectEnumerator]; while ((str = [en nextObject])) { ar = [str componentsSeparatedByString:@" "]; if ([ar count] == 3) { mesh->nvertices[p].X = [[ar objectAtIndex:0] floatValue]; mesh->nvertices[p].Y = [[ar objectAtIndex:1] floatValue]; mesh->nvertices[p].Z = [[ar objectAtIndex:2] floatValue]; p++; } } } else if (trackPolygons) { NSArray *parray = [str componentsSeparatedByString:@" "]; mesh->polygons[idx].p1 = [[parray objectAtIndex:0] intValue]; mesh->polygons[idx].p2 = [[parray objectAtIndex:2] intValue]; mesh->polygons[idx].p3 = [[parray objectAtIndex:4] intValue]; mesh->pnormals[idx].p1 = [[parray objectAtIndex:1] intValue]; mesh->pnormals[idx].p2 = [[parray objectAtIndex:3] intValue]; mesh->pnormals[idx].p3 = [[parray objectAtIndex:5] intValue]; idx ++; } } - (void) startElement: (NSString *)elementName attributes: (NSMutableDictionary *)elementAttributes { if ([elementName isEqualToString:@"float_array"]) { NSString *sourceName = [elementAttributes objectForKey:@"name"]; if ([sourceName isEqualToString:@"Sphere-Pos-Array"]) { trackMeshVertices = YES; trackNormalVertices = NO; trackPolygons = NO; } else if ([sourceName isEqualToString:@"Sphere-Normal-Array"]) { trackMeshVertices = NO; trackNormalVertices = YES; trackPolygons = NO; } } if ([elementName isEqualToString:@"polygons"]) { int pc = [[elementAttributes objectForKey:@"count"] intValue]; mesh->polygons = malloc(sizeof(Tri) * pc); mesh->pnormals = malloc(sizeof(Tri) * pc); mesh->pcount = pc; } /* if ([elementName isEqualToString:@"polygons"]) { NSString *sourceName = [elementAttributes objectForKey:@"source"]; if ([sourceName isEqualToString:@"#Mesh-Normal"]) { trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = YES; } } */ if ([elementName isEqualToString:@"p"]) { trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = YES; } } - (void) endElement:(NSString*)elementName { trackMeshVertices = NO; trackNormalVertices = NO; trackPolygons = NO; } - (void) endDocument { NSLog(@"end %d tris",idx); } @end @interface MyGLView : NSOpenGLView { NSMutableArray *meshArray; GLfloat _rtx; GLfloat _rty; GLfloat _rtz; GLfloat _artx; GLfloat _arty; GLfloat _artz; GLfloat _artl; } @end @implementation MyGLView - (void) scrollWheel:(NSEvent *)theEvent { _artl += [theEvent deltaY]; [self reshape]; } - (void) mouseDragged: (NSEvent*)theEvent { NSRect bounds = [self bounds]; _arty = [theEvent deltaX]/NSWidth(bounds) * 180; _artx = -[theEvent deltaY]/NSHeight(bounds) * 180; _artz = sqrtf(_arty * _artz); _rtz += _artz; _rty += _arty; _rtx += _artx; } - (void) prepareOpenGL { _artl = 50; meshArray = [NSMutableArray new]; glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glMatrixMode(GL_MODELVIEW); [self reshape]; } - (void) reshape { GLfloat ratio; NSRect sceneBounds = [self bounds]; [super reshape]; ratio = NSWidth(sceneBounds)/ NSHeight(sceneBounds); glViewport(0, 0, NSWidth(sceneBounds), NSHeight(sceneBounds)); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(_artl, ratio, 0.1f, 100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); [self setNeedsDisplay:YES]; } - (void) drawRect:(NSRect)r { unsigned int i; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); glTranslatef(-1.5f, 0.0f, -6.0f); glRotatef(_rtx,1.0f,0.0f,0.0f); glRotatef(_rty,0.0f,1.0f,0.0f); glRotatef(_rtz,0.0f,0.0f,1.0f); for (i=0; i<[meshArray count]; i++) { [[meshArray objectAtIndex: i] drawCelShadeWithRtx: _rtx rty: _rty rtz: _rtz]; } [[self openGLContext] flushBuffer]; } -(void) refresh { [self setNeedsDisplay:YES]; } - (void) loadModel { GSXMLParser *p; MySAX *h; h = [MySAX new]; p = [GSXMLParser parserWithSAXHandler:h withContentsOfFile:@"girl.dae"]; if ([p parse]) { [meshArray addObject:[h currentMesh]]; } } @end @implementation AppController -(void) applicationDidFinishLaunching: (NSNotification *)not { int i; for (i=0; i<[glViews count]; i++) { [NSTimer scheduledTimerWithTimeInterval:0.05 //(1.0 / 30) target:[glViews objectAtIndex: i] selector:@selector(refresh) userInfo:nil repeats:YES]; [[glViews objectAtIndex: i] loadModel]; } } -(void) applicationWillFinishLaunching: (NSNotification *)not { NSView *glview1, *glview2, *glview3; NSSplitView *splitView1, *splitView2; glViews = [NSMutableArray new]; glview1 = [[MyGLView alloc] initWithFrame: [window frame]]; glview2 = [[MyGLView alloc] initWithFrame: [window frame]]; glview3 = [[MyGLView alloc] initWithFrame: [window frame]]; [glViews addObject: glview1]; [glViews addObject: glview2]; [glViews addObject: glview3]; splitView1 = [[[NSSplitView alloc] initWithFrame: [window frame]] autorelease]; [splitView1 addSubview: glview1]; [splitView1 addSubview: glview2]; splitView2 = [[[NSSplitView alloc] initWithFrame: [window frame]] autorelease]; [splitView2 addSubview: splitView1]; [splitView2 addSubview: glview3]; [splitView2 setVertical: YES]; [window setContentView: splitView2]; } @end gnustep-examples-1.4.0/gui/MyGL/GNUmakefile0000664000175000017500000000065011346564126017456 0ustar fedorfedorinclude $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = MyGL VERSION = 0.0.1 APP_NAME = MyGL MyGL_MAIN_MODEL_FILE=MyGL.gorm MyGL_APPLICATION_ICON=MyGL.tiff MyGL_OBJC_FILES = main.m AppController.m MyGL_RESOURCE_FILES = MyGL.gorm MyGL.tiff ifeq ($(GNUSTEP_TARGET_OS), mingw32) ADDITIONAL_TOOL_LIBS += -lopengl32 -lglu32 -lm else ADDITIONAL_TOOL_LIBS += -lGL -lGLU -lm endif include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/MyGL/girl.dae0000664000175000017500000036777210625210160017022 0ustar fedorfedor Mikael Lagr Blender 239 COLLADA Exporter Z_UP -0.004722 -0.002401 1.509695 0.311156 0.004351 1.480164 0.629647 0.008786 1.347267 0.921111 0.025292 1.130402 1.122592 0.083112 0.765116 1.239940 0.219754 0.312435 1.269134 0.272864 -0.122613 1.261864 0.140740 -1.064949 1.144060 0.050491 -1.594448 0.649391 0.667220 -1.684135 1.083963 0.729821 -1.115975 1.083077 0.771315 -0.239883 1.066184 0.838755 0.264698 0.953774 0.760155 0.687563 0.756961 0.605039 1.124273 0.514784 0.376324 1.344748 0.255439 0.178294 1.479648 0.109361 0.284999 1.479574 0.212266 0.598612 1.344036 0.302261 0.946982 1.120865 0.367671 1.190207 0.691367 0.414458 1.284230 0.304565 0.412982 1.192497 -0.185306 0.401581 1.005254 -1.072600 0.326199 0.825622 -1.839507 -0.273964 0.707633 -1.872376 -0.305607 0.982777 -1.142334 -0.331440 1.190482 -0.174864 -0.342235 1.283612 0.317032 -0.326613 1.190429 0.697237 -0.252741 0.947251 1.122650 -0.161903 0.598866 1.345249 -0.072001 0.285711 1.480219 -0.224155 0.183832 1.483643 -0.504501 0.358729 1.216835 -0.718857 0.610836 1.126683 -0.905933 0.764893 0.694979 -0.961533 0.833022 0.312938 -0.962111 0.761352 -0.191240 -0.960067 0.660070 -1.092785 -0.910650 0.244254 -1.690766 -1.019364 0.043162 -1.680333 -1.237329 0.104716 -1.138870 -1.260625 0.216101 -0.069309 -1.245367 0.180612 0.368657 -1.175600 0.119664 0.769293 -0.840585 0.080183 1.234514 -0.517876 0.105730 1.178017 -0.301644 0.031480 1.491102 -0.209093 -0.195590 1.479248 -0.443608 -0.790323 1.054834 -0.349852 -0.943614 0.899967 -0.628759 -0.585050 0.586619 -0.781555 -0.059511 0.303312 -0.783916 -0.084866 -0.174364 -0.863104 -0.218909 -1.074160 -0.778934 -0.190462 -1.403816 -0.295863 -0.767635 0.600673 -0.187051 -1.083770 1.013120 -0.161524 -0.903705 1.161562 -0.068937 -0.277937 1.480934 0.109575 -0.274210 1.480509 0.209021 -0.883003 1.170416 0.202917 -1.175503 1.080349 0.118804 -0.919126 0.806724 1.071139 -0.336300 -1.410787 1.011269 0.045758 -1.093950 0.946156 0.113247 -0.071089 0.904837 -0.410710 -0.002696 0.557823 -0.945804 0.523642 0.709204 -0.868993 1.043998 0.510802 -0.348053 1.345189 0.255193 -0.167826 1.480127 -0.281194 -0.088853 1.481929 -0.527478 -0.193360 1.172431 -0.813893 -0.279046 0.994867 -1.023565 -0.492329 0.610528 -1.072917 -0.341830 0.256991 -1.124655 -0.205320 -0.076424 -1.186205 -0.268088 -1.127160 -1.012706 -0.422234 -1.620123 -0.906462 0.334661 -1.885313 -0.600611 0.027463 -4.152149 -0.902469 -0.254369 -1.893761 -0.600611 -0.476965 -4.141292 -0.796291 0.522206 -2.070430 -0.791491 -0.498892 -2.090665 -0.872797 0.325550 -2.606121 -0.780885 -0.627010 -2.552040 -0.667682 0.346570 -3.086238 -0.667682 -0.346682 -3.037199 -0.368392 0.122804 -4.151479 -0.404268 0.229136 -1.690712 -0.368392 -0.621854 -4.140828 -0.269364 -0.271419 -1.797420 -0.450661 0.606843 -2.005300 -0.450661 -0.634985 -2.035331 -0.475053 0.722042 -2.503450 -0.475053 -0.945204 -2.587085 -0.428623 0.550897 -3.062177 -0.428623 -0.631592 -3.007573 -2.849967 0.228890 -2.214467 -2.843373 0.210322 -2.592588 -1.185474 0.385261 -2.075310 -2.849967 -0.210875 -2.260902 -2.843373 -0.164425 -2.574024 -0.964709 -0.259255 -2.642335 -1.007266 -0.343004 -2.142704 -0.650048 -0.215183 -4.152543 -0.776221 0.035946 -3.046509 -0.904445 0.037201 -1.815258 -0.338934 -0.049336 -1.768054 -2.849967 0.006906 -2.084436 -1.179483 0.032026 -1.956811 -0.785792 0.495180 -5.731670 -0.486012 0.566762 -5.107398 -0.772311 -0.617992 -4.834346 -0.452368 -0.646480 -4.927737 -1.011787 -0.001875 -4.983307 -0.189588 -0.142943 -5.766425 -0.334203 -0.478415 -5.680429 -0.787421 -0.121649 -7.797594 -0.716177 0.145200 -7.797594 -0.554710 -0.439352 -7.957712 -0.398849 -0.373740 -7.955990 -0.348998 0.158352 -7.809487 -0.910050 -0.147146 -8.235917 -0.827776 0.267856 -8.216660 -0.685408 -0.483216 -8.310151 -0.235146 -0.338859 -8.275166 -0.215891 0.267589 -8.217410 -0.822575 0.026974 -11.460099 -0.686746 0.259639 -11.443349 -0.701690 -0.350001 -11.435402 -0.448276 -0.311457 -11.425807 -0.463848 0.088348 -11.367784 -0.698044 0.298932 -11.668348 -0.930870 0.214389 -11.633876 -0.905757 -0.692238 -11.653914 -0.464277 0.021691 -11.671431 -0.393220 -0.578550 -11.627039 -0.906575 0.586451 -11.832888 -0.538132 0.580866 -11.908137 -1.249761 -1.380246 -11.960634 -0.417916 0.042952 -11.924186 -0.291094 -1.615938 -11.784433 -0.422043 0.606663 -12.157771 -0.957004 0.545073 -12.135144 -1.271261 -1.369496 -12.179194 -0.417916 0.042952 -12.173820 -0.231968 -1.605188 -12.173820 -3.121521 0.315855 -2.238085 -3.090795 0.292085 -2.666415 -3.121521 -0.247101 -2.297528 -3.090795 -0.187638 -2.642651 -3.121521 0.031686 -2.071629 -5.131486 0.129013 -2.251881 -5.127014 0.116419 -2.508353 -5.131486 -0.169271 -2.283377 -5.127014 -0.137765 -2.495762 -5.131486 -0.021555 -2.163684 -5.683405 0.304309 -2.171108 -5.700045 0.278530 -2.380086 -5.484571 -0.247125 -2.235577 -5.501211 -0.182635 -2.354313 -5.559806 -0.003882 -1.990581 -6.266573 0.309951 -2.219281 -6.293324 0.278530 -2.380086 -6.293324 -0.241748 -2.354313 -6.276685 -0.306238 -2.235577 -6.289582 -0.003883 -2.106658 -5.353882 -0.387935 -2.303842 -5.356596 -0.370550 -2.550598 -5.636520 -0.427928 -2.361123 -5.601425 -0.463514 -2.272283 -5.666198 -0.652199 -2.303842 -5.658709 -0.636316 -2.470270 -5.776525 -0.533331 -2.392218 -5.786028 -0.570041 -2.277466 -5.980045 0.304309 -2.171108 -5.996685 0.278530 -2.380086 -5.996685 -0.241748 -2.354313 -5.980045 -0.306238 -2.235577 -5.986494 -0.003883 -2.048619 0.869797 0.334660 -1.885314 0.563946 0.027462 -4.152150 0.865803 -0.254370 -1.893762 0.563945 -0.476966 -4.141294 -0.018333 0.166353 -4.159896 -0.005916 0.383901 -1.634407 -0.018333 -0.665016 -4.149249 -0.009166 -0.354324 -1.750714 0.759625 0.522205 -2.070432 0.754826 -0.498893 -2.090666 -0.018333 0.618264 -1.969282 -0.018333 -0.629968 -2.260230 0.836131 0.325549 -2.606122 0.744219 -0.627011 -2.552041 -0.018333 0.737524 -2.502885 -0.018333 -0.818295 -2.597813 0.631017 0.346569 -3.086239 0.631017 -0.346682 -3.037200 -0.018333 0.547982 -3.026368 -0.018333 -0.638049 -2.955011 0.331727 0.122803 -4.151480 0.383644 0.229135 -1.690712 0.331726 -0.621855 -4.140829 0.251032 -0.271419 -1.797420 0.413996 0.606842 -2.005301 0.413996 -0.634986 -2.035332 0.438387 0.722042 -2.503451 0.438387 -0.945205 -2.587087 0.391958 0.550896 -3.062178 0.391958 -0.631593 -3.007575 2.813301 0.228890 -2.214468 2.806707 0.210321 -2.592589 1.148809 0.385260 -2.075311 2.813301 -0.210876 -2.260903 2.806707 -0.164425 -2.574025 0.928044 -0.259255 -2.642337 0.970601 -0.343004 -2.142705 0.613382 -0.215183 -4.152544 0.739555 0.035945 -3.046510 0.867780 0.037200 -1.815259 0.320601 -0.049336 -1.768054 2.813301 0.006905 -2.084437 1.142818 0.032025 -1.956813 0.749695 0.495180 -5.731672 0.449914 0.566761 -5.107400 -0.018049 0.508939 -4.912330 0.736214 -0.617993 -4.834347 0.416271 -0.646481 -4.927739 -0.018049 -0.708696 -4.956696 0.975690 -0.001876 -4.983308 0.153491 -0.142943 -5.766426 -0.018049 -0.299746 -5.811651 0.298105 -0.478416 -5.680431 -0.018049 -0.599093 -5.619873 0.750755 -0.121649 -7.797596 0.679511 0.145199 -7.797596 0.518045 -0.439353 -7.957714 0.362183 -0.373740 -7.955991 0.312333 0.158351 -7.809488 0.873385 -0.147147 -8.235919 0.791111 0.267856 -8.216662 0.648742 -0.483217 -8.310153 0.198481 -0.338859 -8.275167 0.179226 0.267588 -8.217412 0.785909 0.026973 -11.460100 0.650081 0.259639 -11.443350 0.665024 -0.350002 -11.435403 0.411611 -0.311458 -11.425808 0.427182 0.088348 -11.367785 0.661378 0.298931 -11.668349 0.894205 0.214388 -11.633877 0.869091 -0.692238 -11.653915 0.427612 0.021690 -11.671432 0.356555 -0.578551 -11.627040 0.869909 0.586450 -11.832889 0.501467 0.580865 -11.908139 1.213096 -1.380247 -11.960635 0.381250 0.042951 -11.924187 0.254428 -1.615939 -11.784434 0.385378 0.606663 -12.157773 0.920339 0.545073 -12.135145 1.234596 -1.369497 -12.179195 0.381250 0.042951 -12.173820 0.195303 -1.605189 -12.173820 3.084856 0.315854 -2.238086 3.054130 0.292084 -2.666416 3.084856 -0.247102 -2.297529 3.054130 -0.187639 -2.642652 3.084856 0.031685 -2.071630 5.094821 0.129013 -2.251881 5.090348 0.116418 -2.508354 5.094821 -0.169272 -2.283378 5.090348 -0.137765 -2.495762 5.094821 -0.021555 -2.163684 5.646740 0.304309 -2.171109 5.663380 0.278529 -2.380086 5.447906 -0.247125 -2.235578 5.464546 -0.182636 -2.354313 5.523140 -0.003883 -1.990581 6.229908 0.309951 -2.219281 6.256659 0.278529 -2.380086 6.256659 -0.241748 -2.354313 6.240019 -0.306238 -2.235577 6.252917 -0.003883 -2.106658 5.317216 -0.387935 -2.303843 5.319931 -0.370550 -2.550599 5.599854 -0.427928 -2.361124 5.564760 -0.463514 -2.272284 5.629532 -0.652199 -2.303843 5.622043 -0.636316 -2.470270 5.739859 -0.533331 -2.392218 5.749362 -0.570041 -2.277466 5.943379 0.304309 -2.171109 5.960019 0.278529 -2.380086 5.960019 -0.241748 -2.354313 5.943379 -0.306238 -2.235577 5.949828 -0.003883 -2.048620 -0.401867 0.086738 1.034123 -0.644789 0.137001 0.876974 -0.821133 0.155520 0.559323 -0.885422 0.224405 0.020399 -0.843232 0.224480 -0.275906 -0.824983 0.207474 -0.567571 -0.684017 0.169814 -0.826495 -0.505359 0.141634 -1.050827 -0.326739 0.057394 -1.196920 -0.186452 0.190676 -1.168547 -0.454857 0.317351 -1.039432 -0.511561 0.549504 -0.803566 -0.701011 0.705175 -0.536782 -0.725640 0.747127 -0.250692 -0.748927 0.757165 0.034190 -0.694429 0.681802 0.577343 -0.453658 0.480258 0.899515 -0.264153 0.309679 1.078010 -0.002755 0.728528 0.919224 -0.002755 1.087470 0.031783 -0.002755 1.085113 -0.250692 -0.002755 0.972154 -0.452221 -0.002755 0.232208 -1.218666 -0.002755 -0.716161 -1.230561 -0.189255 -0.250827 1.023784 -0.378846 -0.486542 0.840604 -0.407728 -0.820409 0.493326 -0.178799 -0.769572 -0.108254 -0.265032 -0.999147 -0.486702 -0.319394 -0.853698 -0.669922 -0.367428 -0.675422 -0.930869 -0.265455 -0.477535 -1.153310 -0.162261 -0.251309 -1.235422 -0.293096 -0.126452 -1.226803 -0.465127 -0.173759 -1.076408 -0.742281 -0.264702 -0.896087 -0.848727 -0.337326 -0.673489 -0.825404 -0.365804 -0.386482 -0.682520 -0.358963 -0.095895 -0.674626 -0.427158 0.531773 -0.573154 -0.203271 0.828115 -0.306227 -0.101054 1.021222 -0.865486 0.189488 0.285943 -0.767019 0.732744 0.283508 -0.212613 -0.749916 0.187274 -0.633660 -0.408668 0.220779 -0.002755 -0.002952 1.094305 0.396357 0.086738 1.034123 0.639279 0.137001 0.876974 0.815622 0.155520 0.559323 0.879912 0.224405 0.020399 0.837722 0.224480 -0.275906 0.819473 0.207474 -0.567571 0.678507 0.169814 -0.826495 0.499849 0.141634 -1.050827 0.317663 0.057394 -1.196921 0.178876 0.190676 -1.168547 0.449346 0.317351 -1.039432 0.506051 0.549504 -0.803566 0.695500 0.705175 -0.536782 0.720129 0.747127 -0.250692 0.743417 0.757165 0.034190 0.688919 0.681802 0.577343 0.448148 0.480258 0.899515 0.258643 0.309679 1.078010 -0.002755 0.337748 1.104096 -0.002755 0.978527 0.547346 -0.002755 0.792813 -0.766052 -0.002755 0.466917 -0.998166 -0.002755 -0.370290 -1.268588 -0.002755 -0.890309 -0.917104 -0.002755 -1.007790 -0.640426 -0.002755 -1.119306 -0.432375 -0.002755 -0.888411 -0.052545 -0.002755 -0.915245 0.481985 -0.002755 -0.645154 0.859502 -0.002755 -0.344570 1.027871 0.183745 -0.250827 1.023784 0.373336 -0.486542 0.840604 0.402218 -0.820409 0.493326 0.173289 -0.769572 -0.108254 0.259522 -0.999147 -0.486702 0.313883 -0.853699 -0.669922 0.361918 -0.675422 -0.930869 0.259944 -0.477535 -1.153310 0.156751 -0.251309 -1.235422 0.287585 -0.126452 -1.226803 0.459616 -0.173759 -1.076408 0.736771 -0.264702 -0.896087 0.843216 -0.337326 -0.673489 0.819893 -0.365804 -0.386482 0.677010 -0.358963 -0.095895 0.669116 -0.427158 0.531773 0.567644 -0.203271 0.828115 0.300717 -0.101054 1.021222 0.859976 0.189488 0.285943 0.761509 0.732744 0.283508 -0.002755 1.067321 0.319980 -0.002755 -0.871789 0.192234 0.207103 -0.749916 0.187274 0.628150 -0.408668 0.220779 0.232612 0.138768 0.962584 0.000824 -0.007721 0.999969 0.272561 -0.027192 0.961730 0.090823 0.273415 0.957579 0.000824 -0.007721 0.999969 0.232612 0.138768 0.962584 -0.059786 0.235572 0.970000 0.000824 -0.007721 0.999969 0.090823 0.273415 0.957579 -0.403058 0.208777 0.891018 0.000824 -0.007721 0.999969 -0.059786 0.235572 0.970000 -0.472396 0.055940 0.879604 0.000824 -0.007721 0.999969 -0.403058 0.208777 0.891018 -0.135319 -0.332377 0.933378 0.000824 -0.007721 0.999969 -0.368694 -0.279733 0.886441 0.111118 -0.282266 0.952849 0.000824 -0.007721 0.999969 -0.135319 -0.332377 0.933378 0.201361 -0.145360 0.968657 0.000824 -0.007721 0.999969 0.111118 -0.282266 0.952849 0.272561 -0.027192 0.961730 0.000824 -0.007721 0.999969 0.201361 -0.145360 0.968657 -0.525895 -0.169744 0.833399 0.000824 -0.007721 0.999969 -0.472396 0.055940 0.879604 -0.368694 -0.279733 0.886441 0.000824 -0.007721 0.999969 -0.525895 -0.169744 0.833399 -0.380627 -0.463881 0.799921 -0.497696 -0.826014 0.264534 -0.502792 -0.767479 0.397687 -0.350749 0.490341 0.797784 -0.400952 0.891446 0.211005 -0.281014 0.876736 0.390271 -0.400952 0.891446 0.211005 -0.612140 0.675222 -0.411451 -0.281014 0.876736 0.390271 -0.958098 0.073672 -0.276681 -0.612140 0.675222 -0.411451 -0.724174 0.625904 -0.289438 -0.958098 0.073672 -0.276681 -0.639851 -0.370403 -0.673299 -0.612140 0.675222 -0.411451 -0.862758 -0.425550 -0.272958 -0.639851 -0.370403 -0.673299 -0.958098 0.073672 -0.276681 -0.862758 -0.425550 -0.272958 -0.710746 -0.693289 -0.118870 -0.639851 -0.370403 -0.673299 -0.210273 -0.760186 0.614704 -0.380627 -0.463881 0.799921 -0.502792 -0.767479 0.397687 -0.210273 -0.760186 0.614704 -0.510330 -0.615497 0.600574 -0.380627 -0.463881 0.799921 -0.637013 -0.767907 0.067019 0.082125 -0.912076 -0.401685 -0.207007 -0.977874 -0.029389 -0.502213 0.864406 -0.023072 -0.033876 0.998840 0.033937 0.675008 0.565355 -0.474044 0.794641 0.558214 -0.238502 0.536729 0.050081 -0.842250 -0.587603 0.638905 -0.496445 -0.393231 0.878842 0.270119 -0.801538 0.426466 -0.419050 -0.668294 -0.031465 0.743217 0.382305 -0.464370 0.798853 0.502792 -0.767479 0.397687 0.497696 -0.826014 0.264534 0.352886 0.490829 0.796564 0.281014 0.876736 0.390271 0.400952 0.891446 0.211005 0.400952 0.891446 0.211005 0.281014 0.876736 0.390271 0.612140 0.675222 -0.411451 0.958098 0.073672 -0.276681 0.724174 0.625904 -0.289438 0.612140 0.675222 -0.411451 0.958098 0.073672 -0.276681 0.612140 0.675222 -0.411451 0.639851 -0.370403 -0.673299 0.862758 -0.425550 -0.272958 0.958098 0.073672 -0.276681 0.639851 -0.370403 -0.673299 0.862758 -0.425550 -0.272958 0.639851 -0.370403 -0.673299 0.710746 -0.693289 -0.118870 0.210486 -0.760857 0.613788 0.502792 -0.767479 0.397687 0.382305 -0.464370 0.798853 0.210486 -0.760857 0.613788 0.382305 -0.464370 0.798853 0.514664 -0.620502 0.591662 0.637013 -0.767907 0.067232 0.207007 -0.977874 -0.029298 -0.082156 -0.912076 -0.401624 0.502243 0.864376 -0.023041 -0.675039 0.565355 -0.473952 0.033937 0.998840 0.034028 -0.794641 0.558214 -0.238502 0.587603 0.638905 -0.496445 -0.536729 0.050081 -0.842250 0.393231 0.878842 0.270119 0.668294 -0.031465 0.743217 0.801538 0.426466 -0.419050 0.000000 -0.121616 0.992553 -0.262612 0.191076 0.945769 -0.426710 -0.063051 0.902158 0.000000 0.361583 0.932310 -0.262612 0.191076 0.945769 0.000000 -0.121616 0.992553 -0.249825 -0.279641 0.927000 0.000000 -0.387707 0.921751 0.000000 -0.121616 0.992553 -0.357707 -0.244819 0.901151 -0.249825 -0.279641 0.927000 0.000000 -0.121616 0.992553 -0.426710 -0.063051 0.902158 -0.357707 -0.244819 0.901151 0.000000 -0.121616 0.992553 0.001617 0.976745 -0.214393 0.007233 0.890500 0.454848 -0.390179 0.866878 -0.310190 0.000000 -0.999939 0.008087 -0.576647 -0.815607 0.047090 0.000000 -0.880093 -0.474776 -0.576647 -0.815607 0.047090 -0.558214 -0.758568 -0.336039 0.000000 -0.880093 -0.474776 0.262612 0.191076 0.945769 0.000000 -0.121616 0.992553 0.426710 -0.063051 0.902158 0.000000 0.361583 0.932310 0.000000 -0.121616 0.992553 0.262612 0.191076 0.945769 0.249825 -0.279641 0.927000 0.000000 -0.121616 0.992553 0.000000 -0.387707 0.921751 0.357707 -0.244819 0.901151 0.000000 -0.121616 0.992553 0.249825 -0.279641 0.927000 0.426710 -0.063051 0.902158 0.000000 -0.121616 0.992553 0.357707 -0.244819 0.901151 0.001617 0.976745 -0.214393 0.392956 0.864071 -0.314493 0.007233 0.890500 0.454848 0.000000 -0.999939 0.008087 0.000000 -0.880093 -0.474776 0.576647 -0.815607 0.047090 0.576647 -0.815607 0.047090 0.000000 -0.880093 -0.474776 0.558214 -0.758568 -0.336039 0.987457 -0.086123 0.132267 0.939817 -0.045991 0.338542 0.822871 -0.559771 -0.097476 0.822871 -0.559771 -0.097476 0.939817 -0.045991 0.338542 0.860622 -0.424726 0.280862 0.997742 0.045930 -0.048708 0.987457 -0.086123 0.132267 0.875607 -0.466506 0.125095 0.875607 -0.466506 0.125095 0.987457 -0.086123 0.132267 0.822871 -0.559771 -0.097476 0.822871 -0.559771 -0.097476 0.554613 -0.817103 0.157048 0.512925 -0.842280 -0.165654 0.822871 -0.559771 -0.097476 0.860622 -0.424726 0.280862 0.554613 -0.817103 0.157048 0.875607 -0.466506 0.125095 0.822871 -0.559771 -0.097476 0.621296 -0.751823 0.220740 0.621296 -0.751823 0.220740 0.822871 -0.559771 -0.097476 0.512925 -0.842280 -0.165654 0.512925 -0.842280 -0.165654 0.000000 -0.999329 0.036134 0.000000 -0.999146 -0.040742 0.512925 -0.842280 -0.165654 0.554613 -0.817103 0.157048 0.000000 -0.999329 0.036134 0.621296 -0.751823 0.220740 0.512925 -0.842280 -0.165654 0.000000 -0.948637 0.316324 0.000000 -0.948637 0.316324 0.512925 -0.842280 -0.165654 0.000000 -0.999146 -0.040742 0.000000 0.980590 0.195959 0.694174 0.568529 0.441389 0.830775 0.538438 0.140934 0.000000 0.980590 0.195959 0.000000 0.841762 0.539842 0.694174 0.568529 0.441389 0.000000 0.999969 -0.003265 0.000000 0.980590 0.195959 0.696463 0.717368 -0.016511 0.696463 0.717368 -0.016511 0.000000 0.980590 0.195959 0.830775 0.538438 0.140934 0.830775 0.538438 0.140934 0.694174 0.568529 0.441389 0.987457 -0.086123 0.132267 0.987457 -0.086123 0.132267 0.694174 0.568529 0.441389 0.939817 -0.045991 0.338542 0.696463 0.717368 -0.016511 0.830775 0.538438 0.140934 0.997742 0.045930 -0.048708 0.997742 0.045930 -0.048708 0.830775 0.538438 0.140934 0.987457 -0.086123 0.132267 0.847926 0.157842 -0.506027 0.708762 -0.305368 0.635884 0.543290 0.441328 0.714133 0.847926 0.157842 -0.506027 0.875088 -0.382092 -0.296976 0.708762 -0.305368 0.635884 0.875088 -0.382092 -0.296976 0.514664 -0.620502 0.591662 0.708762 -0.305368 0.635884 0.875088 -0.382092 -0.296976 0.591052 -0.653737 -0.472457 0.514664 -0.620502 0.591662 0.591052 -0.653737 -0.472457 -0.000031 -0.909146 0.416456 0.514664 -0.620502 0.591662 0.591052 -0.653737 -0.472457 0.000427 -0.500504 -0.865688 -0.000031 -0.909146 0.416456 0.392956 0.864071 -0.314493 0.543290 0.441328 0.714133 0.007233 0.890500 0.454848 0.392956 0.864071 -0.314493 0.847926 0.157842 -0.506027 0.543290 0.441328 0.714133 0.875088 -0.382092 -0.296976 0.847926 0.157842 -0.506027 0.619770 -0.137944 -0.772546 0.619770 -0.137944 -0.772546 0.847926 0.157842 -0.506027 0.688314 0.100833 -0.718345 0.619770 -0.137944 -0.772546 0.790338 0.216346 -0.573168 0.712119 -0.138401 -0.688253 0.619770 -0.137944 -0.772546 0.688314 0.100833 -0.718345 0.790338 0.216346 -0.573168 0.712119 -0.138401 -0.688253 0.790338 0.216346 -0.573168 0.901669 -0.303415 -0.308023 0.901669 -0.303415 -0.308023 0.790338 0.216346 -0.573168 0.939512 0.174993 -0.294351 0.901669 -0.303415 -0.308023 0.939512 0.174993 -0.294351 0.881405 -0.444441 0.159764 0.881405 -0.444441 0.159764 0.939512 0.174993 -0.294351 0.998840 0.045778 -0.014496 0.881405 -0.444441 0.159764 0.998840 0.045778 -0.014496 0.875607 -0.466506 0.125095 0.875607 -0.466506 0.125095 0.998840 0.045778 -0.014496 0.997742 0.045930 -0.048708 0.860622 -0.424726 0.280862 0.939817 -0.045991 0.338542 0.671926 -0.301340 0.676473 0.671926 -0.301340 0.676473 0.939817 -0.045991 0.338542 0.725883 0.040864 0.686575 0.671926 -0.301340 0.676473 0.426710 -0.063051 0.902158 0.357707 -0.244819 0.901151 0.671926 -0.301340 0.676473 0.725883 0.040864 0.686575 0.426710 -0.063051 0.902158 0.452712 -0.467055 0.759514 0.357707 -0.244819 0.901151 0.249825 -0.279641 0.927000 0.452712 -0.467055 0.759514 0.671926 -0.301340 0.676473 0.357707 -0.244819 0.901151 0.554613 -0.817103 0.157048 0.860622 -0.424726 0.280862 0.452712 -0.467055 0.759514 0.452712 -0.467055 0.759514 0.860622 -0.424726 0.280862 0.671926 -0.301340 0.676473 0.576647 -0.815607 0.047090 0.881405 -0.444441 0.159764 0.621296 -0.751823 0.220740 0.621296 -0.751823 0.220740 0.881405 -0.444441 0.159764 0.875607 -0.466506 0.125095 0.558214 -0.758568 -0.336039 0.881405 -0.444441 0.159764 0.576647 -0.815607 0.047090 0.558214 -0.758568 -0.336039 0.901669 -0.303415 -0.308023 0.881405 -0.444441 0.159764 0.586718 -0.575610 -0.569536 0.901669 -0.303415 -0.308023 0.558214 -0.758568 -0.336039 0.586718 -0.575610 -0.569536 0.712119 -0.138401 -0.688253 0.901669 -0.303415 -0.308023 0.514206 -0.235664 -0.824610 0.619770 -0.137944 -0.772546 0.586718 -0.575610 -0.569536 0.586718 -0.575610 -0.569536 0.619770 -0.137944 -0.772546 0.712119 -0.138401 -0.688253 0.591052 -0.653737 -0.472457 0.619770 -0.137944 -0.772546 0.514206 -0.235664 -0.824610 0.591052 -0.653737 -0.472457 0.875088 -0.382092 -0.296976 0.619770 -0.137944 -0.772546 0.000427 -0.500504 -0.865688 0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 0.000427 -0.500504 -0.865688 0.591052 -0.653737 -0.472457 0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 0.000000 -0.547472 -0.836787 0.514206 -0.235664 -0.824610 0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 0.558214 -0.758568 -0.336039 0.000000 -0.880093 -0.474776 0.000000 -0.888363 -0.459090 0.586718 -0.575610 -0.569536 0.558214 -0.758568 -0.336039 0.000000 -0.999939 0.008087 0.576647 -0.815607 0.047090 0.000000 -0.948637 0.316324 0.000000 -0.948637 0.316324 0.576647 -0.815607 0.047090 0.621296 -0.751823 0.220740 0.000000 -0.999329 0.036134 0.554613 -0.817103 0.157048 0.000000 -0.681295 0.731986 0.000000 -0.681295 0.731986 0.554613 -0.817103 0.157048 0.452712 -0.467055 0.759514 0.000000 -0.681295 0.731986 0.452712 -0.467055 0.759514 0.000000 -0.387707 0.921751 0.000000 -0.387707 0.921751 0.452712 -0.467055 0.759514 0.249825 -0.279641 0.927000 0.392956 0.864071 -0.314493 0.000366 0.635487 -0.772088 0.449568 0.445143 -0.774407 0.392956 0.864071 -0.314493 0.001617 0.976745 -0.214393 0.000366 0.635487 -0.772088 0.449568 0.445143 -0.774407 0.000366 0.635487 -0.772088 0.490158 0.581530 -0.649251 0.490158 0.581530 -0.649251 0.000366 0.635487 -0.772088 0.000000 0.738212 -0.674551 0.490158 0.581530 -0.649251 0.000000 0.891354 -0.453230 0.745720 0.552538 -0.372204 0.490158 0.581530 -0.649251 0.000000 0.738212 -0.674551 0.000000 0.891354 -0.453230 0.745720 0.552538 -0.372204 0.000000 0.891354 -0.453230 0.712180 0.682150 -0.165532 0.712180 0.682150 -0.165532 0.000000 0.891354 -0.453230 0.000000 0.965758 -0.259407 0.712180 0.682150 -0.165532 0.000000 0.999969 -0.003265 0.696463 0.717368 -0.016511 0.712180 0.682150 -0.165532 0.000000 0.965758 -0.259407 0.000000 0.999969 -0.003265 0.694174 0.568529 0.441389 0.000000 0.841762 0.539842 0.494247 0.463546 0.735405 0.494247 0.463546 0.735405 0.000000 0.841762 0.539842 0.000000 0.645039 0.764122 0.494247 0.463546 0.735405 0.000000 0.361583 0.932310 0.262612 0.191076 0.945769 0.494247 0.463546 0.735405 0.000000 0.645039 0.764122 0.000000 0.361583 0.932310 0.725883 0.040864 0.686575 0.494247 0.463546 0.735405 0.426710 -0.063051 0.902158 0.426710 -0.063051 0.902158 0.494247 0.463546 0.735405 0.262612 0.191076 0.945769 0.939817 -0.045991 0.338542 0.494247 0.463546 0.735405 0.725883 0.040864 0.686575 0.939817 -0.045991 0.338542 0.694174 0.568529 0.441389 0.494247 0.463546 0.735405 0.998840 0.045778 -0.014496 0.712180 0.682150 -0.165532 0.997742 0.045930 -0.048708 0.997742 0.045930 -0.048708 0.712180 0.682150 -0.165532 0.696463 0.717368 -0.016511 0.939512 0.174993 -0.294351 0.745720 0.552538 -0.372204 0.998840 0.045778 -0.014496 0.998840 0.045778 -0.014496 0.745720 0.552538 -0.372204 0.712180 0.682150 -0.165532 0.790338 0.216346 -0.573168 0.490158 0.581530 -0.649251 0.939512 0.174993 -0.294351 0.939512 0.174993 -0.294351 0.490158 0.581530 -0.649251 0.745720 0.552538 -0.372204 0.688314 0.100833 -0.718345 0.449568 0.445143 -0.774407 0.790338 0.216346 -0.573168 0.790338 0.216346 -0.573168 0.449568 0.445143 -0.774407 0.490158 0.581530 -0.649251 0.847926 0.157842 -0.506027 0.449568 0.445143 -0.774407 0.688314 0.100833 -0.718345 0.847926 0.157842 -0.506027 0.392956 0.864071 -0.314493 0.449568 0.445143 -0.774407 -0.987457 -0.086123 0.132267 -0.822871 -0.559771 -0.097476 -0.939817 -0.045991 0.338542 -0.939817 -0.045991 0.338542 -0.822871 -0.559771 -0.097476 -0.860622 -0.424726 0.280862 -0.997742 0.045930 -0.048708 -0.875607 -0.466506 0.125095 -0.987457 -0.086123 0.132267 -0.987457 -0.086123 0.132267 -0.875607 -0.466506 0.125095 -0.822871 -0.559771 -0.097476 -0.822871 -0.559771 -0.097476 -0.554613 -0.817103 0.157048 -0.860622 -0.424726 0.280862 -0.822871 -0.559771 -0.097476 -0.512925 -0.842280 -0.165654 -0.554613 -0.817103 0.157048 -0.875607 -0.466506 0.125095 -0.621296 -0.751823 0.220740 -0.822871 -0.559771 -0.097476 -0.822871 -0.559771 -0.097476 -0.621296 -0.751823 0.220740 -0.512925 -0.842280 -0.165654 -0.512925 -0.842280 -0.165654 0.000000 -0.999329 0.036134 -0.554613 -0.817103 0.157048 -0.512925 -0.842280 -0.165654 0.000000 -0.999146 -0.040742 0.000000 -0.999329 0.036134 -0.621296 -0.751823 0.220740 0.000000 -0.948637 0.316324 -0.512925 -0.842280 -0.165654 -0.512925 -0.842280 -0.165654 0.000000 -0.948637 0.316324 0.000000 -0.999146 -0.040742 0.000000 0.980590 0.195959 -0.694174 0.568529 0.441389 0.000000 0.841762 0.539842 0.000000 0.980590 0.195959 -0.830775 0.538438 0.140934 -0.694174 0.568529 0.441389 0.000000 0.999969 -0.003265 -0.696463 0.717368 -0.016511 0.000000 0.980590 0.195959 0.000000 0.980590 0.195959 -0.696463 0.717368 -0.016511 -0.830775 0.538438 0.140934 -0.830775 0.538438 0.140934 -0.987457 -0.086123 0.132267 -0.694174 0.568529 0.441389 -0.694174 0.568529 0.441389 -0.987457 -0.086123 0.132267 -0.939817 -0.045991 0.338542 -0.696463 0.717368 -0.016511 -0.997742 0.045930 -0.048708 -0.830775 0.538438 0.140934 -0.830775 0.538438 0.140934 -0.997742 0.045930 -0.048708 -0.987457 -0.086123 0.132267 -0.853755 0.150884 -0.498276 -0.698782 -0.310556 0.644337 -0.875057 -0.391217 -0.284921 -0.853755 0.150884 -0.498276 -0.482528 0.504898 0.715659 -0.698782 -0.310556 0.644337 -0.875057 -0.391217 -0.284921 -0.510330 -0.615497 0.600574 -0.592853 -0.656331 -0.466567 -0.875057 -0.391217 -0.284921 -0.698782 -0.310556 0.644337 -0.510330 -0.615497 0.600574 -0.592853 -0.656331 -0.466567 -0.000031 -0.909146 0.416456 0.000427 -0.500504 -0.865688 -0.592853 -0.656331 -0.466567 -0.510330 -0.615497 0.600574 -0.000031 -0.909146 0.416456 -0.390179 0.866878 -0.310190 -0.482528 0.504898 0.715659 -0.853755 0.150884 -0.498276 -0.390179 0.866878 -0.310190 0.007233 0.890500 0.454848 -0.482528 0.504898 0.715659 -0.875057 -0.391217 -0.284921 -0.620380 -0.139683 -0.771722 -0.853755 0.150884 -0.498276 -0.853755 0.150884 -0.498276 -0.620380 -0.139683 -0.771722 -0.691641 0.100803 -0.715140 -0.620380 -0.139683 -0.771722 -0.790338 0.216346 -0.573168 -0.691641 0.100803 -0.715140 -0.620380 -0.139683 -0.771722 -0.712119 -0.138401 -0.688253 -0.790338 0.216346 -0.573168 -0.712119 -0.138401 -0.688253 -0.901669 -0.303415 -0.308023 -0.790338 0.216346 -0.573168 -0.790338 0.216346 -0.573168 -0.901669 -0.303415 -0.308023 -0.939512 0.174993 -0.294351 -0.901669 -0.303415 -0.308023 -0.881405 -0.444441 0.159764 -0.939512 0.174993 -0.294351 -0.939512 0.174993 -0.294351 -0.881405 -0.444441 0.159764 -0.998840 0.045778 -0.014496 -0.881405 -0.444441 0.159764 -0.875607 -0.466506 0.125095 -0.998840 0.045778 -0.014496 -0.998840 0.045778 -0.014496 -0.875607 -0.466506 0.125095 -0.997742 0.045930 -0.048708 -0.860622 -0.424726 0.280862 -0.671926 -0.301340 0.676473 -0.939817 -0.045991 0.338542 -0.939817 -0.045991 0.338542 -0.671926 -0.301340 0.676473 -0.725883 0.040864 0.686575 -0.426710 -0.063051 0.902158 -0.671926 -0.301340 0.676473 -0.357707 -0.244819 0.901151 -0.426710 -0.063051 0.902158 -0.725883 0.040864 0.686575 -0.671926 -0.301340 0.676473 -0.452712 -0.467055 0.759514 -0.357707 -0.244819 0.901151 -0.671926 -0.301340 0.676473 -0.452712 -0.467055 0.759514 -0.249825 -0.279641 0.927000 -0.357707 -0.244819 0.901151 -0.554613 -0.817103 0.157048 -0.452712 -0.467055 0.759514 -0.860622 -0.424726 0.280862 -0.860622 -0.424726 0.280862 -0.452712 -0.467055 0.759514 -0.671926 -0.301340 0.676473 -0.576647 -0.815607 0.047090 -0.621296 -0.751823 0.220740 -0.881405 -0.444441 0.159764 -0.881405 -0.444441 0.159764 -0.621296 -0.751823 0.220740 -0.875607 -0.466506 0.125095 -0.558214 -0.758568 -0.336039 -0.881405 -0.444441 0.159764 -0.901669 -0.303415 -0.308023 -0.558214 -0.758568 -0.336039 -0.576647 -0.815607 0.047090 -0.881405 -0.444441 0.159764 -0.586718 -0.575610 -0.569536 -0.901669 -0.303415 -0.308023 -0.712119 -0.138401 -0.688253 -0.586718 -0.575610 -0.569536 -0.558214 -0.758568 -0.336039 -0.901669 -0.303415 -0.308023 -0.514206 -0.235664 -0.824610 -0.586718 -0.575610 -0.569536 -0.620380 -0.139683 -0.771722 -0.620380 -0.139683 -0.771722 -0.586718 -0.575610 -0.569536 -0.712119 -0.138401 -0.688253 -0.592853 -0.656331 -0.466567 -0.620380 -0.139683 -0.771722 -0.875057 -0.391217 -0.284921 -0.592853 -0.656331 -0.466567 -0.514206 -0.235664 -0.824610 -0.620380 -0.139683 -0.771722 0.000427 -0.500504 -0.865688 -0.514206 -0.235664 -0.824610 -0.592853 -0.656331 -0.466567 0.000427 -0.500504 -0.865688 0.000000 -0.547472 -0.836787 -0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 -0.586718 -0.575610 -0.569536 -0.514206 -0.235664 -0.824610 0.000000 -0.547472 -0.836787 0.000000 -0.888363 -0.459090 -0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 -0.558214 -0.758568 -0.336039 -0.586718 -0.575610 -0.569536 0.000000 -0.888363 -0.459090 0.000000 -0.880093 -0.474776 -0.558214 -0.758568 -0.336039 0.000000 -0.999939 0.008087 0.000000 -0.948637 0.316324 -0.576647 -0.815607 0.047090 -0.576647 -0.815607 0.047090 0.000000 -0.948637 0.316324 -0.621296 -0.751823 0.220740 0.000000 -0.999329 0.036134 0.000000 -0.681295 0.731986 -0.554613 -0.817103 0.157048 -0.554613 -0.817103 0.157048 0.000000 -0.681295 0.731986 -0.452712 -0.467055 0.759514 0.000000 -0.681295 0.731986 0.000000 -0.387707 0.921751 -0.452712 -0.467055 0.759514 -0.452712 -0.467055 0.759514 0.000000 -0.387707 0.921751 -0.249825 -0.279641 0.927000 -0.390179 0.866878 -0.310190 0.000366 0.635487 -0.772088 0.001617 0.976745 -0.214393 -0.390179 0.866878 -0.310190 -0.450758 0.445936 -0.773247 0.000366 0.635487 -0.772088 -0.450758 0.445936 -0.773247 -0.490158 0.581530 -0.649251 0.000366 0.635487 -0.772088 0.000366 0.635487 -0.772088 -0.490158 0.581530 -0.649251 0.000000 0.738212 -0.674551 -0.490158 0.581530 -0.649251 0.000000 0.891354 -0.453230 0.000000 0.738212 -0.674551 -0.490158 0.581530 -0.649251 -0.745720 0.552538 -0.372204 0.000000 0.891354 -0.453230 -0.745720 0.552538 -0.372204 -0.712180 0.682150 -0.165532 0.000000 0.891354 -0.453230 0.000000 0.891354 -0.453230 -0.712180 0.682150 -0.165532 0.000000 0.965758 -0.259407 -0.712180 0.682150 -0.165532 0.000000 0.999969 -0.003265 0.000000 0.965758 -0.259407 -0.712180 0.682150 -0.165532 -0.696463 0.717368 -0.016511 0.000000 0.999969 -0.003265 -0.694174 0.568529 0.441389 -0.494247 0.463546 0.735405 0.000000 0.841762 0.539842 0.000000 0.841762 0.539842 -0.494247 0.463546 0.735405 0.000000 0.645039 0.764122 -0.494247 0.463546 0.735405 0.000000 0.361583 0.932310 0.000000 0.645039 0.764122 -0.494247 0.463546 0.735405 -0.262612 0.191076 0.945769 0.000000 0.361583 0.932310 -0.262612 0.191076 0.945769 -0.494247 0.463546 0.735405 -0.426710 -0.063051 0.902158 -0.426710 -0.063051 0.902158 -0.494247 0.463546 0.735405 -0.725883 0.040864 0.686575 -0.939817 -0.045991 0.338542 -0.494247 0.463546 0.735405 -0.694174 0.568529 0.441389 -0.939817 -0.045991 0.338542 -0.725883 0.040864 0.686575 -0.494247 0.463546 0.735405 -0.998840 0.045778 -0.014496 -0.997742 0.045930 -0.048708 -0.712180 0.682150 -0.165532 -0.712180 0.682150 -0.165532 -0.997742 0.045930 -0.048708 -0.696463 0.717368 -0.016511 -0.939512 0.174993 -0.294351 -0.998840 0.045778 -0.014496 -0.745720 0.552538 -0.372204 -0.745720 0.552538 -0.372204 -0.998840 0.045778 -0.014496 -0.712180 0.682150 -0.165532 -0.790338 0.216346 -0.573168 -0.939512 0.174993 -0.294351 -0.490158 0.581530 -0.649251 -0.490158 0.581530 -0.649251 -0.939512 0.174993 -0.294351 -0.745720 0.552538 -0.372204 -0.691641 0.100803 -0.715140 -0.790338 0.216346 -0.573168 -0.450758 0.445936 -0.773247 -0.450758 0.445936 -0.773247 -0.790338 0.216346 -0.573168 -0.490158 0.581530 -0.649251 -0.853755 0.150884 -0.498276 -0.450758 0.445936 -0.773247 -0.390179 0.866878 -0.310190 -0.853755 0.150884 -0.498276 -0.691641 0.100803 -0.715140 -0.450758 0.445936 -0.773247 -0.002869 -0.930570 0.366070 0.668294 -0.031465 0.743217 0.128208 0.035157 0.991119 -0.002869 -0.930570 0.366070 0.406018 -0.913511 0.024354 0.668294 -0.031465 0.743217 0.107913 -0.499954 0.859279 -0.002869 -0.930570 0.366070 -0.156590 -0.073519 0.984893 -0.156590 -0.073519 0.984893 -0.002869 -0.930570 0.366070 0.128208 0.035157 0.991119 0.128208 0.035157 0.991119 0.668294 -0.031465 0.743217 0.060030 0.859066 0.508286 0.060030 0.859066 0.508286 0.668294 -0.031465 0.743217 0.393231 0.878842 0.270119 -0.156590 -0.073519 0.984893 0.128208 0.035157 0.991119 -0.111118 0.817377 0.565233 -0.111118 0.817377 0.565233 0.128208 0.035157 0.991119 0.060030 0.859066 0.508286 -0.009125 0.633931 -0.773309 0.609272 -0.324046 -0.723716 -0.020966 -0.530503 -0.847407 -0.009125 0.633931 -0.773309 0.801538 0.426466 -0.419050 0.609272 -0.324046 -0.723716 -0.058565 0.731040 -0.679769 -0.020966 -0.530503 -0.847407 0.390088 -0.125095 -0.912198 -0.058565 0.731040 -0.679769 -0.009125 0.633931 -0.773309 -0.020966 -0.530503 -0.847407 -0.020966 -0.530503 -0.847407 0.406018 -0.913511 0.024354 -0.002869 -0.930570 0.366070 -0.020966 -0.530503 -0.847407 0.609272 -0.324046 -0.723716 0.406018 -0.913511 0.024354 0.390088 -0.125095 -0.912198 -0.002869 -0.930570 0.366070 0.107913 -0.499954 0.859279 0.390088 -0.125095 -0.912198 -0.020966 -0.530503 -0.847407 -0.002869 -0.930570 0.366070 0.060030 0.859066 0.508286 0.393231 0.878842 0.270119 -0.009125 0.633931 -0.773309 -0.009125 0.633931 -0.773309 0.393231 0.878842 0.270119 0.801538 0.426466 -0.419050 -0.111118 0.817377 0.565233 0.060030 0.859066 0.508286 -0.058565 0.731040 -0.679769 -0.058565 0.731040 -0.679769 0.060030 0.859066 0.508286 -0.009125 0.633931 -0.773309 0.055361 -0.600116 -0.797967 0.883206 -0.102939 -0.457472 0.115909 -0.864772 0.488571 0.115909 -0.864772 0.488571 0.883206 -0.102939 -0.457472 0.728477 0.263649 0.632252 0.199591 0.108798 0.973815 0.115909 -0.864772 0.488571 0.728477 0.263649 0.632252 0.199591 0.108798 0.973815 -0.590136 -0.661275 0.463027 0.115909 -0.864772 0.488571 0.738456 0.656819 -0.152379 0.728477 0.263649 0.632252 0.883206 -0.102939 -0.457472 0.738456 0.656819 -0.152379 0.199591 0.108798 0.973815 0.728477 0.263649 0.632252 0.053713 -0.065615 -0.996368 0.738456 0.656819 -0.152379 0.055361 -0.600116 -0.797967 0.055361 -0.600116 -0.797967 0.738456 0.656819 -0.152379 0.883206 -0.102939 -0.457472 -0.590136 -0.661275 0.463027 0.055361 -0.600116 -0.797967 0.115909 -0.864772 0.488571 -0.590136 -0.661275 0.463027 0.053713 -0.065615 -0.996368 0.055361 -0.600116 -0.797967 0.107913 -0.499954 0.859279 -0.590136 -0.661275 0.463027 0.199591 0.108798 0.973815 0.107913 -0.499954 0.859279 -0.263649 -0.792077 0.550523 -0.590136 -0.661275 0.463027 0.390088 -0.125095 -0.912198 0.107913 -0.499954 0.859279 0.738456 0.656819 -0.152379 0.738456 0.656819 -0.152379 0.107913 -0.499954 0.859279 0.199591 0.108798 0.973815 -0.130314 -0.674001 -0.727103 0.390088 -0.125095 -0.912198 0.053713 -0.065615 -0.996368 0.053713 -0.065615 -0.996368 0.390088 -0.125095 -0.912198 0.738456 0.656819 -0.152379 -0.263649 -0.792077 0.550523 -0.130314 -0.674001 -0.727103 -0.590136 -0.661275 0.463027 -0.590136 -0.661275 0.463027 -0.130314 -0.674001 -0.727103 0.053713 -0.065615 -0.996368 0.801538 0.426466 -0.419050 0.668294 -0.031465 0.743217 0.609272 -0.324046 -0.723716 0.609272 -0.324046 -0.723716 0.668294 -0.031465 0.743217 0.406018 -0.913511 0.024354 -0.151402 -0.306833 0.939634 0.107913 -0.499954 0.859279 -0.156590 -0.073519 0.984893 -0.151402 -0.306833 0.939634 -0.263649 -0.792077 0.550523 0.107913 -0.499954 0.859279 -0.166692 0.838435 0.518845 -0.156590 -0.073519 0.984893 -0.111118 0.817377 0.565233 -0.166692 0.838435 0.518845 -0.151402 -0.306833 0.939634 -0.156590 -0.073519 0.984893 -0.130314 -0.674001 -0.727103 0.138340 0.542528 -0.828547 0.390088 -0.125095 -0.912198 0.390088 -0.125095 -0.912198 0.138340 0.542528 -0.828547 -0.058565 0.731040 -0.679769 0.138340 0.542528 -0.828547 -0.166692 0.838435 0.518845 -0.058565 0.731040 -0.679769 -0.058565 0.731040 -0.679769 -0.166692 0.838435 0.518845 -0.111118 0.817377 0.565233 -0.001160 0.022187 0.999725 -0.024781 -0.959044 0.282144 -0.151402 -0.306833 0.939634 -0.151402 -0.306833 0.939634 -0.024781 -0.959044 0.282144 -0.263649 -0.792077 0.550523 -0.093265 0.949797 0.298593 -0.001160 0.022187 0.999725 -0.166692 0.838435 0.518845 -0.166692 0.838435 0.518845 -0.001160 0.022187 0.999725 -0.151402 -0.306833 0.939634 -0.103336 -0.450545 -0.886715 0.138340 0.542528 -0.828547 -0.130314 -0.674001 -0.727103 -0.103336 -0.450545 -0.886715 -0.153813 0.660939 -0.734489 0.138340 0.542528 -0.828547 -0.024781 -0.959044 0.282144 -0.130314 -0.674001 -0.727103 -0.263649 -0.792077 0.550523 -0.024781 -0.959044 0.282144 -0.103336 -0.450545 -0.886715 -0.130314 -0.674001 -0.727103 -0.153813 0.660939 -0.734489 -0.093265 0.949797 0.298593 0.138340 0.542528 -0.828547 0.138340 0.542528 -0.828547 -0.093265 0.949797 0.298593 -0.166692 0.838435 0.518845 0.017487 -0.076327 0.996918 0.017853 -0.829279 0.558489 -0.001160 0.022187 0.999725 -0.001160 0.022187 0.999725 0.017853 -0.829279 0.558489 -0.024781 -0.959044 0.282144 -0.041139 0.739006 0.672414 -0.001160 0.022187 0.999725 -0.093265 0.949797 0.298593 -0.041139 0.739006 0.672414 0.017487 -0.076327 0.996918 -0.001160 0.022187 0.999725 -0.083438 -0.839381 -0.537065 -0.169897 0.662221 -0.729789 -0.103336 -0.450545 -0.886715 -0.103336 -0.450545 -0.886715 -0.169897 0.662221 -0.729789 -0.153813 0.660939 -0.734489 0.017853 -0.829279 0.558489 -0.083438 -0.839381 -0.537065 -0.024781 -0.959044 0.282144 -0.024781 -0.959044 0.282144 -0.083438 -0.839381 -0.537065 -0.103336 -0.450545 -0.886715 -0.169897 0.662221 -0.729789 -0.093265 0.949797 0.298593 -0.153813 0.660939 -0.734489 -0.169897 0.662221 -0.729789 -0.041139 0.739006 0.672414 -0.093265 0.949797 0.298593 0.587603 0.638905 -0.496445 0.513291 -0.324870 -0.794305 -0.536729 0.050081 -0.842250 -0.536729 0.050081 -0.842250 0.513291 -0.324870 -0.794305 -0.612476 -0.696707 -0.373363 -0.957518 0.180792 0.224616 -0.794641 0.558214 -0.238502 -0.536729 0.050081 -0.842250 -0.957518 0.180792 0.224616 -0.439192 0.762261 0.475417 -0.794641 0.558214 -0.238502 0.804193 -0.431654 0.408490 -0.612476 -0.696707 -0.373363 0.513291 -0.324870 -0.794305 0.804193 -0.431654 0.408490 -0.521256 -0.435316 0.734001 -0.612476 -0.696707 -0.373363 -0.521256 -0.435316 0.734001 -0.957518 0.180792 0.224616 -0.612476 -0.696707 -0.373363 -0.612476 -0.696707 -0.373363 -0.957518 0.180792 0.224616 -0.536729 0.050081 -0.842250 0.638234 0.557207 0.531175 0.804193 -0.431654 0.408490 0.587603 0.638905 -0.496445 0.587603 0.638905 -0.496445 0.804193 -0.431654 0.408490 0.513291 -0.324870 -0.794305 -0.439192 0.762261 0.475417 0.587603 0.638905 -0.496445 -0.794641 0.558214 -0.238502 -0.439192 0.762261 0.475417 0.638234 0.557207 0.531175 0.587603 0.638905 -0.496445 -0.908292 0.412763 0.067934 -0.425611 0.700858 0.572375 -0.957518 0.180792 0.224616 -0.957518 0.180792 0.224616 -0.425611 0.700858 0.572375 -0.439192 0.762261 0.475417 0.543870 -0.204016 0.813959 -0.521256 -0.435316 0.734001 0.804193 -0.431654 0.408490 0.543870 -0.204016 0.813959 -0.698813 -0.222144 0.679891 -0.521256 -0.435316 0.734001 -0.698813 -0.222144 0.679891 -0.957518 0.180792 0.224616 -0.521256 -0.435316 0.734001 -0.698813 -0.222144 0.679891 -0.908292 0.412763 0.067934 -0.957518 0.180792 0.224616 0.772637 0.297647 0.560717 0.543870 -0.204016 0.813959 0.638234 0.557207 0.531175 0.638234 0.557207 0.531175 0.543870 -0.204016 0.813959 0.804193 -0.431654 0.408490 -0.425611 0.700858 0.572375 0.638234 0.557207 0.531175 -0.439192 0.762261 0.475417 -0.425611 0.700858 0.572375 0.772637 0.297647 0.560717 0.638234 0.557207 0.531175 -0.848720 0.524064 -0.070803 0.180578 0.966002 0.184881 -0.908292 0.412763 0.067934 -0.908292 0.412763 0.067934 0.180578 0.966002 0.184881 -0.425611 0.700858 0.572375 0.517624 -0.628956 0.580035 -0.698813 -0.222144 0.679891 0.543870 -0.204016 0.813959 0.517624 -0.628956 0.580035 -0.820521 -0.543229 0.177770 -0.698813 -0.222144 0.679891 -0.820521 -0.543229 0.177770 -0.908292 0.412763 0.067934 -0.698813 -0.222144 0.679891 -0.820521 -0.543229 0.177770 -0.848720 0.524064 -0.070803 -0.908292 0.412763 0.067934 0.973174 -0.073336 0.217994 0.517624 -0.628956 0.580035 0.772637 0.297647 0.560717 0.772637 0.297647 0.560717 0.517624 -0.628956 0.580035 0.543870 -0.204016 0.813959 0.180578 0.966002 0.184881 0.772637 0.297647 0.560717 -0.425611 0.700858 0.572375 0.180578 0.966002 0.184881 0.973174 -0.073336 0.217994 0.772637 0.297647 0.560717 -0.711356 0.685903 0.153264 0.306192 0.935484 0.176305 -0.848720 0.524064 -0.070803 -0.848720 0.524064 -0.070803 0.306192 0.935484 0.176305 0.180578 0.966002 0.184881 0.378246 -0.924497 0.047090 -0.820521 -0.543229 0.177770 0.517624 -0.628956 0.580035 0.378246 -0.924497 0.047090 -0.839259 -0.531632 0.113895 -0.820521 -0.543229 0.177770 -0.839259 -0.531632 0.113895 -0.848720 0.524064 -0.070803 -0.820521 -0.543229 0.177770 -0.839259 -0.531632 0.113895 -0.711356 0.685903 0.153264 -0.848720 0.524064 -0.070803 0.979827 -0.105380 0.169683 0.378246 -0.924497 0.047090 0.973174 -0.073336 0.217994 0.973174 -0.073336 0.217994 0.378246 -0.924497 0.047090 0.517624 -0.628956 0.580035 0.306192 0.935484 0.176305 0.979827 -0.105380 0.169683 0.180578 0.966002 0.184881 0.180578 0.966002 0.184881 0.979827 -0.105380 0.169683 0.973174 -0.073336 0.217994 -0.690237 0.643178 0.331462 0.306192 0.935484 0.176305 -0.711356 0.685903 0.153264 -0.690237 0.643178 0.331462 0.536882 0.819117 0.201910 0.306192 0.935484 0.176305 0.172857 -0.980834 0.089724 -0.839259 -0.531632 0.113895 0.378246 -0.924497 0.047090 0.172857 -0.980834 0.089724 -0.814539 -0.574786 0.078188 -0.839259 -0.531632 0.113895 -0.814539 -0.574786 0.078188 -0.690237 0.643178 0.331462 -0.839259 -0.531632 0.113895 -0.839259 -0.531632 0.113895 -0.690237 0.643178 0.331462 -0.711356 0.685903 0.153264 0.988983 -0.144261 0.032411 0.172857 -0.980834 0.089724 0.979827 -0.105380 0.169683 0.979827 -0.105380 0.169683 0.172857 -0.980834 0.089724 0.378246 -0.924497 0.047090 0.536882 0.819117 0.201910 0.979827 -0.105380 0.169683 0.306192 0.935484 0.176305 0.536882 0.819117 0.201910 0.988983 -0.144261 0.032411 0.979827 -0.105380 0.169683 -0.675039 0.565355 -0.473952 0.536882 0.819117 0.201910 -0.690237 0.643178 0.331462 -0.675039 0.565355 -0.473952 0.502243 0.864376 -0.023041 0.536882 0.819117 0.201910 0.637013 -0.767907 0.067232 -0.082156 -0.912076 -0.401624 0.172857 -0.980834 0.089724 0.172857 -0.980834 0.089724 -0.082156 -0.912076 -0.401624 -0.814539 -0.574786 0.078188 -0.082156 -0.912076 -0.401624 -0.675039 0.565355 -0.473952 -0.814539 -0.574786 0.078188 -0.814539 -0.574786 0.078188 -0.675039 0.565355 -0.473952 -0.690237 0.643178 0.331462 0.971282 0.124454 0.202734 0.637013 -0.767907 0.067232 0.988983 -0.144261 0.032411 0.988983 -0.144261 0.032411 0.637013 -0.767907 0.067232 0.172857 -0.980834 0.089724 0.502243 0.864376 -0.023041 0.988983 -0.144261 0.032411 0.536882 0.819117 0.201910 0.502243 0.864376 -0.023041 0.971282 0.124454 0.202734 0.988983 -0.144261 0.032411 -0.675039 0.565355 -0.473952 -0.082156 -0.912076 -0.401624 0.000000 0.012329 -0.999908 0.000000 0.012329 -0.999908 -0.082156 -0.912076 -0.401624 0.000000 -0.828303 -0.560259 0.207007 -0.977874 -0.029298 0.000000 -0.997131 -0.075411 -0.082156 -0.912076 -0.401624 -0.082156 -0.912076 -0.401624 0.000000 -0.997131 -0.075411 0.000000 -0.828303 -0.560259 0.000000 0.993286 -0.115574 -0.675039 0.565355 -0.473952 0.000000 0.012329 -0.999908 0.000000 0.993286 -0.115574 0.033937 0.998840 0.034028 -0.675039 0.565355 -0.473952 0.986267 -0.091617 0.137211 0.637013 -0.767907 0.067232 0.971282 0.124454 0.202734 0.986267 -0.091617 0.137211 0.714438 -0.692892 0.097262 0.637013 -0.767907 0.067232 0.783013 0.607440 0.133610 0.971282 0.124454 0.202734 0.502243 0.864376 -0.023041 0.783013 0.607440 0.133610 0.986267 -0.091617 0.137211 0.971282 0.124454 0.202734 0.294565 -0.955229 0.027039 0.000000 -0.997131 -0.075411 0.207007 -0.977874 -0.029298 0.294565 -0.955229 0.027039 0.000000 -0.999786 0.020478 0.000000 -0.997131 -0.075411 0.714438 -0.692892 0.097262 0.207007 -0.977874 -0.029298 0.637013 -0.767907 0.067232 0.714438 -0.692892 0.097262 0.294565 -0.955229 0.027039 0.207007 -0.977874 -0.029298 0.000000 0.995086 -0.098849 0.293771 0.954375 0.053438 0.000000 0.993286 -0.115574 0.000000 0.993286 -0.115574 0.293771 0.954375 0.053438 0.033937 0.998840 0.034028 0.293771 0.954375 0.053438 0.783013 0.607440 0.133610 0.033937 0.998840 0.034028 0.033937 0.998840 0.034028 0.783013 0.607440 0.133610 0.502243 0.864376 -0.023041 0.305032 -0.077059 0.949187 0.382305 -0.464370 0.798853 0.345897 -0.087130 0.934202 0.345897 -0.087130 0.934202 0.382305 -0.464370 0.798853 0.497696 -0.826014 0.264534 0.352886 0.490829 0.796564 0.345897 -0.087130 0.934202 0.281014 0.876736 0.390271 0.352886 0.490829 0.796564 0.305032 -0.077059 0.949187 0.345897 -0.087130 0.934202 0.345897 -0.087130 0.934202 0.017853 -0.829279 0.558489 0.017487 -0.076327 0.996918 0.345897 -0.087130 0.934202 0.497696 -0.826014 0.264534 0.017853 -0.829279 0.558489 0.281014 0.876736 0.390271 0.345897 -0.087130 0.934202 -0.041139 0.739006 0.672414 -0.041139 0.739006 0.672414 0.345897 -0.087130 0.934202 0.017487 -0.076327 0.996918 0.708762 -0.305368 0.635884 0.382305 -0.464370 0.798853 0.305032 -0.077059 0.949187 0.708762 -0.305368 0.635884 0.514664 -0.620502 0.591662 0.382305 -0.464370 0.798853 0.305032 -0.077059 0.949187 0.543290 0.441328 0.714133 0.708762 -0.305368 0.635884 0.305032 -0.077059 0.949187 0.352886 0.490829 0.796564 0.543290 0.441328 0.714133 0.986267 -0.091617 0.137211 0.783013 0.607440 0.133610 0.958098 0.073672 -0.276681 0.958098 0.073672 -0.276681 0.783013 0.607440 0.133610 0.724174 0.625904 -0.289438 0.714438 -0.692892 0.097262 0.986267 -0.091617 0.137211 0.862758 -0.425550 -0.272958 0.862758 -0.425550 -0.272958 0.986267 -0.091617 0.137211 0.958098 0.073672 -0.276681 0.502792 -0.767479 0.397687 0.710746 -0.693289 -0.118870 0.497696 -0.826014 0.264534 0.497696 -0.826014 0.264534 0.710746 -0.693289 -0.118870 0.639851 -0.370403 -0.673299 -0.169897 0.662221 -0.729789 0.639851 -0.370403 -0.673299 0.612140 0.675222 -0.411451 -0.169897 0.662221 -0.729789 -0.083438 -0.839381 -0.537065 0.639851 -0.370403 -0.673299 0.017853 -0.829279 0.558489 0.497696 -0.826014 0.264534 -0.083438 -0.839381 -0.537065 -0.083438 -0.839381 -0.537065 0.497696 -0.826014 0.264534 0.639851 -0.370403 -0.673299 0.612140 0.675222 -0.411451 0.281014 0.876736 0.390271 -0.169897 0.662221 -0.729789 -0.169897 0.662221 -0.729789 0.281014 0.876736 0.390271 -0.041139 0.739006 0.672414 0.294565 -0.955229 0.027039 0.714438 -0.692892 0.097262 0.425764 -0.868984 -0.252113 0.425764 -0.868984 -0.252113 0.714438 -0.692892 0.097262 0.862758 -0.425550 -0.272958 0.000000 -0.999786 0.020478 0.425764 -0.868984 -0.252113 0.000000 -0.935606 -0.352977 0.000000 -0.999786 0.020478 0.294565 -0.955229 0.027039 0.425764 -0.868984 -0.252113 0.425764 -0.868984 -0.252113 0.710746 -0.693289 -0.118870 0.107639 -0.993286 -0.041597 0.425764 -0.868984 -0.252113 0.862758 -0.425550 -0.272958 0.710746 -0.693289 -0.118870 0.000000 -0.935606 -0.352977 0.107639 -0.993286 -0.041597 0.000000 -0.999786 0.019715 0.000000 -0.935606 -0.352977 0.425764 -0.868984 -0.252113 0.107639 -0.993286 -0.041597 0.293771 0.954375 0.053438 0.000000 0.995086 -0.098849 0.337443 0.885983 -0.317972 0.337443 0.885983 -0.317972 0.000000 0.995086 -0.098849 0.000000 0.948515 -0.316721 0.783013 0.607440 0.133610 0.293771 0.954375 0.053438 0.724174 0.625904 -0.289438 0.724174 0.625904 -0.289438 0.293771 0.954375 0.053438 0.337443 0.885983 -0.317972 0.337443 0.885983 -0.317972 0.000000 0.948515 -0.316721 0.293802 0.949339 -0.111423 0.293802 0.949339 -0.111423 0.000000 0.948515 -0.316721 0.000000 0.999329 0.036103 0.724174 0.625904 -0.289438 0.337443 0.885983 -0.317972 0.612140 0.675222 -0.411451 0.612140 0.675222 -0.411451 0.337443 0.885983 -0.317972 0.293802 0.949339 -0.111423 0.107639 -0.993286 -0.041597 0.710746 -0.693289 -0.118870 0.210486 -0.760857 0.613788 0.210486 -0.760857 0.613788 0.710746 -0.693289 -0.118870 0.502792 -0.767479 0.397687 0.000000 -0.999786 0.019715 0.107639 -0.993286 -0.041597 -0.000549 -0.876461 0.481429 -0.000549 -0.876461 0.481429 0.107639 -0.993286 -0.041597 0.210486 -0.760857 0.613788 0.293802 0.949339 -0.111423 0.000000 0.999329 0.036103 0.183020 0.847316 0.498489 0.183020 0.847316 0.498489 0.000000 0.999329 0.036103 -0.079928 0.870418 0.485733 0.612140 0.675222 -0.411451 0.293802 0.949339 -0.111423 0.400952 0.891446 0.211005 0.400952 0.891446 0.211005 0.293802 0.949339 -0.111423 0.183020 0.847316 0.498489 -0.000549 -0.876461 0.481429 0.210486 -0.760857 0.613788 -0.000031 -0.909146 0.416456 -0.000031 -0.909146 0.416456 0.210486 -0.760857 0.613788 0.514664 -0.620502 0.591662 0.183020 0.847316 0.498489 0.007233 0.890500 0.454848 0.543290 0.441328 0.714133 0.183020 0.847316 0.498489 -0.079928 0.870418 0.485733 0.007233 0.890500 0.454848 0.543290 0.441328 0.714133 0.352886 0.490829 0.796564 0.183020 0.847316 0.498489 0.183020 0.847316 0.498489 0.352886 0.490829 0.796564 0.400952 0.891446 0.211005 0.002869 -0.930570 0.366070 -0.668294 -0.031465 0.743217 -0.406018 -0.913511 0.024354 0.002869 -0.930570 0.366070 -0.128208 0.035157 0.991119 -0.668294 -0.031465 0.743217 -0.107913 -0.499954 0.859279 0.156590 -0.073519 0.984893 0.002869 -0.930570 0.366070 0.002869 -0.930570 0.366070 0.156590 -0.073519 0.984893 -0.128208 0.035157 0.991119 -0.128208 0.035157 0.991119 -0.060030 0.859066 0.508286 -0.668294 -0.031465 0.743217 -0.668294 -0.031465 0.743217 -0.060030 0.859066 0.508286 -0.393231 0.878842 0.270119 0.156590 -0.073519 0.984893 0.111118 0.817377 0.565264 -0.128208 0.035157 0.991119 -0.128208 0.035157 0.991119 0.111118 0.817377 0.565264 -0.060030 0.859066 0.508286 0.009125 0.633931 -0.773309 -0.609272 -0.324046 -0.723716 -0.801538 0.426466 -0.419050 0.009125 0.633931 -0.773309 0.020966 -0.530503 -0.847407 -0.609272 -0.324046 -0.723716 0.058565 0.731040 -0.679769 0.020966 -0.530503 -0.847407 0.009125 0.633931 -0.773309 0.058565 0.731040 -0.679769 -0.390088 -0.125095 -0.912198 0.020966 -0.530503 -0.847407 0.020966 -0.530503 -0.847407 -0.406018 -0.913511 0.024354 -0.609272 -0.324046 -0.723716 0.020966 -0.530503 -0.847407 0.002869 -0.930570 0.366070 -0.406018 -0.913511 0.024354 -0.390088 -0.125095 -0.912198 0.002869 -0.930570 0.366070 0.020966 -0.530503 -0.847407 -0.390088 -0.125095 -0.912198 -0.107913 -0.499954 0.859279 0.002869 -0.930570 0.366070 -0.060030 0.859066 0.508286 0.009125 0.633931 -0.773309 -0.393231 0.878842 0.270119 -0.393231 0.878842 0.270119 0.009125 0.633931 -0.773309 -0.801538 0.426466 -0.419050 0.111118 0.817377 0.565264 0.058565 0.731040 -0.679769 -0.060030 0.859066 0.508286 -0.060030 0.859066 0.508286 0.058565 0.731040 -0.679769 0.009125 0.633931 -0.773309 -0.055361 -0.600116 -0.797967 -0.115940 -0.864772 0.488571 -0.883206 -0.102939 -0.457472 -0.883206 -0.102939 -0.457472 -0.115940 -0.864772 0.488571 -0.728477 0.263649 0.632252 -0.199591 0.108798 0.973815 -0.115940 -0.864772 0.488571 0.590136 -0.661275 0.463027 -0.199591 0.108798 0.973815 -0.728477 0.263649 0.632252 -0.115940 -0.864772 0.488571 -0.738456 0.656819 -0.152379 -0.728477 0.263649 0.632252 -0.199591 0.108798 0.973815 -0.738456 0.656819 -0.152379 -0.883206 -0.102939 -0.457472 -0.728477 0.263649 0.632252 -0.053713 -0.065615 -0.996368 -0.055361 -0.600116 -0.797967 -0.738456 0.656819 -0.152379 -0.738456 0.656819 -0.152379 -0.055361 -0.600116 -0.797967 -0.883206 -0.102939 -0.457472 0.590136 -0.661275 0.463027 -0.055361 -0.600116 -0.797967 -0.053713 -0.065615 -0.996368 0.590136 -0.661275 0.463027 -0.115940 -0.864772 0.488571 -0.055361 -0.600116 -0.797967 -0.107913 -0.499954 0.859279 0.590136 -0.661275 0.463027 0.263649 -0.792077 0.550523 -0.107913 -0.499954 0.859279 -0.199591 0.108798 0.973815 0.590136 -0.661275 0.463027 -0.390088 -0.125095 -0.912198 -0.738456 0.656819 -0.152379 -0.107913 -0.499954 0.859279 -0.107913 -0.499954 0.859279 -0.738456 0.656819 -0.152379 -0.199591 0.108798 0.973815 0.130345 -0.674001 -0.727103 -0.053713 -0.065615 -0.996368 -0.390088 -0.125095 -0.912198 -0.390088 -0.125095 -0.912198 -0.053713 -0.065615 -0.996368 -0.738456 0.656819 -0.152379 0.263649 -0.792077 0.550523 0.590136 -0.661275 0.463027 0.130345 -0.674001 -0.727103 0.130345 -0.674001 -0.727103 0.590136 -0.661275 0.463027 -0.053713 -0.065615 -0.996368 -0.801538 0.426466 -0.419050 -0.609272 -0.324046 -0.723716 -0.668294 -0.031465 0.743217 -0.668294 -0.031465 0.743217 -0.609272 -0.324046 -0.723716 -0.406018 -0.913511 0.024354 0.151402 -0.306833 0.939634 -0.107913 -0.499954 0.859279 0.263649 -0.792077 0.550523 0.151402 -0.306833 0.939634 0.156590 -0.073519 0.984893 -0.107913 -0.499954 0.859279 0.166692 0.838435 0.518845 0.156590 -0.073519 0.984893 0.151402 -0.306833 0.939634 0.166692 0.838435 0.518845 0.111118 0.817377 0.565264 0.156590 -0.073519 0.984893 0.130345 -0.674001 -0.727103 -0.390088 -0.125095 -0.912198 -0.138340 0.542528 -0.828547 -0.138340 0.542528 -0.828547 -0.390088 -0.125095 -0.912198 0.058565 0.731040 -0.679769 -0.138340 0.542528 -0.828547 0.058565 0.731040 -0.679769 0.166692 0.838435 0.518845 0.166692 0.838435 0.518845 0.058565 0.731040 -0.679769 0.111118 0.817377 0.565264 0.001160 0.022187 0.999725 0.151402 -0.306833 0.939634 0.024781 -0.959044 0.282144 0.024781 -0.959044 0.282144 0.151402 -0.306833 0.939634 0.263649 -0.792077 0.550523 0.093265 0.949797 0.298593 0.166692 0.838435 0.518845 0.001160 0.022187 0.999725 0.001160 0.022187 0.999725 0.166692 0.838435 0.518845 0.151402 -0.306833 0.939634 0.103336 -0.450545 -0.886715 -0.138340 0.542528 -0.828547 0.153813 0.660939 -0.734489 0.103336 -0.450545 -0.886715 0.130345 -0.674001 -0.727103 -0.138340 0.542528 -0.828547 0.024781 -0.959044 0.282144 0.130345 -0.674001 -0.727103 0.103336 -0.450545 -0.886715 0.024781 -0.959044 0.282144 0.263649 -0.792077 0.550523 0.130345 -0.674001 -0.727103 0.153813 0.660939 -0.734489 -0.138340 0.542528 -0.828547 0.093265 0.949797 0.298593 0.093265 0.949797 0.298593 -0.138340 0.542528 -0.828547 0.166692 0.838435 0.518845 -0.017487 -0.076327 0.996918 0.001160 0.022187 0.999725 -0.017853 -0.829279 0.558489 -0.017853 -0.829279 0.558489 0.001160 0.022187 0.999725 0.024781 -0.959044 0.282144 0.041139 0.739006 0.672414 0.001160 0.022187 0.999725 -0.017487 -0.076327 0.996918 0.041139 0.739006 0.672414 0.093265 0.949797 0.298593 0.001160 0.022187 0.999725 0.083438 -0.839381 -0.537065 0.103336 -0.450545 -0.886715 0.169897 0.662221 -0.729789 0.169897 0.662221 -0.729789 0.103336 -0.450545 -0.886715 0.153813 0.660939 -0.734489 -0.017853 -0.829279 0.558489 0.024781 -0.959044 0.282144 0.083438 -0.839381 -0.537065 0.083438 -0.839381 -0.537065 0.024781 -0.959044 0.282144 0.103336 -0.450545 -0.886715 0.169897 0.662221 -0.729789 0.093265 0.949797 0.298593 0.041139 0.739006 0.672414 0.169897 0.662221 -0.729789 0.153813 0.660939 -0.734489 0.093265 0.949797 0.298593 -0.587603 0.638905 -0.496445 0.536729 0.050081 -0.842250 -0.513291 -0.324870 -0.794305 -0.513291 -0.324870 -0.794305 0.536729 0.050081 -0.842250 0.612476 -0.696707 -0.373363 0.957518 0.180792 0.224616 0.794641 0.558214 -0.238502 0.439192 0.762261 0.475417 0.957518 0.180792 0.224616 0.536729 0.050081 -0.842250 0.794641 0.558214 -0.238502 -0.804193 -0.431654 0.408490 0.612476 -0.696707 -0.373363 0.521256 -0.435316 0.734001 -0.804193 -0.431654 0.408490 -0.513291 -0.324870 -0.794305 0.612476 -0.696707 -0.373363 0.521256 -0.435316 0.734001 0.612476 -0.696707 -0.373363 0.957518 0.180792 0.224616 0.957518 0.180792 0.224616 0.612476 -0.696707 -0.373363 0.536729 0.050081 -0.842250 -0.638234 0.557207 0.531175 -0.587603 0.638905 -0.496445 -0.804193 -0.431654 0.408490 -0.804193 -0.431654 0.408490 -0.587603 0.638905 -0.496445 -0.513291 -0.324870 -0.794305 0.439192 0.762261 0.475417 -0.587603 0.638905 -0.496445 -0.638234 0.557207 0.531175 0.439192 0.762261 0.475417 0.794641 0.558214 -0.238502 -0.587603 0.638905 -0.496445 0.908292 0.412763 0.067934 0.957518 0.180792 0.224616 0.425611 0.700858 0.572375 0.425611 0.700858 0.572375 0.957518 0.180792 0.224616 0.439192 0.762261 0.475417 -0.543870 -0.204016 0.813959 0.521256 -0.435316 0.734001 0.698813 -0.222144 0.679891 -0.543870 -0.204016 0.813959 -0.804193 -0.431654 0.408490 0.521256 -0.435316 0.734001 0.698813 -0.222144 0.679891 0.957518 0.180792 0.224616 0.908292 0.412763 0.067934 0.698813 -0.222144 0.679891 0.521256 -0.435316 0.734001 0.957518 0.180792 0.224616 -0.772637 0.297647 0.560717 -0.638234 0.557207 0.531175 -0.543870 -0.204016 0.813959 -0.543870 -0.204016 0.813959 -0.638234 0.557207 0.531175 -0.804193 -0.431654 0.408490 0.425611 0.700858 0.572375 -0.638234 0.557207 0.531175 -0.772637 0.297647 0.560717 0.425611 0.700858 0.572375 0.439192 0.762261 0.475417 -0.638234 0.557207 0.531175 0.848720 0.524064 -0.070803 0.908292 0.412763 0.067934 -0.180578 0.966002 0.184881 -0.180578 0.966002 0.184881 0.908292 0.412763 0.067934 0.425611 0.700858 0.572375 -0.517624 -0.628956 0.580035 0.698813 -0.222144 0.679891 0.820521 -0.543229 0.177770 -0.517624 -0.628956 0.580035 -0.543870 -0.204016 0.813959 0.698813 -0.222144 0.679891 0.820521 -0.543229 0.177770 0.908292 0.412763 0.067934 0.848720 0.524064 -0.070803 0.820521 -0.543229 0.177770 0.698813 -0.222144 0.679891 0.908292 0.412763 0.067934 -0.973174 -0.073336 0.217994 -0.772637 0.297647 0.560717 -0.517624 -0.628956 0.580035 -0.517624 -0.628956 0.580035 -0.772637 0.297647 0.560717 -0.543870 -0.204016 0.813959 -0.180578 0.966002 0.184881 -0.772637 0.297647 0.560717 -0.973174 -0.073336 0.217994 -0.180578 0.966002 0.184881 0.425611 0.700858 0.572375 -0.772637 0.297647 0.560717 0.711356 0.685903 0.153264 0.848720 0.524064 -0.070803 -0.306192 0.935484 0.176305 -0.306192 0.935484 0.176305 0.848720 0.524064 -0.070803 -0.180578 0.966002 0.184881 -0.378246 -0.924497 0.047090 0.820521 -0.543229 0.177770 0.839259 -0.531632 0.113895 -0.378246 -0.924497 0.047090 -0.517624 -0.628956 0.580035 0.820521 -0.543229 0.177770 0.839259 -0.531632 0.113895 0.848720 0.524064 -0.070803 0.711356 0.685903 0.153264 0.839259 -0.531632 0.113895 0.820521 -0.543229 0.177770 0.848720 0.524064 -0.070803 -0.979827 -0.105380 0.169683 -0.973174 -0.073336 0.217994 -0.378246 -0.924497 0.047090 -0.378246 -0.924497 0.047090 -0.973174 -0.073336 0.217994 -0.517624 -0.628956 0.580035 -0.306192 0.935484 0.176305 -0.180578 0.966002 0.184881 -0.979827 -0.105380 0.169683 -0.979827 -0.105380 0.169683 -0.180578 0.966002 0.184881 -0.973174 -0.073336 0.217994 0.690237 0.643178 0.331431 -0.306192 0.935484 0.176305 -0.536882 0.819117 0.201910 0.690237 0.643178 0.331431 0.711356 0.685903 0.153264 -0.306192 0.935484 0.176305 -0.172887 -0.980834 0.089724 0.839259 -0.531632 0.113895 0.814539 -0.574816 0.078066 -0.172887 -0.980834 0.089724 -0.378246 -0.924497 0.047090 0.839259 -0.531632 0.113895 0.814539 -0.574816 0.078066 0.839259 -0.531632 0.113895 0.690237 0.643178 0.331431 0.690237 0.643178 0.331431 0.839259 -0.531632 0.113895 0.711356 0.685903 0.153264 -0.988983 -0.144230 0.032563 -0.979827 -0.105380 0.169683 -0.172887 -0.980834 0.089724 -0.172887 -0.980834 0.089724 -0.979827 -0.105380 0.169683 -0.378246 -0.924497 0.047090 -0.536882 0.819117 0.201910 -0.979827 -0.105380 0.169683 -0.988983 -0.144230 0.032563 -0.536882 0.819117 0.201910 -0.306192 0.935484 0.176305 -0.979827 -0.105380 0.169683 0.675008 0.565355 -0.474044 -0.536882 0.819117 0.201910 -0.502213 0.864406 -0.023072 0.675008 0.565355 -0.474044 0.690237 0.643178 0.331431 -0.536882 0.819117 0.201910 -0.637013 -0.767907 0.067019 -0.172887 -0.980834 0.089724 0.082125 -0.912076 -0.401685 0.082125 -0.912076 -0.401685 -0.172887 -0.980834 0.089724 0.814539 -0.574816 0.078066 0.082125 -0.912076 -0.401685 0.814539 -0.574816 0.078066 0.675008 0.565355 -0.474044 0.675008 0.565355 -0.474044 0.814539 -0.574816 0.078066 0.690237 0.643178 0.331431 -0.971313 0.124424 0.202490 -0.988983 -0.144230 0.032563 -0.637013 -0.767907 0.067019 -0.637013 -0.767907 0.067019 -0.988983 -0.144230 0.032563 -0.172887 -0.980834 0.089724 -0.502213 0.864406 -0.023072 -0.988983 -0.144230 0.032563 -0.971313 0.124424 0.202490 -0.502213 0.864406 -0.023072 -0.536882 0.819117 0.201910 -0.988983 -0.144230 0.032563 0.675008 0.565355 -0.474044 0.000000 0.012329 -0.999908 0.082125 -0.912076 -0.401685 0.082125 -0.912076 -0.401685 0.000000 0.012329 -0.999908 0.000000 -0.828303 -0.560259 -0.207007 -0.977874 -0.029389 0.082125 -0.912076 -0.401685 0.000000 -0.997131 -0.075411 0.000000 -0.997131 -0.075411 0.082125 -0.912076 -0.401685 0.000000 -0.828303 -0.560259 0.000000 0.993286 -0.115574 0.675008 0.565355 -0.474044 -0.033876 0.998840 0.033937 0.000000 0.993286 -0.115574 0.000000 0.012329 -0.999908 0.675008 0.565355 -0.474044 -0.986328 -0.091647 0.136876 -0.637013 -0.767907 0.067019 -0.714469 -0.692892 0.097049 -0.986328 -0.091647 0.136876 -0.971313 0.124424 0.202490 -0.637013 -0.767907 0.067019 -0.783044 0.607471 0.133427 -0.971313 0.124424 0.202490 -0.986328 -0.091647 0.136876 -0.783044 0.607471 0.133427 -0.502213 0.864406 -0.023072 -0.971313 0.124424 0.202490 -0.294565 -0.955229 0.026948 0.000000 -0.997131 -0.075411 0.000000 -0.999786 0.020478 -0.294565 -0.955229 0.026948 -0.207007 -0.977874 -0.029389 0.000000 -0.997131 -0.075411 -0.714469 -0.692892 0.097049 -0.207007 -0.977874 -0.029389 -0.294565 -0.955229 0.026948 -0.714469 -0.692892 0.097049 -0.637013 -0.767907 0.067019 -0.207007 -0.977874 -0.029389 0.000000 0.995086 -0.098849 0.000000 0.993286 -0.115574 -0.293741 0.954375 0.053407 -0.293741 0.954375 0.053407 0.000000 0.993286 -0.115574 -0.033876 0.998840 0.033937 -0.293741 0.954375 0.053407 -0.033876 0.998840 0.033937 -0.783044 0.607471 0.133427 -0.783044 0.607471 0.133427 -0.033876 0.998840 0.033937 -0.502213 0.864406 -0.023072 -0.301523 -0.076998 0.950316 -0.345897 -0.087130 0.934202 -0.380627 -0.463881 0.799921 -0.380627 -0.463881 0.799921 -0.345897 -0.087130 0.934202 -0.497696 -0.826014 0.264534 -0.350749 0.490341 0.797784 -0.345897 -0.087130 0.934202 -0.301523 -0.076998 0.950316 -0.350749 0.490341 0.797784 -0.281014 0.876736 0.390271 -0.345897 -0.087130 0.934202 -0.345897 -0.087130 0.934202 -0.017853 -0.829279 0.558489 -0.497696 -0.826014 0.264534 -0.345897 -0.087130 0.934202 -0.017487 -0.076327 0.996918 -0.017853 -0.829279 0.558489 -0.281014 0.876736 0.390271 0.041139 0.739006 0.672414 -0.345897 -0.087130 0.934202 -0.345897 -0.087130 0.934202 0.041139 0.739006 0.672414 -0.017487 -0.076327 0.996918 -0.698782 -0.310556 0.644337 -0.380627 -0.463881 0.799921 -0.510330 -0.615497 0.600574 -0.698782 -0.310556 0.644337 -0.301523 -0.076998 0.950316 -0.380627 -0.463881 0.799921 -0.301523 -0.076998 0.950316 -0.482528 0.504898 0.715659 -0.350749 0.490341 0.797784 -0.301523 -0.076998 0.950316 -0.698782 -0.310556 0.644337 -0.482528 0.504898 0.715659 -0.986328 -0.091647 0.136876 -0.958098 0.073672 -0.276681 -0.783044 0.607471 0.133427 -0.783044 0.607471 0.133427 -0.958098 0.073672 -0.276681 -0.724174 0.625904 -0.289438 -0.714469 -0.692892 0.097049 -0.862758 -0.425550 -0.272958 -0.986328 -0.091647 0.136876 -0.986328 -0.091647 0.136876 -0.862758 -0.425550 -0.272958 -0.958098 0.073672 -0.276681 -0.502792 -0.767479 0.397687 -0.497696 -0.826014 0.264534 -0.710746 -0.693289 -0.118870 -0.710746 -0.693289 -0.118870 -0.497696 -0.826014 0.264534 -0.639851 -0.370403 -0.673299 0.169897 0.662221 -0.729789 -0.639851 -0.370403 -0.673299 0.083438 -0.839381 -0.537065 0.169897 0.662221 -0.729789 -0.612140 0.675222 -0.411451 -0.639851 -0.370403 -0.673299 -0.017853 -0.829279 0.558489 0.083438 -0.839381 -0.537065 -0.497696 -0.826014 0.264534 -0.497696 -0.826014 0.264534 0.083438 -0.839381 -0.537065 -0.639851 -0.370403 -0.673299 -0.612140 0.675222 -0.411451 0.169897 0.662221 -0.729789 -0.281014 0.876736 0.390271 -0.281014 0.876736 0.390271 0.169897 0.662221 -0.729789 0.041139 0.739006 0.672414 -0.294565 -0.955229 0.026948 -0.425764 -0.868984 -0.252113 -0.714469 -0.692892 0.097049 -0.714469 -0.692892 0.097049 -0.425764 -0.868984 -0.252113 -0.862758 -0.425550 -0.272958 0.000000 -0.999786 0.020478 -0.425764 -0.868984 -0.252113 -0.294565 -0.955229 0.026948 0.000000 -0.999786 0.020478 0.000000 -0.935606 -0.352977 -0.425764 -0.868984 -0.252113 -0.425764 -0.868984 -0.252113 -0.710746 -0.693289 -0.118870 -0.862758 -0.425550 -0.272958 -0.425764 -0.868984 -0.252113 -0.107639 -0.993286 -0.041597 -0.710746 -0.693289 -0.118870 0.000000 -0.935606 -0.352977 -0.107639 -0.993286 -0.041597 -0.425764 -0.868984 -0.252113 0.000000 -0.935606 -0.352977 0.000000 -0.999786 0.019715 -0.107639 -0.993286 -0.041597 -0.293741 0.954375 0.053407 -0.337443 0.885983 -0.317972 0.000000 0.995086 -0.098849 0.000000 0.995086 -0.098849 -0.337443 0.885983 -0.317972 0.000000 0.948515 -0.316721 -0.783044 0.607471 0.133427 -0.724174 0.625904 -0.289438 -0.293741 0.954375 0.053407 -0.293741 0.954375 0.053407 -0.724174 0.625904 -0.289438 -0.337443 0.885983 -0.317972 -0.337443 0.885983 -0.317972 -0.293802 0.949339 -0.111423 0.000000 0.948515 -0.316721 0.000000 0.948515 -0.316721 -0.293802 0.949339 -0.111423 0.000000 0.999329 0.036103 -0.724174 0.625904 -0.289438 -0.612140 0.675222 -0.411451 -0.337443 0.885983 -0.317972 -0.337443 0.885983 -0.317972 -0.612140 0.675222 -0.411451 -0.293802 0.949339 -0.111423 -0.107639 -0.993286 -0.041597 -0.210273 -0.760186 0.614704 -0.710746 -0.693289 -0.118870 -0.710746 -0.693289 -0.118870 -0.210273 -0.760186 0.614704 -0.502792 -0.767479 0.397687 0.000000 -0.999786 0.019715 -0.000549 -0.876461 0.481429 -0.107639 -0.993286 -0.041597 -0.107639 -0.993286 -0.041597 -0.000549 -0.876461 0.481429 -0.210273 -0.760186 0.614704 -0.293802 0.949339 -0.111423 -0.156560 0.856960 0.490982 0.000000 0.999329 0.036103 0.000000 0.999329 0.036103 -0.156560 0.856960 0.490982 -0.079928 0.870418 0.485733 -0.612140 0.675222 -0.411451 -0.400952 0.891446 0.211005 -0.293802 0.949339 -0.111423 -0.293802 0.949339 -0.111423 -0.400952 0.891446 0.211005 -0.156560 0.856960 0.490982 -0.000549 -0.876461 0.481429 -0.000031 -0.909146 0.416456 -0.210273 -0.760186 0.614704 -0.210273 -0.760186 0.614704 -0.000031 -0.909146 0.416456 -0.510330 -0.615497 0.600574 -0.156560 0.856960 0.490982 -0.482528 0.504898 0.715659 -0.079928 0.870418 0.485733 -0.079928 0.870418 0.485733 -0.482528 0.504898 0.715659 0.007233 0.890500 0.454848 -0.482528 0.504898 0.715659 -0.156560 0.856960 0.490982 -0.350749 0.490341 0.797784 -0.350749 0.490341 0.797784 -0.156560 0.856960 0.490982 -0.400952 0.891446 0.211005 -0.513321 -0.853816 0.086306 0.304758 -0.933958 0.186590 -0.564714 -0.823603 -0.052248 0.304758 -0.933958 0.186590 0.220985 -0.974517 0.037721 -0.564714 -0.823603 -0.052248 -0.928465 0.080081 -0.362590 -0.513321 -0.853816 0.086306 -0.564714 -0.823603 -0.052248 -0.928465 0.080081 -0.362590 -0.564714 -0.823603 -0.052248 -0.971282 0.132359 -0.197577 -0.564714 -0.823603 -0.052248 0.220985 -0.974517 0.037721 -0.453352 -0.891232 -0.011353 0.220985 -0.974517 0.037721 0.351970 -0.932798 0.077364 -0.453352 -0.891232 -0.011353 -0.971282 0.132359 -0.197577 -0.564714 -0.823603 -0.052248 -0.453352 -0.891232 -0.011353 -0.971282 0.132359 -0.197577 -0.453352 -0.891232 -0.011353 -0.977447 0.210242 -0.018311 -0.453352 -0.891232 -0.011353 0.351970 -0.932798 0.077364 0.439955 -0.782586 -0.440413 -0.453352 -0.891232 -0.011353 0.439955 -0.782586 -0.440413 -0.554582 -0.804621 -0.212104 -0.977447 0.210242 -0.018311 -0.453352 -0.891232 -0.011353 -0.992767 0.044588 0.111301 -0.453352 -0.891232 -0.011353 -0.554582 -0.804621 -0.212104 -0.992767 0.044588 0.111301 -0.554582 -0.804621 -0.212104 0.439955 -0.782586 -0.440413 -0.469832 -0.882565 -0.017487 0.439955 -0.782586 -0.440413 -0.485549 -0.841060 -0.238350 -0.469832 -0.882565 -0.017487 -0.992767 0.044588 0.111301 -0.554582 -0.804621 -0.212104 -0.918027 -0.037812 0.394665 -0.554582 -0.804621 -0.212104 -0.469832 -0.882565 -0.017487 -0.918027 -0.037812 0.394665 -0.469832 -0.882565 -0.017487 -0.485549 -0.841060 -0.238350 -0.639180 -0.548906 0.538621 -0.485549 -0.841060 -0.238350 -0.678030 -0.734519 0.026856 -0.639180 -0.548906 0.538621 -0.918027 -0.037812 0.394665 -0.469832 -0.882565 -0.017487 -0.639180 -0.548906 0.538621 -0.918027 -0.037812 0.394665 -0.639180 -0.548906 0.538621 -0.319285 -0.118656 0.940184 -0.639180 -0.548906 0.538621 -0.678030 -0.734519 0.026856 -0.569231 -0.472152 0.673055 -0.639180 -0.548906 0.538621 -0.569231 -0.472152 0.673055 -0.488449 -0.264412 0.831538 -0.319285 -0.118656 0.940184 -0.639180 -0.548906 0.538621 -0.488449 -0.264412 0.831538 -0.319285 -0.118656 0.940184 -0.488449 -0.264412 0.831538 -0.520951 -0.005737 0.853542 -0.488449 -0.264412 0.831538 -0.569231 -0.472152 0.673055 -0.368694 -0.279733 0.886441 -0.488449 -0.264412 0.831538 -0.368694 -0.279733 0.886441 -0.525895 -0.169744 0.833399 -0.520951 -0.005737 0.853542 -0.488449 -0.264412 0.831538 -0.525895 -0.169744 0.833399 -0.520951 -0.005737 0.853542 -0.525895 -0.169744 0.833399 -0.472396 0.055940 0.879604 0.964904 -0.060610 0.255409 0.982330 -0.092135 -0.162755 0.590747 -0.791681 0.155644 0.982330 -0.092135 -0.162755 0.962676 -0.268990 -0.029664 0.590747 -0.791681 0.155644 0.590747 -0.791681 0.155644 0.962676 -0.268990 -0.029664 0.916898 -0.397382 0.036836 0.590747 -0.791681 0.155644 0.916898 -0.397382 0.036836 0.643513 -0.733787 -0.217658 0.643513 -0.733787 -0.217658 0.916898 -0.397382 0.036836 0.989105 -0.144963 0.025178 0.643513 -0.733787 -0.217658 0.989105 -0.144963 0.025178 0.902768 -0.401563 -0.153905 0.902768 -0.401563 -0.153905 0.989105 -0.144963 0.025178 0.953887 -0.142521 0.264077 0.902768 -0.401563 -0.153905 0.953887 -0.142521 0.264077 0.678701 -0.734367 0.006745 0.678701 -0.734367 0.006745 0.953887 -0.142521 0.264077 0.627644 -0.638020 0.445998 0.953887 -0.142521 0.264077 0.703360 -0.011750 0.710685 0.627644 -0.638020 0.445998 0.627644 -0.638020 0.445998 0.703360 -0.011750 0.710685 0.388775 -0.268715 0.881252 0.703360 -0.011750 0.710685 0.472427 0.020753 0.881100 0.388775 -0.268715 0.881252 0.388775 -0.268715 0.881252 0.472427 0.020753 0.881100 0.272561 -0.027192 0.961730 0.388775 -0.268715 0.881252 0.272561 -0.027192 0.961730 0.201361 -0.145360 0.968657 0.118900 -0.390973 0.912656 0.388775 -0.268715 0.881252 0.111118 -0.282266 0.952849 0.388775 -0.268715 0.881252 0.201361 -0.145360 0.968657 0.111118 -0.282266 0.952849 0.084872 -0.891171 0.445601 0.627644 -0.638020 0.445998 0.118900 -0.390973 0.912656 0.627644 -0.638020 0.445998 0.388775 -0.268715 0.881252 0.118900 -0.390973 0.912656 0.087130 -0.860042 -0.502670 0.678701 -0.734367 0.006745 0.627644 -0.638020 0.445998 0.087130 -0.860042 -0.502670 0.627644 -0.638020 0.445998 0.084872 -0.891171 0.445601 -0.236763 -0.794122 -0.559709 0.087130 -0.860042 -0.502670 -0.378307 -0.916471 -0.130100 0.087130 -0.860042 -0.502670 0.084872 -0.891171 0.445601 -0.378307 -0.916471 -0.130100 -0.378307 -0.916471 -0.130100 0.084872 -0.891171 0.445601 -0.342387 -0.501450 0.794519 0.084872 -0.891171 0.445601 0.118900 -0.390973 0.912656 -0.342387 -0.501450 0.794519 -0.342387 -0.501450 0.794519 0.118900 -0.390973 0.912656 -0.135319 -0.332377 0.933378 0.118900 -0.390973 0.912656 0.111118 -0.282266 0.952849 -0.135319 -0.332377 0.933378 -0.569231 -0.472152 0.673055 -0.342387 -0.501450 0.794519 -0.135319 -0.332377 0.933378 -0.569231 -0.472152 0.673055 -0.135319 -0.332377 0.933378 -0.368694 -0.279733 0.886441 -0.678030 -0.734519 0.026856 -0.378307 -0.916471 -0.130100 -0.342387 -0.501450 0.794519 -0.678030 -0.734519 0.026856 -0.342387 -0.501450 0.794519 -0.569231 -0.472152 0.673055 -0.485549 -0.841060 -0.238350 -0.236763 -0.794122 -0.559709 -0.678030 -0.734519 0.026856 -0.236763 -0.794122 -0.559709 -0.378307 -0.916471 -0.130100 -0.678030 -0.734519 0.026856 -0.336894 0.077853 0.938292 -0.520951 -0.005737 0.853542 -0.403058 0.208777 0.891018 -0.520951 -0.005737 0.853542 -0.472396 0.055940 0.879604 -0.403058 0.208777 0.891018 -0.519425 0.376659 0.766991 -0.319285 -0.118656 0.940184 -0.336894 0.077853 0.938292 -0.319285 -0.118656 0.940184 -0.520951 -0.005737 0.853542 -0.336894 0.077853 0.938292 -0.724052 0.587176 0.361888 -0.918027 -0.037812 0.394665 -0.519425 0.376659 0.766991 -0.918027 -0.037812 0.394665 -0.319285 -0.118656 0.940184 -0.519425 0.376659 0.766991 -0.742729 0.667348 0.053987 -0.992767 0.044588 0.111301 -0.724052 0.587176 0.361888 -0.992767 0.044588 0.111301 -0.918027 -0.037812 0.394665 -0.724052 0.587176 0.361888 -0.687155 0.718223 -0.109256 -0.977447 0.210242 -0.018311 -0.742729 0.667348 0.053987 -0.977447 0.210242 -0.018311 -0.992767 0.044588 0.111301 -0.742729 0.667348 0.053987 -0.715354 0.652821 -0.249092 -0.971282 0.132359 -0.197577 -0.977447 0.210242 -0.018311 -0.715354 0.652821 -0.249092 -0.977447 0.210242 -0.018311 -0.687155 0.718223 -0.109256 -0.755089 0.504532 -0.418592 -0.928465 0.080081 -0.362590 -0.971282 0.132359 -0.197577 -0.755089 0.504532 -0.418592 -0.971282 0.132359 -0.197577 -0.715354 0.652821 -0.249092 -0.410443 0.817927 -0.403088 -0.755089 0.504532 -0.418592 -0.715354 0.652821 -0.249092 -0.410443 0.817927 -0.403088 -0.715354 0.652821 -0.249092 -0.277047 0.929563 -0.243171 -0.277047 0.929563 -0.243171 -0.715354 0.652821 -0.249092 -0.687155 0.718223 -0.109256 -0.277047 0.929563 -0.243171 -0.687155 0.718223 -0.109256 -0.255226 0.948515 -0.187445 -0.255226 0.948515 -0.187445 -0.687155 0.718223 -0.109256 -0.742729 0.667348 0.053987 -0.255226 0.948515 -0.187445 -0.742729 0.667348 0.053987 -0.246956 0.966247 0.073122 -0.246956 0.966247 0.073122 -0.742729 0.667348 0.053987 -0.350810 0.868038 0.351299 -0.742729 0.667348 0.053987 -0.724052 0.587176 0.361888 -0.350810 0.868038 0.351299 -0.350810 0.868038 0.351299 -0.724052 0.587176 0.361888 -0.201697 0.708060 0.676687 -0.724052 0.587176 0.361888 -0.519425 0.376659 0.766991 -0.201697 0.708060 0.676687 -0.201697 0.708060 0.676687 -0.519425 0.376659 0.766991 -0.207587 0.366405 0.906980 -0.519425 0.376659 0.766991 -0.336894 0.077853 0.938292 -0.207587 0.366405 0.906980 -0.207587 0.366405 0.906980 -0.336894 0.077853 0.938292 -0.403058 0.208777 0.891018 -0.207587 0.366405 0.906980 -0.403058 0.208777 0.891018 -0.059786 0.235572 0.970000 0.152623 0.455611 0.876980 -0.207587 0.366405 0.906980 0.090823 0.273415 0.957579 -0.207587 0.366405 0.906980 -0.059786 0.235572 0.970000 0.090823 0.273415 0.957579 0.291818 0.690176 0.662160 -0.201697 0.708060 0.676687 0.152623 0.455611 0.876980 -0.201697 0.708060 0.676687 -0.207587 0.366405 0.906980 0.152623 0.455611 0.876980 0.193213 0.902615 0.384564 -0.350810 0.868038 0.351299 -0.201697 0.708060 0.676687 0.193213 0.902615 0.384564 -0.201697 0.708060 0.676687 0.291818 0.690176 0.662160 0.299234 0.953001 0.046846 -0.246956 0.966247 0.073122 0.193213 0.902615 0.384564 -0.246956 0.966247 0.073122 -0.350810 0.868038 0.351299 0.193213 0.902615 0.384564 0.327921 0.928983 -0.171545 -0.255226 0.948515 -0.187445 0.299234 0.953001 0.046846 -0.255226 0.948515 -0.187445 -0.246956 0.966247 0.073122 0.299234 0.953001 0.046846 0.252235 0.943236 -0.216010 -0.277047 0.929563 -0.243171 -0.255226 0.948515 -0.187445 0.252235 0.943236 -0.216010 -0.255226 0.948515 -0.187445 0.327921 0.928983 -0.171545 0.121860 0.949705 -0.288400 -0.410443 0.817927 -0.403088 -0.277047 0.929563 -0.243171 0.121860 0.949705 -0.288400 -0.277047 0.929563 -0.243171 0.252235 0.943236 -0.216010 0.529252 0.746788 -0.402661 0.121860 0.949705 -0.288400 0.252235 0.943236 -0.216010 0.529252 0.746788 -0.402661 0.252235 0.943236 -0.216010 0.729270 0.627033 -0.273782 0.729270 0.627033 -0.273782 0.252235 0.943236 -0.216010 0.761803 0.643666 -0.072695 0.252235 0.943236 -0.216010 0.327921 0.928983 -0.171545 0.761803 0.643666 -0.072695 0.761803 0.643666 -0.072695 0.327921 0.928983 -0.171545 0.795740 0.600940 0.075137 0.327921 0.928983 -0.171545 0.299234 0.953001 0.046846 0.795740 0.600940 0.075137 0.795740 0.600940 0.075137 0.299234 0.953001 0.046846 0.725944 0.566424 0.389996 0.299234 0.953001 0.046846 0.193213 0.902615 0.384564 0.725944 0.566424 0.389996 0.725944 0.566424 0.389996 0.193213 0.902615 0.384564 0.291818 0.690176 0.662160 0.725944 0.566424 0.389996 0.291818 0.690176 0.662160 0.603259 0.400220 0.689810 0.603259 0.400220 0.689810 0.291818 0.690176 0.662160 0.152623 0.455611 0.876980 0.603259 0.400220 0.689810 0.152623 0.455611 0.876980 0.394971 0.267006 0.878994 0.394971 0.267006 0.878994 0.152623 0.455611 0.876980 0.090823 0.273415 0.957579 0.394971 0.267006 0.878994 0.090823 0.273415 0.957579 0.232612 0.138768 0.962584 0.472427 0.020753 0.881100 0.394971 0.267006 0.878994 0.232612 0.138768 0.962584 0.472427 0.020753 0.881100 0.232612 0.138768 0.962584 0.272561 -0.027192 0.961730 0.703360 -0.011750 0.710685 0.603259 0.400220 0.689810 0.394971 0.267006 0.878994 0.703360 -0.011750 0.710685 0.394971 0.267006 0.878994 0.472427 0.020753 0.881100 0.953887 -0.142521 0.264077 0.725944 0.566424 0.389996 0.603259 0.400220 0.689810 0.953887 -0.142521 0.264077 0.603259 0.400220 0.689810 0.703360 -0.011750 0.710685 0.989105 -0.144963 0.025178 0.795740 0.600940 0.075137 0.725944 0.566424 0.389996 0.989105 -0.144963 0.025178 0.725944 0.566424 0.389996 0.953887 -0.142521 0.264077 0.916898 -0.397382 0.036836 0.761803 0.643666 -0.072695 0.795740 0.600940 0.075137 0.916898 -0.397382 0.036836 0.795740 0.600940 0.075137 0.989105 -0.144963 0.025178 0.962676 -0.268990 -0.029664 0.729270 0.627033 -0.273782 0.761803 0.643666 -0.072695 0.962676 -0.268990 -0.029664 0.761803 0.643666 -0.072695 0.916898 -0.397382 0.036836 0.982330 -0.092135 -0.162755 0.529252 0.746788 -0.402661 0.729270 0.627033 -0.273782 0.982330 -0.092135 -0.162755 0.729270 0.627033 -0.273782 0.962676 -0.268990 -0.029664

16 0 0 1 1 2

17 3 0 4 16 5

32 6 0 7 17 8

33 9 0 10 32 11

48 12 0 13 33 14

60 15 0 16 49 17

61 18 0 19 60 20

72 21 0 22 61 23

1 24 0 25 72 26

73 27 0 28 48 29

49 30 0 31 73 32

83 33 107 34 86 35

81 36 85 37 103 38

85 39 87 40 103 41

109 42 87 43 89 44

109 45 106 46 87 47

90 48 106 49 109 50

90 51 88 52 106 53

96 54 83 55 86 56

96 57 94 58 83 59

116 60 120 61 117 62

114 63 115 64 119 65

146 66 149 67 147 68

166 69 167 70 170 71

186 72 193 73 220 74

184 75 216 76 192 77

192 78 216 79 196 80

222 81 200 82 196 83

222 84 196 85 219 86

201 87 222 88 219 89

201 90 219 91 197 92

209 93 193 94 186 95

209 96 186 97 207 98

230 99 231 100 236 101

227 102 234 103 228 104

263 105 264 106 266 107

283 108 287 109 284 110

347 111 318 112 301 113

366 114 318 115 347 116

325 117 377 118 347 119

342 120 325 121 347 122

301 123 342 124 347 125

323 126 189 127 310 128

373 129 329 130 372 131

329 132 330 133 372 134

365 135 347 136 348 137

366 138 347 139 365 140

378 141 347 142 377 143

395 144 347 145 378 146

348 147 347 148 395 149

323 150 357 151 189 152

373 153 372 154 382 155

382 156 372 157 383 158

396 159 350 160 401 161

401 162 350 163 393 164

351 165 396 166 392 167

392 168 396 169 401 170

401 171 380 172 400 173

401 174 393 175 380 176

392 177 401 178 381 179

381 180 401 181 400 182

400 183 375 184 399 185

400 186 380 187 375 188

381 189 400 190 374 191

374 192 400 193 399 194

398 195 363 196 397 197

398 198 367 199 363 200

320 201 398 202 362 203

362 204 398 205 397 206

397 207 363 208 396 209

396 210 363 211 350 212

362 213 397 214 351 215

351 216 397 217 396 218

356 219 224 220 205 221

356 222 387 223 224 224

387 225 207 226 224 227

387 228 386 229 207 230

386 231 191 232 207 233

386 234 370 235 191 236

357 237 205 238 189 239

357 240 356 241 205 242

387 243 356 244 388 245

388 246 356 247 355 248

388 249 354 250 389 251

388 252 355 253 354 254

389 255 354 256 390 257

390 258 354 259 353 260

390 261 353 262 391 263

391 264 353 265 352 266

391 267 352 268 392 269

392 270 352 271 351 272

393 273 350 274 394 275

394 276 350 277 349 278

394 279 348 280 395 281

394 282 349 283 348 284

379 285 395 286 378 287

379 288 394 289 395 290

380 291 393 292 379 293

379 294 393 295 394 296

382 297 391 298 381 299

381 300 391 301 392 302

383 303 391 304 382 305

383 306 390 307 391 308

384 309 390 310 383 311

384 312 389 313 390 314

385 315 388 316 384 317

384 318 388 319 389 320

386 321 388 322 385 323

386 324 387 325 388 326

370 327 385 328 324 329

370 330 386 331 385 332

324 333 384 334 371 335

324 336 385 337 384 338

371 339 383 340 372 341

371 342 384 343 383 344

373 345 382 346 374 347

374 348 382 349 381 350

375 351 380 352 376 353

376 354 380 355 379 356

376 357 379 358 377 359

377 360 379 361 378 362

357 363 369 364 358 365

357 366 323 367 369 368

358 369 369 370 359 371

359 372 369 373 368 374

359 375 322 376 360 377

359 378 368 379 322 380

360 381 322 382 361 383

361 384 322 385 321 386

361 387 320 388 362 389

361 390 321 391 320 392

363 393 367 394 364 395

364 396 367 397 319 398

364 399 366 400 365 401

364 402 319 403 366 404

349 405 364 406 348 407

348 408 364 409 365 410

350 411 364 412 349 413

350 414 363 415 364 416

352 417 361 418 351 419

351 420 361 421 362 422

353 423 360 424 352 425

352 426 360 427 361 428

354 429 359 430 353 431

353 432 359 433 360 434

355 435 358 436 354 437

354 438 358 439 359 440

356 441 358 442 355 443

356 444 357 445 358 446

343 447 346 448 303 449

303 450 346 451 340 452

304 453 339 454 343 455

343 456 339 457 346 458

346 459 327 460 340 461

346 462 345 463 327 464

339 465 328 466 346 467

346 468 328 469 345 470

345 471 375 472 327 473

345 474 399 475 375 476

328 477 374 478 345 479

345 480 374 481 399 482

398 483 316 484 367 485

398 486 344 487 316 488

320 489 315 490 398 491

398 492 315 493 344 494

344 495 343 496 316 497

316 498 343 499 303 500

315 501 304 502 344 503

344 504 304 505 343 506

309 507 111 508 334 509

309 510 92 511 111 512

334 513 94 514 333 515

334 516 111 517 94 518

333 519 191 520 370 521

333 522 94 523 191 524

310 525 92 526 309 527

310 528 189 529 92 530

334 531 335 532 309 533

309 534 335 535 308 536

335 537 307 538 308 539

335 540 336 541 307 542

336 543 337 544 307 545

307 546 337 547 306 548

337 549 338 550 306 551

306 552 338 553 305 554

338 555 339 556 305 557

305 558 339 559 304 560

340 561 341 562 303 563

303 564 341 565 302 566

301 567 341 568 342 569

301 570 302 571 341 572

326 573 342 574 341 575

326 576 325 577 342 578

327 579 326 580 340 581

340 582 326 583 341 584

329 585 328 586 338 587

338 588 328 589 339 590

330 591 338 592 337 593

330 594 329 595 338 596

331 597 337 598 336 599

331 600 330 601 337 602

332 603 331 604 335 605

335 606 331 607 336 608

333 609 335 610 334 611

333 612 332 613 335 614

370 615 332 616 333 617

370 618 324 619 332 620

324 621 331 622 332 623

324 624 371 625 331 626

371 627 330 628 331 629

371 630 372 631 330 632

373 633 374 634 329 635

329 636 374 637 328 638

375 639 376 640 327 641

327 642 376 643 326 644

376 645 377 646 326 647

326 648 377 649 325 650

310 651 369 652 323 653

310 654 311 655 369 656

311 657 312 658 369 659

369 660 312 661 368 662

312 663 322 664 368 665

312 666 313 667 322 668

313 669 314 670 322 671

322 672 314 673 321 674

314 675 320 676 321 677

314 678 315 679 320 680

316 681 317 682 367 683

367 684 317 685 319 686

317 687 366 688 319 689

317 690 318 691 366 692

318 693 317 694 301 695

301 696 317 697 302 698

303 699 317 700 316 701

303 702 302 703 317 704

305 705 304 706 314 707

314 708 304 709 315 710

306 711 305 712 313 713

313 714 305 715 314 716

307 717 306 718 312 719

312 720 306 721 313 722

308 723 307 724 311 725

311 726 307 727 312 728

309 729 311 730 310 731

309 732 308 733 311 734

299 735 287 736 300 737

299 738 286 739 287 740

280 741 299 742 282 743

282 744 299 745 300 746

300 747 287 748 296 749

296 750 287 751 283 752

282 753 300 754 278 755

278 756 300 757 296 758

297 759 285 760 298 761

297 762 284 763 285 764

279 765 298 766 281 767

279 768 297 769 298 770

298 771 286 772 299 773

298 774 285 775 286 776

281 777 299 778 280 779

281 780 298 781 299 782

296 783 283 784 297 785

297 786 283 787 284 788

278 789 296 790 279 791

279 792 296 793 297 794

293 795 294 796 292 797

292 798 294 799 295 800

291 801 292 802 295 803

291 804 288 805 292 806

290 807 295 808 294 809

290 810 291 811 295 812

289 813 290 814 293 815

293 816 290 817 294 818

288 819 293 820 292 821

288 822 289 823 293 824

280 825 288 826 291 827

280 828 275 829 288 830

281 831 280 832 290 833

290 834 280 835 291 836

276 837 281 838 289 839

289 840 281 841 290 842

275 843 276 844 288 845

288 846 276 847 289 848

284 849 287 850 285 851

285 852 287 853 286 854

277 855 280 856 282 857

277 858 275 859 280 860

273 861 282 862 278 863

273 864 277 865 282 866

276 867 274 868 281 869

281 870 274 871 279 872

274 873 273 874 279 875

279 876 273 877 278 878

272 879 270 880 277 881

277 882 270 883 275 884

268 885 272 886 273 887

273 888 272 889 277 890

271 891 274 892 276 893

271 894 269 895 274 896

270 897 276 898 275 899

270 900 271 901 276 902

269 903 268 904 274 905

274 906 268 907 273 908

225 909 217 910 272 911

272 912 217 913 270 914

214 915 272 916 268 917

214 918 225 919 272 920

218 921 215 922 271 923

271 924 215 925 269 926

217 927 218 928 270 929

270 930 218 931 271 932

215 933 268 934 269 935

215 936 214 937 268 938

264 939 265 940 266 941

266 942 265 943 267 944

261 945 263 946 266 947

261 948 259 949 263 950

260 951 267 952 265 953

260 954 262 955 267 956

262 957 261 958 267 959

267 960 261 961 266 962

258 963 260 964 264 965

264 966 260 967 265 968

259 969 264 970 263 971

259 972 258 973 264 974

256 975 253 976 261 977

261 978 253 979 259 980

255 981 262 982 260 983

255 984 257 985 262 986

257 987 261 988 262 989

257 990 256 991 261 992

254 993 255 994 258 995

258 996 255 997 260 998

253 999 258 1000 259 1001

253 1002 254 1003 258 1004

252 1005 249 1006 256 1007

256 1008 249 1009 253 1010

250 1011 257 1012 255 1013

250 1014 251 1015 257 1016

251 1017 256 1018 257 1019

251 1020 252 1021 256 1022

248 1023 250 1024 254 1025

254 1026 250 1027 255 1028

249 1029 254 1030 253 1031

249 1032 248 1033 254 1034

247 1035 244 1036 252 1037

252 1038 244 1039 249 1040

245 1041 251 1042 250 1043

245 1044 246 1045 251 1046

246 1047 252 1048 251 1049

246 1050 247 1051 252 1052

243 1053 245 1054 248 1055

248 1056 245 1057 250 1058

244 1059 243 1060 249 1061

249 1062 243 1063 248 1064

242 1065 244 1066 247 1067

242 1068 239 1069 244 1070

240 1071 246 1072 245 1073

240 1074 241 1075 246 1076

241 1077 242 1078 246 1079

246 1080 242 1081 247 1082

238 1083 240 1084 243 1085

243 1086 240 1087 245 1088

239 1089 243 1090 244 1091

239 1092 238 1093 243 1094

234 1095 239 1096 242 1097

234 1098 227 1099 239 1100

230 1101 236 1102 240 1103

240 1104 236 1105 241 1106

236 1107 234 1108 241 1109

241 1110 234 1111 242 1112

233 1113 230 1114 238 1115

238 1116 230 1117 240 1118

227 1119 238 1120 239 1121

227 1122 233 1123 238 1124

234 1125 236 1126 235 1127

235 1128 236 1129 237 1130

231 1131 232 1132 236 1133

236 1134 232 1135 237 1136

229 1137 234 1138 235 1139

229 1140 228 1141 234 1142

221 1143 230 1144 233 1145

221 1146 187 1147 230 1148

185 1149 233 1150 227 1151

185 1152 221 1153 233 1154

206 1155 232 1156 231 1157

206 1158 190 1159 232 1160

187 1161 231 1162 230 1163

187 1164 206 1165 231 1166

188 1167 204 1168 229 1169

229 1170 204 1171 228 1172

204 1173 185 1174 228 1175

228 1176 185 1177 227 1178

223 1179 186 1180 226 1181

226 1182 186 1183 220 1184

184 1185 226 1186 216 1187

184 1188 223 1189 226 1190

226 1191 217 1192 225 1193

226 1194 220 1195 217 1196

216 1197 226 1198 214 1199

214 1200 226 1201 225 1202

224 1203 186 1204 223 1205

224 1206 207 1207 186 1208

223 1209 205 1210 224 1211

223 1212 184 1213 205 1214

221 1215 185 1216 222 1217

222 1218 185 1219 200 1220

187 1221 221 1222 201 1223

201 1224 221 1225 222 1226

193 1227 197 1228 220 1229

220 1230 197 1231 219 1232

215 1233 219 1234 196 1235

215 1236 218 1237 219 1238

217 1239 220 1240 218 1241

218 1242 220 1243 219 1244

196 1245 216 1246 215 1247

215 1248 216 1249 214 1250

206 1251 187 1252 213 1253

213 1254 187 1255 201 1256

190 1257 213 1258 203 1259

190 1260 206 1261 213 1262

213 1263 197 1264 211 1265

213 1266 201 1267 197 1268

203 1269 211 1270 199 1271

203 1272 213 1273 211 1274

204 1275 188 1276 212 1277

212 1278 188 1279 202 1280

185 1281 204 1282 200 1283

200 1284 204 1285 212 1286

212 1287 202 1288 210 1289

210 1290 202 1291 198 1292

200 1293 212 1294 196 1295

196 1296 212 1297 210 1298

211 1299 197 1300 209 1301

209 1302 197 1303 193 1304

199 1305 211 1306 195 1307

195 1308 211 1309 209 1310

210 1311 198 1312 208 1313

208 1314 198 1315 194 1316

196 1317 210 1318 192 1319

192 1320 210 1321 208 1322

195 1323 209 1324 191 1325

191 1326 209 1327 207 1328

208 1329 189 1330 205 1331

208 1332 194 1333 189 1334

205 1335 184 1336 208 1337

208 1338 184 1339 192 1340

182 1341 170 1342 169 1343

182 1344 183 1345 170 1346

163 1347 165 1348 182 1349

182 1350 165 1351 183 1352

183 1353 179 1354 170 1355

170 1356 179 1357 166 1358

165 1359 161 1360 183 1361

183 1362 161 1363 179 1364

180 1365 168 1366 167 1367

180 1368 181 1369 168 1370

162 1371 181 1372 180 1373

162 1374 164 1375 181 1376

181 1377 169 1378 168 1379

181 1380 182 1381 169 1382

164 1383 182 1384 181 1385

164 1386 163 1387 182 1388

179 1389 180 1390 166 1391

166 1392 180 1393 167 1394

161 1395 162 1396 179 1397

179 1398 162 1399 180 1400

176 1401 175 1402 177 1403

177 1404 175 1405 178 1406

174 1407 175 1408 171 1409

174 1410 178 1411 175 1412

173 1413 178 1414 174 1415

173 1416 177 1417 178 1418

172 1419 176 1420 173 1421

173 1422 176 1423 177 1424

171 1425 176 1426 172 1427

171 1428 175 1429 176 1430

163 1431 171 1432 158 1433

163 1434 174 1435 171 1436

164 1437 173 1438 163 1439

163 1440 173 1441 174 1442

159 1443 172 1444 164 1445

164 1446 172 1447 173 1448

158 1449 171 1450 159 1451

159 1452 171 1453 172 1454

167 1455 168 1456 170 1457

170 1458 168 1459 169 1460

160 1461 163 1462 158 1463

160 1464 165 1465 163 1466

156 1467 165 1468 160 1469

156 1470 161 1471 165 1472

159 1473 164 1474 157 1475

157 1476 164 1477 162 1478

157 1479 162 1480 156 1481

156 1482 162 1483 161 1484

155 1485 160 1486 153 1487

153 1488 160 1489 158 1490

151 1491 156 1492 155 1493

155 1494 156 1495 160 1496

154 1497 157 1498 152 1499

154 1500 159 1501 157 1502

153 1503 159 1504 154 1505

153 1506 158 1507 159 1508

152 1509 157 1510 151 1511

151 1512 157 1513 156 1514

112 1515 155 1516 104 1517

104 1518 155 1519 153 1520

101 1521 155 1522 112 1523

101 1524 151 1525 155 1526

105 1527 154 1528 102 1529

102 1530 154 1531 152 1532

104 1533 153 1534 105 1535

105 1536 153 1537 154 1538

102 1539 151 1540 101 1541

102 1542 152 1543 151 1544

147 1545 149 1546 148 1547

148 1548 149 1549 150 1550

144 1551 146 1552 142 1553

144 1554 149 1555 146 1556

143 1557 150 1558 145 1559

143 1560 148 1561 150 1562

145 1563 150 1564 144 1565

144 1566 150 1567 149 1568

141 1569 147 1570 143 1571

143 1572 147 1573 148 1574

142 1575 147 1576 141 1577

142 1578 146 1579 147 1580

139 1581 144 1582 136 1583

136 1584 144 1585 142 1586

138 1587 145 1588 140 1589

138 1590 143 1591 145 1592

140 1593 144 1594 139 1595

140 1596 145 1597 144 1598

137 1599 141 1600 138 1601

138 1602 141 1603 143 1604

136 1605 141 1606 137 1607

136 1608 142 1609 141 1610

135 1611 139 1612 132 1613

132 1614 139 1615 136 1616

133 1617 140 1618 134 1619

133 1620 138 1621 140 1622

134 1623 139 1624 135 1625

134 1626 140 1627 139 1628

131 1629 137 1630 133 1631

133 1632 137 1633 138 1634

132 1635 137 1636 131 1637

132 1638 136 1639 137 1640

130 1641 135 1642 127 1643

127 1644 135 1645 132 1646

128 1647 134 1648 129 1649

128 1650 133 1651 134 1652

129 1653 135 1654 130 1655

129 1656 134 1657 135 1658

126 1659 131 1660 128 1661

128 1662 131 1663 133 1664

127 1665 132 1666 126 1667

126 1668 132 1669 131 1670

125 1671 127 1672 122 1673

125 1674 130 1675 127 1676

123 1677 129 1678 124 1679

123 1680 128 1681 129 1682

124 1683 129 1684 125 1685

125 1686 129 1687 130 1688

121 1689 126 1690 123 1691

123 1692 126 1693 128 1694

122 1695 126 1696 121 1697

122 1698 127 1699 126 1700

119 1701 122 1702 114 1703

119 1704 125 1705 122 1706

116 1707 123 1708 120 1709

120 1710 123 1711 124 1712

120 1713 124 1714 119 1715

119 1716 124 1717 125 1718

118 1719 121 1720 116 1721

116 1722 121 1723 123 1724

114 1725 121 1726 118 1727

114 1728 122 1729 121 1730

119 1731 235 1732 120 1733

120 1734 235 1735 237 1736

117 1737 120 1738 232 1739

232 1740 120 1741 237 1742

229 1743 119 1744 115 1745

229 1746 235 1747 119 1748

108 1749 116 1750 84 1751

108 1752 118 1753 116 1754

82 1755 118 1756 108 1757

82 1758 114 1759 118 1760

93 1761 232 1762 190 1763

93 1764 117 1765 232 1766

84 1767 117 1768 93 1769

84 1770 116 1771 117 1772

188 1773 229 1774 91 1775

91 1776 229 1777 115 1778

91 1779 115 1780 82 1781

82 1782 115 1783 114 1784

110 1785 113 1786 83 1787

83 1788 113 1789 107 1790

81 1791 113 1792 110 1793

81 1794 103 1795 113 1796

113 1797 104 1798 107 1799

113 1800 112 1801 104 1802

103 1803 101 1804 113 1805

113 1806 101 1807 112 1808

111 1809 83 1810 94 1811

111 1812 110 1813 83 1814

110 1815 92 1816 81 1817

110 1818 111 1819 92 1820

108 1821 109 1822 82 1823

82 1824 109 1825 89 1826

84 1827 90 1828 108 1829

108 1830 90 1831 109 1832

86 1833 107 1834 88 1835

88 1836 107 1837 106 1838

102 1839 106 1840 105 1841

102 1842 87 1843 106 1844

104 1845 105 1846 107 1847

107 1848 105 1849 106 1850

87 1851 102 1852 103 1853

103 1854 102 1855 101 1856

93 1857 100 1858 84 1859

84 1860 100 1861 90 1862

190 1863 100 1864 93 1865

190 1866 203 1867 100 1868

100 1869 88 1870 90 1871

100 1872 98 1873 88 1874

203 1875 98 1876 100 1877

203 1878 199 1879 98 1880

91 1881 99 1882 188 1883

188 1884 99 1885 202 1886

82 1887 89 1888 91 1889

91 1890 89 1891 99 1892

99 1893 97 1894 202 1895

202 1896 97 1897 198 1898

89 1899 87 1900 99 1901

99 1902 87 1903 97 1904

98 1905 96 1906 88 1907

88 1908 96 1909 86 1910

199 1911 195 1912 98 1913

98 1914 195 1915 96 1916

97 1917 95 1918 198 1919

198 1920 95 1921 194 1922

87 1923 85 1924 97 1925

97 1926 85 1927 95 1928

195 1929 191 1930 96 1931

96 1932 191 1933 94 1934

95 1935 92 1936 194 1937

194 1938 92 1939 189 1940

92 1941 95 1942 81 1943

81 1944 95 1945 85 1946

80 1947 56 1948 79 1949

56 1950 55 1951 79 1952

41 1953 80 1954 79 1955

41 1956 79 1957 42 1958

79 1959 55 1960 78 1961

55 1962 54 1963 78 1964

42 1965 79 1966 78 1967

42 1968 78 1969 43 1970

78 1971 54 1972 53 1973

78 1974 53 1975 77 1976

43 1977 78 1978 44 1979

78 1980 77 1981 44 1982

77 1983 53 1984 76 1985

53 1986 52 1987 76 1988

44 1989 77 1990 45 1991

77 1992 76 1993 45 1994

76 1995 52 1996 75 1997

52 1998 51 1999 75 2000

45 2001 76 2002 75 2003

45 2004 75 2005 46 2006

75 2007 51 2008 50 2009

75 2010 50 2011 74 2012

46 2013 75 2014 74 2015

46 2016 74 2017 47 2018

74 2019 50 2020 49 2021

74 2022 49 2023 73 2024

47 2025 74 2026 73 2027

47 2028 73 2029 48 2030

65 2031 8 2032 66 2033

8 2034 7 2035 66 2036

66 2037 7 2038 6 2039

66 2040 6 2041 67 2042

67 2043 6 2044 5 2045

67 2046 5 2047 68 2048

68 2049 5 2050 4 2051

68 2052 4 2053 69 2054

69 2055 4 2056 70 2057

4 2058 3 2059 70 2060

70 2061 3 2062 71 2063

3 2064 2 2065 71 2066

71 2067 2 2068 1 2069

71 2070 1 2071 72 2072

62 2073 71 2074 61 2075

71 2076 72 2077 61 2078

63 2079 70 2080 62 2081

70 2082 71 2083 62 2084

64 2085 69 2086 70 2087

64 2088 70 2089 63 2090

57 2091 64 2092 58 2093

64 2094 63 2095 58 2096

58 2097 63 2098 59 2099

63 2100 62 2101 59 2102

59 2103 62 2104 60 2105

62 2106 61 2107 60 2108

50 2109 59 2110 60 2111

50 2112 60 2113 49 2114

51 2115 58 2116 59 2117

51 2118 59 2119 50 2120

52 2121 57 2122 51 2123

57 2124 58 2125 51 2126

34 2127 47 2128 33 2129

47 2130 48 2131 33 2132

35 2133 46 2134 34 2135

46 2136 47 2137 34 2138

36 2139 45 2140 35 2141

45 2142 46 2143 35 2144

37 2145 44 2146 36 2147

44 2148 45 2149 36 2150

38 2151 43 2152 37 2153

43 2154 44 2155 37 2156

39 2157 42 2158 43 2159

39 2160 43 2161 38 2162

40 2163 41 2164 42 2165

40 2166 42 2167 39 2168

25 2169 40 2170 39 2171

25 2172 39 2173 26 2174

26 2175 39 2176 38 2177

26 2178 38 2179 27 2180

27 2181 38 2182 37 2183

27 2184 37 2185 28 2186

28 2187 37 2188 29 2189

37 2190 36 2191 29 2192

29 2193 36 2194 30 2195

36 2196 35 2197 30 2198

30 2199 35 2200 31 2201

35 2202 34 2203 31 2204

31 2205 34 2206 33 2207

31 2208 33 2209 32 2210

18 2211 31 2212 17 2213

31 2214 32 2215 17 2216

19 2217 30 2218 18 2219

30 2220 31 2221 18 2222

20 2223 29 2224 30 2225

20 2226 30 2227 19 2228

21 2229 28 2230 20 2231

28 2232 29 2233 20 2234

22 2235 27 2236 21 2237

27 2238 28 2239 21 2240

23 2241 26 2242 27 2243

23 2244 27 2245 22 2246

24 2247 25 2248 26 2249

24 2250 26 2251 23 2252

9 2253 24 2254 23 2255

9 2256 23 2257 10 2258

10 2259 23 2260 11 2261

23 2262 22 2263 11 2264

11 2265 22 2266 12 2267

22 2268 21 2269 12 2270

12 2271 21 2272 13 2273

21 2274 20 2275 13 2276

13 2277 20 2278 19 2279

13 2280 19 2281 14 2282

14 2283 19 2284 18 2285

14 2286 18 2287 15 2288

15 2289 18 2290 17 2291

15 2292 17 2293 16 2294

2 2295 15 2296 16 2297

2 2298 16 2299 1 2300

3 2301 14 2302 15 2303

3 2304 15 2305 2 2306

4 2307 13 2308 14 2309

4 2310 14 2311 3 2312

5 2313 12 2314 13 2315

5 2316 13 2317 4 2318

6 2319 11 2320 12 2321

6 2322 12 2323 5 2324

7 2325 10 2326 11 2327

7 2328 11 2329 6 2330

8 2331 9 2332 10 2333

8 2334 10 2335 7 2336

121.234129 0.100000 100.000000 1.000000 0.000000 0.000000 0.050444 0.000000 1.000000 0.000000 -7.286306 0.000000 0.000000 1.000000 -10.535123 0.000000 0.000000 0.000000 1.000000 0.793371 -0.461340 0.397150 17.643236 0.060611 0.709040 0.702559 12.496111 -0.605713 -0.533318 0.590494 6.573533 0.000000 0.000000 0.000000 1.000000 1.000000 0.000000 0.000000 -3.988720 0.000000 0.199065 -0.979986 -30.006611 -0.000000 0.979986 0.199065 -9.506567 0.000000 0.000000 0.000000 1.000000 0.666453 0.649649 -0.365783 -14.331261 -0.481145 0.000000 -0.876641 -28.204964 -0.569509 0.760234 0.312575 0.429052 0.000000 0.000000 0.000000 1.000000 0.976276 -0.118482 0.181237 5.521922 0.160485 -0.165959 -0.972986 -44.924263 0.145359 0.978989 -0.143007 -18.600327 0.000000 0.000000 0.000000 1.000000
gnustep-examples-1.4.0/gui/MyGL/main.m0000664000175000017500000000016111423132403016464 0ustar fedorfedor#include int main(int argc, const char **argv) { NSApplicationMain(argc, argv); return 0; } gnustep-examples-1.4.0/gui/GFractal/0000775000175000017500000000000012204034626016245 5ustar fedorfedorgnustep-examples-1.4.0/gui/GFractal/FractalView.m0000664000175000017500000002046212144706276020650 0ustar fedorfedor #import "FractalView.h" #define _FRACTALVIEW_DEBUG 1 static double defaultregs[] = { -1.5, 0.5, -1, 1, -1.5, 1.5, -1.5, 1.5, -2, 2, -2, 2, -2.5, 4.5, -4, 4, -1, 3, -2, 2 }; static double escape[] = { 4, 4, 4, 4, 100, }; static int maxiter[] = { 256, 256, 256, 256, 256 }; static id cschemes[] = { nil, nil, nil, nil }; @implementation FractalView + (id)getColorsForScheme:(CSCHEME)cs { id scheme, col; int r, g, b, divs, total, pos; float rfl, gfl, bfl; if (cschemes[cs] == nil) { switch (cs) { case MONOCHROME: case GRAY16: divs = (cs==MONOCHROME ? 2 : 16); scheme = [NSMutableArray arrayWithCapacity:divs]; for (g = 0; g < divs; g++) { gfl = (float)g/(float)(divs - 1); col = [NSColor colorWithDeviceRed:gfl green:gfl blue:gfl alpha:1.0]; [scheme insertObject:col atIndex:g]; } break; case RGB8: case RGB27: divs = (cs==RGB8 ? 2 : 3); total = divs*divs*divs; scheme = [NSMutableArray arrayWithCapacity:total]; pos = 0; for (r = 0; r < divs; r++) { for (g = 0; g < divs; g++) { for (b = 0; b < divs; b++) { rfl = (float)r/(float)(divs-1); gfl = (float)g/(float)(divs-1); bfl = (float)b/(float)(divs-1); col = [NSColor colorWithDeviceRed:rfl green:gfl blue:bfl alpha:1.0]; [scheme insertObject:col atIndex:pos++]; } } } break; } [scheme retain]; cschemes[cs] = scheme; } return cschemes[cs]; } - (id)initWithType:(FTYPE)ft { return [self initWithType:ft resolution:DEFAULT_RES cscheme:DEFAULT_SCHEME region:(defaultregs+4*ft)]; } - (id)initWithType:(FTYPE)ft resolution:(int)rval cscheme:(CSCHEME)cs region:(double *)reg { NSRect iframe = {{0, 0}, {rval, rval}}; [super initWithFrame:iframe]; ftype = ft; res = rval; cscheme = cs; minre = reg[0]; maxre = reg[1]; minim = reg[2]; maxim = reg[3]; image = [[NSImage alloc] initWithSize:iframe.size]; rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:res pixelsHigh:res bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSDeviceRGBColorSpace bytesPerRow:res*3 bitsPerPixel:24]; [image addRepresentation:rep]; [self update]; [self setNeedsDisplay:YES]; return self; } - (id)setResolution:(int)rval { NSSize size={ rval, rval }; [super setFrameSize:size]; res = rval; [image removeRepresentation:rep]; [rep dealloc]; [image dealloc]; image = [[NSImage alloc] initWithSize:size]; rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:res pixelsHigh:res bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSDeviceRGBColorSpace bytesPerRow:res*3 bitsPerPixel:24]; [image addRepresentation:rep]; [self update]; [self setNeedsDisplay:YES]; return self; } - (int)resolution { return res; } - (id)setColorScheme:(CSCHEME)cs { cscheme = cs; [self update]; [self setNeedsDisplay:YES]; return self; } - (CSCHEME)colorScheme { return cscheme; } - (id)zoomOp:(ZOOMOP)op { double *reg = defaultregs+4*ftype; double midre, midim, deltare, deltaim; deltare = maxre - minre; deltaim = maxim - minim; midre = (minre + maxre)/(double)2; midim = (minim + maxim)/(double)2; switch(op) { case ZOOM_IN: case ZOOM_OUT: if(op == ZOOM_IN) { deltare /= (double)4; deltaim /= (double)4; } minre = midre - deltare; maxre = midre + deltare; minim = midim - deltaim; maxim = midim + deltaim; break; case ZOOM_RESTORE: minre = reg[0]; maxre = reg[1]; minim = reg[2]; maxim = reg[3]; break; } [self update]; [self setNeedsDisplay:YES]; return self; } - (void)update { double redelta, imdelta; double recur, imcur; int rept, impt; double zzbar, esc; CGFloat colr, colg, colb; id colors, color; int count, maxit, cols; __complex__ double z, c, acc; unsigned char *base, *data = [rep bitmapData]; colors = [FractalView getColorsForScheme:cscheme]; cols = [colors count]; redelta = (maxre - minre)/(double)res; imdelta = (maxim - minim)/(double)res; esc = escape[ftype]; maxit = maxiter[ftype]; [image lockFocus]; for (recur = minre, rept = 0; rept < res; recur += redelta, rept++) { for (imcur = minim, impt=0; impt < res; imcur += imdelta, impt++) { c = recur + imcur*1i; z = (ftype==ZLAMBDA ? 0.5 : 0); count = 0; do { zzbar = (__real__ z)*(__real__ z)+ (__imag__ z)*(__imag__ z); switch(ftype){ case ZSQUARED: z = z*z + c; break; case ZCUBED: z = z*z*z + c; break; case ZSQSQPLUSZ: z = z*z*z*z + z + c; break; case ZLAMBDA: z = c*z*(1-z); break; case ZMAGNET: acc = (z*z+c-1)/(2*z+c-2); z = acc*acc; } count++; } while(count < maxit && zzbar < esc); color = [colors objectAtIndex:((maxit - count)%cols)]; [color getRed:&colr green:&colg blue:&colb alpha:NULL]; base = data + (res - 1 - impt)*res*3 + rept*3; base[0] = (int)(colr*255); base[1] = (int)(colg*255); base[2] = (int)(colb*255); [color set]; PSrectfill(rept, impt, 1, 1); } } [image unlockFocus]; #ifdef _FRACTALVIEW_DEBUG { static int starter = 1; Class todebug[] = { [NSWindow class], [FractalView class], [NSImage class], [NSBitmapImageRep class], [NSCachedImageRep class], nil }, *current; if (starter) { GSDebugAllocationActive(YES); starter = 0; } current=todebug; while (*current!=nil) { id cl = *current; NSLog(@"%@ count %u total %u peak %u\n", NSStringFromClass(cl), GSDebugAllocationCount(cl), GSDebugAllocationTotal(cl), GSDebugAllocationPeak(cl)); current++; } } #endif } - (void)drawRect:(NSRect)aRect { [image compositeToPoint:aRect.origin fromRect:aRect operation:NSCompositeCopy]; } #define PAD 5 - (void)mouseDown:(NSEvent *)theEvent { NSPoint startp, curp; NSEvent *curEvent = theEvent; float dx, dy, prevr = 0, r; NSRect update; double deltare, deltaim, newminre, newmaxre, newminim, newmaxim; startp = [curEvent locationInWindow]; startp = [self convertPoint:startp fromView: nil]; do { curp = [curEvent locationInWindow]; curp = [self convertPoint:curp fromView: nil]; dx = curp.x - startp.x; dy = curp.y - startp.y; if (dx < 0) { dx = -dx; } if (dy < 0) { dy = -dy; } r = (dx #import #import "FractalView.h" @interface FractalWindow : NSObject { id delegate; NSWindow *window; FractalView *view; } + (NSString *) typeToString:(FTYPE)ft; + (NSString *) schemeToString:(CSCHEME)cs; - (id)initWithType:(FTYPE)ft; - (id)delegate; - (void)setDelegate:(id)aDelegate; - (id)window; -(void)saveAs:(id)sender; -(void)resolution:(id)sender; -(void)colorScheme:(id)sender; -(void)zoomOp:(id)sender; @end gnustep-examples-1.4.0/gui/GFractal/FractalView.h0000664000175000017500000000204007471236564020640 0ustar fedorfedor#import #import #define DEFAULT_RES 200 typedef enum { ZSQUARED=0, ZCUBED, ZSQSQPLUSZ, ZLAMBDA, ZMAGNET, FTYPE_COUNT } FTYPE; #define DEFAULT_TYPE ZSQUARED typedef enum { MONOCHROME=0, GRAY16, RGB8, RGB27, CSCHEME_COUNT } CSCHEME; #define DEFAULT_SCHEME GRAY16 typedef enum { ZOOM_IN = 0, ZOOM_OUT, ZOOM_RESTORE } ZOOMOP; @interface FractalView : NSView { NSImage *image; FTYPE ftype; int res; CSCHEME cscheme; double minre, maxre; double minim, maxim; NSBitmapImageRep *rep; } + (id)getColorsForScheme:(CSCHEME)cs; - (id)initWithType:(FTYPE)ft; - (id)initWithType:(FTYPE)ft resolution:(int)rval cscheme:(CSCHEME)cs region:(double *)reg; - (id)setResolution:(int)rval; - (int)resolution; - (id)setColorScheme:(CSCHEME)cs; - (CSCHEME)colorScheme; - (id)zoomOp:(ZOOMOP)op; - (void)update; - (void)drawRect:(NSRect)aRect; - (void)mouseDown:(NSEvent *)theEvent; - (BOOL)writeTIFF:(NSString *)name; - (void)dealloc; @end gnustep-examples-1.4.0/gui/GFractal/Controller.h0000664000175000017500000000041307471236564020556 0ustar fedorfedor#import #import #import "FractalWindow.h" #import "FractalView.h" @interface Controller : NSObject -(void)applicationDidFinishLaunching: (NSNotification *)aNotification; -(void)startNewFractalWindow: (id)sender; @end gnustep-examples-1.4.0/gui/GFractal/GNUmakefile0000664000175000017500000000065412111756344020331 0ustar fedorfedor include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = GFractal VERSION = 0.1 # The application to be compiled APP_NAME = GFractal # The Objective-C source files to be compiled GFractal_OBJC_FILES = main.m \ Controller.m \ FractalView.m \ FractalWindow.m \ # The Resource files to be copied into the app's resources directory # GFractal_RESOURCE_FILES = Icons/* include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/GFractal/Controller.m0000664000175000017500000000062007471236564020563 0ustar fedorfedor #import "Controller.h" @implementation Controller -(id) init { return self; } -(void) dealloc { [super dealloc]; } - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; { [self startNewFractalWindow: nil]; } - (void)startNewFractalWindow: (id)sender { int tag; tag = (sender==nil ? DEFAULT_TYPE:[sender tag]); [[FractalWindow alloc] initWithType:tag]; } @end gnustep-examples-1.4.0/gui/GFractal/FractalWindow.m0000664000175000017500000000557207471236564021217 0ustar fedorfedor #import "FractalWindow.h" static int counter = 1; static NSString *typestrs[] = { @"z^2+c", @"z^3+c", @"z^4+z+c", @"c z (1-z)", @"((z^2+c-1)/(2*z+c-2))^2" }; static NSString *schemestrs[] = { @"Monochrome", @"Gray16", @"RGB8", @"RGB27" }; @implementation FractalWindow + (NSString *) typeToString:(FTYPE)ft { return typestrs[ft]; } + (NSString *) schemeToString:(CSCHEME)cs { return schemestrs[cs]; } - (id)initWithType:(FTYPE)ft { if ((self = [super init]) != nil) { NSRect frame; int m = (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask); view = [[FractalView alloc] initWithType:ft]; frame = [NSWindow frameRectForContentRect:[view frame] styleMask:m]; window = [[NSWindow alloc] initWithContentRect:frame styleMask:m backing: NSBackingStoreRetained defer:YES]; [window setMinSize:frame.size]; [window setTitle:[[NSString alloc] initWithFormat:@"#%u(%@)" locale: nil, counter++, [FractalWindow typeToString:ft]]]; [window setReleasedWhenClosed:NO]; [window setDelegate:self]; [window setFrame:frame display:YES]; [window setMaxSize:frame.size]; [window setContentView:view]; [window setReleasedWhenClosed:YES]; // RELEASE(view); [window center]; [window orderFrontRegardless]; [window makeKeyWindow]; [window display]; } return self; } - (void)dealloc { RELEASE(window); [super dealloc]; } - (id)delegate { return delegate; } - (void)setDelegate:(id)aDelegate { delegate = aDelegate; } - (id)window { return window; } -(void)saveAs:(id)sender { NSSavePanel *savePanel; int result; NSString *fname, *msg; savePanel = [NSSavePanel savePanel]; [savePanel setRequiredFileType:@"tiff"]; result = [savePanel runModal]; if (result == NSOKButton) { fname = [savePanel filename]; if ([view writeTIFF:fname] == NO) { msg = [[NSString alloc] initWithFormat:@"Couldn't write %@" locale: nil, fname]; NSRunAlertPanel(@"Alert", msg, @"Ok", nil, nil); } } [[NSCursor arrowCursor] set]; } -(void)resolution:(id)sender { int tag = [sender tag]; NSRect frame; if (tag == [view resolution]) { return; } [window setContentView:nil]; [view setResolution:tag]; frame = [NSWindow frameRectForContentRect:[view frame] styleMask:[window styleMask]]; frame.origin = [window frame].origin; [window setMinSize:frame.size]; [window setMaxSize:frame.size]; [window setFrame:frame display:NO]; [window setContentView:view]; } -(void)colorScheme:(id)sender { int tag = [sender tag]; if (tag == [view colorScheme]) { return; } [view setColorScheme:tag]; } -(void)zoomOp:(id)sender { [view zoomOp:[sender tag]]; } @end gnustep-examples-1.4.0/gui/GFractal/GFractalInfo.plist0000664000175000017500000000055407471236564021644 0ustar fedorfedor{ ApplicationName = "GFractal"; ApplicationDescription = "A GNUstep Fractal Viewer"; ApplicationRelease = "Fractal 0.1"; FullVersionID = "0.1, May 2002"; Authors = ("Marko Riedel "); Copyright = "Copyright (C) 2002 Free Software Foundation, Inc."; CopyrightDescription = "Released under the GNU General Public License 2.0"; } gnustep-examples-1.4.0/gui/GFractal/main.m0000664000175000017500000001450507722470343017365 0ustar fedorfedor/* * main.m: main function of Fractal.app * * Copyright (c) 2002 Free Software Foundation, Inc. * * Author: Marko Riedel * Date: May 2002 * * With code fragments from MemoryPanel, ImageViewer, Finger, GDraw * and GShisen, as well as some fractal defintions from FractInt. * * This sample program is part of GNUstep. * * 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 #import #import #import #import "Controller.h" int main (void) { NSAutoreleasePool *pool; NSApplication *app; NSMenu *mainMenu, *subMenu; NSMenu *menu; NSMenuItem *menuItem, *subMenuItem; Controller *controller; FTYPE ft; CSCHEME cs; pool = [NSAutoreleasePool new]; app = [NSApplication sharedApplication]; // // Create the Menu // // Main Menu mainMenu = AUTORELEASE ([NSMenu new]); // Info SubMenu menuItem = [mainMenu addItemWithTitle: @"Info" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"Info Panel..." action: @selector (orderFrontStandardInfoPanel:) keyEquivalent: @""]; [menu addItemWithTitle: @"Preferences..." action: @selector (runPreferencesPanel:) keyEquivalent: @""]; [menu addItemWithTitle: @"Help..." action: @selector (orderFrontHelpPanel:) keyEquivalent: @"?"]; // Document Submenu menuItem = [mainMenu addItemWithTitle: @"Document" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; subMenuItem = [menu addItemWithTitle: @"New Fractal Window" action: NULL keyEquivalent: @""]; subMenu = AUTORELEASE ([NSMenu new]); [menu setSubmenu: subMenu forItem: subMenuItem]; [[subMenu addItemWithTitle: [FractalWindow typeToString:ZSQUARED] action: @selector (startNewFractalWindow:) keyEquivalent: @"n"] setTag:ZSQUARED]; for (ft = 1; ft < FTYPE_COUNT; ft++) { [[subMenu addItemWithTitle: [FractalWindow typeToString:ft] action: @selector (startNewFractalWindow:) keyEquivalent: @""] setTag:ft]; } [menu addItemWithTitle: @"Save As..." action: @selector (saveAs:) keyEquivalent: @"s"]; [menu addItemWithTitle: @"Miniaturize" action: @selector(performMiniaturize:) keyEquivalent: @"m"]; [menu addItemWithTitle: @"Close" action: @selector(performClose:) keyEquivalent: @"w"]; // Fractal Submenu menuItem = [mainMenu addItemWithTitle: @"Fractal" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; subMenuItem = [menu addItemWithTitle: @"Resolution" action: NULL keyEquivalent: @""]; subMenu = AUTORELEASE ([NSMenu new]); [menu setSubmenu: subMenu forItem: subMenuItem]; [[subMenu addItemWithTitle: @"200" action: @selector (resolution:) keyEquivalent: @""] setTag:200]; [[subMenu addItemWithTitle: @"400" action: @selector (resolution:) keyEquivalent: @""] setTag:400]; [[subMenu addItemWithTitle: @"600" action: @selector (resolution:) keyEquivalent: @""] setTag:600]; subMenuItem = [menu addItemWithTitle: @"Color Scheme" action: NULL keyEquivalent: @""]; subMenu = AUTORELEASE ([NSMenu new]); [menu setSubmenu: subMenu forItem: subMenuItem]; for (cs = 0; cs < CSCHEME_COUNT; cs++) { [[subMenu addItemWithTitle: [FractalWindow schemeToString:cs] action: @selector (colorScheme:) keyEquivalent: @""] setTag:cs]; } subMenuItem = [menu addItemWithTitle: @"Zoom" action: NULL keyEquivalent: @""]; subMenu = AUTORELEASE ([NSMenu new]); [menu setSubmenu: subMenu forItem: subMenuItem]; [[subMenu addItemWithTitle: @"Zoom in" action: @selector (zoomOp:) keyEquivalent: @""] setTag:ZOOM_IN]; [[subMenu addItemWithTitle: @"Zoom out" action: @selector (zoomOp:) keyEquivalent: @""] setTag:ZOOM_OUT]; [[subMenu addItemWithTitle: @"Restore" action: @selector (zoomOp:) keyEquivalent: @""] setTag:ZOOM_RESTORE]; // Edit SubMenu menuItem = [mainMenu addItemWithTitle: @"Edit" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"Cut" action: @selector (cut:) keyEquivalent: @"x"]; [menu addItemWithTitle: @"Copy" action: @selector (copy:) keyEquivalent: @"c"]; [menu addItemWithTitle: @"Paste" action: @selector (paste:) keyEquivalent: @"v"]; [menu addItemWithTitle: @"SelectAll" action: @selector (selectAll:) keyEquivalent: @"a"]; // Windows SubMenu menuItem = [mainMenu addItemWithTitle:@"Windows" action: NULL keyEquivalent:@""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; [menu addItemWithTitle: @"Arrange" action: @selector(arrangeInFront:) keyEquivalent: @""]; [menu addItemWithTitle: @"Miniaturize" action: @selector(performMiniaturize:) keyEquivalent: @"m"]; [menu addItemWithTitle: @"Close" action: @selector(performClose:) keyEquivalent: @"w"]; [app setWindowsMenu: menu]; // Hide MenuItem [mainMenu addItemWithTitle: @"Hide" action: @selector (hide:) keyEquivalent: @"h"]; // Quit MenuItem [mainMenu addItemWithTitle: @"Quit" action: @selector (terminate:) keyEquivalent: @"q"]; [app setMainMenu: mainMenu]; controller = [Controller new]; [app setDelegate: controller]; [app run]; [[NSUserDefaults standardUserDefaults] synchronize]; RELEASE (controller); RELEASE (pool); return 0; } gnustep-examples-1.4.0/gui/GFractal/ChangeLog0000664000175000017500000000103012111756344020016 0ustar fedorfedor2013-02-22 Fred Kiefer * GNUMakefile: Use correct comment character. Patch by Carl Hansen Sun Jan 24 2009 Riccardo Mottola * GNUMakefile : set package name and version Fri May 17 16:16:30 2002 Nicola Pero * FractalView.h: Intial checkin. * FractalView.m: Idem. * FractalWindow.h: Idem. * FractalWindow.m: Idem. * Controller.h: Idem. * Controller.m: Idem. * main.m: Idem. * GNUmakefile: Idem. * GFractalInfo.plist: Idem. gnustep-examples-1.4.0/gui/ExampleTheme/0000775000175000017500000000000012204034630017133 5ustar fedorfedorgnustep-examples-1.4.0/gui/ExampleTheme/Rhea/0000775000175000017500000000000012204034630020012 5ustar fedorfedorgnustep-examples-1.4.0/gui/ExampleTheme/Rhea/Rhea.h0000664000175000017500000000007711205075276021061 0ustar fedorfedor#import @interface Rhea: GSTheme @end gnustep-examples-1.4.0/gui/ExampleTheme/Rhea/RheaInfo.plist0000664000175000017500000000024411205075276022575 0ustar fedorfedor{ ThemeDescription="A Bezier Path based Theme for GNUstep and Etoile"; ThemeName="Rhea"; ThemeRelease="0.1"; Authors=("Fred Morcos "); } gnustep-examples-1.4.0/gui/ExampleTheme/Rhea/GNUmakefile0000664000175000017500000000050711205075276022101 0ustar fedorfedorinclude $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = Rhea BUNDLE_NAME = Rhea BUNDLE_EXTENSION = .theme VERSION = 1 Rhea_INSTALL_DIR=$(GNUSTEP_LIBRARY)/Themes Rhea_PRINCIPAL_CLASS = Rhea Rhea_OBJC_FILES = \ Rhea.m -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/ExampleTheme/Rhea/Rhea.m0000664000175000017500000000075411205075276021070 0ustar fedorfedor#import "Rhea.h" #import @implementation Rhea - (void) drawButton: (NSRect) frame in: (NSCell*) cell view: (NSView*) view style: (int) style state: (GSThemeControlState) state { if (state == GSThemeNormalState) [[NSColor blackColor] set]; else if (state == GSThemeHighlightedState) [[NSColor whiteColor] set]; else if (state == GSThemeSelectedState) [[NSColor redColor] set]; [[NSBezierPath bezierPathWithRect: frame] stroke]; } @end gnustep-examples-1.4.0/gui/ExampleTheme/Rhea/INSTALL0000664000175000017500000000044411205075276021060 0ustar fedorfedorInstallation ------------ Just compile the Rhea bundle: make Now you should have a Rhea.theme bundle. Install it with (You may need to become root to do so.): make install After that, you need to tell GNUstep to use the theme bundle: defaults write NSGlobalDomain GSTheme Rhea gnustep-examples-1.4.0/gui/ExampleTheme/Rhea/COPYING0000664000175000017500000010451311205075276021064 0ustar fedorfedor GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS 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 state 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) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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 Lesser General Public License instead of this License. But first, please read . gnustep-examples-1.4.0/gui/ExampleTheme/Rhea/ChangeLog0000664000175000017500000000010211205075276021570 0ustar fedorfedor2009-05-19 Fred Morcos Initial version. gnustep-examples-1.4.0/gui/ExampleService/0000775000175000017500000000000012204034630017471 5ustar fedorfedorgnustep-examples-1.4.0/gui/ExampleService/md5Digest.m0000664000175000017500000000443007756712342021520 0ustar fedorfedor/* This tool creates an md5 digest using the example filter based on what type of file is being accessed. Copyright (C) 2003 Free Software Foundation, Inc. Written by: Rrichard Frith-Macdonald Created: June 2003 This file is part of the GNUstep Project This library 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. You should have received a copy of the GNU General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include int main(int argc, char** argv, char **env_c) { CREATE_AUTORELEASE_POOL(pool); NSFileHandle *fh; NSData *data; NSString *string; NSPasteboard *pb; NSUserDefaults *defs; #ifdef GS_PASS_ARGUMENTS [NSProcessInfo initializeWithArguments:argv count:argc environment:env_c]; #endif defs = [NSUserDefaults standardUserDefaults]; string = [defs stringForKey: @"CatFile"]; if (string != nil) { data = [NSSerializer serializePropertyList: string]; pb = [NSPasteboard pasteboardByFilteringData: data ofType: NSFilenamesPboardType]; NSLog(@"Types: %@", [pb types]); data = [pb dataForType: NSGeneralPboardType]; NSLog(@"Got %@", data); } else { NSLog(@"This program expects to read utf8 text from stdin -"); fh = [NSFileHandle fileHandleWithStandardInput]; data = [fh readDataToEndOfFile]; string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; data = [NSSerializer serializePropertyList: string]; pb = [NSPasteboard pasteboardByFilteringData: data ofType: NSStringPboardType]; NSLog(@"Types: %@", [pb types]); data = [pb dataForType: @"md5Digest"]; NSLog(@"Got %@", data); } RELEASE(pool); exit(EXIT_SUCCESS); } gnustep-examples-1.4.0/gui/ExampleService/example.m0000664000175000017500000001677312144672542021335 0ustar fedorfedor/* example.m GNUstep example services facility Copyright (C) 1998 Free Software Foundation, Inc. Author: Richard Frith-Macdonald Date: November 1998 This file is part of the GNUstep Project This library 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. You should have received a copy of the GNU General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "wgetopt.h" #include #include #include #ifndef NSIG #define NSIG 32 #endif @interface ExampleServices : NSObject - (void) md5: (NSPasteboard*)bp userData: (NSString*)ud error: (NSString**)err; - (void) openURL: (NSPasteboard*)bp userData: (NSString*)ud error: (NSString**)err; - (void) tolower: (NSPasteboard*)bp userData: (NSString*)ud error: (NSString**)err; - (void) toupper: (NSPasteboard*)bp userData: (NSString*)ud error: (NSString**)err; @end @implementation ExampleServices /** * Filter a string to an md5 digest of its utf8 value. */ - (void) md5: (NSPasteboard*)pb userData: (NSString*)ud error: (NSString**)err { NSArray *types; NSString *val; NSData *data; *err = nil; types = [pb types]; if (![types containsObject: NSStringPboardType]) { *err = @"No string type supplied on pasteboard"; return; } val = [pb stringForType: NSStringPboardType]; if (val == nil) { *err = @"No string value supplied on pasteboard"; return; } data = [val dataUsingEncoding: NSUTF8StringEncoding]; data = [data md5Digest]; [pb declareTypes: [NSArray arrayWithObject: @"md5Digest"] owner: nil]; [pb setData: data forType: @"md5Digest"]; } - (void) openURL: (NSPasteboard*)pb userData: (NSString*)ud error: (NSString**)err { NSString *url; NSArray *types; NSArray *args; NSString *path; NSTask *task; NSString *browser; NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; *err = nil; types = [pb types]; if (![types containsObject: NSStringPboardType]) { *err = @"No string type supplied on pasteboard"; return; } url = [pb stringForType: NSStringPboardType]; if (url == nil) { *err = @"No string value supplied on pasteboard"; return; } browser = [defs objectForKey:@"NSWebBrowser"]; if(!browser || [browser isEqualToString:@""]) { browser = @"mozilla -remote \"openURL(%@,new-window)\""; } path = @"/bin/sh"; args = [NSArray arrayWithObjects: @"-c", [NSString stringWithFormat: browser, url], nil]; task = [NSTask launchedTaskWithLaunchPath: path arguments: args]; } - (void) tolower: (NSPasteboard*)pb userData: (NSString*)ud error: (NSString**)err { NSString *in; NSString *out; NSArray *types; *err = nil; types = [pb types]; if (![types containsObject: NSStringPboardType]) { *err = @"No string type supplied on pasteboard"; return; } in = [pb stringForType: NSStringPboardType]; if (in == nil) { *err = @"No string value supplied on pasteboard"; return; } out = [in lowercaseString]; types = [NSArray arrayWithObject: NSStringPboardType]; [pb declareTypes: types owner: nil]; [pb setString: out forType: NSStringPboardType]; } - (void) toupper: (NSPasteboard*)pb userData: (NSString*)ud error: (NSString**)err { NSString *in; NSString *out; NSArray *types; *err = nil; types = [pb types]; if (![types containsObject: NSStringPboardType]) { *err = @"No string type supplied on pasteboard"; return; } in = [pb stringForType: NSStringPboardType]; if (in == nil) { *err = @"No string value supplied on pasteboard"; return; } out = [in uppercaseString]; types = [NSArray arrayWithObject: NSStringPboardType]; [pb declareTypes: types owner: nil]; [pb setString: out forType: NSStringPboardType]; } @end static int debug = 0; static int verbose = 0; static const char *progName = "example"; static void ihandler(int sig) { static BOOL beenHere = NO; BOOL action; const char *e; /* * Prevent recursion. */ if (beenHere == YES) { abort(); } beenHere = YES; /* * If asked to terminate, do so cleanly. */ if (sig == SIGTERM) { exit(EXIT_FAILURE); } #ifdef DEBUG action = YES; // abort() by default. #else action = NO; // exit() by default. #endif e = getenv("CRASH_ON_ABORT"); if (e != 0) { if (strcasecmp(e, "yes") == 0 || strcasecmp(e, "true") == 0) action = YES; else if (strcasecmp(e, "no") == 0 || strcasecmp(e, "false") == 0) action = NO; else if (isdigit(*e) && *e != '0') action = YES; else action = NO; } if (action == YES) { abort(); } else { fprintf(stderr, "%s killed by signal %d\n", progName, sig); exit(sig); } } static void init(int argc, char** argv) { const char *options = "Hdv"; int sym; progName = argv[0]; while ((sym = getopt(argc, argv, options)) != -1) { switch(sym) { case 'H': printf("%s -[%s]\n", argv[0], options); printf("GNU Services example server\n"); printf("-H\tfor help\n"); printf("-d\tavoid fork() to make debugging easy\n"); exit(EXIT_SUCCESS); case 'd': debug++; break; case 'v': verbose++; break; default: printf("%s - filter server\n", argv[0]); printf("-H for help\n"); exit(EXIT_SUCCESS); } } for (sym = 0; sym < NSIG; sym++) { signal(sym, ihandler); } #ifndef __MINGW__ signal(SIGPIPE, SIG_IGN); signal(SIGTTOU, SIG_IGN); signal(SIGTTIN, SIG_IGN); signal(SIGHUP, SIG_IGN); #endif signal(SIGTERM, ihandler); if (debug == 0) { /* * Now fork off child process to run in background. */ #ifndef __MINGW__ switch (fork()) { case -1: NSLog(@"gpbs - fork failed - bye.\n"); exit(EXIT_FAILURE); case 0: /* * Try to run in background. */ #ifdef NeXT setpgrp(0, getpid()); #else setsid(); #endif break; default: if (verbose) { NSLog(@"Process backgrounded (running as daemon)\r\n"); } exit(EXIT_SUCCESS); } #endif } } int main(int argc, char** argv, char **env) { NSAutoreleasePool *pool; ExampleServices *server; #ifdef GS_PASS_ARGUMENTS [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif pool = [NSAutoreleasePool new]; server = [ExampleServices new]; init(argc, argv); // [NSObject enableDoubleReleaseCheck: YES]; if (server == nil) { NSLog(@"Unable to create server object.\n"); exit(EXIT_FAILURE); } NSRegisterServicesProvider(server, @"ExampleServices"); [[NSRunLoop currentRunLoop] run]; exit(EXIT_SUCCESS); } gnustep-examples-1.4.0/gui/ExampleService/GNUmakefile.preamble0000664000175000017500000000163507756712342023361 0ustar fedorfedor# # Makefile.preamble # # Project specific makefile variables, and additional # # Do not put any Makefile rules in this file, instead they should # be put into Makefile.postamble. # # # Flags dealing with compiling and linking # # Additional flags to pass to the preprocessor # ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler # ADDITIONAL_OBJCFLAGS += # Additional flags to pass to the C compiler # ADDITIONAL_CFLAGS += # Additional include directories the compiler should search # ADDITIONAL_INCLUDE_DIRS += # Additional LDFLAGS to pass to the linker # ADDITIONAL_LDFLAGS += # Additional library directories the linker should search # ADDITIONAL_LIB_DIRS += # Additional libraries when linking applications # ADDITIONAL_GUI_LIBS += # # Flags dealing with installing and uninstalling # # Additional directories to be created during installation # ADDITIONAL_INSTALL_DIRS += gnustep-examples-1.4.0/gui/ExampleService/GNUmakefile0000664000175000017500000000245107756712342021570 0ustar fedorfedor# # Tools level makefile for GNUstep GUI Library # # Copyright (C) 1997 Free Software Foundation, Inc. # # This file is part of the GNUstep GUI Library. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make APP_NAME = md5Digest SERVICE_NAME = example # The source files to be compiled md5Digest_OBJC_FILES = md5Digest.m example_OBJC_FILES = example.m include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/application.make include $(GNUSTEP_MAKEFILES)/service.make -include GNUmakefile.local.service include GNUmakefile.postamble gnustep-examples-1.4.0/gui/ExampleService/exampleInfo.plist0000664000175000017500000000270507756712342023044 0ustar fedorfedor NSServices = ( { NSFilter = cat; NSInputMechanism = NSUnixStdio; NSPortName = "/bin/cat"; NSSendTypes = ( NSFilenamesPboardType ); NSReturnTypes = ( NSGeneralPboardType ); }, { NSPortName = ExampleServices; NSFilter = md5; NSSendTypes = ( NSStringPboardType ); NSReturnTypes = ( md5Digest ); }, { NSPortName = ExampleServices; NSMessage = openURL; NSSendTypes = ( NSStringPboardType ); NSMenuItem = { default = "Open URL"; English = "Open URL"; Italian = "Apri URL"; German = "URL \U00F6ffnen"; }; NSKeyEquivalent = { default = O; English = O; }; }, { NSPortName = ExampleServices; NSMessage = tolower; NSSendTypes = ( NSStringPboardType ); NSReturnTypes = ( NSStringPboardType ); NSMenuItem = { default = "To lower"; English = "To lower"; Italian = "Rendi minuscolo"; German = "Klein schreiben"; }; NSKeyEquivalent = { default = L; English = L; }; }, { NSPortName = ExampleServices; NSMessage = toupper; NSSendTypes = ( NSStringPboardType ); NSReturnTypes = ( NSStringPboardType ); NSMenuItem = { default = "To upper"; English = "To upper"; Italian = "Rendi maiuscolo"; German = "Gro\U00DF schreiben"; }; NSKeyEquivalent = { default = U; English = U; }; } ); gnustep-examples-1.4.0/gui/ExampleService/GNUmakefile.postamble0000664000175000017500000000152507756712342023556 0ustar fedorfedor# # Makefile.postamble # # Project specific makefile rules # # Uncomment the targets you want. # The double colons (::) are important, do not make them single colons # otherwise the normal makefile rules will not be performed. # # Things to do before compiling # before-all:: # Things to do after compiling # after-all:: # Things to do before installing # before-install:: # Things to do after installing # after-install:: # Things to do before uninstalling # before-uninstall:: # Things to do after uninstalling # after-uninstall:: # Things to do before cleaning # before-clean:: # Things to do after cleaning # after-clean:: # Things to do before distcleaning # before-distclean:: # Things to do after distcleaning # after-distclean:: # Things to do before checking # before-check:: # Things to do after checking # after-check:: gnustep-examples-1.4.0/gui/ExampleService/wgetopt.h0000664000175000017500000000175207756712342021363 0ustar fedorfedor#if (defined __MINGW__) /* A simple implementation of getopt() */ static int indexof(char c, char *string) { int i; for (i = 0; i < strlen(string); i++) { if (string[i] == c) { return i; } } return -1; } static char *optarg; static int optind; static char getopt(int argc, char **argv, char *options) { static char *arg; int index; char retval = '\0'; optarg = NULL; if (optind == 0) { optind = 1; } while (optind < argc) { arg = argv[optind]; if (strlen(arg) == 2) { if (arg[0] == '-') { if ((index = indexof(arg[1], options)) != -1) { retval = arg[1]; if (index < strlen(options)) { if (options[index+1] == ':') { if (optind < argc-1) { optind++; optarg = argv[optind]; } else { return -1; /* ':' given, but argv exhausted */ } } } } } } optind++; return retval; } return -1; } #endif gnustep-examples-1.4.0/gui/CurrencyConverter/0000775000175000017500000000000012204034626020244 5ustar fedorfedorgnustep-examples-1.4.0/gui/CurrencyConverter/CurrencyConverter.h0000664000175000017500000000250212144672417024107 0ustar fedorfedor/* * CurrencyConverter.h * * Copyright (c) 1999 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: November 1999 * * This sample program is part of GNUstep. * * 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. */ // Library headers #include #include // @interface 'class' : 'superClass' @interface CurrencyConverter : NSObject { // Instance variables NSTextField* field[3]; NSWindow* window; } // Methods - (id)init; - (void)dealloc; - (void)controlTextDidEndEditing: (NSNotification *)aNotification; - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; @end gnustep-examples-1.4.0/gui/CurrencyConverter/.cvsignore0000664000175000017500000000004607017343565022257 0ustar fedorfedor*.app *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/CurrencyConverter/CurrencyConverter.m0000664000175000017500000002237611401540533024113 0ustar fedorfedor/* * CurrencyConverter.m: A mini over-commented sample GNUstep app * * Copyright (c) 1999 Free Software Foundation, Inc. * * Author: Nicola Pero * Date: November 1999 * * This sample program is part of GNUstep. * * 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. */ /* * This mini sample program documents using text fields. * * Layout is done with GSHbox, GSVbox. * See Calculator.app for an example of window layout done without * using GSVbox & GSHbox. */ /* * I took the idea of writing this example code from an old GNUstep project * by Michael S. Hanni, but everything was coded from scratch. */ // Include the definition of our custom class. #include "CurrencyConverter.h" // Include GNUstep layout extension classes #include #include // Text to be displayed in the labels static NSString* fieldString[3] = { @"Amount in other currency:", @"EUROs to convert:", @"Exchange rate per 1 EURO:" }; // Implementation of our custom class. @implementation CurrencyConverter { // See the @interface declaration in CurrencyConverter.h // for the listing of instance variables } // // Methods implementation // // Initialize an instance object of our class. - (id) init { GSVbox* windowVbox; GSVbox* formVbox; GSHbox* hbox; NSTextField* label; NSRect winFrame; int i; NSSize size; self = [super init]; // Create a vertical box (NB: Things are packed in the box // from bottom to top) windowVbox = AUTORELEASE ([GSVbox new]); [windowVbox setBorder: 0]; [windowVbox setDefaultMinYMargin: 0]; // // Result field // hbox = AUTORELEASE ([GSHbox new]); [hbox setDefaultMinXMargin: 10]; [hbox setBorder: 10]; label = AUTORELEASE ([NSTextField new]); [label setSelectable: NO]; [label setBezeled: NO]; [label setDrawsBackground: NO]; [label setStringValue: fieldString[0]]; [label sizeToFit]; [label setAutoresizingMask: NSViewHeightSizable]; [hbox addView: label enablingXResizing: NO]; field[0] = AUTORELEASE ([NSTextField new]); [field[0] setSelectable: YES]; [field[0] setEditable: NO]; [field[0] setBezeled: YES]; [field[0] setBackgroundColor: [NSColor controlBackgroundColor]]; [field[0] setDrawsBackground: YES]; // Use automatic height [field[0] sizeToFit]; // But set width to 100 size = [field[0] frame].size; size.width = 100; [field[0] setFrameSize: size]; [field[0] setAutoresizingMask: NSViewWidthSizable]; // Saying nothing means enablingXResizing: YES [hbox addView: field[0]]; [hbox setAutoresizingMask: NSViewWidthSizable]; [windowVbox addView: hbox]; // // Separator // [windowVbox addSeparator]; // // Upper part of the window // formVbox = AUTORELEASE ([GSVbox new]); [formVbox setBorder: 10]; [formVbox setDefaultMinYMargin: 10]; // The two editable fields for (i = 1; i < 3; i++) { // We are doing it the hard way, without NSForm, to show how to do // more generally to pack things and objects hbox = AUTORELEASE ([GSHbox new]); [hbox setDefaultMinXMargin: 10]; label = AUTORELEASE ([NSTextField new]); [label setSelectable: NO]; [label setBezeled: NO]; [label setDrawsBackground: NO]; [label setStringValue: fieldString[i]]; [label sizeToFit]; [label setAutoresizingMask: NSViewHeightSizable]; [hbox addView: label enablingXResizing: NO]; field[i] = AUTORELEASE ([NSTextField new]); [field[i] setEditable: YES]; [field[i] setBezeled: YES]; [field[i] setDrawsBackground: YES]; // Use automatic height [field[i] sizeToFit]; // But set width to 100 size = [field[i] frame].size; size.width = 100; [field[i] setFrameSize: size]; [field[i] setAutoresizingMask: NSViewWidthSizable]; [hbox addView: field[i]]; [hbox setAutoresizingMask: NSViewWidthSizable]; [formVbox addView: hbox]; } // Link the editable fields so the user may move between them // pressing TAB (Important: Remember to always send these messages // *after* you have created the objects you are referring to) [field[1] setNextText: field[2]]; [field[2] setNextText: field[1]]; // Ask to receive interesting messages concerning what's happening // to the fields. We are interested only in [-controlTextDidEndEditing:] [field[1] setDelegate: self]; [field[2] setDelegate: self]; [formVbox setAutoresizingMask: NSViewWidthSizable]; [windowVbox addView: formVbox]; // // Window // winFrame.size = [windowVbox frame].size; winFrame.origin = NSMakePoint (100, 100); // Now we can make the window of the exact size // NB: Note that we do not autorelease the window window = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [window setTitle: @"CurrencyConverter.app"]; [window setContentView: windowVbox]; [window setMinSize: [NSWindow frameRectForContentRect: winFrame styleMask: [window styleMask]].size]; // Trick to forbid vertical resizing [window setResizeIncrements: NSMakeSize (1, 100000)]; return self; } - (void)dealloc { // Releasing the window releases all its views in cascade RELEASE (window); [super dealloc]; } // Received upon ending of editing in one of the two fields. - (void)controlTextDidEndEditing: (NSNotification *)aNotification { float euros, rate, total; // Read values euros = [field[2] floatValue]; rate = [field[1] floatValue]; // Compute total total = euros * rate; // Display total [field[0] setFloatValue: total]; } // As app delegate, we receive this message from the app - (void)applicationDidFinishLaunching: (NSNotification *)aNotification; { [window orderFront: self]; } // Execution starts from here. int main (void) { NSAutoreleasePool *pool; NSApplication *app; NSMenu *mainMenu; NSMenu *menu; NSMenuItem *menuItem; CurrencyConverter *converter; // We need to explicitly create this object only in the main function; // instead, while the app is running, the gui library creates these objects // automatically for us. pool = [NSAutoreleasePool new]; // Get the object representing our application. app = [NSApplication sharedApplication]; // // Create the Menu // // Main Menu mainMenu = AUTORELEASE ([NSMenu new]); // Info Item // The object receiving this message is determined at run time; // it will be the NSApplication [mainMenu addItemWithTitle: @"Info..." action: @selector (orderFrontStandardInfoPanel:) keyEquivalent: @""]; // Edit Submenu menuItem = [mainMenu addItemWithTitle: @"Edit" action: NULL keyEquivalent: @""]; menu = AUTORELEASE ([NSMenu new]); [mainMenu setSubmenu: menu forItem: menuItem]; // The object which should receive the messages cut:, copy:, paste: is not // specified, so that the library will have to determine it at run time. // At first, it will (try to) send them to the 'first responder' // -- the object which is receiving keyboard input. // In our case that is precisely what we want, since the first responder // is the NSText being edited (which knows how to handle cut:, copy:, // paste:), if any. [menu addItemWithTitle: @"Cut" action: @selector (cut:) keyEquivalent: @"x"]; [menu addItemWithTitle: @"Copy" action: @selector (copy:) keyEquivalent: @"c"]; [menu addItemWithTitle: @"Paste" action: @selector (paste:) keyEquivalent: @"v"]; [menu addItemWithTitle: @"SelectAll" action: @selector (selectAll:) keyEquivalent: @"a"]; // Hide MenuItem [mainMenu addItemWithTitle: @"Hide" action: @selector (hide:) keyEquivalent: @""]; // Quit MenuItem [mainMenu addItemWithTitle: @"Quit" action: @selector (terminate:) keyEquivalent: @"q"]; [app setMainMenu: mainMenu]; // The default title @"Currency Converter" is a bit too long [mainMenu setTitle: @"CurrConv"]; // Create and initializes an instance of our custom object. converter = [[CurrencyConverter alloc] init]; // Set our custom object instance as the application delegate. // This means that 'converter' will receive certain messages // (documented in the doc) before/after important events for the app // life, such as starting, ending, closing last window, etc. // In this context, we are interested in receiving the // [-applicationDidFinishLaunching:] message. [app setDelegate: converter]; // Finally, all is ready to run our application. [app run]; return 0; } @end gnustep-examples-1.4.0/gui/CurrencyConverter/GNUmakefile0000664000175000017500000000220107215263057022321 0ustar fedorfedor# GNUmakefile: makefile for CurrencyConverter.app # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 APP_NAME = CurrencyConverter CurrencyConverter_OBJC_FILES = CurrencyConverter.m CurrencyConverter_HEADERS = CurrencyConverter.h include $(GNUSTEP_MAKEFILES)/application.make gnustep-examples-1.4.0/gui/CurrencyConverter/CurrencyConverterInfo.plist0000664000175000017500000000060507143631314025623 0ustar fedorfedor{ ApplicationName = "CurrencyConverter"; ApplicationDescription = "A Little GNUstep GUI Demo"; ApplicationRelease = "CurrencyConverter 1.1"; FullVersionID = "1.1.0 Jul 2000"; Authors = ("Nicola Pero "); Copyright = "Copyright (C) 1999, 2000 Free Software Foundation, Inc."; CopyrightDescription = "Released under the GNU General Public License 2.0"; } gnustep-examples-1.4.0/gui/ChangeLog0000664000175000017500000005457512202523526016354 0ustar fedorfedor2012-08-13 Fred Kiefer * MyTransparentGL/AppController.m: * MyTransparentGL/GNUmakefile: Get the code to work properly. Patch by Johannes Lundberg 2013-07-03 Ivan Vucica * MyTransparentGL/MyGL.gorm/data.classes: * MyTransparentGL/MyGL.gorm/objects.gorm: * MyTransparentGL/MyGL.gorm/data.info: * MyTransparentGL/README: * MyTransparentGL/AppController.m: * MyTransparentGL/GNUmakefile: A demo that demonstrates how to create a transparent NSOpenGLView. 2012-01-23 Fred Kiefer * Calculator/CalcBrain.m, * Calculator/CalcFace.m: Remove duplicated ivar declaration in implementation file. Patch by Sebastian Reitenbach 2011-05-19 Fred Kiefer * Old/nscursor.m * Old/windows.m * Old/menu.m * Old/GNUmakefile: Get these old tests to compile again. 2011-05-19 Fred Kiefer * MyGL/AppController.m: Protect the name id. Patch by Sebastian Reitenbach 2010-07-25 Eric Wasylishen * MyGL/main.m: Use NSApplicationMain() as the current method wasn't loading the main nib 2010-06-02 Adam Fedor * Fix a few compiler warnings 2010-04-14 Eric Wasylishen * MyGL/AppController.h: * MyGL/AppController.m: Modify MyGL to have several NSOpenGLView's displayed in NSSplitView's. 2010-03-07 Nicola * GNUmakefile (SUBPROJECTS): Do not compile MyGL by default as not everyone has OpenGL. 2009-05-20 Fred Kiefer * ExampleTheme: New directory with one example theme by Fred Morcos 2009-01-07 Fred Kiefer * ToolbarExample/SecondWindowOwner.m (-awakeFromNib): Adopt to changes in NSToolbar. Now the toolbar retains the view. 2009-01-01 Fred Kiefer * GSTest/NSAnimation-test/AnimationView.m: Correct line endings. * ToolbarExample: Adopt to changes in NSToolbar and the removal of GSToolbar. 2007-05-24 Adam Fedor * Add MyGL, by Banlu Kemiyatorn 2007-04-12 Xavier Glattard * GSTest/NSAnimation-test : Follow changes in NSAnimation class, run threaded * GSTest/NSViewAnimation-test : run threaded 2007-04-05 Xavier Glattard * GSTest/NSAnimation-test : New test * GSTest/NSViewAnimation-test : New test 2006-09-08 Adam Fedor * Remove GPuzzle - more up-to-date at Marko's site. 2005-01-13 17:38 Alexander Malmberg * GNUmakefile (SUBPROJECTS): Add ExampleService. Partially fixes bug #8161. 2004-11-11 Adam Fedor * Classes/NSImage/nsimage.m: Create menu before starting loop (patch from Patrick Middleton, Patch #3500). 2004-09-28 Fred Kiefer * Classes/NSImage/nsimage.m: Use rand() instead of random() as this is more portable. * Ink/Document.m ([Document -makeWindow]): Set text view to import graphics and added vertical ruler. * Old/nscombobox.m: Added one more combobox in window. 2004-09-28 Adam Fedor * Classes/NSPanelTest/NSPanelTest.m: Make NSPanelTest an application delegate. Reindent. Fix compiler warnings. * Classes/NSPanelTest/GNUmakefile: Don't make NSPanelTest the app class. * Classes/NSPanelTest/NSPanelTestInfo.plist: New file. * Classes/NSPanelTest/NSPanelTest_main.m: Use normal app startup function. * Classes/NSScreenTest/screen_main.m: Fix warning. * GPuzzle/BTree.m, GPuzzle/Document.m: Remove unused vars, Fix warnings. * GPuzzle/GNUmakefile: Don't define GNUSTEP_MAKEFILES. 2004-04-15 Quentin Mathe * ToolbarExample: Added a demo application for the toolbar implementation. * ToolbarExample/GNUmakefile: New file * ToolbarExample/ToolbarExampleInfo.plist: idem. * ToolbarExample/main.m : idem. * ToolbarExample/Controller.h: idem. * ToolbarExample/Controller.m: idem. * ToolbarExample/MiniController.h: idem. * ToolbarExample/MiniController.m: idem. * ToolbarExample/ToolbarExample.gorm/data.classes: idem. * ToolbarExample/ToolbarExample.gorm/objects.gorm: idem. * ToolbarExample/SecondWindow.gorm/data.classes: idem. * ToolbarExample/SecondWindow.gorm/objects.gorm: idem. * ToolbarExample/Images/FileIcon_Directory.tiff: idem. * ToolbarExample/Images/RecyclerFull.tiff: idem. * ToolbarExample/Images/SecondImage.tiff: idem. Sat Mar 6 13:57:07 2004 Brent Fulgham , Nicola Pero * Classes/NSPanelTest/GNUmakefile: Tidied - use GNUSTEP_MAKEFILES, do not set GNUSTEP_INSTALLATION_DIR, and do not include additional makefiles. 2004-02-18 Adam Fedor * Classes/NSImage: New * Old/nsimage.m: Remove. 2003-11-19 17:02 Alexander Malmberg * ExampleService/*: Move example.service and md5Digest.app here from gui/Tools/. 2003-08-25 David Ayers * *.h/m: Update to new header structure. 2003-07-26 Fred Kiefer * Old/GNUmakefile Added some more of the old examples. * Old/matrix.m * Old/nscombobox.m * Old/nsimage.m * Old/nsimagecell.m * Old/nsprogressindicator.m * Old/nsscroller.m * Old/nstabview.m * Old/popupbuttons.m * Old/ImageView.h * Old/ImageView.m * Old/TestView.h * Old/TestView.m * Old/ColorView.h * Old/ColorView.m Made examples working again. 2003-04-24 Adam Fedor * Calculator/CalculatorInfo.plist: Add NSIcon (patch from Rob Burns ). 2002-05-28 Adam Fedor * GPuzzle: New demo contributed by Marko Riedel . Fri May 17 16:15:35 2002 Nicola Pero * GFractal: New demo contributed by Marko Riedel . Thu Jan 17 20:27:59 2002 Nicola Pero * Classes/NSProgressIndicator/: New. * Classes/NSProgressIndicator/Threads: New. 2001-12-09 Fred Kiefer * Old/nsprogressindicator.m Corrected so it shows how to use a NSProgressIndicator. * Old/GNUmakefile Compile nsprogressindicator. 2001-10-04 Fred Kiefer * Old/testpb.m Pasteboard test moved over from gui and corrected. * Old/GNUmakefile Compile testpb * NSPanelTest/ Removed this directory 2001-09-23 Fred Kiefer * Old/popupbuttons.m In [applicationDidFinishLaunching:] reordered statements, so the action and target of the popups are set before the items get created. * Old/GNUmakefile Simple makefile for build some of the old applications. * Old/.cvsignore Ignore all temporary files. * NSPanelTest/.cvsignore Ignore all temporary files. * Edit/ Removed obsolete directory. 2001-08-03 Gregory John Casamento * Ink/Document.m ([Document -makeWindow]): added call to make text view the first responder since the spell checker needs to find the document to be spell checked on the responder chain. 2001-07-08 Adam Fedor * Version 0.9.2 Fri Jul 6 18:04:47 2001 Nicola Pero * Ink/Document.m ([-dataRepresentationOfType:]): If type is nil, use text as a default rather than crashing (suggestion by Ian Mondragon ). Wed Jul 4 18:32:22 2001 Nicola Pero * Ink/Document.m ([Document -dealloc]): Call super dealloc. 2001-06-19 Gregory Casamento * Added menu item to allow Ink to bring up the NSSpellChecker GUI. 2001-06-16 Fred Kiefer * Ink/InkInfo.plist Added RTFD as supported extension. * Ink/Document.m [fileWrapperRepresentationOfType:] create RTFD files. [dataRepresentationOfType:] create RTFD data. [loadFileWrapperRepresentation:ofType:] load RTFD files. [loadDataRepresentation:ofType:] load RTFD data. Tue Jun 12 02:01:25 2001 Nicola Pero * Ink/main.m ([MyDelegate -applicationWillFinishLaunching:]): Added menu item insert file (patch by Stefan Urbanek ). * Ink/Document.m ([-insertFile:]): New method (patch by Stefan Urbanek modified). ([-textView:doubleClickedOnCell:inRect:atIndex:]): New method (patch by Stefan Urbanek). 2001-05-09 Fred Kiefer * Old/GSImageTabViewItem.m Adopted to changes in superclass. Sat Feb 17 19:08:29 2001 Nicola Pero * Ink/Document.m ([-makeWindow]): Use a white background. 2001-02-13 Fred Kiefer * Ink/main.m Don't load the Readme.rtf file when starting the app. Tue Jan 20 Michael Hanni * Classes/NSBrowserTest/.cvsignore, NSPanelTest/.cvsignore, NSScreenTest/.cvsignore: added for cleanliness. Fri Jan 26 23:11:18 2001 Nicola Pero * HostAddress/: New Project contributed by Philippe C.D. Robert . * HostAddress/AppController.h: New file. * HostAddress/AppController.m: Idem. * HostAddress/GNUmakefile: Idem. * HostAddress/Info-project.plist: Idem. * HostAddress/PC.project: Idem. * HostAddress/Resolver.h: Idem. * HostAddress/Resolver.m: Idem. * HostAddress/main.m: Idem. Sun Jan 21 23:33:04 2001 Nicola Pero * Calculator/CalcFace.m ([-init]): Set default button cell to `='. Mon Jan 9 23:21:34 2000 Nicola Pero Rearrangement of the whole directory structure. * Old/: New directory. Old tests moved here. * Classes/: New directory. Rewritten most makefiles in the dir. * Classes/NSPanelTest: Moved from top level. * Classes/NSBrowserTest: Moved from browser.m in top level. * Classes/NSScreen: Moved from screen in top level. * GNUmakefile: Rewritten from scratch. * README: Updated for new rearrangement. Sat Jan 6 20:01:07 2001 Nicola Pero * Ink/Document.m ([-makeWindow]): Set the text container size and tracking of text view. 2000-11-03 Fred Kiefer * Ink/Ink_app.tiff: TIFF version of icon. * Ink/main.m: * Ink/InkInfo.plist: * Ink/GNUmakefile: Get the application icon from the plist. Tue Dec 12 02:44:06 2000 Nicola Pero * GNUmakefile: Updated/Simplified. * GNUmakefile.preamble: Idem. * Edit/GNUmakefile: Idem. * Edit/GNUmakefile.preamble: Idem. * Edit/GNUmakefile.postamble: Idem. * GNUmakefile.postamble: Empty file removed. Tue Dec 12 02:37:42 2000 Nicola Pero * Calculator/GNUmakefile: Updated/simplified. * CurrencyConverter/GNUmakefile: Idem. * Finger/GNUmakefile: Idem. * Ink/GNUmakefile: Idem. 2000-11-06 Fred Kiefer * Ink/Document.m: Improved resizing of views 2000-11-03 Fred Kiefer * Ink/main.m: Relase the menu entries. * Ink/Document.m: The text view can now be resized. 2000-10-24 Fred Kiefer * Ink/Document.h: Changed ivars * Ink/Document.m: Use new ivars, changed text view handling * Ink/Readme.rtf: Added some spaces 2000-10-22 Michael Hanni * nstabview.m: add 'Change Tab Font' menu item to use the font panel to change the font the NSTabView uses to draw the tabs. 2000-10-21 Adam Fedor * GNUmakefile, GNUmakefile.preamble. Remove unused includes 2000-10-19 Michael Hanni * nstabview.m: rewrote, hopefully better reflects the status of NSTabView (check gui/Changelog) 2000-10-15 Fred Kiefer * Ink/* Added new application for testing the text classes and the document framework.This should replace Edit! 2000-08-28 Adam Fedor * */GNUmakefile: Make sure GNUSTEP_MAKEFILES points to the right place. 2000-08-06 Adam Fedor * Version 0.6.6 released. 2000-08-04 Adam Fedor * All tests (main): Remove initialize_gnustep_backend function call. Sat Jul 29 22:17:35 2000 Nicola Pero Simplified the CurrencyConverter example/demo. * CurrencyConverter/CurrencyConverter.m ([-init]): Made the window not closable. (main): Do not call initialize_gnustep_backend. Removed runInfoPanel: * CurrencyConverter/CurrencyConverter.h: Removed runInfoPanel: * CurrencyConverter/CurrencyConverterInfo.plist: New file. * CurrencyConverter/GNUmakefile: Removed useless includes. Sat Jul 29 22:03:39 2000 Nicola Pero Simplified the Calculator example/demo. * Calculator/CalculatorInfo.plist: New file. * Calculator/CalcFace.m ([CalcFace -runInfoPanel:]): Removed method, now using CalculatorInfo.plist * Calculator/CalcFace.h: Removed method runInfoPanel:. * Calculator/main.m: Removed class CalcController; changed Info menu item's action; do not call initialize_gnustep_backend; this is now done automatically. * Calculator/CalcFace.m ([CalcFace -init]): Made window not closable. * Calculator/GNUmakefile: Removed inclusion of GNUmakefile.preamble, GNUmakefile.postamble. Tue Jul 18 17:53:16 2000 Nicola Pero * CurrencyConverter/CurrencyConverter.m ([-init]): Fixed minimum size of the window. 2000-07-01 Fred Kiefer * Edit/Readme.rtf: New file to load at startup * Edit/GNUmakefile: Added new file Readme.rtf as ressource * Edit/Controller.m: * Edit/Controller.h: * Edit/Edit.m: * Edit/Document.m: * Edit/Document.h: Added font and ruler pasting 2000-05-04 Richard Frith-Macdonald * screen: new subdirectory for tool to test screen access functions contributed by Gregory John Casamento 2000-04-18 Adam Fedor * ImageView.m (-initWithFile:): Return nil if image not loaded. 2000-04-17 Fred Kiefer * Edit/Controller.m: Removed RTF setting, now become window delegate * Edit/Edit.m: Added entries in menu for additional format test * Edit/Document.m: Enable RTF 2000-03-11 Adam Fedor * nsimage.m: Set window frame when initing window. Wed Mar 8 21:42:03 2000 Nicola Pero * TestView.m: Do not include configure.h. Some other tidying, removed some unuseful historical code. 2000-02-25 Adam Fedor * ColorView.m: Fix some retain problems. * nscursor.m: Show implementation of image cursor. Tue Feb 22 18:19:11 2000 Nicola Pero Contributed by Fred Kiefer: * Edit/Controller.m ([Controller -applicationDidFinishLaunching:]): Use the font manager. * Edit/Edit.m (createMenu): Create the format menu. Tue Jan 25 15:02:41 2000 Nicola Pero * fontpanel.m: Rewritten completely, based on a contribution by Fred Kiefer. Sun Feb 13 02:14:29 2000 Nicola Pero * Finger: New demo program. Sun Feb 13 01:11:31 2000 Nicola Pero * CurrencyConverter/CurrencyConverter.m ([-init]): Use AUTORELEASE instead of -autorelease. ([-dealloc]): Use RELEASE instead of -release. (main): AUTORELEASE the created menus. * Calculator/main.m (main): AUTORELEASE the created menus. Thu Feb 10 09:55:00 2000 Richard Frith-Macdonald * nsscroller.m: ([MyObject -scrollerAction:]) Move the knob when the arrows are clicked. Thu Feb 10 01:29:48 2000 Nicola Pero * nsscroller.m ([MyObject -scrollerAction:]): Print some useful information. Mon Feb 7 12:25:24 2000 Nicola Pero * scrollview2.m ([-addColumn:]), ([-addRow:]): Mark the scrollview as needing redisplay. ([-removeRow:]), ([-removeColumn:]): Idem plus reset button titles. Sat Feb 5 03:35:09 2000 Nicola Pero * Calculator/main.m (main): Added Hide item in menu; removed Info menu, superseded by a single Info... item. * CurrencyConverter/CurrencyConverter.m (main): Idem; plus, set main menu title to a shorter "CurrConv" Fri Feb 4 01:40:58 2000 Nicola Pero * README: New file. Thu Feb 3 01:21:53 2000 Nicola Pero * Calculator/main.m (main): Added "..." to Info Panel and Help menu items. * CurrencyConverter/CurrencyConverter.m (main): Idem. Tue Feb 1 23:35:20 2000 Nicola Pero * windows.m: Set alternate title of the momentary change button. Tue Feb 1 23:21:04 2000 Nicola Pero * windows.m: Put the text key view loop in natural order. (Bug reported by Jory van Zessen). Mon Jan 31 01:03:16 2000 Nicola Pero * popupbuttons.m ([buttonsController -applicationDidFinishLaunching:]): Removed example of popupbutton with images. Unfortunately we do not any longer have this extension of popupbuttons with images [Popupbuttons are strictly connected to menus]. Tue Jan 25 00:28:31 2000 Nicola Pero Added Info Panel to Calculator and CurrencyConverter: * Calculator/main.m (main): Added Info menu. * Calculator/CalcFace.m ([-runInfoPanel:sender]): Added method. * Calculator/CalcFace.h: Idem. * CurrencyConverter/CurrencyConverter.m (main): Added Info menu. * CurrencyConverter/CurrencyConverter.m ([-runInfoPanel:sender]): Added method. * CurrencyConverter/CurrencyConverter.h: Idem. 2000-01-21 Adam Fedor * scrollview.m; Rewrite with application delegate. 2000-01-14 Adam Fedor * TestView.m, ColocView.m: Fixes for changes in ivars. Thu Jan 13 11:59:41 2000 Nicola Pero * CurrencyConverter/CurrencyConverter.m ([CurrencyConverter -init]): Refined setting size of textfields. Fri Jan 7 02:20:43 2000 Nicola Pero * scrollview2.m: Added code to test matrix double click. 1999-11-30 Adam Fedor * nsbrowser.m: Updated to show off new NSBrowser changes (patch from F. Wolff ). Sat Nov 27 04:17:31 1999 Nicola Pero * GSTest/ChangeLog: Added file. Fri Nov 26 01:05:04 1999 Nicola Pero The new test suite. * GNUmakefile: Updated. * nsbox.m: Removed, obsoleted by the new NSBox-test. * slider.m: Removed, obsoleted by the new NSSlider-test. * Calculator/main.m (main): Added menu, to test cut&paste between Calculator and CurrencyConverter. * Calculator/CalcFace.m, Calculator/CalcFace.h: Order out self when application did finish launching. * GSTest/: New directory. * GSTest/main.m: New file. * GSTest/infoPanel.h: New file. * GSTest/infoPanel.m: New file. * GSTest/GSTestProtocol.h: New file. * GSTest/testList.h: New file. * GSTest/KeyboardInput-test: New directory. * GSTest/KeyboardInput-test/GNUmakefile: New file. * GSTest/KeyboardInput-test/KeyboardInput-test.m: New file. * GSTest/NSBox-test: New directory. * GSTest/NSBox-test/GNUmakefile: New file. * GSTest/NSBox-test/NSBox-test.m: New file. * GSTest/NSColorWell-test: New directory. * GSTest/NSColorWell-test/GNUmakefile: New file. * GSTest/NSColorWell-test/NSColorWell-test.m: New file. * GSTest/NSScrollView-test: New directory. * GSTest/NSScrollView-test/GNUmakefile: New file. * GSTest/NSScrollView-test/NSScrollView-test.m: New file. * GSTest/NSSlider-test: New directory. * GSTest/NSSlider-test/GNUmakefile: New file. * GSTest/NSSlider-test/NSSlider-test.m: New file. Thu Nov 25 05:26:29 1999 Nicola Pero New little demo app showing text fields working. * CurrencyConverter: New directory. * CurrencyConverter/GNUmakefile: New file. * CurrencyConverter/CurrencyConverter.m: New file. * CurrencyConverter/CurrencyConverter.h: New file. * Calculator/GNUmakefile.postamble: Removed file, so that Calculator.app remains in its directory after compile. 1999-11-22 Richard frith-Macdonald * GNUstepInstaller.m; Use [-orderFrontRegardless] before app is active. * nsbrowser.m: ditto * nsbrowsercell.m: ditto * nscombobox.m: ditto * nsimage.m: ditto * nsprogressindicator.m: ditto * nsscroller.m: ditto * nstabview.m: ditto * slider.m: ditto * windows.m: ditto 1999-11-16 David Lazaro Saz * GNUmakefile (menu_RESOURCE_FILES): Added the Smiley.tiff file as a resource to demonstrate one of the new capabilites of the new NSMenu additions. 1999-10-18 Lyndon Tremblay * nstextfields.m: Added to test NSTextField, NSSecureTextField. Tue Oct 12 1999 Nicola Pero * Calculator: Added icon by Andrew Lindesay; reduced button spacing (suggestion by Andrew Lindesay); added key equivalents. 1999-10-07 * Calculator: New test from Nicola Pero 1999-09-09 Gerrit van Dyk * nscombobox.m: Added ComboBox test 1999-08-22 Gerrit van Dyk * nsprogressindicator.m: Added progressIndicator test 1999-08-19 Michael Hanni * gstextnetwork.m: some changes. * popupbuttons.m: a few changes to help debug problems other people have reported. * menu.m: moved some stuff around to better allow ui testing. 1999-09-07 Adam Fedor * buttons.m ([buttonsController -applicationDidFinishLaunching:]): Move main menu creation to here, since it screws up xdps if it's in main - must look into this... 1999-08-21 Richard frith-Macdonald Added simple menu with 'quit' item for all test apps. 1999-07-30 Michael Hanni * Several images for new popup in popupbuttons.app: animations.tiff appearance.tiff configs.tiff dock.tiff (images taken from Window Maker, I hope this is ok.) 1999-07-26 Michael Hanni * GNUstepInstaller.m: copy of nstabview.m, save this app uses no tabs and has buttons in the TabView for movement through tabs, quite cool. * nstabview.m: added a delegate to the nstabview. Delegate responds to all selectors and gives debug information. In addition, with the delegate you cannot click on the "Natalie" tab, it is disabled. 1999-07-24 Michael Hanni * gstextnetwork.m: new test app to test NSTextView/TextNetwork. * Edit/*: minor fixes to use NSText directly so for the time being Edit.app still works somewhat. 1999-07-10 Michael Hanni * GSImageTabViewItem.m: new file to draw a subclass of NSTabViewItem that puts an image into a tab. * nstabview.m: changed "Me" tab to also include an image. * Smiley.tiff: image I drew to put in a tab. 1999-07-9 Michael Hanni * nstabview.m: this is a must see. it really works quite well. gnustep-examples-1.4.0/gui/Ink/0000775000175000017500000000000012204034626015303 5ustar fedorfedorgnustep-examples-1.4.0/gui/Ink/Readme.rtf0000664000175000017500000000316610266623141017225 0ustar fedorfedor{\rtf1\ansi\ansicpg10000\cocoartf102{\fonttbl\f0\fswiss Helvetica;} \f0\fs32\b\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \uc0 INK \fs24\b0 \uc0 is the GNUstep text editor. It is based on the GNUstep implementation of \b \uc0 NSText\b0 \uc0 which is still partialy based on work by \b \uc0 Daniel B*hringer\b0 \uc0 . His code is still used for the layout, which is now done in the class GSSimpleLayoutManager.\par \par What this application already does is laying out text (plain or RTF). You can modify the selection, format and text as with NeXT\rquote s NSText class. There are problems remaining however (pasting newline characters at the end of a paragraph and performance on very large text)... but these problems will eventually fixed :-)\par \par Since the major rewrite of the GNUstep text system, by Alexander Malmberg, many of these initial problems have been rectified. Also, Axel \rquote Mikesch\rquote Katerbau\rquote s recent work on RTFProducer, has added support for saving rtfd files, and greatly improved the conciseness, and correctness of rtf files saved from within Ink. \par \par Some annotations: \par \par At implementation level rtf is not treated different from rtfd since both are handled by NSAttributed string.\par \par Words wraps use the selectionGranularity configuration for word/paragraph boundry detection.\par \par Tabs are not treated differently from other characters but nevertheles work as expected thanks to the implementation of -sizeWithAttributes: and -drawAtPoint: (in plain mode tab information comes from [NSParagraphStyle defaultParagraphStyle]).\par \par }gnustep-examples-1.4.0/gui/Ink/Ink.desktop0000664000175000017500000000036707404706350017433 0ustar fedorfedor[Desktop Entry] Encoding=UTF-8 Version=0.1 Name=Ink Type=Application Path=/usr/src/gnustep/usr-apps/examples/gui/Ink #TryExec=Ink.app Comment=An Example of how to use NSTextView Exec=openapp Ink.app Icon=Ink_app.tiff MimeType=text/plain;text/rtf; gnustep-examples-1.4.0/gui/Ink/English.lproj/0000775000175000017500000000000012204034626020021 5ustar fedorfedorgnustep-examples-1.4.0/gui/Ink/English.lproj/MainMenu.gorm/0000775000175000017500000000000012204034626022475 5ustar fedorfedorgnustep-examples-1.4.0/gui/Ink/English.lproj/MainMenu.gorm/objects.gorm0000664000175000017500000007240411675200565025033 0ustar fedorfedorGNUstep archive0000300d:00000011:00000426:00000001:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01 GSNibItem01NSString& % AppDelegate  &01NSMenu0&%Ink01NSMutableArray1 NSArray&  01 NSMenuItem0 &%Info0 &&&%0 1 NSImage0 1 NSMutableString&%common_2DCheckMark0 0 & % common_2DDash2 submenuAction:v24@0:8@16%0 0&0 0& % Info Panel...0&&&% %0 0&%Preferences...0&&&% %0 0&%Help...0&%?&&% %0 0&%Document0&&&% %00&  0 0 &%Open...0!&%o&&% %0" 0#& % Open Recent0$&&&%0% 0&&%NSMenuCheckmark0' 0(&%NSMenuMixedState%0)0*& % Open Recent0+&0, 0-& % Clear List0.&&&%%'%0/ 00&%New01&%n&&% %02 03&%Insert File...04&&&% %05 06&%Save...07&%s&&% %08 09& % Save As...0:&%S&&% %0; 0<& % Save To...0=&&&% %0> 0?&%Save All0@&&&% %0A 0B&%Revert To Saved0C&&&% %0D 0E&%Close0F&&&% %0G 0H&%Edit0I&&&% %0JH0K&  0L 0M&%Undo0N&%z&&% %0O 0P&%Redo0Q&%Z&&% %0R 0S&%Cut0T&%x&&% %0U 0V&%Copy0W&%c&&% %0X 0Y&%Paste0Z&%v&&% %0[ 0\&%Delete0]&&&% %0^ 0_&%Find0`&&&%%'%0a_0b&0c 0d& % Find Panel...0e&%f&&%%'%0f 0g& % Find Next0h&%g&&%%'%0i 0j& % Find Previous0k&%d&&%%'%0l 0m&%Enter Selection0n&%e&&%%'%0o 0p&%Jump To Selection0q&%j&&%%'%J0r 0s& % Spelling...0t&%:&&% %0u 0v&%Check Spelling0w&%;&&% %0x 0y&%Check Spelling Automatically0z&&&%%'%0{ 0|& % Select All0}&%a&&% %0~ 0&%Format0&&&% %00&0 0&%Font0&&&% %00&  0 0& % Font Panel0&%t&&% %0 0&%Bold0&%b&&% %0 0&%Italic0&%i&&% %0 0& % Underline0&%u&&% %0 0&%Larger0&%+&&% %0 0&%Smaller0&%-&&% %0 0&%Kern0&&&% %00&0 0& % Use Standard0&&&% %0 0&%Use None0&&&% %0 0&%Tighten0&&&% %0 0&%Loosen0&&&% %0 0&%Ligature0&&&% %00&0 0& % Use Standard0&&&% %0 0&%Use None0&&&% %0 0&%Use All0&&&% %0 0&%Baseline0&&&% %00&0 0& % Superscript0&&&% %0 0±& % Subscript0ñ&&&% %0ı 0ű&%Unscript0Ʊ&&&% %0DZ 0ȱ& % Colors...0ɱ&%C&&% %0ʱ 0˱& % Copy Font0̱&%3&&% %0ͱ 0α& % Paste Font0ϱ&%4&&% %0б 0ѱ&%Text0ұ&&&% %0ӱ0Ա&0ձ 0ֱ& % Align Left0ױ&&&% %0ر 0ٱ&%Center0ڱ&&&% %0۱ 0ܱ& % Align Right0ݱ&&&% %0ޱ 0߱& % Show Ruler0&&&% %0 0& % Copy Ruler0&%1&&% %0 0& % Paste Ruler0&%2&&% %0 0&%Page Layout...0&%P&&% %0 0&%Windows0&&&% %00&0 0&%Arrange In Front0&&&% %0 0&%Miniaturize Window0&%m&&% %0 0& % Close Window0&%w&&% %0 0&%Print...0&%p&&% %0 0&%Services0&&&% %00&P P&%HideP&%h&&% %P P&%QuitP&%q&&% %PP& % NSFontManager  &P&P &P 1 NSMutableDictionary1 NSDictionary&P & % MenuItem224P P & % SuperscriptP&&&% %P& % MenuItem33P& % MenuItem225P P& % SubscriptP&&&% %P& % MenuItem34GP& % MenuItem226P P&%UnscriptP&&&% %P& % MenuItem35RP& % MenuItem227P& % MenuItem36UP& % MenuItem228P& % MenuItem37XP&%NSServicesMenuP& % MenuItem1102P & % MenuItem229P!& % MenuItem38{P"& % MenuItem1115P#& % MenuItem39P$ P%&%FormatP&&&&% %P'%P(&P) P*&%FontP+&&&% %P,*P-&  P. P/& % Font Panel...P0&%t&&% %P1 P2&%BoldP3&%b&&% %P4 P5&%ItalicP6&%i&&% %P7 P8&%LargerP9&%l&&% %P: P;&%SmallerP<&%s&&% %P= P>& % UnderlineP?&&&% %P@ PA& % SuperscriptPB&&&% %PC PD& % SubscriptPE&&&% %PF PG&%UnscriptPH&&&% %PI PJ& % Copy FontPK&%3&&% %PL PM& % Paste FontPN&%4&&% %'PO PP&%TextPQ&&&% %PRPPS&PT PU& % Align LeftPV&&&% %PW PX&%CenterPY&&&% %PZ P[& % Align RightP\&&&% %P] P^& % Show RulerP_&&&% %P` Pa& % Copy RulerPb&%1&&% %Pc Pd& % Paste RulerPe&%2&&% %'Pf Pg&%Page Layout...Ph&%P&&% %Pi& % MenuItem1128Pj& % MenuItem113;Pk& % MenuItem114>Pl& % MenuItem115APm& % MenuItem116DPn& % MenuItem117Po Pp&%FormatPq&&&% %PrpPs&Pt Pu&%FontPv&&&% %PwuPx&  Py Pz& % Font PanelP{&%t&&% %P| P}&%ItalicP~&%i&&% %P P&%BoldP&%b&&% %P P&%HeavierP&%h&&% %P P&%LighterP&%g&&% %P P&%LargerP&%l&&% %P P&%SmallerP&%s&&% %P P& % UnderlineP&&&% %P P& % SuperscriptP&&&% %P P& % SubscriptP&&&% %P P&%UnscriptP&&&% %P P& % Copy FontP&%3&&% %P P& % Paste FontP&%4&&% %rP P&%TextP&&&% %PP&P P& % Align LeftP&&&% %P P&%CenterP&&&% %P P& % Align RightP&&&% %P P& % Show RulerP&&&% %P P& % Copy RulerP&%1&&% %P P& % Paste RulerP&%2&&% %rP P&%Page Layout...P&%P&&% %P& % MenuItem118tP& % MenuItem119yP&%Menu(6)P& % MenuItem(11)lP& % MenuItem230P& % MenuItem231P& % MenuItem40)P& % MenuItem232P±& % MenuItem41.Pñ& % MenuItem(2)OPı& % MenuItem233Pű& % MenuItem421PƱ& % MenuItem234PDZ& % MenuItem43Pȱ& % MenuItem235Pɱ& % MenuItem44Pʱ& % MenuItem236P˱& % MenuItem45P̱& % MenuItem237Pͱ& % MenuItem46Pα& % MenuItem238Pϱ& % MenuItem47Pб& % MenuItem120|Pѱ& % MenuItem239Pұ& % MenuItem482Pӱ& % MenuItem121PԱ& % MenuItem49Pձ& % MenuItem122Pֱ& % MenuItem123Pױ& % MenuItem124Pر& % MenuItem125Pٱ& % MenuItem126Pڱ& % MenuItem127P۱& % MenuItem128Pܱ& % MenuItem129Pݱ& % NSWindowsMenuPޱ&%Menu(7)P߱& % MenuItem(12)oP& % MenuItem240P& % MenuItem241P& % MenuItem50rP& % MenuItem242P& % MenuItem51uP& % MenuItem(3)LP& % MenuItem243P& % MenuItem52[P& % MenuItem244P& % MenuItem53 P& % MenuItem245P& % MenuItem54P& % MenuItem246P& % MenuItem55P& % MenuItem247P& % MenuItem56P& % MenuItem248P& % MenuItem57P&%NSFontP& % MenuItem130P& % MenuItem249P& % MenuItem58P& % MenuItem131P& % MenuItem59P& % MenuItem132P& % MenuItem133P& % MenuItem134P& % MenuItem135P& % MenuItem136P& % MenuItem137P& % MenuItem138P& % MenuItem139[P&%Menu(8))P& % MenuItem(13)cP& % GormNSMenu1P& % MenuItem250P& % GormNSMenu2P& % MenuItem251P& % MenuItem60P& % GormNSMenu3P& % MenuItem252P & % MenuItem61P & % GormNSMenu4P & % MenuItem(4)P & % MenuItem253P &%NSRecentDocumentsMenu)P& % MenuItem62P& % GormNSMenu5JP& % MenuItem254P& % MenuItem63/P& % GormNSMenu6P& % MenuItem255P& % MenuItem642P& % GormNSMenu7P& % MenuItem256P& % MenuItem655P& % GormNSMenu8P& % MenuItem257P& % MenuItem668P& % GormNSMenu9P& % MenuItem258P& % MenuItem67;P& % MenuItem140rP& % MenuItem259/P & % MenuItem68>P!& % MenuItem141uP"& % MenuItem69AP#& % MenuItem142P$& % MenuItem143P%& % MenuItem144P&& % MenuItem145P'& % MenuItem146P(& % MenuItem147P)& % MenuItem148P*& % MenuItem149P+&%Menu(9)aP,& % MenuItem(14)fP-& % MenuItem2602P.& % MenuItem2615P/& % MenuItem70DP0& % MenuItem2628P1& % MenuItem71P2& % MenuItem(5)"P3& % MenuItem263;P4& % MenuItem72P5& % MenuItem264>P6& % MenuItem73P7& % MenuItem265AP8& % MenuItem74P9& % MenuItem266DP:& % MenuItem75P;& % MenuItem267RP<& % MenuItem76P=& % MenuItem268UP>& % MenuItem77P?& % MenuItem269XP@& % MenuItem78PA& % MenuItem150PB& % MenuItem79PC& % MenuItem151PD& % MenuItem152PE& % MenuItem153PF& % MenuItem154PG& % MenuItem155PH& % MenuItem156/PI& % MenuItem1572PJ& % MenuItem1585PK& % MenuItem1598PL& % MenuItem(15)iPM& % GormNSMenuPN& % MenuItem270[PO& % MenuItem80PP& % MenuItem271rPQ& % MenuItem81PR& % MenuItem272uPS& % MenuItem82PT& % MenuItem(6),PU& % MenuItem273{PV& % MenuItem83PW& % MenuItem274~PX& % MenuItem84PY& % MenuItem275PZ& % GormNSMenu10P[& % MenuItem85P\& % MenuItem276P]& % GormNSMenu11rP^& % MenuItem86P_& % MenuItem277P`& % GormNSMenu12wPa& % MenuItem87Pb& % MenuItem278Pc& % GormNSMenu13Pd& % MenuItem88Pe& % MenuItem160;Pf& % MenuItem279Pg& % GormNSMenu14JPh& % MenuItem89Pi& % MenuItem161>Pj& % GormNSMenu15Pk& % MenuItem162APl& % GormNSMenu16Pm& % MenuItem163DPn& % GormNSMenu17Po& % MenuItem164[Pp& % GormNSMenu18Pq& % MenuItem165rPr& % GormNSMenu19JPs& % MenuItem166uPt& % MenuItem167~Pu& % MenuItem168Pv& % MenuItem169Pw& % MenuItem(16)xPx& % MenuItem280Py& % MenuItem90Pz& % MenuItem281P{& % MenuItem91P|& % MenuItem282P}& % MenuItem92[P~&% NSOwnerP& % NSApplicationP& % MenuItem(7)^P& % MenuItem283P& % MenuItem93rP& % MenuItem284P& % MenuItem94uP& % MenuItem285P& % MenuItem95P& % MenuItem286P& % GormNSMenu20P& % MenuItem96P& % MenuItem287P& % GormNSMenu21P& % MenuItem97P& % MenuItem288P& % GormNSMenu22P& % MenuItem98P&%Menu(0)P& % MenuItem170P& % MenuItem289P& % GormNSMenu23P& % MenuItem99P& % MenuItem171P& % GormNSMenu24P& % MenuItem172P P&%HeavierP&%h&&% %P& % GormNSMenu25P& % MenuItem173P& % GormNSMenu26P& % MenuItem174P& % GormNSMenu27JP& % MenuItem175P& % GormNSMenu28P& % MenuItem176P& % GormNSMenu29P& % MenuItem177P& % MenuItem178P& % MenuItem179P&%NSMenuP& % MenuItem290P& % MenuItem291P& % MenuItem292P& % MenuItem(8)cP& % MenuItem293P& % MenuItem294P& % MenuItem295P& % MenuItem296P& % GormNSMenu30P& % MenuItem297P& % GormNSMenu31P& % MenuItem298P& % GormNSMenu32P&%Menu(1)P& % MenuItem180P& % MenuItem299P& % GormNSMenu33P& % MenuItem181P& % GormNSMenu34P& % MenuItem182P& % GormNSMenu35P& % MenuItem183P& % GormNSMenu36P& % MenuItem184P& % GormNSMenu37P& % MenuItem185P±& % GormNSMenu38JPñ& % MenuItem186Pı& % GormNSMenu39Pű& % MenuItem187PƱ& % MenuItem188PDZ& % MenuItem189Pȱ& % MenuItem(9)fPɱ& % MenuItem300Pʱ& % MenuItem301P˱& % GormNSMenu40P̱& % MenuItem302Pͱ& % GormNSMenu41Pα& % MenuItem303Pϱ& % GormNSMenu42Pб& % MenuItem304Pѱ& % MenuItem190Pұ& % GormNSMenu43Pӱ&%Menu(2)PԱ& % MenuItem305Pձ& % MenuItem191Pֱ& % GormNSMenu44Pױ& % MenuItem306Pر& % MenuItem192Pٱ& % GormNSMenu45Pڱ& % MenuItem307P۱& % MenuItem193Pܱ& % GormNSMenu46Pݱ& % MenuItem194Pޱ& % MenuItem308P߱& % GormNSMenu47P& % GormNSMenu48P& % MenuItem195P& % MenuItem309P& % MenuItem196P& % GormNSMenu49P& % MenuItem197P& % MenuItem198P& % MenuItem199P& % MenuItem310P&%Menu(3)P& % MenuItem200P& % MenuItem10DP& % MenuItem201P& % MenuItem202P& % MenuItem1P& % MenuItem11P& % MenuItem12P& % MenuItem2P& % MenuItem203/P& % MenuItem3P& % MenuItem13P& % MenuItem2042P& % MenuItem4/P& % MenuItem14P& % MenuItem2055P& % MenuItem55P& % MenuItem15oP& % MenuItem2068P& % MenuItem68P& % MenuItem16tP& % MenuItem207;P& % MenuItem7;P& % MenuItem17yP& % MenuItem208>P& % MenuItem8>P& % MenuItem18|P& % MenuItem209AP& % MenuItem9AP& % MenuItem19P&%Menu(4)P&%MenuItemP & % MenuItem210DP & % MenuItem20P & % MenuItem211RP & % MenuItem21P & % MenuItem212UP& % MenuItem(0)P& % MenuItem22P& % MenuItem213XP& % MenuItem23P& % MenuItem214[P& % MenuItem24~P& % MenuItem215rP& % MenuItem25P& % MenuItem216uP& % MenuItem26P& % MenuItem217{P& % MenuItem27P& % MenuItem218~P& % MenuItem28P& % MenuItem100P& % MenuItem219P& % MenuItem29P& % MenuItem101P & % MenuItem102P!& % MenuItem103P"& % MenuItem104P#& % MenuItem105P$& % MenuItem106P%& % MenuItem107P&& % MenuItem108P'& % MenuItem109/P(&%Menu(5)P)& % MenuItem(10)iP*& % MenuItem220P+& % MenuItem221P,& % MenuItem30P- P.&%LighterP/&%g&&% %P0&%AppDelegate(0)P1& % MenuItem222P2& % MenuItem31P3& % MenuItem(1)LP4& % MenuItem223P5& % MenuItem32P6&P71NSNibConnectorP8&% NSOwnerP9P:1NSNibControlConnectorP;&% NSFirstP<&%hide:P= P> ;P?& % terminate:P@%PA%PB&%submenuAction:PC%PD&PE&;PF& % openDocument:PG'PH';PI& % newDocument:PJPK;PL& % saveDocument:PMPN;PO&%saveDocumentAs:PPPQ;PR&%saveDocumentTo:PSPT;PU&%saveAllDocuments:PVPW;PX&%revertDocumentToSaved:PY PZ!P[!P\&%submenuAction:P]!P^"P_";P`&%orderFrontStandardInfoPanel:Pa#Pb$Pc$;Pd&%orderFrontHelpPanel:PePfPg&%submenuAction:PhPi Pj ;Pk&%cut:Pl Pm ;Pn&%copy:PoPp;Pq&%paste:PrPs;Pt& % selectAll:PuPvPw&%submenuAction:PxPyPzP{&%submenuAction:P|ΐP}ِP~;P&%arrangeInFront:PِP;P&%performMiniaturize:PِP;P& % performClose:PP;P& % insertFile:PΐPPPPPP;P &%delete:P;P &%checkSpelling:P;P &%showGuessPanel:PPP&%submenuAction:PPĐPP&%submenuAction:PP*ːP8P*P&%orderFrontFontPanel:P+ːP+P& % addFontTrait:P1ːP1P& % addFontTrait:P2ːP2P& % modifyFont:P5ːP5P& % modifyFont:PːP;P& % underline:PːP;P& % copyFont:PːP;P& % pasteFont:PĐPP&%submenuAction:PP֐P;P& % alignLeft:P֐P;P& % alignCenter:P֐P;P±& % alignRight:Pñ֐Pı;Pű& % toggleRuler:PƱ֐PDZ;Pȱ& % copyRuler:Pɱ֐Pʱ;P˱& % pasteRuler:P̱ĐPͱ;Pα&%runPageLayout:PϱːPбPѱ&%submenuAction:PұPӱߐPԱːPձPֱ&%submenuAction:Pױ(Pر(PٱːPڱP۱&%submenuAction:PܱPݱPޱzߐP߱|ߐPߐP(P(PPPːP;P&%orderFrontColorPanel:P;P &%useStandardKerning:Pz;P &%turnOffKerning:P|;P &%tightenKerning:P;P &%loosenKerning:P;P &%useStandardLigatures:P;P &%turnOffLigatures:P;P &%useAllLigatures:P;P & % superscript:P;P & % subscript:P;P & % unscript:P3P3;P &%undo:PP;P &%redo:P ;P & % performClose:P2P 2P2P&%submenuAction:PT P T;P &%clearRecentDocuments:P P +P +P;P&%performFindPanelAction:P+P;P&%performFindPanelAction:P)+P);P&%performFindPanelAction:P+P;P&%performFindPanelAction:P+P;P&%centerSelectionInVisibleArea:PP&%submenuAction:P08P1NSNibOutletConnector80P &%delegateP!wP"w;P# &%toggleContinuousSpellChecking:P$;P% &%printDocument:P& &gnustep-examples-1.4.0/gui/Ink/English.lproj/MainMenu.gorm/data.classes0000664000175000017500000000065611515774714025011 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; AppDelegate = { Actions = ( ); Outlets = ( ); Super = NSObject; }; Document = { Actions = ( "insertFile:" ); Outlets = ( ); Super = NSDocument; }; FirstResponder = { Actions = ( "insertFile:", "modifyFont:" ); Super = NSObject; }; MyDelegate = { Actions = ( ); Outlets = ( ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/Ink/English.lproj/MainMenu.gorm/data.info0000664000175000017500000000027011675200565024272 0ustar fedorfedorGNUstep archive0000300d:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamgnustep-examples-1.4.0/gui/Ink/Ink_app_Tile.jpg0000664000175000017500000000700507172415524020355 0ustar fedorfedorJFIFCC@@" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ??h ǁ,x`M,X;3iOImF̓H3nРsESqq($q>#I6ExGž+Heghako2 RԩPT#9lv]_3)(Jh?'XoTqDt#U5Cu?j xJ_ᮨ!ge㭶&CvlS4bf-_#|U? 4.>jv0{Z-wZ֯i}KPHX鷭Yafnm#hnm9|e{/_N__?i4$G O!CX?'7 35=kw qyhEd,[F,$o0 ˺V3g{}KirK$dtgtRWԀTBI86D8}qwԑ@'~NmO[?O+Z=A/~'ѵm/B|=siqOͫ]ZZ8x5pE,H9b/ڥAo~v2U0)5{>&?OEC|B '$za/_'{^|'P}&tK{Z*TuSKeX /F!eeѸ~=zćK5ڿ M)|qō+Dm3'oͮWz7u;K]śʿd|)r~ߴ?<_4rԵo/j} ǟڛ⇌bsE~5E_2_#CKh?/i EegnMqF4O_ >ÿ|siK|g⛿? R .o2DxRMWMi`"&xW⏆M?Gwÿ>G4tA1 nv4K+7/hmO!}|M7z2=f%avQ8 .Ŷ(-Y^kciJHi(J2[Z-Z&a!_ %*MimSk;t[?Oݐ9W`&}uwyZ uس]{\0Js6?Ȩ޸~<`)*6h;x o:Wt_ |(mn~~  ]Ɖ m!y9iۥ~F*Oo_j4- Ae 4xquog Y[El Z:m'f]BX"A,2]OH A#|~#^0yMӫ(PJ\7Ex)EcpRTJI٩5fN5+J1k'N~"zWNey4մOIKK]ē̍Xe$~x⧀t?^ ּc'z4}P"xmTV yK:$1$Z]DfO|`>0ךG@:SxGwԴEhd@gPt1&^D"yzV?OOCK^>_MUnu.6֯3O!YL+'(Y׭]aBT8:K^h*>jTe*r)rNRk3rl%)shy,!7V_N t?7d_ U<3?t? xm~i|QΫymMOL-nY%ͼ/2|Ŗ(|oG.~EOQF?Z;x׆™3#x!Nu׻V$Xׁ\99_qݏڃdݓ'z ~7ڶUh~uT+3i:WWzo6}"ʐaՔʲ+Vo4s={֟KxsZ{sit. s$  rѱMu}ǧ'`,rqF.a'} G3jeNvQM¢]'[y6UW+J2Sou<?i-"N6+v~;SXڥMp љ19hCkfEw{C.x׫Aj;@lC|6lK_%؟/ii>]VZ>ej2ʋr,B69c$k; ),u ,0ө+\ܵj)NIU~,g+ǚRoL_K/oR{h-4?gnustep-examples-1.4.0/gui/Ink/AppDelegate.h0000664000175000017500000000235711515774714017653 0ustar fedorfedor/* AppDelegate.h Application delegate for Ink application Copyright (C) 2011 Free Software Foundation, Inc. Author: Wolfgang Lux Date: 2011 This file is part of GNUstep. 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 @class NSString; @class NSPasteboard; @interface AppDelegate : NSObject { } - (void) openSelection:(NSPasteboard *)pasteboard userData:(NSString *)userData error:(NSString **)error; - (void) openFile:(NSPasteboard *)pasteboard userData:(NSString *)userData error:(NSString **)error; @end gnustep-examples-1.4.0/gui/Ink/Ink_app.ico0000664000175000017500000002267611332210044017364 0ustar fedorfedor00 %(0` ""DD}|}|}}~̒}}"f~~ba|)(_`a`~~"D^^,,+*,,`a}}"gfba-.63aa}̬"gecdab_^[Qda"`Ui`_R_PaQaT„|b`77/0]]'&3._Tt{̖DbS\DU7X4U'ҎceE_N **YW 0+|w}f"aOL.O#FZ9[G.)IG"!55.-<;f̸[F3 XJuib^bcdccbbc01cbed"SD1F0 \OYUYXcddffgfml\WG4gLkV~qsqȓݐ --c[fS3F"F, 9jLlU}"”po<<]\ˎÐo<*6+4-7,ōfŖ==z夦ȏ86ۈÊ_ɖCCu"›֖@@iӓfG;/qQ{]GCq 2,Ē~XYW]^\decPQMG:,Y8[!?G$ZND>8=bbb~u+7DCJYv.6P,q""  %37=>HelJܞuÝ"NIH*,,"!(.-59:̰rzz"!'+55DF^ Z>H!gE0653><@HHOSTmmmino&$,-37=H k2vY}idVMP2-/&&&?>;=}{{vttvttuuuWVXbbbSQPTSO`\[G<8.%!''!""""$'%#PQO;<: QSSZ\]OQQ\^^cfdsxvstrfE@?><C?>knlcdbujl|rx732jmkc\_YRURPPPPP253qxquvr <=;rwu59:,*0TMTA;8xzzqss2:037,b_[idc\[]RQS_]]idf|rx|ttytuebdb]^fabOQQNTO]]WUUO[]]prr^`Zojif`a`]_nhii`cg[a}rtxyxst{xzvttrttPSQWXVrsqjjjHHHigfkdgqjmqjm"fB<=tttrrruuuvttqooc^_tmprilwlofHCD644tsuwtvussvttojk"fcdbC>@kkk`bbTVWuuu9<:RWVrrrD?@???B?A?>@\ZY>?=253E@A621E@?E==? _?; ?gnustep-examples-1.4.0/gui/Ink/InkInfo.plist0000664000175000017500000000342411515774714017735 0ustar fedorfedor{ ApplicationName = "Ink"; ApplicationDescription = "An Example of how to use NSTextView"; ApplicationRelease = "0.1"; Authors = ("Fred Kiefer "); Copyright = "Copyright (c) 2000 Fred Kiefer "; CopyrightDescription = "This program is released under the GNU General Public License"; NSIcon = Ink_app; NSServices = ( { NSMenuItem = { default = "Ink/Open Selection"; }; NSMessage = openSelection; NSPortName = Ink; NSSendTypes = ( NSStringPboardType, NSRTFPboardType, NSRTFDPboardType ); }, { NSMenuItem = { default = "Ink/Open File"; }; NSMessage = openFile; NSPortName = Ink; NSSendTypes = ( NSStringPboardType, NSFilenamesPboardType ); } ); NSTypes = ( { NSName = "rtf"; NSHumanReadableName = "RTF Document"; NSUnixExtensions = ("rtf"); NSDOSExtensions = ("rtf"); NSMIMETypes = ("text/rtf"); NSIcon = FileIcon_rtf; NSRole = Editor; NSDocumentClass = Document; }, { NSName = "rtfd"; NSHumanReadableName = "RTFD Document"; NSUnixExtensions = ("rtfd"); NSDOSExtensions = ("rtfd"); NSIcon = FileIcon_rtf; NSRole = Editor; NSDocumentClass = Document; }, { NSName = "text"; NSHumanReadableName = "Text Document"; NSUnixExtensions = ("txt"); NSDOSExtensions = ("txt"); NSMIMETypes = ("text/plain"); NSIcon = FileIcon_txt; NSRole = Editor; NSDocumentClass = Document; } ); } gnustep-examples-1.4.0/gui/Ink/.cvsignore0000664000175000017500000000007007172416026017306 0ustar fedorfedor*.app *.debug *.profile *obj GNUmakefile.local .gdbinit gnustep-examples-1.4.0/gui/Ink/Document.m0000664000175000017500000002171011555724540017251 0ustar fedorfedor/* Document.m Subclass of NSDocument for Ink application Copyright (C) 2000 Free Software Foundation, Inc. Author: Fred Kiefer Date: 2000 This file is part of GNUstep. 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 #include #include "Document.h" @implementation Document - (id) init { [super init]; ts = [[NSMutableAttributedString alloc] init]; return self; } - (void) dealloc { RELEASE (ts); RELEASE (pi); [super dealloc]; } - (NSFileWrapper *)fileWrapperRepresentationOfType:(NSString *)type { if ([type isEqualToString:@"rtfd"]) { NSAttributedString *attr; if (tv != nil) attr = [tv textStorage]; else attr = ts; return [attr RTFDFileWrapperFromRange: NSMakeRange(0, [attr length]) documentAttributes: [[self printInfo] dictionary]]; } else { return [super fileWrapperRepresentationOfType: type]; } } - (NSData *)dataRepresentationOfType:(NSString *)aType { NSAttributedString *attr; if (tv != nil) { attr = [tv textStorage]; } else { attr = ts; } if (aType == nil) { aType = @"text"; } if ([aType isEqualToString: @"rtf"]) { return [attr RTFFromRange: NSMakeRange (0, [attr length]) documentAttributes: [[self printInfo] dictionary]]; } else if ([aType isEqualToString:@"rtfd"]) { return [attr RTFDFromRange: NSMakeRange (0, [attr length]) documentAttributes: [[self printInfo] dictionary]]; } else if ([aType isEqualToString:@"text"]) { return [[attr string] dataUsingEncoding: [NSString defaultCStringEncoding]]; } else { NSAssert (NO, ([NSString stringWithFormat: @"Unknown type %@", aType])); return nil; } } - (BOOL)loadFileWrapperRepresentation:(NSFileWrapper *)wrapper ofType:(NSString *)type { if ([type isEqualToString:@"rtfd"]) { NSAttributedString *attr; attr = [[NSAttributedString alloc] initWithRTFDFileWrapper: wrapper documentAttributes: NULL]; if (tv != nil) [[tv textStorage] setAttributedString: attr]; else [ts setAttributedString: attr]; RELEASE(attr); return YES; } else { return [super loadFileWrapperRepresentation: wrapper ofType: type]; } } - (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType { NSAttributedString *attr; if ([aType isEqualToString:@"rtf"]) { attr = [[NSAttributedString alloc] initWithRTF: data documentAttributes: NULL]; } else if ([aType isEqualToString:@"rtfd"]) { attr = [[NSAttributedString alloc] initWithRTFD: data documentAttributes: NULL]; } else if ([aType isEqualToString:@"text"]) { attr = [[NSAttributedString alloc] initWithString: AUTORELEASE([[NSString alloc] initWithData: data encoding: [NSString defaultCStringEncoding]])]; } else { NSAssert(NO, ([NSString stringWithFormat: @"Unknown type %@", aType])); return NO; } if (tv != nil) [[tv textStorage] setAttributedString: attr]; else [ts setAttributedString: attr]; RELEASE(attr); return YES; } - (NSString *) windowNibName { return @"Document"; } - (void)printShowingPrintPanel:(BOOL)flag { NSPrintOperation *po = [NSPrintOperation printOperationWithView: tv printInfo: [self printInfo]]; [po setShowPanels: flag]; [po runOperation]; } - (void)windowControllerDidLoadNib:(NSWindowController *) aController; { [super windowControllerDidLoadNib:aController]; // These lines could possibly be removed after some gorm/gui fixes // The last one should go before any localizations are made. [[tv enclosingScrollView] setHasVerticalRuler: YES]; [[[tv enclosingScrollView] verticalRulerView] setRuleThickness: 30]; [[tv enclosingScrollView] setHasHorizontalRuler: YES]; [[NSFontManager sharedFontManager] setFontMenu: [[[[[NSApp mainMenu] itemWithTitle: @"Format"] submenu] itemWithTitle: @"Font"] submenu]]; [[tv textStorage] setAttributedString: ts]; // Activate undo [tv setAllowsUndo: YES]; [tv setSmartInsertDeleteEnabled: YES]; [tv setUsesFindPanel: YES]; DESTROY(ts); } - (void)textDidChange:(NSNotification *)textObject { if (![self hasUndoManager]) { [self updateChangeCount: NSChangeDone]; } } - (BOOL)saveToURL:(NSURL *)aURL ofType:(NSString *)type forSaveOperation:(NSSaveOperationType)saveOperation error:(NSError **)err { [tv breakUndoCoalescing]; return [super saveToURL:aURL ofType:type forSaveOperation:saveOperation error:err]; } - (void)insertFile: (id)sender { static NSString *lastDir = nil; static NSView *accView = nil; static NSButton *asIconButton; NSTextAttachment *attachment; NSFileWrapper *wrapper; NSOpenPanel *panel; int ret; id object = nil; NSString *ext; NSString *filename; NSEnumerator *enumerator; NSString *type; BOOL isImage = NO; if (accView == nil) { accView = [[NSView alloc] initWithFrame: NSMakeRect (0.0, 0.0, 100.0, 24.0)]; asIconButton = [[NSButton alloc] initWithFrame: NSMakeRect (0.0, 0.0, 100.0, 24.0)]; [asIconButton setButtonType: NSSwitchButton]; [asIconButton setTitle: @"Insert as icon"]; /* tooltips are not implemented, but this is for the future ... */ [asIconButton setToolTip: @"Insert file type icon instead of file contents"]; [accView addSubview: asIconButton]; } if (lastDir == nil) { ASSIGN (lastDir, NSHomeDirectory ()); } panel = [NSOpenPanel openPanel]; [panel setAccessoryView: accView]; [panel setAllowsMultipleSelection: NO]; ret = [panel runModalForDirectory: lastDir file: nil types: nil]; ASSIGN (lastDir, [panel directory]); if (ret == NSOKButton) { filename = [panel filename]; ext = [filename pathExtension]; if ([asIconButton state] != NSOnState) { if (ext == nil || [ext isEqualToString: @""] || [ext isEqualToString: @"txt"] || [ext isEqualToString: @"text"]) { object = [NSString stringWithContentsOfFile: filename]; } else if ([ext isEqualToString: @"rtf"]) { NSData *data = [NSData dataWithContentsOfFile: filename]; object = [[NSAttributedString alloc] initWithRTF: data documentAttributes: NULL]; AUTORELEASE (object); } else if ([ext isEqualToString: @"rtfd"]) { NSData *data = [NSData dataWithContentsOfFile: filename]; object = [[NSAttributedString alloc] initWithRTFD: data documentAttributes: NULL]; AUTORELEASE (object); } } if (object == nil) { wrapper = [[NSFileWrapper alloc] initWithPath: filename]; AUTORELEASE (wrapper); /* Insert image contents */ if ([asIconButton state] != NSOnState) { enumerator = [[NSImage imageFileTypes] objectEnumerator]; while ((type = [enumerator nextObject]) != nil) { if ([ext isEqualToString: type]) { isImage = YES; break; } } if (isImage) { NSImage *image; image = [[NSImage alloc] initWithContentsOfFile: filename]; AUTORELEASE (image); [wrapper setIcon: image]; } } attachment = [[NSTextAttachment alloc] initWithFileWrapper: wrapper]; AUTORELEASE (attachment); object = [NSAttributedString attributedStringWithAttachment: attachment]; } if (object != nil) { [tv insertText: object]; } } } @end @implementation Document (Private) - (void)textView: (NSTextView *)aTextView doubleClickedOnCell: (id )attachmentCell inRect: (NSRect)cellFrame atIndex: (unsigned)charIndex { NSTextAttachment *attachment; NSFileWrapper *filewrapper; attachment = [attachmentCell attachment]; filewrapper = [attachment fileWrapper]; /* openFile:fromImage:at:inView: */ [[NSWorkspace sharedWorkspace] openFile: [filewrapper filename]]; } @end gnustep-examples-1.4.0/gui/Ink/Document.gorm/0000775000175000017500000000000012204034625020023 5ustar fedorfedorgnustep-examples-1.4.0/gui/Ink/Document.gorm/objects.gorm0000664000175000017500000000433510266623141022352 0ustar fedorfedorGNUstep archive00002af9:0000001a:00000035:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&% Document0&% GSCustomClassMap0&0&% TextView01 NSTextView1NSText1NSView1 NSResponder% A  D D   D D &0 1 NSMutableArray1 NSArray&0 1 NSColor0 &%NSNamedColorSpace0 &% System0 &% textBackgroundColor  K K0 0& %  textColor D K0& %  NSVisible0 &01 NSWindow% ? A D D &% Cv D~@0% ? A D D   D D &0 &01 NSScrollView%  D D   D D &0 &01 NSClipView% A  D D  A  D D &0 & 01 NSScroller1 NSControl%  A D   A D &0 &%01NSCell0&01NSFont%&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0 0&% System0 &% windowBackgroundColor0!&% Window0"&% Window0#&%Window ? B F@ F@%0$1NSImage0%&%NSApplicationIcon0&& %  ScrollView0'& %  GormNSWindow0( &0)1NSNibConnector'0*&%NSOwner0+&0,0-1NSNibOutletConnector*0.&% tv0/*00&% delegate01*'02&% _window03'041NSMutableString&% initialFirstResponder051 GSMutableSet1 NSMutableSet1NSSet&gnustep-examples-1.4.0/gui/Ink/Document.gorm/data.classes0000664000175000017500000000044010266623141022314 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; Document = { Actions = ( "insertFile:" ); Outlets = ( tv ); Super = NSDocument; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "insertFile:" ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/Ink/Document.gorm/data.info0000664000175000017500000000032210266623141021611 0ustar fedorfedorGNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&% Latest Version0& %  Typed Streamgnustep-examples-1.4.0/gui/Ink/GNUmakefile0000664000175000017500000000276411515774714017403 0ustar fedorfedor# GNUmakefile: main makefile for GNUstep Ink application # # Copyright (C) 2000 Free Software Foundation, Inc. # # Author: Fred Kiefer # Date: 2000 # # This file is part of GNUstep. # # 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 PACKAGE_NAME=gnustep-Ink CVS_MODULE_NAME = gnustep/usr-apps/examples/gui/Ink CVS_TAG_NAME=Ink VERSION=1.0.0 APP_NAME = Ink Ink_MAIN_MODEL_FILE = MainMenu.gorm Ink_RESOURCE_FILES = \ Ink_app.tiff \ FileIcon_rtf.tiff \ FileIcon_txt.tiff \ Document.gorm \ Ink_app.ico Ink_LANGUAGES = English Ink_LOCALIZED_RESOURCE_FILES = MainMenu.gorm Ink_OBJC_FILES = \ main.m \ AppDelegate.m \ Document.m -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/Ink/FileIcon_rtf_Tile.jpg0000664000175000017500000000677607172415524021355 0ustar fedorfedorJFIFCC@@" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ??h ǁ,x`M,X;3iOImF̓H3nРsESqq($qSſK?O~"?_>ƻr 5O/oKi[YjR4Svzm{q*l'2?<)b\~ٿZ"QЏU ɰV.@Xu][)r-.|]][l **47/ կ{˘], _gX䕗nrq_ZWbБĀ09? b\ܟ|'GSgqc ŮG;X~_H.-튛H*X̎28`@n'S"6eK ]|ea@pG]|_M<#~(OI>8 ~ڟWϊz^$3L1jto3xOG=|1!{Sn,A}W y"T!c(TpJ(-D$?OEC|B '$zaKmN$,ƓG:|2r3 n_`OA!wNGiv/#\ÐuOrW/gV_U߅h9/Ox_A{[-s◉|?Y˧nZԮ֫|,ǡ e[P4uԮKEA1E& _Os'>&F_KODo|iVk\($CMl POFy-,;}K5zX#΅h>$|af:ƃ#Pj]A KI=DCvUdUWoWoM}f_;L_bXg)| -Đߴ-F.}kڍV̷6%>ZR1$%JNɥ[Rw/RǑOU3 ''6+k/G7<_:g,w=/6+$5Ə޸~<`)*a-71oW}.KN }~%Wo22r( p_eȏ DwH5J|mDž.;xŤ'?GIS W}gs\վ!|CA}k>%8jwQZIGk>{.uqgԾ\0/36Ɵ_Oү|r+yj =:}#ķ6ֺƉc'ԡ]o4LVHx{$+mm5D|*i/A[7]3R{ +:[$"&T;%s~FKpC s, N̰7 tyK [kEkK%MOP '\¡dkuxcёreEkx ?_"~7_YQsC|7'?oc]fwI?j/zFS'+IٵJB _ ~pX}[4<ٕc?3Կu ~%hi:~]NUݕݵͥͻH')$|uyS|v=JBĕiP* I~? iCxPg6?U8KO?}w'v > 6N>_7z_gzmgKZ<o][^,7;],D)?[n@Wpn3S4I ugccJð_@9w}~X8~0hBp2IJ{Nc?mۃѿ?ٚz]֕oo7$Y$W֏8 7S"0~cs6_JQddMowZ/fOƯx?O{-PQ(T[)b C C :TO-[gnustep-examples-1.4.0/gui/Ink/FileIcon_txt.tiff0000664000175000017500000000435407652111464020561 0ustar fedorfedorII*& P8$ BaPd6DbQ8qV,cr5 AJdI& SV7ƪ|O+ۍ;=gz &aOhXfhک r혻7OIfQؼ7 hroO;_ot_v{_o?TguQ)j/(_c76}i4( \6.0ܷD,$ j1[D1+9α;lwuz|)H#猕$oy Bj)) AItd&/96Mg3p2δr)J3<*)S_6#JRPyꤼQʈ)N͒9S=09O#0 UP[t޷ %S=sѱ!\^3-y2r>g%L6l8mmɬͬzGo9HRQ<5jM`;ޕQn|U B0E[[w^:yA&4Zy/'@(_K SV drwʬPgן7k[5  e3ڋ@*pJK)bݤk;&̻0RUX߶;0N)㛆mZsnƻTyG.v˛[D+z>ݷ-ŵD8UaD//R>9aУb G͌{A_n$75 M2F ;CDAO ܉:J%\+3<:;0"7)à )Wep[-X.'RC*2Bi'18?\G bLupA⊉X8" |]h)A,Oה(D}F)`IzP4?))fmaH2Mză,rQJo-&ёCB)ģm2T|;HćJ+_ w~UQGC 4Hr&".ePI"$Tw`Bz?䔔WT7._$MD]5uNx݌7!%M92Pƒq dB p3VJ&BR(MsVП'~F7lQ3F8҆[v^0ָcohN3UJ#_n4B$ PKJJ^lJҫG%.kUC8WM L%X"5n&/U֦ ji/FP.0QX7#}W7/ew^ڊf,E6jZ+μW`J%ֶ#q[Ņ%y[`Qݲ _w 1/^-6 U~:PX9b kX:fmUƨ^o屨ˏoJ-ɭ2bmDUlCq4SI9v Z A ]wD1 V[_wW,2X3/IjE̹ə29ٖe)F[_s ~Z*K[˗[3XU>ǘ4|PnuzG!Hpz'($vVkx=w[}}ǁS> G\pnx OqN% 4A?YZ\=?>352@>Ckkkbb`WVTuuu:<9VWRrrr@@BfbdcDCH446ustvtwssuttvkjo"==C>?Clnkbdcljuxr|?@E<<>uvxttvssuttrccc]^bPQS24/bdaAGGHMG$' $&%$&#,.-RPQVTURRRceb^c_lqmlmo?>D=;>{{}ttvttvuuuXVWbbbPQSOST[\`83HH@TSOmmmoni&$,-37= H2kYvdi}HIN,,*!"-.(:95pno̳zzr!"'+55DF ^>Z!HEg" %37=>HelJu"%$&D=8>bbbu~+7DCJYv.6,Pq"~WYX\^]cedMQP,:G8Y![?G$NZlpo/;GQq]{CG q ,2nv@@i:;Gf99C_CCu"^^x==z68op<<\]o*<+6-4,758GfON_qs --[cSf3"F,F 9LjUl}":;Gf''!% $5(G&I>4LgVkq~'&/D *%1$-F GULL_goOZ &!&##"!  @JX\lngjgj^c;E)9'1. FTU^88GflmW\ Date: 2011 This file is part of GNUstep. 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 #import #import #import #import #import #import #import #import "AppDelegate.h" @implementation AppDelegate - (void) applicationDidFinishLaunching: (NSNotification *)not { NS_DURING [NSApp setServicesProvider: self]; NS_HANDLER NSLog(@"Caught exception in setServicesProvider: %@", localException); NS_ENDHANDLER } - (void) openSelection: (NSPasteboard *)pb userData: (NSString *)userData error: (NSString **)error { NSArray *types = [pb types]; NSDocument *doc = [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay: YES error: NULL]; if (doc) { if ([types containsObject: NSRTFDPboardType]) { [doc loadDataRepresentation: [pb dataForType: NSRTFDPboardType] ofType: @"rtfd"]; } else if ([types containsObject: NSRTFPboardType]) { [doc loadDataRepresentation: [pb dataForType: NSRTFPboardType] ofType: @"rtf"]; } else if ([types containsObject: NSStringPboardType]) { [doc loadDataRepresentation: [pb dataForType: NSStringPboardType] ofType: @"text"]; } [doc updateChangeCount: NSChangeDone]; } } - (void) openFile: (NSPasteboard *)pb userData: (NSString *)userData error: (NSString **)error { int i, n; NSArray *files; NSArray *types = [pb types]; NSDocumentController *sdc = [NSDocumentController sharedDocumentController]; if ([types containsObject: NSFilenamesPboardType]) { files = [pb propertyListForType: NSFilenamesPboardType]; } else if ([types containsObject: NSStringPboardType]) { files = [NSArray arrayWithObject: [pb stringForType: NSStringPboardType]]; } else { files = nil; } for (i = 0, n = [files count]; i < n; i++) { NSString *filename = [files objectAtIndex: i]; [sdc openDocumentWithContentsOfURL: [NSURL fileURLWithPath: filename] display: YES error: NULL]; } } @end gnustep-examples-1.4.0/gui/Ink/FileIcon_rtf.tiff0000664000175000017500000000434407652111464020534 0ustar fedorfedorII* P8$ BaPd6DbQ8qV,cr5 AJdIPG@G@|$y@tB*NSļ; D٘o \뺱^Quq(@I@ G*(JavH%d66\60H)r".M~έz8_8([6Jső–2QќϭR+ESJL}s+4;DRZ;֌9@(oѣ0֕GFzHYgy(L>KrͺI& b0)SڡWCm4nγ4lұl-4 )QsGaӝdBD$]Mj ).N|*wڮV9m9g^e虽TgzuZlFŸjYd..Ufy[)Y%bSelն;ǸoT5͚u,2Fa} ;,N oyy>)Yϻ+-|\jg[T)ܓAaE!4S[>QaFҐl'rkc9\q-'D,@g D4IE8i+:~A혘I[xrd`c)hK뒆QjB@C ܫ;yrÖ<. a$ z ? tqoD/yEVv2<]U4 ]i$b̝&=}%K)Hz""YU D͹+&*l5᛾웝&^|XJy͙7gޔo"WJ#g#3B3_Kh$-7eT??3'<=nD9is*=7rL|=)QK)Y^$R:kFzRP/t(5lQbNJfYC5:۪u?PD WЌB/;k>cV9}WgĬLj:B3SEFNap3#@De GV(mN:l@CY`Q1RֹPd͝Ť\bkܑkGV9Xj((IƆR Ph R; #I1u;ht6P-18Zk08"3[ɎJ9d2V\+dlrƀ{NXMW4_Sz0TZH##k'/ "H9\g{2)vp}#xḾL @,m}c Date: 2000 This file is part of GNUstep. 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 #include #include #include #include @interface Document : NSDocument { NSMutableAttributedString *ts; NSTextView *tv; NSPrintInfo *pi; } - (void)insertFile: (id)sender; @end gnustep-examples-1.4.0/gui/Ink/main.m0000664000175000017500000000215310266623141016410 0ustar fedorfedor/* main.m: Main Body of GNUstep Ink demo application Copyright (C) 2000 Free Software Foundation, Inc. Author: Fred Kiefer Date: 2000 This file is part of GNUstep. 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 #include #include #include "Document.h" int main(int argc, const char **argv, char** env) { return NSApplicationMain(argc, argv); } gnustep-examples-1.4.0/gui/Ink/ChangeLog0000664000175000017500000001170612033022521017051 0ustar fedorfedor2012-10-03 Wolfgang Lux * AppDelegate.m (-openSelection:userData:error:): Update change count of a fresh document created with the Open Selection service, so it cannot be accidentally closed. 2011-12-23 Eric Wasylishen * English.lproj/MainMenu.gorm: Connect "Print" to printDocument: instead of print: so the document's print info is used, so changes made in the page layout panel are used for printing. 2011-04-26 Eric Wasylishen * Document.m: Call -[NSTextView breakUndoCoalescing] when a save is performed so that the first characters typed after a save mark the document as having changes. 2011-03-13 Eric Wasylishen * English.lproj/MainMenu.gorm: Change Cmd+u from revert document to underine. Add a "Check spelling automatically" menu item. 2011-01-20 Wolfgang Lux * GNUmakefile: * InkInfo.plist: * English.lproj/MainMenu.gorm/data.classes: * English.lproj/MainMenu.gorm/objects.gorm: * AppDelegate.h: * AppDelegate.m: Add an application delegate to make Ink a service provider. The services allow opening new documents with the current selection and for the selected file, respectively. 2010-08-02 Wolfgang Lux * Document.m (-windowControllerDidLoadNib:): Enable the standard NSTextView find panel. Also enable smart insert and delete. * English.lproj/MainMenu.gorm: Add a Find menu. 2010-05-15 Wolfgang Lux * English.lproj/MainMenu.gorm: Add an Open Recent menu to the Document menu. Add a few more key equivalents and fix the key equivalents of the Larger and Smaller Font menu items (the latter was conflicting with the Save menu item). 2010-02-02 Gregory Casamento * Ink_app.ico: Windows icon for Ink. * GNUmakefile: Modified to copy ico file into app wrapper. 2008-11-26 Wolfgang Lux * English.lproj/MainMenu.gorm: Use keyboard equivalents Cmd-z and Cmd-Z for undo and redo menu items. 2008-06-09 Fred Kiefer * English.lproj/MainMenu.gorm: Change action close: to performClose: 2007-10-01 Fred Kiefer * Document.m (-textDidChange:): Only change update count if there is no undo manager. Patch by Wolfgang Lux . 2007-02-05 Fred Kiefer * Document.m (-windowControllerDidLoadNib:): Allow undo. * English.lproj/MainMenu.gorm: Converted to current Gorm format and add undo menu entries. 2005-10-14 Fred Kiefer * Document.m (-windowControllerDidLoadNib:): Added a vertical ruler view. 2005-07-17 Adam Fedor * Convert Ink to use gorm files. * Document.m: Remove programmatic window creating. Add nib name. * GNUmakefile: Add gorm resource files. * main.m: Remove programmatic gui. * Readme.rtf: Update. * Document.gorm, English.lproj: New. (Patches from Rob Burns). Mon Apr 28 13:22:49 2003 Nicola Pero * Document.m ([Document -makeWindow]): Do not make the document the window delegate. 2003-04-24 Adam Fedor * InkInfo.plist: Add new Icon images * GNUmakefile: Install new images. (Icons and patches from Rob Burns ). 2003-04-09 Adam Fedor * main.m: In application delegate implement ([application:openFile:]) so we will open rtf files; 2002-11-01 Adam Fedor * main.m: Don't set NSDocumentController as app delegate (set automatically now in gui). 2002-04-03 Fred Kiefer * Document.m Added a horizontal ruler view in [makeWindow]. * main.m Restructured all the menu creation. Release the delegate when no longer needed in [applicationDidFinishLaunching:]. Wed Feb 20 19:25:20 2002 Nicola Pero Removed the memory panel, now available in the gui library for all applications. * GNUmakefile: Do not link to the memory panel classes; do not compile the memory panel. * main.m: Do not include MemoryPanel.h * main.m ([MyDelegate -applicationWillFinishLaunching:]): Do not add the memory panel submenu. Click on the application icon in the info panel to get the memory panel now. * GNUmakefile (Ink_HEADERS): variable unused removed. 2001-12-09 Fred Kiefer * InkInfo.plist Added MIME types. * Ink.desktop New desktop link file generated with pl2link. Mon Oct 22 16:48:19 2001 Nicola Pero * Document.m ([Document -makeWindowControllers]): Fixed memory leak (Patch by Ludovic Marcotte ). Mon Oct 22 16:46:21 2001 Nicola Pero * Document.m ([Document -makeWindow]): Reverted last change (Patch by Ludovic Marcotte ). Thu Oct 18 15:11:08 2001 Nicola Pero * Document.m ([Document -makeWindow]): Fixed memory leak (Found by Ludovic Marcotte ). gnustep-examples-1.4.0/gui/GSTest/0000775000175000017500000000000012204034630015726 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSWindow-test/0000775000175000017500000000000012204034627020421 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSWindow-test/NSWindow-test.m0000664000175000017500000001660511657313574023310 0ustar fedorfedor/* NSWindow-test.m: test that fills/strokes line up on the desired pixel boundaries. Copyright (C) 2011 Free Software Foundation, Inc. Author: Eric Wasylishen Date: 2011 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" @interface NSWindowTest : NSObject { NSWindow *testWindow; NSPanel *panel; NSTextView *tv; } - (void) restart; - (void) setupTextView; @end static void AddLabel(NSString *text, NSRect frame, NSView *dest) { NSTextField *labelView = [[NSTextField alloc] initWithFrame: frame]; [labelView setStringValue: text]; [labelView setEditable: NO]; [labelView setSelectable: NO]; [labelView setBezeled: NO]; [labelView setFont: [NSFont labelFontOfSize: 10]]; [dest addSubview: labelView]; [labelView release]; } @implementation NSWindowTest -(id) init { testWindow = [[NSWindow alloc] initWithContentRect: NSMakeRect(0,0,200, 200) styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [testWindow setReleasedWhenClosed: NO]; [testWindow setTitle: @"Test Window"]; panel = [[NSPanel alloc] initWithContentRect: NSMakeRect(0,0,200, 400) styleMask: (NSTitledWindowMask | NSUtilityWindowMask | NSClosableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [panel setReleasedWhenClosed: NO]; [panel setTitle: @"NSWindow Test"]; [self setupTextView]; [testWindow setDelegate: self]; [self restart]; return self; } - (void) setupTextView { NSScrollView *sv = [[[NSScrollView alloc] initWithFrame: [[panel contentView] bounds]] autorelease]; [sv setBorderType: NSNoBorder]; [sv setHasVerticalScroller: YES]; [sv setHasHorizontalScroller: NO]; [sv setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; tv = [[NSTextView alloc] initWithFrame: NSMakeRect(0, 0, [sv contentSize].width, [sv contentSize].height)]; [tv setMinSize: NSMakeSize(0.0, [sv contentSize].height)]; [tv setMaxSize: NSMakeSize(FLT_MAX, FLT_MAX)]; [tv setVerticallyResizable:YES]; [tv setHorizontallyResizable:NO]; [tv setAutoresizingMask:NSViewWidthSizable]; [[tv textContainer] setContainerSize:NSMakeSize([sv contentSize].width, FLT_MAX)]; [[tv textContainer] setWidthTracksTextView:YES]; [sv setDocumentView: tv]; [[panel contentView] addSubview: sv]; } -(void) restart { [testWindow orderFront: nil]; [panel orderFront: nil]; } - (void) dealloc { RELEASE (testWindow); RELEASE (panel); [super dealloc]; } - (void) log: (NSString*)message { NSLog(@" logging"); if ([[tv string] length] > 10000) { [[[tv textStorage] mutableString] deleteCharactersInRange: NSMakeRange(0, [[tv string] length] - 10000)]; } [[[tv textStorage] mutableString] appendString: [NSString stringWithFormat: @"%@\n", message]]; NSLog(@"done appending"); [tv scrollRangeToVisible: NSMakeRange([[tv string] length], 0)]; NSLog(@"done scrolling. len %d", (int)[[tv string] length]); } /** NSWindowDelegate */ - (BOOL) windowShouldClose: (id)sender { [self log: @"windowShouldClose"]; return YES; } - (void) windowWillBeginSheet: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowWillBeginSheet %@", aNotification]]; } - (void) windowDidEndSheet: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidEndSheet %@", aNotification]]; } - (BOOL) windowShouldZoom: (NSWindow*)sender toFrame: (NSRect)aFrame { [self log: [NSString stringWithFormat: @"windowShouldZoom:toFrame: %@", NSStringFromRect(aFrame)]]; return YES; } /* - (NSUndoManager*) windowWillReturnUndoManager: (NSWindow*)sender { } - (NSRect) windowWillUseStandardFrame: (NSWindow*)sender defaultFrame: (NSRect)aFrame; - (NSRect) window: (NSWindow *)window willPositionSheet: (NSWindow *)sheet usingRect: (NSRect)rect; - (NSWindow *) attachedSheet; */ - (NSSize) windowWillResize: (NSWindow*)sender toSize: (NSSize)frameSize { [self log: [NSString stringWithFormat: @"windowWillReize:toSize: %@", NSStringFromSize(frameSize)]]; return frameSize; } /* - (id) windowWillReturnFieldEditor: (NSWindow*)sender toObject: (id)client; */ - (void) windowDidBecomeKey: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidBecomeKey %@", aNotification]]; } - (void) windowDidBecomeMain: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidBecomeMain %@", aNotification]]; } - (void) windowDidChangeScreen: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidChangeScreen %@", aNotification]]; } - (void) windowDidChangeScreenProfile: (NSNotification *)aNotification { [self log: [NSString stringWithFormat: @"windowDidChangeScreenProfile %@", aNotification]]; } - (void) windowDidDeminiaturize: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidDeminiaturize %@", aNotification]]; } - (void) windowDidExpose: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidExpose %@", aNotification]]; } - (void) windowDidMiniaturize: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidMiniaturize %@", aNotification]]; } - (void) windowDidMove: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidMove. frame: %@ %@", NSStringFromRect([testWindow frame]), aNotification]]; } - (void) windowDidResignKey: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidResignKey %@", aNotification]]; } - (void) windowDidResignMain: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidResignMain %@", aNotification]]; } - (void) windowDidResize: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidResize %@", aNotification]]; } /* - (void) windowDidUpdate: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowDidUpdate %@", aNotification]]; } */ - (void) windowWillClose: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowWillClose %@", aNotification]]; } - (void) windowWillMiniaturize: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowWillMiniaturize %@", aNotification]]; } - (void) windowWillMove: (NSNotification*)aNotification { [self log: [NSString stringWithFormat: @"windowWillMove %@", aNotification]]; } @end gnustep-examples-1.4.0/gui/GSTest/NSWindow-test/GNUmakefile0000664000175000017500000000251611657311442022503 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSWindow-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest $(BUNDLE_NAME)_OBJC_FILES = $(wildcard *.m) $(BUNDLE_NAME)_PRINCIPAL_CLASS = NSWindowTest $(BUNDLE_NAME)_RESOURCE_FILES = $(wildcard *.tiff) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSTextView-test/0000775000175000017500000000000012204034630020723 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSTextView-test/.cvsignore0000664000175000017500000000001607320653234022732 0ustar fedorfedor*obj *.bundle gnustep-examples-1.4.0/gui/GSTest/NSTextView-test/GNUmakefile0000664000175000017500000000244410564603216023012 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSTextView-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSTextView-test_OBJC_FILES = NSTextView-test.m NSTextView-test_PRINCIPAL_CLASS = NSTextViewTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSTextView-test/NSTextView-test.m0000664000175000017500000001276311563674537024136 0ustar fedorfedor/* NSTextView-test.m: NSTextView Class Demo/Test Copyright (C) 2001 Free Software Foundation, Inc. Author: Nicola Pero Date: 2001 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" @interface NSTextViewTest: NSObject { NSWindow *win; NSTextStorage *storage; } -(void) restart; @end @implementation NSTextViewTest: NSObject -(id) init { NSView *container; NSRect winFrame; NSTextField *label; container = [NSView new]; { NSTextContainer *tc1, *tc2, *tc3, *tc4, *tc5, *tc6; NSTextView *tv1, *tv2, *tv3, *tv4, *tv5, *tv6; NSLayoutManager *lm1, *lm2; storage = [[NSTextStorage alloc] init]; lm1 = [[NSLayoutManager alloc] init]; lm2 = [[NSLayoutManager alloc] init]; [storage addLayoutManager: lm1]; [storage addLayoutManager: lm2]; [lm1 release]; [lm2 release]; tc1 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 150)]; tc2 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 150)]; tc3 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 150)]; tc4 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 150)]; tc5 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 300)]; tc6 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 300)]; [lm1 addTextContainer: tc1]; [lm1 addTextContainer: tc2]; [lm1 addTextContainer: tc3]; [lm1 addTextContainer: tc4]; [lm2 addTextContainer: tc5]; [lm2 addTextContainer: tc6]; [tc1 release]; [tc2 release]; [tc3 release]; [tc4 release]; [tc5 release]; [tc6 release]; tv1 = [[NSTextView alloc] initWithFrame: NSMakeRect(0, 151, 150,150) textContainer: tc1]; tv2 = [[NSTextView alloc] initWithFrame: NSMakeRect(151, 151, 150,150) textContainer: tc2]; tv3 = [[NSTextView alloc] initWithFrame: NSMakeRect(0, 0, 150,150) textContainer: tc3]; tv4 = [[NSTextView alloc] initWithFrame: NSMakeRect(151, 0, 150,150) textContainer: tc4]; tv5 = [[NSTextView alloc] initWithFrame: NSMakeRect(360, 0, 150,300) textContainer: tc5]; tv6 = [[NSTextView alloc] initWithFrame: NSMakeRect(511, 0, 150,300) textContainer: tc6]; [container addSubview: tv1]; [container addSubview: tv2]; [container addSubview: tv3]; [container addSubview: tv4]; [container addSubview: tv5]; [container addSubview: tv6]; [tv1 release]; [tv2 release]; [tv3 release]; [tv4 release]; [tv5 release]; [tv6 release]; [[storage mutableString] appendString: @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."]; [storage addAttribute: NSLinkAttributeName value: [NSURL URLWithString: @"http://en.wikipedia.org/wiki/Lorem_ipsum"] range: NSMakeRange(6, 5)]; } winFrame.size = NSMakeSize(662,401); winFrame.origin = NSMakePoint (100, 200); label = [[NSTextField alloc] initWithFrame: NSMakeRect(0, 301, 662, 100)]; [label setStringValue: @"The four text views on the left share a layout manager, as do the two columns on the right. All six text views share the same underlying text storage."]; [label setBezeled: NO]; [label setDrawsBackground: NO]; [label setEditable: NO]; [container addSubview: label]; RELEASE (label); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: container]; RELEASE (container); [win setTitle: @"NSTextView Test"]; [self restart]; return self; } -(void) dealloc { RELEASE (win); RELEASE (storage); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSTextView Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/Image-test/0000775000175000017500000000000012204034627017733 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/Image-test/2.png0000664000175000017500000000577211622356446020626 0ustar fedorfedorPNG  IHDR OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME3S,IDATHVJP=$2.~(@K2{ǐ.!- *&\t8{>I)Hӊ,_Zӊ $Ix=ҶmZ;^ ^ǻ})QQqz,v˗>vq@u}_m6vȱf"RmV=&oV֙s^oSp<$gYaqXv #XXbKjHVZ!gUI豺O :e A6p]kEx:ܸs7'T[{0B;=nwtw]ެK!))մ<?}nO{&O2p2;OҼDP 1O# l2>"; ;EqD(@1} P!'%CQd|*Q='H Ų*K"?r9̑qEo Nl=Q,D;'>ǒD;W#tQdF Hҋ]'J /LӋN -7PԊUFk?R<Tȵ]X5eY jLOQ7YN(L@G0Ջ]Y5[EvkUmZV=w/2Mխȗ%[Rs?ʷTBۗy[eb SIwH~YUE[& *Z7zWVnZ]vXÑd ?zb9+YmeيfYf̃~Y3pYY>nZ]ơ՚RX: `@ L@*2(=/home/ericwa/gnustep/usr-apps/examples/gui/GSTest/Image-test/138x92dpi.tiffCreated with GIMP on a Mac@ \gnustep-examples-1.4.0/gui/GSTest/Image-test/1.png0000664000175000017500000000554711622356446020625 0ustar fedorfedorPNG  IHDRRg OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME2YIDAT8͔A0 '<~sxrH"!YZN8R[=$I92.zwx1S)EqT XaPYiz{4f$@&Hf9l?b5m՞}N|CWȣ0IENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/Image-test.m0000664000175000017500000004327011657336046022131 0ustar fedorfedor/* Image-test.m: test that fills/strokes line up on the desired pixel boundaries. Copyright (C) 2011 Free Software Foundation, Inc. Author: Eric Wasylishen Date: 2011 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" static NSImage *ImageFromBundle(NSString *name, NSString *type); static void AddLabel(NSString *text, NSRect frame, NSView *dest) { NSTextField *labelView = [[NSTextField alloc] initWithFrame: frame]; [labelView setStringValue: text]; [labelView setEditable: NO]; [labelView setSelectable: NO]; [labelView setBezeled: NO]; [labelView setFont: [NSFont labelFontOfSize: 10]]; [labelView setDrawsBackground: NO]; [dest addSubview: labelView]; [labelView release]; } /** * Draws a crosshair centered on the rectangle NSMakeRect(point.x, point.y, 1, 1) */ static void DrawCrosshair(NSPoint point) { [[NSGraphicsContext currentContext] saveGraphicsState]; [[[NSColor redColor] colorWithAlphaComponent: 0.5] setFill]; NSFrameRect(NSMakeRect(point.x + 1, point.y, 10, 1)); NSFrameRect(NSMakeRect(point.x - 10, point.y, 10, 1)); NSFrameRect(NSMakeRect(point.x, point.y + 1, 1, 10)); NSFrameRect(NSMakeRect(point.x, point.y - 10, 1, 10)); [[NSGraphicsContext currentContext] restoreGraphicsState]; } static NSImage *ResizedIcon(NSImage *icon, int size, BOOL createBitmap) { NSSize icnsize = [icon size]; NSRect srcr = NSMakeRect(0, 0, icnsize.width, icnsize.height); float fact = (icnsize.width >= icnsize.height) ? (icnsize.width / size) : (icnsize.height / size); NSSize newsize = NSMakeSize(floor(icnsize.width / fact + 0.5), floor(icnsize.height / fact + 0.5)); NSRect dstr = NSMakeRect(0, 0, newsize.width, newsize.height); NSImage *newIcon = [[NSImage alloc] initWithSize: newsize]; [newIcon lockFocus]; [icon drawInRect: dstr fromRect: srcr operation: NSCompositeSourceOver fraction: 1.0]; // It should work with or without this block executing if (createBitmap) { NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect: dstr]; [newIcon addRepresentation: rep]; [rep release]; } [newIcon unlockFocus]; return [newIcon autorelease]; } @interface ImageTest : NSObject { NSWindow *win; } -(void) restart; @end @interface VectorTestRep : NSImageRep { } + (NSImage*) testImage; @end @interface DrawingDelegate : NSObject @end @interface FlippedTestView : NSView { NSImage *gsImage; } @end @implementation FlippedTestView - (id)initWithFrame: (NSRect)aFrame { self = [super initWithFrame: aFrame]; if (self) { AddLabel(@"(10, 10) This is a flipped view with an 80% bounds scale, 3 degrees rotation, and a translation", NSMakeRect(10,10,500,12), self); AddLabel(@"Composite image to (10, 80) (should be bigger and not rotated):", NSMakeRect(10,30,500,12), self); AddLabel(@"Draw image at (10, 100) (should be up-side down and rotated):", NSMakeRect(10,85,500,12), self); AddLabel(@"Draw image at (10, 155) using respectFlipped: YES (should be right-side-up and rotated):", NSMakeRect(10,140,500,12), self); gsImage = [ImageFromBundle(@"gs", @"png") retain]; } return self; } - (void)dealloc { [gsImage release]; [super dealloc]; } - (BOOL) isFlipped { return YES; } - (void) drawRect: (NSRect)dirty { [[[NSColor whiteColor] colorWithAlphaComponent: 0.2] setFill]; [[NSBezierPath bezierPathWithRect: [self bounds]] fill]; [gsImage compositeToPoint: NSMakePoint(10,80) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; DrawCrosshair(NSMakePoint(10, 80)); [gsImage drawAtPoint: NSMakePoint(10,100) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; DrawCrosshair(NSMakePoint(10, 100)); [gsImage drawInRect: NSMakeRect(10,155, [gsImage size].width, [gsImage size].height) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0 respectFlipped: YES hints: nil]; DrawCrosshair(NSMakePoint(10, 155)); } @end @interface FlippedNinePartView : NSView @end @implementation FlippedNinePartView - (BOOL) isFlipped { return YES; } - (void) drawRect: (NSRect)dirty { NSDrawNinePartImage(NSMakeRect(0, 0, 128, 64), ImageFromBundle(@"1", @"png"), ImageFromBundle(@"2", @"png"), ImageFromBundle(@"3", @"png"), ImageFromBundle(@"4", @"png"), ImageFromBundle(@"5", @"png"), ImageFromBundle(@"6", @"png"), ImageFromBundle(@"7", @"png"), ImageFromBundle(@"8", @"png"), ImageFromBundle(@"9", @"png"), NSCompositeSourceOver, 1.0, YES); NSDrawNinePartImage(NSMakeRect(0, 96, 24, 32), ImageFromBundle(@"1", @"png"), ImageFromBundle(@"2", @"png"), ImageFromBundle(@"3", @"png"), ImageFromBundle(@"4", @"png"), ImageFromBundle(@"5", @"png"), ImageFromBundle(@"6", @"png"), ImageFromBundle(@"7", @"png"), ImageFromBundle(@"8", @"png"), ImageFromBundle(@"9", @"png"), NSCompositeSourceOver, 1.0, YES); } @end @interface ImageTestView : NSView { NSImage *pdfexample, *svgexample; } @end @implementation ImageTestView static NSImage *ImageFromBundle(NSString *name, NSString *type) { return [[[NSImage alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [ImageTestView class]] pathForResource: name ofType: type]] autorelease]; } - (id)initWithFrame: (NSRect)frame { self = [super initWithFrame: frame]; if (self != nil) { NSView *flipped = [[FlippedTestView alloc] initWithFrame: NSMakeRect(10, 200, 400, 200)]; [flipped setBounds: NSMakeRect(0, 0, 500, 250)]; [flipped setBoundsRotation: 3.0]; [flipped translateOriginToPoint: NSMakePoint(25, 0)]; [self addSubview: flipped]; [flipped release]; pdfexample = [ImageFromBundle(@"pdfexample", @"pdf") retain]; svgexample = [ImageFromBundle(@"svgexample", @"svg") retain]; { NSView *flippedNinePartView = [[FlippedNinePartView alloc] initWithFrame: NSMakeRect(670, 128, 128, 128)]; [self addSubview: flippedNinePartView]; [flippedNinePartView release]; AddLabel(@"Flipped NSDrawNinePartImage", NSMakeRect(670,260,128,30), self); } AddLabel(@"Clipped image at 20x. Should not have faded edge.", NSMakeRect(670,30,128,50), self); } return self; } - (void) dealloc { [pdfexample release]; [svgexample release]; [super dealloc]; } - (NSBezierPath *) gBezierPathAtPoint: (NSPoint)p { NSFont *font = [NSFont fontWithName: @"Helvetica" size: 64.0]; NSBezierPath *path = [NSBezierPath bezierPath]; [path moveToPoint: p]; [path appendBezierPathWithGlyph: [font glyphWithName: @"a"] inFont: font]; return path; } - (void) drawRect: (NSRect)dirty { // Test drawing with a complex clip path { NSImage *img = ImageFromBundle(@"plasma", @"png"); [[NSGraphicsContext currentContext] saveGraphicsState]; // Set the clipping path to a 'g' character [[self gBezierPathAtPoint: NSMakePoint(68,68)] addClip]; [img drawInRect: NSMakeRect(64,64,128,128) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [[NSGraphicsContext currentContext] restoreGraphicsState]; } // Test saveGraphicsState preserves a complex clip path // (expected fail as of 26/09/2011) { NSImage *img = ImageFromBundle(@"plasma", @"png"); [[NSGraphicsContext currentContext] saveGraphicsState]; [[self gBezierPathAtPoint: NSMakePoint(68,132)] addClip]; [[NSGraphicsContext currentContext] saveGraphicsState]; [img drawInRect: NSMakeRect(64,128,128,128) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [[NSGraphicsContext currentContext] restoreGraphicsState]; [[NSGraphicsContext currentContext] restoreGraphicsState]; } // Test drawing sub-regions of an image { NSImage *img = ImageFromBundle(@"fourcorners", @"png"); [img drawInRect: NSMakeRect(128,64,32,32) fromRect: NSMakeRect(0,64,64,64) operation: NSCompositeSourceOver fraction: 1.0]; [img drawAtPoint: NSMakePoint(192, 64) fromRect: NSMakeRect(0,64,64,64) operation: NSCompositeSourceOver fraction: 1.0]; [img compositeToPoint: NSMakePoint(128, 128) fromRect: NSMakeRect(64,64,64,64) operation: NSCompositeSourceOver]; } // Test that drawing a vector rep scales properly { NSImage *img = [VectorTestRep testImage]; [img drawAtPoint: NSMakePoint(256, 0) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [img drawInRect: NSMakeRect(300, 0, 100, 100) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; } // Test drawing into an NSBitmapImageRep { NSImage *img; NSBitmapImageRep *rep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL pixelsWide: 64 pixelsHigh: 64 bitsPerSample: 8 samplesPerPixel: 4 hasAlpha: YES isPlanar: NO colorSpaceName: NSCalibratedRGBColorSpace bitmapFormat: 0 bytesPerRow: 0 bitsPerPixel: 0] autorelease]; [NSGraphicsContext saveGraphicsState]; [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithBitmapImageRep: rep]]; [[NSColor purpleColor] setFill]; [[NSBezierPath bezierPathWithOvalInRect:NSMakeRect(0,0,64,64)] fill]; [NSGraphicsContext restoreGraphicsState]; img = [[[NSImage alloc] initWithSize: NSMakeSize(64,64)] autorelease]; [img addRepresentation: rep]; [img drawInRect: NSMakeRect(400, 0,64,64) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 0.5]; [img drawInRect: NSMakeRect(432, 0,64,64) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 0.5]; // Stroke around where the images should be drawn [[NSColor purpleColor] setStroke]; [[NSBezierPath bezierPathWithOvalInRect:NSMakeRect(400,0,64,64)] stroke]; [[NSBezierPath bezierPathWithOvalInRect:NSMakeRect(432,0,64,64)] stroke]; } // Test PDF and SVG { [pdfexample drawAtPoint: NSMakePoint(400, 64) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [svgexample drawAtPoint: NSMakePoint(464, 64) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; } // Test NSCustomImageRep { NSImage *img = [[NSImage alloc] init]; id delegate = [[DrawingDelegate alloc] init]; NSCustomImageRep *rep = [[NSCustomImageRep alloc] initWithDrawSelector: @selector(draw:) delegate: delegate]; [img addRepresentation: rep]; [rep release]; // NOTE: We'll test with the rep size (0, 0); it should still work. [img setSize: NSMakeSize(64, 64)]; [img drawAtPoint: NSMakePoint(532, 0) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [delegate release]; [img release]; } // Test NSDrawNinePartImage { NSDrawNinePartImage(NSMakeRect(532, 192, 128, 64), ImageFromBundle(@"1", @"png"), ImageFromBundle(@"2", @"png"), ImageFromBundle(@"3", @"png"), ImageFromBundle(@"4", @"png"), ImageFromBundle(@"5", @"png"), ImageFromBundle(@"6", @"png"), ImageFromBundle(@"7", @"png"), ImageFromBundle(@"8", @"png"), ImageFromBundle(@"9", @"png"), NSCompositeSourceOver, 1.0, NO); NSDrawNinePartImage(NSMakeRect(532, 128, 24, 32), ImageFromBundle(@"1", @"png"), ImageFromBundle(@"2", @"png"), ImageFromBundle(@"3", @"png"), ImageFromBundle(@"4", @"png"), ImageFromBundle(@"5", @"png"), ImageFromBundle(@"6", @"png"), ImageFromBundle(@"7", @"png"), ImageFromBundle(@"8", @"png"), ImageFromBundle(@"9", @"png"), NSCompositeSourceOver, 1.0, NO); } // Test drawing a single pixel of an image scaled up 20x. // It should have not fade out towards the edge of the image. { [NSGraphicsContext saveGraphicsState]; NSRectClip(NSMakeRect(670,5,20,20)); [ImageFromBundle(@"1", @"png") drawInRect: NSMakeRect(670,5,300,400) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0 respectFlipped: YES hints: nil]; [NSGraphicsContext restoreGraphicsState]; } // Test using lockFocus and drawing an image into an image { NSImage *test = [NSImage imageNamed: @"common_Unknown"]; NSImage *testWithCreateBitmap, *testWithoutCreateBitmap; [test compositeToPoint: NSMakePoint(800,0) operation: NSCompositeSourceOver]; // These should behve the same testWithCreateBitmap = ResizedIcon(test, 16, YES); testWithoutCreateBitmap = ResizedIcon(test, 16, NO); [testWithCreateBitmap compositeToPoint: NSMakePoint(864, 0) operation: NSCompositeSourceOver]; [testWithoutCreateBitmap compositeToPoint: NSMakePoint(864, 32) operation: NSCompositeSourceOver]; } // Test a 92x92dpi and 138x92dpi image. They are both approximately // 50.1 pt square. { NSImage *a = ImageFromBundle(@"92x92dpi", @"tiff"); NSImage *b = ImageFromBundle(@"138x92dpi", @"tiff"); [a drawAtPoint: NSMakePoint(800, 128) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [b drawAtPoint: NSMakePoint(850, 128) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; } { NSRect r = NSMakeRect(800,200,44,44); NSImage *a = ImageFromBundle(@"testTIFFIconWithAllImages72DPI", @"tiff"); [a setScalesWhenResized: YES]; [a setSize: NSMakeSize(48, 48)]; [@"fail fail fail fail" drawInRect: r withAttributes: nil]; // This should still fill the given rect [a drawInRect: r fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0 respectFlipped: YES hints: nil]; [[NSColor redColor] set]; NSFrameRect(r); } } @end @implementation ImageTest : NSObject -(id) init { NSView *content; content = [[ImageTestView alloc] initWithFrame: NSMakeRect(0,0,900,445)]; // Create the window win = [[NSWindow alloc] initWithContentRect: [content frame] styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: content]; [win setMinSize: [win frame].size]; [win setTitle: @"Image Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: [win title] filename: NO]; } - (void) dealloc { RELEASE (win); [super dealloc]; } @end @implementation VectorTestRep - (id)init { [self setSize: NSMakeSize(32, 32)]; [self setAlpha: YES]; [self setOpaque: NO]; [self setBitsPerSample: NSImageRepMatchesDevice]; [self setPixelsWide: NSImageRepMatchesDevice]; [self setPixelsHigh: NSImageRepMatchesDevice]; return self; } - (BOOL)draw { [[[NSColor blueColor] colorWithAlphaComponent: 0.5] set]; [NSBezierPath setDefaultLineWidth: 2.0]; [NSBezierPath strokeRect: NSMakeRect(1, 1, 28, 28)]; [[[NSColor redColor] colorWithAlphaComponent: 0.5] set]; [NSBezierPath setDefaultLineWidth: 1.0]; [[NSBezierPath bezierPathWithOvalInRect: NSMakeRect(2,2,26,26)] stroke]; [@"Vector Rep" drawInRect: NSMakeRect(2,2,26,26) withAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [NSFont userFontOfSize: 8], NSFontAttributeName, nil]]; return YES; } + (NSImage *)testImage { NSImage *img = [[[NSImage alloc] initWithSize: NSMakeSize(32, 32)] autorelease]; [img addRepresentation: [[[self alloc] init] autorelease]]; return img; } @end /** * A delegate to use with NSCustomImageRep. */ @implementation DrawingDelegate - (void) draw: (NSCustomImageRep*)rep { [[[NSColor magentaColor] colorWithAlphaComponent: 0.5] set]; [NSBezierPath setDefaultLineWidth: 2.0]; [NSBezierPath strokeRect: NSMakeRect(1, 1, 60, 60)]; [[[NSColor blueColor] colorWithAlphaComponent: 0.5] set]; [NSBezierPath setDefaultLineWidth: 1.0]; [[NSBezierPath bezierPathWithOvalInRect: NSMakeRect(2,2,58,58)] stroke]; [@"Custom Rep" drawInRect: NSMakeRect(2,2,58,58) withAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [NSFont userFontOfSize: 10], NSFontAttributeName, nil]]; [@"CLIPPED" drawInRect: NSMakeRect(2,2,400,30) withAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [NSFont userFontOfSize: 24], NSFontAttributeName, nil]]; } @end gnustep-examples-1.4.0/gui/GSTest/Image-test/92x92dpi.tiff0000664000175000017500000000162611627021117022102 0ustar fedorfedorII*b P8$ BaPd6DbQ8+-FcQv2@M'J` /*LfS8<]$NgS#PhT8L@RiS5"OJ)VzvSWV8%g٭oۮ:FӨUx_n#vb1W"e֬0<%, ns |S=K0Rfu S+4O{{*u6oa6(G:V ,OuNCzZ7}k J̻AMҍ EtClG4U2R$&SEM4T.]GQR%6-Եe-&/%UՔWRaOPmV+`K=Y6gԕ*lK]nrt7]rZw}xWmuz@@4 K:@Y(=/home/ericwa/gnustep/usr-apps/examples/gui/GSTest/Image-test/92x92dpi.tiff\\gnustep-examples-1.4.0/gui/GSTest/Image-test/3.png0000664000175000017500000000606511622356446020623 0ustar fedorfedorPNG  IHDRRg OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME4 ?gIDAT8˵T=HBQ!xJ TdK j6DG .MN">ynP]. u]5+ />xxa6x\>)frlR4ʲB[-Ǯ궟O6$jIENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/5.png0000664000175000017500000000576611622356446020634 0ustar fedorfedorPNG  IHDR OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME4&v(IDATHݖ1KA%@EI6 SBO1J \ce9X|M [хa`a1웵~ {ĭśW#!%}6El|=¦g<3=F.aqLшMl ~P.ͨys+J5͍eݞӾw}lIO:HP(u%)yp'9bu:?$"T("S!kkKy2v(;Z~jے{ ﵑU">IENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/svgexample.svg0000664000175000017500000001203011611362204022617 0ustar fedorfedor image/svg+xml SVG gnustep-examples-1.4.0/gui/GSTest/Image-test/8.png0000664000175000017500000000616411622356446020630 0ustar fedorfedorPNG  IHDR OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME5&7IDATHݖjQF?i%$fp6NF[H;06OJv+Y]" Z-J$B' V5HbF{I5" S<$I99NGVVKcTW@kctsy࿹ҵ1K`x$\ץEJNChxŶOcDx$V'.JH0yr M$aw(88y?/l.yzPB^V}v\q[Î2 ^vz}\ |}~ZIENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/4.png0000664000175000017500000000567211622356446020627 0ustar fedorfedorPNG  IHDRRg OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME3,sIDAT8˭T1 @D/S 'Z@*K[?: eXD(9s\XnwcHbdL@4`T?j&SMMhKs`k檪8_,;ݙWQ0 yk7CPJK 6̊,9 O'}e&H Tv~9y`)@}q6"1})Yŧ H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME48DIDAT8˽K#QcA6XY ˜v-$VN:tKzM)nTKۇ20c8&? /<ޅs;~x˰ij{?2,>?r*u;YhOV`0Ɔ}:8Џ PySڶmavl̬j[bBqqTҙ}=:KVֲ26o<M\eEܹ+4{8յ1Wo7ϤR1wN P^ׯ;N&2 PVKF|O(RҶmZYQTR;LK9 z7tZn%ptEIENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/testTIFFIconWithAllImages72DPI.tiff0000664000175000017500000013651411657336046026214 0ustar fedorfedorMM* O BaPd-#cPutBA8# LEcrLu @IH@  }6¨٬3Ca4x, J *oPƪ:uNA0ZK&sZim c]T85FUqs3mAǸѬJ]&]鯗4w9{S_`V uO;}gXKǻ!\0؞Շ߁?_>V\    8@(1>H=RS(16x16.tiffCreated with GIMP on a MacHHImageMagick 6.6.1-3 2010-04-16 Q16 http://www.imagemagick.org O B@(`?bPxV-Fc@t0MҰ](LfS9a7Pg 7_eZ%(P 6y>G0 QV@<',@ .Vy\@ˠ3woTx&]KS@ HEx;@̠9@vv.nz0L j@m`!+W5ᅪUHCNdV:@V ((9=S/&D;c>@2:dYAQ$?P Kd/#4Tqh"F/Gm-P *XI [Z/-%ʀ%" i" r2397Ls '**?PCL}IBSI H}K)ٻM= x=qG(BrLV@zoQc5ʪy@oK֘L;Rh͑v ߞ++ʂX9>h3vo_t",}`))A\$B)hCA|D q+61HZEvrTl1ǀ4͛(S%Ԝ -ˀ7/po Q3 A}( c΀q;eiP hwA tJvрGII5-DU41)"-j4m<V,嶌 وI戸=tX*hK z(KixM&Vjl`!>SDPn|x!sbimEPat 9j )b'D*u5՗Vݡwl=k=#pH+m©hlO6&JZ,}Sao?)J1 F x  GmS^ {xFL!q? ڳX& z jO!J<8ɋ HDRA,d!0m(@YX ޼I@ R+ a< o"t(Lc 셣`Z‚V(-Cb>,rK}p!bN'Ɍ.JX%,HRD, Ͱ QR`Y;!B&b1Ɍ$#Ұ,<#PDQ  (cq0 3 BU$x.HPc没2m)h]G ,8B t^;MKFԈu!EPs@J< Ub"ƙ8WSPiG(BnBAuN.xGъ{ L.@tR K$eaW,P3+@Ug-k}`Crʑ5" @MKbu`Zpe-qq(ѹ x@0G\5"%m셚Bd:ɓj@9$(A 7-C5duP0R[unȅ&\?%Q{=iw̲4,d ؘ_0~/Wp HZ/"O)C +%tWU *CD H0·~pȇЄB %ɝWV;JH-YL  7H@(GGǤ$7]ˀ4k {?.&_$__-j2 Z@6=e\x#z?H%,4 H DI8J Yee<;1VŚ/c@gcXܞ:?t4-$a gF)!,Hd#d2R*IITY$"EZN )'efQLĢYVIK+E̫H-%b+s/]sb0)vSeřJ[L933Bg5bsbjC7' d&LBƖrK):Ljc)X{&BZH}=$Whg ]h$@#sX@łag܈ĩN #@$>?G(7 [qqG+ & HS$\dT$/`I=h$Z'E9 }@18ļ(,h˧f.5E8d lS%_slC;ZP3J$3O>!Brc|rR%JV;F9X:7( H,p?~Oa"%;?*^ڴc{=UA&`wxu WjHſWdH2 \^ IX鿓afPhRzZ%ԇHVĬS2fpB1pK+cD܋+ͷ[=XRSbͷe.vb:N+pZՒ>0> ۼSK&sNsߍ@ӣ "˰Dmx^MVy䏓1*}̒{#zky<\ʽw c @D }[Pt{"8/m eW$PFoI"#EP)i.8<)P.삐pͬ^`;*㼚:"kòѭ$躡xo$p<&n$/F6BF\ ".ξ/dIp$zs'6AX @An$*_ b:@-! n|,  qIB0*G`dtM|`h"< q&VAf쭡$ o`!F+&K%,QT\] P6Q8 o8$ .Q%IkIr/πnFldk: LbA+s@-:!7$jCr!1+,e-b3pN1bHCA,8JRF T0`(;..T!.`$b,p1T&Hu_@A'I m'ȒmQn @ꪶ*"]*񘰢,ײ(](2a L\-?Έ@Dv##&?m ȅ:9 3"aRI5?Dw?zS-tT$2nv,^F#lRAtаFq!"ckw^"49JGdXn)HFEJEH,IE5;DDVnyNH`"r+K:`n|d68F~,@A>.{\!M>(ab,~kdVE\yeS$P\4Ӹ,s0җK(R$~5J2iIaCB2T+({A$o3CwA4a vzV(JOmqFO<2@˭p:0ca#tFD:h" k8s Oh"6x?) wk6b"η72 2Q}fNָ$$py+/ګ&=vv$n%Q 3G$$a#0t$(t$*'af&hv=!0qC*')c+xGfn,DQc'x;6p2r|`r/;$gW.@zGw~~2Nǥ0(%~) AvY‘E)07L)ܵy7:O % ~hchhl~avFNshȈȐ<#)/qfŲ(\dֵ`(tHX 8Vtwꔿ8QSi8M8ڐU 8E߇U9ǎJs9DD89 Al X91^9='9A9+/9Pb>$$W9aY8fO9p9Ws5bE}KY4TyZO}yX49w˜FAp7۞ib*   +  xY! !(=RS!TH/Users/ericw/Desktop/testicon/128x128.tiffCreated with GIMP on a MacHH OBaPd6DbQ8V-FcQv=HdR9$M'JeRd]/Lc7@e?PhT:%GRiTe6O*@Vm8_V@&}PXlV;%gZmVdr^ W:Y_Bۍ`pX<& ^ wCqWFW-fsYvcq=juZf]"Z)Ik[}_1=c#y\g7^8mǍz=wSQB!}^gzc^]~_>L, J]# ΖAT% re B=8CJ GLUN(Ī$OFmqr eH !QW)R4%ɒl;%%B(IҬ+_)*Ա/ W/&22LSL5D`64M;r3-3? ??(BPTMEALEҔ,QM 4=O4MQPULQ)#+VUUd \Vu][uyaؕ* bٖjeKShY֭ZE[6ovms̶\t޿]x^U|_ك&hl9~D(s\TG>t9Th:NU h,j 斶%[ol㳀մgۈ' A-pgx+-&hUrɬ<|+sπOD=(nuak:@4 "DbQ8V-FcQv=F20LWJ@ `/c)=7S)}?0(@GRiQr4A?:]V5VO v0 Zl6dlo&Vۥ4 ~m@  M;Woq;m De3Y4O WL:@}f&0mF[N/sBO4p9W4YlΧ.B:<׭ejUO4m@ی~v[A; F 0L G?B I D*:*SEh%F@݂S:}$S;Q LT Ukzw@YF8Wx/TL%OM1T6@Zer 6;[3oq*%Z(]_wnxմ/ W2z p|aE$m%6kE9N&U@lԗ VF5AvZ*I/mUrx-ADAݩ1Eb];sGcQJKe  >~{S;N14-[Gh= LhSuoIwc e@ 0a{+P1@8) ]H@8[Dp~7@wÏIIuתrfa L 9#S%`qJ@Yg-F>h! GVp)fI!dB.mJ-L$!= *˂楏 P$6B!c1, o)>A"P  J|& ¬^u_qFp~,) ^Z̾@**/dк#ql)&D BQgɢ0Lpb^j fޛ * LxB,#hq") T+P 񬗑 jJ)ϲ)$ "P%D̻-q-CMQ ) 覧As E⪅b$rx" I% ) & r\`6o& ,CM\ y' RA(ҝ.&I05*2>@66CҲyg.B@VV,z ) N)N$s>fJ0 SP)-^S pdvڢC2E )/hI-""I009`."5K6&z6e1l)p dJ7Bo" (jHΣ8l:Ӯ:=K8*͠$`mhsK )[4D*1b|X͉?H;TpUL#( LuA$J( `[ Җn*ScxI#ۀ~aC DeAH U#1 \@O7BF0"Lx(D6fS4'˿MCf\>j\b]K#I@)3 DD'*Hh|NI.A53`˴tS>g K)( |Ēbe=X4HUGS!ITVsO50a 7,\)$PL< /@#1;XEN⵴-lkU]?Zc7^mVբn!LL5sZeW *]N|`V%^yY1Q(-tcbaE"|6j&SPN."( ihC'Iћ &Rq'ADޛ fX̫F)_*rbA[e^m)? i=R)Vm5D)o:$AG*/: oz i e^`@,.YX!)SrmBعt :OI)g:B#7w4k7,4 t$\l.3-+uoYe.܌' N*wOgU18㝄B[p8=-7 {ER@xgN.0PBt>!DX^QVAEPPzrؠB`diq9NA PzpQTYіMV؁][4Pi)mqCPk^w؀3[5bj! H/\*ܮ~T*Z Qnd؀`SlMq;vnPǑpv i{\s0_|>^~@O;࿓p;@gd BZXOD =~P<^#ƱR\*ҸNG F"5BAI Q&HRrE*T灲=ˠ02L2:46BӐ[N<AP*P B6̆s8TJR /6 T6 #RQ55N(ӨUu^UiV\vu{_:T0{ }K8# (- [Em2IJRpsz0` _06/D75a'" b/Gc8?bx}Y6\;?^_L9湴U>sg95抝F1 [:jh~k:znŰl2)V֊ݶn;Vӹndk[m[<6Vͼoh|O#j~qFc7|?r?Et_=u:Is9WUrUTӨv=WeYgv7y5Qy7wDzIw{{ܫE^V>%M}L @s 8MlE r栔LD`OBaPd6DbQ8V-FcQv=HdR9$)'%RYd]/LfS9m7@ PhT:%GR@vT@J)VWVkR) yv;%gI)\FSnW;֫]Ϭ7kEbqX={?c2YmYgEOgͬW[o]ĤW(O]uw7)B] 'ρ xH2a`#6,ݭDaq+Tk> k~lY1<@|:rSaǣhB6],@t{ nlhm Of}Tu(툦ε(%qBg?+1Q`nmoP Bt>!DXsv0/ XZA!E2PP$r9 ` 鴺q9NA=ХPJpQ*\'$SoX [0Wi5<>g\+@7T;8p EK wr<8>| PP2jl"`BM&~qngOv< O٠;y|<O)'2Tj@]0 =bو)oB/ "!6ji$FmQVQrX C+7o8 G;R:H m"G22M &/؛(5M`*4#Pg 6̿0L*`/2TΞRͬ41 Nõ"p'T LIpP9N HR(UJ.:ˋTA CRRKĶB5WVT˰$2ZnsF΢c }b厞x j-D$tQW}lF*GݾP\ut[+Q.WUx<G2  __"vx2{fZ)Z1G6.Ca4(>:VGd&dVVYpg)]ox E>&~rV'zeXrC"8Y'9BC뺍N˙FlǴ֋ rеN8 {m\':U if2Cq (<`l5NSs<ɕ?ݍd!@x0,]p;)\EoiuXo WPP*lRp_>y{ͳ_|#,'?sQ4ZqzR&,9< '̝LS-RwVS1!{ZBzAk:^G7>Ԩ@`y aK0ÔeFW-@z3}!;2d aZL ѸNwp쎰>#5Q!]n.)Db}ў4$I0-BOܦHȤk4s :6jbGbY-Ii`,K2tS@8b^@H<s.M)n V-7N1ȚTU @ܝ ιH5j5M9Qj/zTšNZ'$CS4"/pCNaΑ~@8H+.TBbҸ |}j>''*KI˚Ff.I bi2:nhM,]G'@"YPf$ 02+@ OKJպ٩`V#t5rҧ E|'sŇ\btfy+%tqLF]Iڍ{6<P"zj EiBl"VAm'h 5ǧ@wbU  9zI78أ# PUy@`ʕT 7\6[m\ecA2(j%_@ 82_dU806|XF/p)=yv{r|F0CA`2X[֍OCK)h3%×W"'S? LZYAǙ@#J8ZO'@蔜OE 2x -k9=Y]LCQczP$K Yj=GčaY\D-$U¤eJ!<^%;,S*c)DB@ ͸ыl6j  ; -͙Ƶ'%t 0!.я`ÚMKws1|FЇ9 \ HBvBlSJ6s#^Ih {on!C $ 9m1tl( {j9#^ +y 3;6'd/ 6.{괳`|4{"8`i92 TvKh€uͣqOS5'@'{餫n`,W Q~[pNYO6H~@"@ZM:Pth 0^3'Qoք-(.ƴ&_G"Ʌ]+ߙ@ < A3Q]= >w)-9M 9@kכH+X>ց뼹C1CF=@?+(jZ;6щr:@$м:S+ . 鯾_(<Ӫ@ʒRZ%"a*< iם:M-0,`>kIVD6A.8#@|jAG"B$1,tPPǡ}X}wɚ;:@7 \cxƘ.X:GYPh95-ؑ Dh* 1@Љ:q0ΡR9h,O,"/8IE KXR@3y3|H*W M#t}GHYS;`7IS *rɍ ZQ79\gQk:5xhNۭ̝Oz**;#Aϒp̜O[SQx0ZxDlϴ҅ԺKH3xI8NQU KBҥZ;|M| YKFQ(Ui 5,&VZ.~;Ȅ׀F` (RgH4s( L B4A  ܪJI X$隥5|rP6!Dm CV#@:xGHxW (1(F0O8QA7͚ COM )Mczȝ%au0 Hۀ ZI@h,5翴=Y *<NќMųu ED 䅙 `Mej𔨊ܐPx ZVz.ɳH:ՈE,9"S#(](ׯD =B&S[ESl 䈴#a2VyUL/(kȩ;^88".BlLM4 6I^\L$ ZtU `[gckxXu B C ࠾  [`S`v D;PK. =H BKekp^:_iI7.ta7F؇S]{Ha~8ucG=KfՉ7]{ҍf&dp Z _ylac1Js@ ԍ M*J^%$7 Xýc>hYP`I91]lvk>-]HӪ$h>:(boBg,lbH5RkZ^lgO`?ɕR :֊-Zx}¡ZHPo([e\dE8ADBƔUuaKKm̜/@lvНك.d}XoP AAyznBChߖ GiݻjW 6mo ףhRl,VW;(W\j8Xli,|OP9Lp |Gι8;IB2< -eͷ$׾ f@|ؠy(6ͬm`P+nǐKddX40pl[φhӵ,¤ Qf4, ZȚ,ڍldpdtC’QH-JI: vVevU}cђ$`y̸Csd r{hV? !IG0 -5Λq{~r{[S CAl|,<wˆ:V{HP>8Mޤ*XCS9PoٵᆎN7F9n̞x; {y'3 ’n p4 ȯe\7ݽ:#WcɊVw^sv\ΗWv{Vާo7َz}[/{~ߗ~n_O迯L0, J&AJA- 0+ Ađ,LDPSe|#ѴiǑ|@mGCq#Le#?2$)&IR)Ȳ Yî!/L 0L6J\9Β|M\:ϓOn_?~_"=@, L=- 5 ÐW "ĭ,=LUől\DD_uǑ|gĭL#L%ɒl/ ](IҬ+̵-?)H+a.L,3LԘKM\9Γ;ӊI7? AЎdOBєmGEJ{JRT5MӔ= Jm,SMSMU:ԩmFյ]eY֕mV)}^W5}_ T*v׶eٖm.تݎY6}kʹک۶qܗ-̈);]7=wkvwZz^W}ߓ~. V$b5uJ+ 2=NTd~.^e晪9~Yh} pgLN궊i^~cdNFjiǰNO^mk;  pm7$'5x3/LkB=?]>um[unvo/jv߅7_oylw zv"{?ƾg};_~NQ ۔3 @ƆH'`P\V)`!P"<~#P#“g $.+J!PC 9AQDX?H6"DxII1-'(***!caZ}#&bbQFj O#BaPd6DbQ8V-FbHdR9$M'JeRd]/LfS9m7NgS}?PhT:$8H(e6B juVKH5zv_XlV;%gZmVe vAnMƕ|`pX<& bqXf6}~Sk N2w=htZ=&MfVSlbmnw[}}F^a;:Sx;l x/h@F[(]U pH\HZǀ$\{sP L H"ـ7mwot~Qx*`MnM=w {*@X4 BpDX^1F~A!A@2X#P$]Ylq9NA 4YIRHQ/*:{U|Wl[5hz p%q6n$yo ]\6/,N?!M=?'Izf[Hmiute/6`kbpY˟Gr ptΰ SAxA9LB|߷?0 v@p6K@@h(!|'B4 zNTEEʈtg)ojƨilH+",$,?#k&I,+K0.tLӍ563/`NS$t @ODPDAѨ$~e'(*=.4ϔ>ɛbfe@ PIՠ XU:FUo=U~v"Xte.kUYcuj' }ZIŶ+$\ U o(ku]Eu5Yװ,7i_Àv}֞ !3) p^8Km7ޗf;5^y S dN5-Ye^I]Fv yqh9˨0Q!dڌȂȗZ#:olv][v͊bɩOۄҙ /0q< Զ7VqqQ. |~sā ?2oHxrv]7<ژ\$xyLJE' !cwH54|O} x±ߴ/+j=}/'O@is1@y)A4\G2`%|%3 KIO`c8 (h7p!*T?E:px F&!Ģ0qf 7訃G x]@fq 9-@G1c GtE9!H4GoCs#@2/!$Y6Ih@Q%41U7\˛hF]1v2pب/RJQXILS$őr!DM\nD0 jmm9"͈q+tuNgs{~fiK3Mx:O =Z/eӜAC@u؝%!fREzUC?IL Πy;)liYh 3!jR)qLAՊq)m-n]@DNvjRmY#b"eg15e.ѺRuWJ_!?hz'`)X5d),0!zr@c@V+%ڹ3 RWe" OrH#`RLo@J]mx%.1̒~@mU_ø&=`7np:rܘ @l6lS-,/Ѥbc(-~.:?$c`Hjip.Vr_vQ( \')XkB;Xc8r;}^AqA_EȞ>J햌II8e0#C-„ i_ {d d&R3ad8fς\ŦIL3@LG\20| ^ 8%%&JD0 dE`݌"E^_{o4#5OVA22@MZnKמpF}ѭ4R9l~Oq"d?C'̼bFi>_Ϛk6̊@@S?`+/@2?>І >@˯8Rpy5[5!t,sb@t 2#}3&eIjBD&9+*B,-B<6 %40KZ!pȏB*,L-L. &C:$3AD4C7Heh -C$AL@T>D :DiDKKQ50XcFNCOA='$<.W!|Nd1LLMdKES20- 1AE\^h O#BaPd6DbP V'C`v=HdR9$M'/@ Q/LfS9 T4}?PhT:% G@e6@ j>/v_XlV;$Y(ko\nU\s^c`pX<$I1W#F4ag%fsYEhHM.ڍdGmkv[=]|)vUsryZ(Aˆk^W1Jx|^<ӻ @e:@x+~_{+0(mPdl<$P) B/ @TqlYƀN? ǒ !d J*ɀU'뫍"J(r@n`HoM/@O=<4 Gt/.) EђG$XSMt-O ؼTBE!'ETuhLr֎[t u"X+=b52TYmᐖ>ڋ;kaNn]g Q0hVyE _}=woJ}.Ԙ.QF!(zb4`f=#ǃ6Mv]fU! \7n;Y%Oz(Oi ڋzdU-ϫW4& Ql޶ٛNݷF{8.9߰lN>Ѹp qɿ*w^ hHHTx^}騣^|y}_~p&O^|  >'`;| >4@j"@+ :F MA='aa4p'[/@":F@9&48TuaM'*y8I;Q*fb(6+hb\dL~'ɢcd\2;$Ac2,yWl Lki<J LBGzt#eLH(d)/j^'>eLR@.e &%hRp#pǙnFa7sL%)e<"v7_3Y+(:5L@9"~*\$Jl\w4A4_ `E^L@MlR9,֒Ib%uRԜ51ㆪl9FROAA$"bQ - QnCl8Deali4VSZ4+@ \kmnFO5VU Jt3&W VL ,Zř_KɅ vT1M4JljCX R^FdVʎ[S40}+$]T#bv3e+ ѫ[6yrO$w:Ё{ٙc\.׶,"r#Ǿ 蠄l 0VigAJB BdPP j+dD$$ /L<@`bո _,h|Al@g@lfIԍ0YtOh@( !0\2"1(RcѨr; 9&J#X.&3)k6'3{>@4(#R%-:XN;1=PXI#ZfGX n.4 Z[/^"t F08, q>b\^ǀ*m? ]9ls;4995 V׀ j(n%%/.:pG0.Rf &M<>+_5z:X? Ų;@sa)vaQ`VV"蕧"؇c2(]# 3;Bg98 PH]e VVdc>Zpb0g^jɵ>IrⲌ~9 ƀ|ǢZE@ɥMvE*Ghfg*3k # }*M,p: [$ ,ɢ.|FҴ -ޤ)&x޸~eHV^k@v< +p 9u [EHvr @9rU'.2EC@|:L 0 Bf`2}\urFs 7Un!{0MKb+dx!ƍCAhX4LJN\u zpN-%5WR~@ - DIyde^eqυ-pyޕjNJTT.՛zn纍8s<Y/Y[薞ӭn3y=CҚ(n/k;1a/8Ψ@pT .`*JI恬hA ``- 0ذ?;F&f/pUZ !,X907 !6 B8n|a AJ;/@nE GI'Pţ\l L(F(\`|d]v4I ҍ-L"\e(aQG5cxuJ+ԐXc܎3I"cY%دғb$c8iVlM2D)/#!I)re8d)<%81ҋuA<l17%piw8&N6J[RdFR%,\Z.?~frPX@͈ &s P'VBҐF>))Yș3- L3~LkT\͕jm5"SȘQGU "N:¨5FBUd=u͆fuO-hJ~]"&: վ:`s6lhB‘.RI@ ;6{O}n/ Ѐ B-ڨka-Y*#ޛ,j>Ol?q VܠmAZۢ}@$\pxxO-<6ňSlk}Ӿ}^TAbL~uJ6Y[ٌ C?Jv 6鯾4|W آ4>Cm'wGXX<\qd'2wS,0h #ɑ1E]k<4L@QZ.X" 3h9͎l(&k!p*5 xDn89d &jѥi -Kz z'M>W2-:ؤ1ѝb@7-so&b$=Q@)Z_!x Ǭu kKÞ&'vV8?,#s=mx y/!{jGV_&I\]ԈjY 'U!]t=l;;,T,iTͪK@GC%I; cǙQ x ٿ8iǂWf rqm`kx|GSːF1=4; 3yȎhC@pIwc_3`[vR&^#,1=t: W 6喾Ch`00x~'%TÒ.[yDU]`eNv2BibbW O#BaPd6DbQ8V-FcQv80Δ24]/LfS97 }?Pa G-iT)r^T@z265ɍ_@%:`V]\nW;w^n3p " `pX<$muq@7 $d@ |?-])g=Ce I:\Ոs5j2@LK0ry\g7 WCe}Ͻax@'[oYG:@ϧ&'f (m % Œ:p5 f<wD  Ej/ d]$l q˒ǀwtrhbJ)ʒ /q-TsùQ3 @<+9P(ΑJ3sy=7.AsCІh\%Iȓc&`c.=< Qԕ-LQUWr*ր[tı`E}S- V(NM1`ZUVFo4[\sҲ3-)wL&=}ߔR:*ksbJ`ߍ<ld'K-iU!FlЈYYg-ȄH/陆]9en ;.\6IA>e]C B%pVM?$\5󊶦MX{b ]OQl Aݫ^tXE/;ߧ׉U{Ϟow>*%!9ϼ)ET)ya? ~QC  /=m-. AV@9A Qȝ!A \`@vCT(hh}݈@hP-1T:+%EB`pW8$@ ѦZ:*DXXs24.F/0jDlJ%C6=I;,pks.H@2ߜ=@.i*^/aEź4 \ɑKHיhN5>p~iUS*B*^lQ)4,%z0?jϟYܞJBuƊP-Eҹ8:PǢEd@WРiE#)dLT!V1T /j! %AFbwH)Ǩg{ %ru, RTFj*ՁTui*i94@SÜem9,O_MU螁 jLo-cŭq9ePcnrs1A&Y!@ZLMcp ZlelsSDHl)e }b9_qJ;u2[>I1]ԬS*X>umk il KX`=_o0x 7 r#s9F  8B ]}˜n^x!:yi :RE-545fMzǹ&42@o ~Q=18>D&O`}\<YDq͙rdZNś+~@< ?Uܼ3=Ylul՗IЅ=,5 Nl20}Z gd}t`UJƤ(.p$6À;-WcvXD^f8m}u2#WUYv׻ۥol7I=(ފ-ϛ mǠq$S+S[ @бxP=xޤ[,]СJN7fe3D2eܽ#bӫ@sҬW>/]t.w*stg/WNkDG~zFvRof(]v܄:T`r[b}N9b,>? |DM۬=,<Pێ辀IA>zq{RD{(|_G}?|K>wD;_!C}ߧߏ}g?~ߥw?O7k/tP[ ; o]IJP!I-.G5AnI.PUQ-]miGPqI}-G lU Й ,{ P   l 7 D P + [  k !+7Pmj 7CCQ* %G1j9)QEuMiY/BcQam)NQq1qx"Qzqq!weq'QQjyU1g9QˎK1QZ r i 2!eI !R"(O"0_F!#2=p O#BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/G8Im1NgS}?PhT:%GO4D ITjU:VWVkUfM0o]ZmVeo\nQjXoW`j[G gbqXf7W.x&G-fsY[cg=&Mjf98=;Ulv[=GE w[} wryVIQz]>Wkݾwߩ%/zc׫||I~[/g ƾ L+B% : B5 Èñ Eð£DLUY*e5u M+$#JIRl'2)J+d-˒w*.s1̓*%-LL57M$;ʳ=ONAS!CPMP4]G4C5IR,Q5MKOS DS5MS_UUm\Ե}eYkՕu]5y_ urXv cueي=YmiUk Uvͽoq܈-^\W]r]5l]pǎ{ߗA] W`06 bx-'a5y^]%d^c[gy|f &niz2F޷e+ٹ[hznQ%*I˽lp zq6vhgrue| * |_wإ^a~s @͝ AT. CKEn9Gv$Eq׌%/&fi)MEQ,UʨxU52%ke-Umu]}ZXfa PՍ=NHyQ tfEZYK hcmK?x ]kW.9sǩVs/|w-;{-+L B%[hA`p{X 0l,C JQ@1*jQ[$KֹGr!Hr"zH]%"\PIl(J"\pb_K1@TD5Mi7txM9=< tиOzk EQte>tu*G%2T-O/geBKIU`WS#[VDz-X_%xcYveKxY֢. Zj'jhk {ɉSy=n]mc~t^cWU5|Eu`xF58]Ԁ@׋3їs BMُ Rc.fT I:ә+8-Pz`hٗNsUNfQjC`Bư "Enđ纶շmV SL ;[0oT<i `^;`m3Ȣg +t3OS59*J̙]jvqw}ޠ~dA'k]zyOr\`okyBv t(*q=󂚁dCi-,p bPwQdtx 0BCQ^:IcTk(06pӎGxPD{?CxQk,h@R;!̓/G9 UDO t%@jF4)Q*HtnEy2,Fip\*[ H|P 34P{p k-6@KGM1gZ-S*d-w7<@+'ksMg@L8.KgBP8: GcrF\=LrT破NLF } |`֛RbK*T`{RbLKGJpkmSҫ0eV@#?1FiHkm \_=N+UAB e\bO\^T{RAsDj^Z s̏WR?ZS]kD5P;@yRK%l_unF׋d4BLiApQlykCX 9X"+%/S}sTh+qza΁=_pG1Hwqn% `RrUEN\vD1s VCG.o`7qO@q[ Z (1_T"kbGp/'5A8ܾc t@.o}fuWQwf |~@E{8??S,Ph[} ! 4pD{>T*Oől\DʼT,_TuĄ 2(`IA%򌀻Rc -E11̓+'s475N,~O-=3@A5 H;QGPI=,!S¸R5 EQ3B}:)SeIUՌ5LՋVֈ|etuHVYMa݌vH2Y6izyT(uUmۉ4Vջq܊ssEԺXԎr-{ul'wD䬷ٙ(j@b~a84_I0E㶼ąd9Uhf 癀fm^WvgI&SJ֮5)bHw.zOcAP// L#ksr|"ir5+h:0%::m#V]v="iۑγ; aŽ^y+a?К>Ꜩ\ϓQt:/}glvu~VyKd~?˴2˨@=WJ@8@?L ,40\iK %o *uԊa ϐˇ@CꟄ <-!"M@G83Uc8$PF |F!17 L* áJ'Ţdhh#49$L\,?TL4%)w</}/suw7kaO+x| n./ =~+/ˆg8~wCh @0a0@th xrS]%V"0d -c"0"%0 9iP.;9EH#ղ?RM,]Uc `A'eVi Ifu ]jtD䅞JA$ꁠ7&|Z2(2;a_@(:Q }YD,z}V ҩUF$+ Y*Jbc6vkM&9:O+FԴ+*2-;B[h;o;KW!U[c* 060U {wbS JAaiI5q5Ȁ%ő4 qjdo<͡(P΀= sOрI0GԀ'U}a gفw5aJ3aK uRyPˠ# BX+{2mр:εEg[V|:9ms dH D?NZWg2|0 b֪T?@'=0ArMC/#?6qURN/+!ЎrP)+wpIrƾK[pizWj-0A@QCyeq r8.,{[lpHu5d! Ⱦgc|;RYRZW}Th]Ǝ XS4pfGH6@x=p_rEb܈1Ta,40?$JAt JiryA^6'ݔYjĢBˢҺW*يceMD 3@Ț H ,~"B ¤$pS%9O 7N¢T˸  fyഄϺ Y'KE jk&aag_7'P\܈K4mb*izZK8ɺffd !RjzJAJF2S[wNPSu"*)(7"*W^pY j[ 5* +o,0nr%z$ύ ;zXe #Tz!ep ,>DBF ֪Jk = Y[@c6C_`-!4K4.suSL Bbn`LFBrRKX৺ky cI]^/&o= dޛ|/qj"J*5N(1`s76xYvXHY}ȕPa/0x`w Ll2Lؒ*qfۛ(,]ĐpSKNK+֎ҤL$ /%و9JW*s"$8FH)E;[3BLJ:r a-=+Ux86")C$ۖQ7}_3dke jY7oP 'i=$fbr@ o@d_Y{+uɒ(=Gъyb+JEI5 JAc׌7OƵ661K+T(@ZA_X--QMYZR4WvG% 6}HEǨ< fڽ]U 2ML|f V&ҭJ 馠|`h@  B\2"1(R+ h6$1KP\[.&3)k63>P(2AЩ4]2Nu &^*1pv*ՒKan4n -%S~p4$dÀ-w`_d /+5#hh&+J=j^c[7zl-wFC[kz7.\n6k8A:=+!'pp.ג;_\R6> ?ӢM4J be¨$0`FBD 8dѐ"b+8 >c&,#HD{:r*>[VvC|NyID/%HneBe7&BftUQ$+br`z 9h z[dX]9(D$* T8F.I v2k%jB)vq6b E]P&EJ{tnpz'Ʒof;@*jKp ²eL7l% Us1@qT" х* *Z+3L#@?F$=DYtMV-lsVK-o^SU@0>^D 8ڛ_yqo[s]aM^+ <]q\Jh: Xeun1={'ީ^dFw@,e7lQXǾ:O = ߇~FeE>q4@,}@<`)T*ΰc(^uCEh7`&%ϘNC,`&mu)A) (wT/5 `=L-fN~/!#]`xDţHт*"! K|+o<;ЮFnJ1ʄN 16xLQK@tOXCz⤌WI *eɩ)nGIتG3oqt!7rbM;b\Ԣ0@hteWiI3BcI<[eH)Ħ=x46%ys!̙O (S3Mt 6dbqT!*~>9Yt(uJ6_KTDNBL%F&i1Q bD*dLYMM ,:iS:zL9!SؐR:KP3{ X(G֑Qb(zqYAՙPgMC$Uf+7=\%MvFe`l*ˤ@48,4+Z*ؑk*EzB/xFulڋnE"x1lABưR UrPf7c<2kLT-!0 Ş=hn-'^:Ȇ'E1Yr,c.d`NB,/H-kLpٸT!чgp Zya[_4ߜFD4G/q; uuv&>H=(5X$-+ǖB?hțnfy'-#A)@a8ιԫ)MS4"(B @рΙ].gI[A r\D"caŭfeVl6'k+֟6, ]m`l_Tt[&X` i{ROaSeB[P>7*M*Mn/Wk^ 0{ڛyj݈NRKq@uQJ3$R_( S=ÌI{xQL\pu+@ t01 8)9,xm DF^/ϖܬHbipر A 8Ǵ; <'i`x7\Y[ O#BaPd6DbQ8V-@v1HdR\]/H0m1NgS}?;@->R@:eOTjU8@TAkvq3_f$gVYq"V@wU*D y`a '`4`b}sY,i6 tZ=&qu{Qt`O0 z@f[1|}oۻ0@Idjx- ".DQ,1TdpHi|1 G! ;#ũ,2l҈)ʌE+'˒lTRĘIrr `/59TY:4c/?A|E҄4L5M3 :aԀySӕKC- UWV>2PT#@W_ ;U?Y ZGˆUiݬ VV[-*k "s7k:s^ 7t^Xطs:,eF( _XJb RUZc< Sd,`I˙XHOC՘gҮ_9S6g֌ HXiJƤ xb%rҵ( hVOpM'h o\.ç7ɠk? Qir`Ps AtHӀTAh`#٪S:75(1!O} =/.3J˾ y޺ .G/'Є~0R`v .J)$=gNJ'cP" =M<[@PހhLMPf>Ё50&"y@DCJbdl"7 "AS^3j*KKr E[@"PFc` Lqf<7pTy01 ׾eAW i@Fc#,`rLQ%`\7%[+qvP"y$Hd V+M-ym)`? r|#qPy;# i ̀Cޠ-YO`wrz]qx#]ʐ'y^ScF J/:P/ӵۏ\K3>k@>p1_R5sh. dpM-``r l 61 W@(LF&bF@3\JcZ2.DI9U㲰\*T )]zne~`\bfeyy|ĉdYpbcVN gid P 2@@PL(j!qza1,)Ud `iW,5T\&)gq_d`,@n\ {pDƚ/4@N%&Tk@SB,fw,@fvY|plob L|{C_0L,w,&Fs& @8jZP_3\R{7W0Hh-N:o-,+ \21eݍo\D$ٍpEO@x 7k6p}PQ2gր`}y.]5Nn>Ӡ0H.a`"1SϨ@T?+<j}/ՠob ](b\dp@`0:ԅRf<·YKvg1z_8f!B $%*9H3!" ޣ,RJ!<ofȭ 4،` h 41 4?ZBms($ <#hڜK.FbeAO  pϓqF)r⨤hF[*Tf$߁U^2L$e/HA jfC'Gq1@y`DLBP>Lpn8")>şYt0g$`9D~@r-T (-CD(}LffFpqpB“~3֒(aE&`(GUJ4qc51iˀMҞ0GPSv`b86 g,(m 8^ynJ ZzAG%@B;u[# [X%VVW>\, *Fe~â-h v: 7N o ,vri]YC(BJz=jOfeS[5H ܍4pcPޛ{`90YQh4v#+ W-b q lFN%Z g9`BjA. L0bS qŨYAgJUi$/3Mwf݌A)8%GȕUx:Y0WBj2ij؆(+d'@Kj$ҋ64̮ 6~ӕ)Zs+)Ji0>o&bdFU|`Lli7rV;[) 8naKn6*CׂBCmP>A xSh' NT\%Yi 0n"e |a^R%WvN4݇;weL{ @CZ \mKʤT%\ KtYDQUUnL@z,_.) 4-u.$wD 5T%1ʈ &s)^SǴ5=il'= E }wBRH^r=}H~__X<'8?ϣv{)sl,w3L>K506:ܳ7IYP3*nMN=#:X T!d`i d " Kc7y J[hUD~z@a8K(-X Ka^P>nـqWArmeb-" hK 3QR[1xW7+}7J05(\H)`Bmm_}7`'0V {o$%EVb0" @SˁT7ЉNLHs8%Eo]SaV()ȡȤ33AƇv`stطp&6ngztxy*:f0nVHEW'>t`?P`3zR]Bop6t uKe 9<2huA:!CDI9FlVTQQM#ʔTQn.$*@@ +@4<(=RSD/Users/ericw/Desktop/testicon/512x512.tiffCreated with GIMP on a MacUYgwC<  E\R%HHgnustep-examples-1.4.0/gui/GSTest/Image-test/GNUmakefile0000664000175000017500000000262111611362204022002 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = Image-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest $(BUNDLE_NAME)_OBJC_FILES = $(wildcard *.m) $(BUNDLE_NAME)_PRINCIPAL_CLASS = ImageTest $(BUNDLE_NAME)_RESOURCE_FILES = $(wildcard *.tiff) $(wildcard *.icns) $(wildcard *.png) $(wildcard *.svg) $(wildcard *.pdf) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/Image-test/fourcorners.png0000664000175000017500000000267011610156477023025 0ustar fedorfedorPNG  IHDR>asRGBbKGDGۏ pHYs  tIME.~S"tEXtCommentCreated with GIMP on a MacwC IDATxKTkc604 ˆ [5 Dp , ѮZRE)*f"]HP !i` D}[#{Fϻwhll\6?~fCLev;\*3,ȑ#ҳj+++H t,e)XX\@$Ϲ90'QJ+P@ %J(P@ %J(P@ %̡GY4b.GxhI%J(P@ %J(P@ %J(P_סR)X*+A_>عa7oԔd0d202ΝPV>Wŋ( OO(B__m~¡ffkך=}m<1f}^;N3 _9̒IJq/c-xoۊi03 ne,Ai)?ג;G5 |jjIZU5<.?C"J$&g7[9%v_=jzzo{iY*eoPX2b_JJv]>&#BصkxBWW?W{{*X L&÷ +ܸ z|6Jp= ENL˶b1Z8p %%JjY#%J(P@ %J(P@ %J(Pu||/,xɻIENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/gs.png0000664000175000017500000000756311610171451021062 0ustar fedorfedorPNG  IHDRqЀ"sBIT|d*IDATh[-lJʠA 4h  ,4hРAʠ2000( X Od#rn~WJgG(ePU0 !@OnC]W~ymͳm!CYFAk Y/DfqFͽ/y{[#s{˗/LRqGOy0R u]f>ÞݟC"̺1t6Zk9(R ple24StCi:sxRAh3-0}i9V#MSH)( eY Cq*e@"b# [ҷup<戢yEA0 !|/[Қz|{(FDh<m4YA)uyyah`ww+@Qx||D? <}=Yh9,˰lsLB`2Iv]]]H, Yg  ѶTyZ):IR3N;wM >I,pvFiJUWkZlVHcU+eabg66 d 7P EZk5͓qR m i$Z)m_vi ҚZ#2`A{ ¿d4M @ZkH)'~B ֦HƘQFr2"B, !ijYyXwy78rDUVh  pL(Ɨ̼Ҝ&6ZF@12QsHp8ܞL4 Q;)t2 >@HHc{A|zz' |k q? }C. ?t@:Iq}} );f "v&W^l>COkqOPt3Mkq6mFª0. /Ea2BiJ>#. 2eZ;b7_,j #嗗K !DMA+ ,<$10$S !./ u />]H}AB_B[ftLaGw@1 JDaxX M<)naG>W"$!sl0 P]BvȌdͶS l6keszQ5( _, y!ʲ gMk̕eGTUæڃrC/))]wpȱnpwwb]ʹ& 1N71FxD3o-00MSsFYRO_~5%:Iao(Kbg,s!vEp~~a¸ (¼c7 ZIjXᘛil6cl6C6$LH&<8uE,s|Mm=kb9TTgREDaC e<,>EDYV$m_&r@J2msFeY)S~̹OmzFQ1&^Xs~|Yi4_# CMqytR{0xmMqss+̵("JØ$1e$ue lDW1.Ջ$BR:ň`AϴiE@B\\\ju`R}.ʅueUk$FR*il.@ vK!ehRJ2ۍmkZ}ۂ1n2ZǘBt7 vt}ʤ`p}O/ DQl&2\/efcw.#( ̀m|zv EQ˗/t e6L\p(v-qC5]in)02ri_zԜ5Ϟ){-*߿Y="ݽ_ڏsFQߗ'Q?NVm,pol;}6W2M|4MOl]5x̱^?Tq}}=~?Hxp=1b~'@sHj $IEԠ0*)%tQwY}Ήcn.l2YwOo 0625X;B\]]AqpȰyLMo͎LV&0PlaKߗN hf4GquPhLwMC>k@rF~e[,gzn?9ay'ZAyY.Z CHS) %Ȝ>ql"Ɩf(߭i[mL09|ݲȤrDLą}_ GC9sZ´34 9ň'I$}(? FˠPLp}}761lτ߮61|5]CXzbva5}ɮ>Zo=݋vjeJM<,uM$NOʲDf,EmK)PiJRHlj0/a 6cߏ~|vg~75j?8x_u!4{ ;Ղ?=yCDY= `D8eT'FG#b1. 軟vxݙsQwIENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/9.png0000664000175000017500000000612211622356446020623 0ustar fedorfedorPNG  IHDRRg OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME6^ IDAT8˽KBQǿ>5g(Z4E!.`/Gs[5EK`\ Mhi߆W{aA.=={$~@UTV}YJVY;6zCY9>jHɃ}6Mmr.(RU(I |;}ePڜO]Et\Tz0N6ZXո<31EVt>S[(hZx=" J/vlGO%X~L BFtN\]( ܒ6d6M[~ rFNA dKf>g#Q^/j|M]F{b'EMav}>s?L 7&IENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/pdfexample.pdf0000664000175000017500000013362211611362204022556 0ustar fedorfedor%PDF-1.5 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xMͿ @ =OwI<AMM:tIu{BVحK<Tԗ> /s5 5 0 R /s7 7 0 R /s9 9 0 R /s11 11 0 R /s13 13 0 R /s15 15 0 R >> /XObject << /x6 6 0 R /x8 8 0 R /x10 10 0 R /x12 12 0 R /x14 14 0 R /x16 16 0 R >> /Font << /f-0-0 17 0 R >> >> endobj 18 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 51.200001 51.200001 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 2 0 R >> endobj 19 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.5 /ca 0.5 >> >> >> >> stream x3P0¢tDb.P XE i\ c endstream endobj 6 0 obj << /Type /XObject /Length 59 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p20 20 0 R >> >> >> stream x+TH,)I-SH.V/02P(NSO4PH/2P0P0532C$VQBW  endstream endobj 21 0 obj << /Type /Mask /S /Alpha /G 19 0 R >> endobj 5 0 obj << /Type /ExtGState /SMask 21 0 R /ca 1 /CA 1 /AIS false >> endobj 22 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.5 /ca 0.5 >> >> >> >> stream x3P0¢tDb.P XE i\ c endstream endobj 8 0 obj << /Type /XObject /Length 59 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p23 23 0 R >> >> >> stream x+TH,)I-SH.V/02V(NSO4PH/2P0P0532C$VQBW  endstream endobj 24 0 obj << /Type /Mask /S /Alpha /G 22 0 R >> endobj 7 0 obj << /Type /ExtGState /SMask 24 0 R /ca 1 /CA 1 /AIS false >> endobj 25 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.99 /ca 0.99 >> >> >> >> stream x3P0¢tDb.P XE i\ c endstream endobj 10 0 obj << /Type /XObject /Length 59 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p26 26 0 R >> >> >> stream x+TH,)I-SH.V/02S(NSO4PH/2P0P0532C$VQBW  endstream endobj 27 0 obj << /Type /Mask /S /Alpha /G 25 0 R >> endobj 9 0 obj << /Type /ExtGState /SMask 27 0 R /ca 1 /CA 1 /AIS false >> endobj 28 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.5 /ca 0.5 >> >> >> >> stream x3P0¢tDb.P XE i\ c endstream endobj 12 0 obj << /Type /XObject /Length 59 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p29 29 0 R >> >> >> stream x+TH,)I-SH.V/0T(NSO4PH/2P0P0532C$VQBW  endstream endobj 30 0 obj << /Type /Mask /S /Alpha /G 28 0 R >> endobj 11 0 obj << /Type /ExtGState /SMask 30 0 R /ca 1 /CA 1 /AIS false >> endobj 31 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.5 /ca 0.5 >> >> >> >> stream x3P0¢tDb.P XE i\ c endstream endobj 14 0 obj << /Type /XObject /Length 59 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p32 32 0 R >> >> >> stream x+TH,)I-SH.V/06R(NSO4PH/2P0P0532C$VQBW  endstream endobj 33 0 obj << /Type /Mask /S /Alpha /G 31 0 R >> endobj 13 0 obj << /Type /ExtGState /SMask 33 0 R /ca 1 /CA 1 /AIS false >> endobj 34 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.5 /ca 0.5 >> >> >> >> stream x3P0¢tDb.P XE i\ c endstream endobj 16 0 obj << /Type /XObject /Length 59 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 51.200001 51.200001 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p35 35 0 R >> >> >> stream x+TH,)I-SH.V/06U(NSO4PH/2P0P0532C$VQBW  endstream endobj 36 0 obj << /Type /Mask /S /Alpha /G 34 0 R >> endobj 15 0 obj << /Type /ExtGState /SMask 36 0 R /ca 1 /CA 1 /AIS false >> endobj 20 0 obj << /Length 38 0 R /PatternType 1 /BBox [0 0 52 52] /XStep 207 /YStep 207 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 -0.799999 ] /Resources << /XObject << /x37 37 0 R >> >> >> stream /x37 Do endstream endobj 38 0 obj 11 endobj 23 0 obj << /Length 40 0 R /PatternType 1 /BBox [0 0 52 52] /XStep 207 /YStep 207 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 -0.799999 ] /Resources << /XObject << /x39 39 0 R >> >> >> stream /x39 Do endstream endobj 40 0 obj 11 endobj 26 0 obj << /Length 42 0 R /PatternType 1 /BBox [0 0 52 52] /XStep 207 /YStep 207 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 -0.799999 ] /Resources << /XObject << /x41 41 0 R >> >> >> stream /x41 Do endstream endobj 42 0 obj 11 endobj 29 0 obj << /Length 44 0 R /PatternType 1 /BBox [0 0 52 52] /XStep 207 /YStep 207 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 -0.799999 ] /Resources << /XObject << /x43 43 0 R >> >> >> stream /x43 Do endstream endobj 44 0 obj 11 endobj 32 0 obj << /Length 46 0 R /PatternType 1 /BBox [0 0 52 52] /XStep 207 /YStep 207 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 -0.799999 ] /Resources << /XObject << /x45 45 0 R >> >> >> stream /x45 Do endstream endobj 46 0 obj 11 endobj 35 0 obj << /Length 48 0 R /PatternType 1 /BBox [0 0 52 52] /XStep 207 /YStep 207 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 -0.799999 ] /Resources << /XObject << /x47 47 0 R >> >> >> stream /x47 Do endstream endobj 48 0 obj 11 endobj 37 0 obj << /Length 50 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 52 52 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 49 0 R >> stream x;n1 D=Hx !M)0%8/4yI WcdE ?`6,?6vAd5 ,8Zs8 H Cj>Y8I`! ѳC.(sZZg+ Do w^t!QޓQv0=&waLOe endstream endobj 50 0 obj 213 endobj 49 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> >> endobj 39 0 obj << /Length 52 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 52 52 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 51 0 R >> stream xeN1 ]V Zv@ 2V.7dӠ&+0&9NXҊ ⩍7iɝKA_31"E7$hZr-Uim+ZC&W[v> ' endstream endobj 52 0 obj 127 endobj 51 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> >> endobj 41 0 obj << /Length 54 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 52 52 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 53 0 R >> stream x%KjA } ] >!@ ERg1̔F]T3KIH}}w)ǩM7\/z[AUxNztg;Ao5GeAMeUӃls2 BϼinFqt1Ÿ%FcsтͰ R0nLVq rQe_u1Oz^5w endstream endobj 54 0 obj 352 endobj 53 0 obj << /ExtGState << /a0 << /CA 0.4 /ca 0.4 >> >> >> endobj 43 0 obj << /Length 56 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 52 52 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 55 0 R >> stream xe;1 Db.OqJ@C_YQ>y>W(;W̨2J'LAƾ@ 'vжݐTRT0/Ya-u8̰0,]gZaVgVogtP> >> >> endobj 45 0 obj << /Length 58 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 52 52 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 57 0 R >> stream xe 1 y/)*d+xgt鸽P$XbW(8dfI .Y QmIX2"S<!sq(  ߡI)ݿ.cu+TfWs|4 endstream endobj 58 0 obj 164 endobj 57 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> >> endobj 47 0 obj << /Length 60 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 52 52 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 59 0 R >> stream xeK1 C=ENPa4ÆpxX!Mγ4A!.:+ 5@F)gG!;-R𕩩HNfC'@8 tBm(d6Q9ckSr:r#[: 4 endstream endobj 60 0 obj 156 endobj 59 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> >> endobj 61 0 obj << /Length 62 0 R /Filter /FlateDecode /Length1 1438 /Length2 32529 /Length3 545 >> stream xsx%o5vv&msbL0m۶m۞Ķ3s~jݵU&'QT65J8330Ԕ5D lr߁NV9c :ֆV: : 9M37:Ll EmM͜x} )5--xĀ6#uZYmxVVFS+w;3G1u+%@@eD,e{b#HmKW?u0&NV#_ф\Xl 3w-ޝyKmvj6@iL Ͽ(@' +7 h1_ ?nco67y:N@ow `ln0_7?Nnm&0ﻟ`lkc? FQsi@[7'=3++ fxv1*gz-ۿ,"P#rjo(odnPJuؙ>z o ?\F0^WVVj?c/M̍w--fR?z `mLzf;J͝Sm\0AU3s#K#0Gp?'(ncdklnc `a88U_ ;h@ ow QϿ ֿe `To9;8M_&^AR/JSydA(0!?Ȗ)mZ74?a]/= +.C88L֩C]B-Z0`vL?%̰FW/ₔ^8}GFi8/v/rd n kk"~Βjް`Z 37mL_x?bq2h_Ie淞2> HDXAf[+ڰfTeo19Wj…**SfMA ƒFц X& xВ&{;E6`w>~ͱh54h ![ W]joZ 2֕!rHYrIPAǭy{}t)J8o/.5[j;c*ݏQWc`P2΁N'0rh: 8fr5q 1 Zs!O}UVю5}Q]k>FKBGX0ئJl⟐e'$K|S㫷_g,T0=Ioؚhôqԥ3_f_JU|5p,? ?UB|ӯ{쁩@Yx)&}S38xs @vEl7AS- &4tQ} <~l 㜓Ihd}D8#-,p %_%VS]FCaۜIGEn^7ҠEz[$E$F|]V_YS|q0}y8yk38J<'%*$ !nu$Ec4pY\2tg?Ty$yߩ]  dkZ0Zt͵9[ɹ$%;ʖ=j9\JYzc){_nQD_Ay e, QT 0fB|Vuy5 6s6^o;iKdɦ#7dUo򞳝Շ`f'.^뼛LF쾎O!qv ܕ?xwWKSrY{#m9$~#3)(Tib(ots9Yōw2t5ߊ)6CByDG% 9y,(Z|O\+KEq+ҊeĪ# ^=>)(952 h^ Vݴ@eHs?Fl Sy6\`,@B(ݧbGgS .15pя{M 8;)7w4 nD Kd{lϿh`ϯU]($:H(+MG1s#:GF~7F*CI[yW(l4MPWar4)1whbq`Hv$_co'aהKwc|@4lhY: PNDɔeesۦA5ˍ l-ȓ)$Z:67Y80 ƅ Np81R}3 3::RT6#Z}VE×3Sgb>%izPڣ-ۜ}jXG(PEkj iSaŬ_b*f-wnԄyDCQ]?R*F\+xxΓgL "rQ*r?"d"a5r:seU\$&rQ**z?L_CuM% QGx\gaa!{kY!5HT 2MÒ 2f݅f EL;| k*ZV+s[Ps8!08p I)ѷɌ%CS#fY̹WE.;& >(qTvdBTP/ZHO|!\I%F_rRx7(KTbFB)0hF ٸi*Br_-Vݿog݌,0.),Gf%[u4\>Y\]q5PaɔJAG>\O&N ,H,);~ >z LqDB[8~1/JBf*C1+q &Iv5S[Um%[ vf,%zI4V6 3~sҧ;,p߻le:[m#d-.dJ })IA!+dzlj;u%D#$p63:г:_Cb"|#ʶzХi#?Ϋ"aŏ`vWa'&k[Ҫp}*.%ca.ilbxl[w _"OU}P8_f#/(OF~;İ$h(KEE8OKhz@q_1';89WUKbkx% 7f*M~֪nR\ h-o*XӇ;lpf,) ~lm9ydt6)o(Í]UR]@BwoG>5y:9w1avo1gV)qz9ui\'w )؎RSq*VZ^. :g'XTRs^Vܓcb|DN{,sp nu`fVY2}O|d{hiKy'!a#e?j;s{^D1͢Wե%Ļ(tMS3 Sz<=4MB*6hDZZog& f2nܓRvj&=ӊeWB!C>sS#2 (r@+ LiLجL/=[%J ⪻\Eޚvi,ެ6\իڐѢp4kKL Nw7~&{dH?5_r ;sWtbn$R|՜ MolaUw P$Pek 79sQʶۨ] \aӬZ4f̍%R7:@ŸPBusOWZ(_^i!i}D+O]5G%< {]*.)`L'C+2O3vnag<ӣcctY- BvV$r򩽍9 "\YP;gDLmm"l[Vb0"K0ʗqh;\.D0ըlU} *qU]]_ D0%>( G5þŲy`s͓s &.m~(5Ɩ}N=jkR\P&ttIg22ۋ?UBӎOPeV?u+Ƀ[q.ow]#i94K(H[kAV6qWL,ʮHGiWwXK~U{J)K1Ln1!Fc@335G}E=|`õϻcS:xh?#̞l`s=&eaҫV*!Yi f $@X9ʇvYQ ~eU\kP!q;{iwA76^Δ̈jYƲ!}-,pPg9C)Bhx6i=hջdon}doMFK$(s|IF|rVxǠ^M)"ז$"R0\#}\ͦJO~p©08?(n[Y:R'flOaވBRTu_clw0{a]bAC.FqAyq$a഑1c')qV4[yd$h dg P] _üj"k`{/kYaFI%s/@s-3 DDS 2vFA}6I^vS =%CL+H?g"7 YH#5Hjkm?cMWJPUpks(?ػwWxG-siz{F;%9'_[-?K;TwK3! 1cːRҳx9>%-WOgWx ^ʿ2邟7:"6moT[rxC'R!`c<'8*0o4vVZfz~$b4dh^+,\ᜭϨ\3J7u"<&D.먈&=D]ӟ4+yя=W "՟_ŚoڠwN W P8 n [B行ټ0@pLk'W- @2IU<&]4ua%qw[xgKZoM ݨ.3}+1"]DjTYzLKkɤ"^+rl> J߹Pkakd;4Q~g''PpB{Dy֐9(;,S2駘"B,J>*GHrg)F~]fyKzo/BH,{%i`D(nU)0n~X,%-& ^-gPk]~DbMoF2p{,wi8PsNL,@Ž́fZOvs?ZTp d47 YhK9_prÂ6.QJԃK1S߻KUΖs ~JS}d;;a?݇]e}R(RXVwθD>>ST (QZ5=+ D0Ug8>MyKwad%{1 )߶BC{5)^ pAPDˉ`p;mE>sS,~TMZNc"z0TEe?KB)NOJg6F t"Cb`'izo祜Vqx^#!6/fŵ00X6wpy' kRIˆVvCa!blx]/ݦu5BĂz_:IJa/Q~rwoxO7rO{TSX:Gv`te.*دfDWJXa5I~wl+i#K[~:5 $azmLoPQUtTL֍Q5VWgobيjCXlR#4I#XQ:'29z-`aTJצ33 DR:;Ϧq IW/ȉKE[W aD'p9<ԇtQ@~G'oYgb F| K"6wC :CN#*^ޯ%S7ӴcNw55xw @iBY75S`~+l882BIY.7ׁ+#ЉXQcsōNRk{sCٙ5$[WZImZj%Q:+5ӯw"&CliaCC*}n>]+AT$>h"^0܃, -^p ʽ 3NwYXASiu.XYK9 8L`3 -@:!}CU޳ ;,Qԣ~p;h5SSC>ǹX;h`?.\Ftڌ؛Ѧ15Rx`;}Z/8=YuvJͥ+FDiq] rEZ]4$Hi@/%#W?ϡ/|_q_9|Y1Y%qE% !s)[X9ĸ|Q|EHVQ ?ȟ]aN>qZ.rODrm/eS>$ 5Q;IXa@[ vל3`bDU|&U|#^^d^iFVj x~:Jg@N];j65@w3,C7S"y#g;3?Lv*s>{y3U[#n* sZfP'& :m!DLn?yײY#-& ҋ2LGYۿZ2܄ eGqm9)<<=#/ X/cϯҥҼ Z e9EķHZTW)g})#ꓬy{O+2Bi+zr$%Ӹ3aLFBOj>gOɆ]cX;[ 4d9|\Zi̱ӑr<UMA}D *_:CgPjwp߶!u|G'0p"9 @L&[}划A=82n Vb홍[- ~]JzI<ϵԂ+lGQ9C=Dڲ$p $$jIZL m0g 4L&܋D$kEIGf\|i&Ji3'پ#46v_ b< "< .b8N Lv^}%/\Z^ $V/_1;dUu5K/|[v r A'yُ:zD۱J*lM~[8+#y<Sgkn<7#Vp{8^R"WǑaί^kEvWO!2)w˰B^q-tԝlt\:{m$zmQ f%+/ś3'zJ:֠{^঍d3_ ZMnx eC@շ7XlkGͺh8ՓD$ eyGA#[c~6>Wqf;e!d;!o$06K!_y$#nmJ2;K :2X$8g]L@cel;64¦'L),O,)2A-0nQ$Δgo|`vEo)Am4受YP kэkje°!|%G\x^dRIlSEX|UmϺ08$4fK<YsvT8'~-X|T栰 6¸眽Z5&Ug j)DiZ``!dQ0.$TF$gv3ALiA'iC.Ӽr}bD, 8m.M} iCb45 e*1Og!h)_>l҅m{TW**WXX ~zxH-|IF4z(إ'$C8i?=1g9 V႞,E·%@>29i/eߑ7_Ua8kVU~DʀKRחǛer4޵Ĥ9'xj6P-26I KCXK uwz=WXo)l (tGt>&kC;@qE4soJHƸr:Q.ik ?'Vߔ@mY*{KխGTMW50P9k!ϩ5ОkK; ^ܠ e-UaRx&h@iԛt`4 `X xxZFyi̲OþOX.((ڕ295#;.9+%LϖGn#á<ηGEqke5Cb9U#<7$gJRG(!ՒZ4.?HTXsm⢥94i0rw$RL/#&TUגzR ?Wk~%f3NYOnv5j2wL[[Xޱ:dNb_̖QQ\ͦ?Bƍ)/cHnMj^+ {K92jcxg3ZA}]svum _1,6Ih4Tfď8me7ەMJ9{sBW{]%i>y( K%U?lh’V<1>;1 /+?G 2J=oիݜ+IqF=Nć`cwU'=+D5ߐ>rңb\ 1*HkC/:B/<_/@9tWM5CܕMqg:Kd3uS`4~䕋\ _tqC'GtцBNb$;d`ʘwr ĉvv8m@f΃jCWQrh"Kg;μ]@WIob]='#xkd5a(R[]UҭBeWL}3Js1뇒;?J9ل{Uop\5|YRvj.9i c| <>֩]zAJ1Y4R>|Itd7L 2yPRHeܨ#"k56[zݳJ@юx HU)|\tgmܸp]B`B ?mա?? Pv&\}{x["EfSo sc:"C nEYވ!;bElhT^m'ȸ|EM?%Ԅ3=- n_IaA&RC!VQ)q_e[IeN#G촷T"?:?gE]tx 弯u{Iy8V$)T 0<GWHkKw,l RD dq3͏km."=p ð^9P^%Ó YlBPi_q&I0 ^ԘhLw.{Z[j֮OJ=0)r2ȒŚ-ix'Də?Xcߞp86I p }$/aH۩?wJJ{72)2$\)]Gs6eB|-9/U."E.E^7Rl.&Zf$a@jc)4*. L9'e~$^ltw8J@r,7}e> {|F5x0`BR.51t^o%x nWQyܱnf2vm[ ,mS- 9mTD2÷7ŚjH@LG ѬYm8# ꤚoY݇÷w+lchhokUd>ou9Q1]trȄ,`ϬurƲ>l9jPэ+QPKc+ #ohl~$ ;tHEP[HuȳX%c䲯22G fR6p_W'`nXf&w]W)G> {a &o:U&^ ycԃl~y;섾:ig2+{>$[Wz Y ?ři0\vن7^(^AJXשcnρצlZNS{F_"נֶvY0WJe d߻l֕6F}[%8CoL ©BFd!_lyEeT B43dLL8:(QЊMoHERBbopk$ :h3eA ַ2ʾfJoh|`<7seXϱsJT,jjU M.)TrI" 2L˯rDѐhO#q݇4hIyoosv[ CUvz@Ƿ@+IZ+k^ۖJn/Ñx5АiK\w$i:XўD]d &9kT2K9[?^!@.l8Ћum.6XalNN{Ө`?Bd-#t*ظ-2Եs qKZtrO$EJ7B@>x& kMd <"fځ`>{(VڅӸu惢5Om<[C R:,np}5-ַ\R-F6FYLP\D6ƢT;QVV'Ǒkt azge>Q[Z@HH(R;>Hby]uوu/zLǐbXM4Y&ka#5|SL6/8[T+/f%/%wd|4PY5dH=c":o|KL*C?Ls( fmϺ BWb]E5_꒞f9F]Yj#uu۲7h'f_x17¨]9/ mn?5uN@&T+uX{2U L@;.-}@z(>c$C~q{A]Ђ2~x[ B6פ\T?KLSwO>ո+t9^=ps# eyV+ZcϛG<1, 99ïk z5' s$O.z-Z$-vq~ըg?!EZ:v=m,@phKc#u[W3!mx}7/Դ%실fw6à$|sI“uͶ"Q˭~I>ǘ?:y=y&+q ?[4_ک2! 1]2DiiErf\py!k 4XH_RɔE;It;-7QQ: )U[3ZxE"DǢMb,2 4Ku8rT4o4ﲼݞC(m)lܽe Q3sBagBnZhl^ xcH., % ;e}mLdcFX:tdLyUӖT8{g&~9O 6zqJsc WYR/RRPGe]0O^]6#JNDOnʖPiq=@k\wN{FSf2pKT5(}I-V[3F29\uLsͿ+}=ݼFFWn^Ayܹ(~$jNA <|#]ٽA/' w*$Fָ̆GQ錮;Ȏ ڥ0U1`Z?[T01b@%udqD-hMtQBe*c;F-YgXSzzƱHIo=Q>W?N* 6*5 C3SFb#ꍍE6ߠ|Ԥn&zy]1WL< 2+择L9޺F p99mCwcLJ9Pk,5raOȆ w7{SD .6yn~V#,pco $r';t/,[oxPxe$c.(46o?!>p ljjR-vpo45<⇩DEf^mAZ̓1BY=EI 4Tf$;I,Log h:5IweiL 0aM)"Q.+'upgk^l|Ć\!RRe OLJ8'ӚLnbM*Tw0] F aXv`]`QW#'繣Vv؋Fp%0PBn%:uy&DPRyӛ`̛ԣ~Qm7I;:IOr|_>#4xuki\0c\*8DD DHm yM}jYHf+kyFYvUCHRT0unGX鱬\uVX-O]X|Qf\+ws߰wPf+*16e#xߦddiC6%r:?HuzqVئukҕ?Iu@N,{E/7}jc DL߾k` lÌbVw=SMFN ;#"a6[/{˩O 8vQ7ue4C֡m ֜DoJAuVlLgodK)#W"Fԯ#dd6{CFyszDz 14w4%vkPI2"-;aj5s?SS) lpivYKWUdjudJ/3/o?KA9fH?>FalDU ٽ=EUETZcStqtK6$ ( q6 le_sG .T;ϛ1,oP}2`1)~7ɠwh ֨)-@'kSVF7I<߫ë3*qB>R.CfxN~&Ft4]''AI'Ib(AQ0:3 fiT<|cp Z 2JuH4^֦6C7ꤒiX2ͨ}ж6$g ?ϧ)ɺ{4R52 B 5˭oo Q±q*eX06\,,_ԥb!8a^q6i9*Aa ~fj牢\\BLq@r D8k ŌzsHUft5*lҴ8~Bу/Kr00/)#o/9HaBci͂^+u_>SSW:C W!}4%DlId-ygZ  &eqDQ̎"| ߷*FAU2*sY%"MOD\m-p\5iG,*yqyF LԨ wY~v.e83(PΥp:k<)4Bڊ* CLivڝH5$aa:Jg*xZ $٧^MMe|%O Ck>RY/fߙN4%T܀KjbďttiPM};=h/>gR{wLjr Oq% ]qXrkREQn:"rCo|BvxcKWcUFRh[[C@I#M)e\* 8͢ ?rgg aޕ4sCkӇ^ hD|CNm9ǰL)"Jcq&6`ȣ-W˸?ls#{>Rl=Dڭ41:"0Yl * !Ɯ;pcқ2]F.\_гٹFqD̍2[h{32 D}/5#HC.!lP팮`Lwpo5{ 8":hnn k1&m3)mrfEԋFX)7ieNJ1M{F::_t^Y %$ԔIÂu dt<۵y5B/F*-L(kN7P_Ruf i]蝘=ETәWBf WH}‚qE^C>?gk |V_ZM}@?):)_Ǩ]1x< 9o7i JR]jCwyQ ɡ8qlO&5T5+阩8Ju^8 `~7CDA@f Ooe #&)Ej,U8fRd~@K\Pa=?R9xucCٛ,T~3@EJKkƖAB=UQW͎  p(Wl2"O9۱.M?@ԽݥƘsH:[cCĩ1Gf:!]]w852T+ PU=# i)4v$ ݆Cs@QȎSNC1 qɲ`Y41m F @1j킺g |; ˓9AJ؃d+URSZ-^R2m㉜A{0hq ڙbٴ xz Na1 7&1uZ=+$u%s-(gxbEדrR2,C ;t.64 ܒo"r\e>/?&[j=TU߉bY x-͎R>`waY;׹[btsR輘-FZoq׏zvRjoABvwqrʢ^ ܃ 9/:,!n04?q{E4^13|j[NZ0Y2@BlӱQ`[qJt\S>~tOwqVa3Qb4  (h:1SX5S,ЭR ɿH@>/ eKMƊ4 BO%)mSKr-L` DL-ydx̬qq:]cer`uANhow.U$%h+áj ֛i gة H%eՕCQP9ܬϻi6y6l]`rQ}~Ӗ0 l$|KV ;^{z;Zh;p9OI%.gUɁ}}ecTK'X_r/b^Dj9$4CϾ;, 8ͫג!: r6en& jIg4s]]l=u]*KqjBLPɿ•p#@N#p5AL%AfQUHA 4ƅL1M(sniwJ7ۃiy8˱V4Wz z }cͦht0Zn-բɯX qqR ,ڪI.OTs>4I¬sk#+z uW F&5^+qK`'XL@m $D4Iɰ"[2=>DrezMu )Sm{'Yܙ (}܊ئy|g)[LKr+č]; MpZIaVS$`^I;B_5+. M TQ_hjH0[taQEC Yk gM;MH\c ӪrKJ`l]Zg9 ݒK LUHߕuՃ֢"(i&uj?'$US It5ƿ_LʣU֫O?)$wʺaQ> AxO-0X7$`n[v77Zz+.`8 ?1P~ׄuű&NSk.TqRM8+MFk,.uR5+ES _b08xqR#x@a+VNmH$!汃-}eozunCќ j$wQ̠lMQ[ uihțwUf>q:m-zPThF{99}=XqLSt(/%^} )SoTؤȮB x;%vsJ*57V! d źw)Lpv}vA7T܁zn|nv+8,7xl 6X\K<j!t<MQF@ґڴK+ÿz~%H?Nr"Ⱥe8 -Uj0.ж;U~Dr7Š6Rc7|p8[NU)]ӊDF頡fG4f9.gl2(Hߗw.,' mU kEn۱dqR1\ЮkM>D=E֍ˬeRߠ-ķ(:0/'39xHr0ʖuKv'e8CzdML 2u`8l:[h&B! cI=+u5F=mX]Y|ehNs! oxs ڗ\JF_ #CgНʹ8uind-g Y|5I:qc+/ ~c8ǃ(_l۰pih|as^*_/6 WU -n7WbČT .~*}Pc&^nf*(%"?+y41I-9T @qÎ5a"< L*ˍz(BW̯s/_]R2ډudGk 8";ڸw,tmlסZX= (Ԓ7/!qs(hː :y0ʇDM4Y4VNCȌ \g^R_SRT adrd@2pmTN`_]f^irf1ﮒ0|3ÜdZA_e4-}K~aGaAX- t`DJ"Z36>oq.-#̜̲Zb﷧:ҜK% /Z}CRʤ L›3k=Zy IҟW!Ppu?A7hua[ݕ"@/PN$Zߏ(o-wMkS%N(I6+}P),KODHڽP[s S5@ZR&=o I|{+??\`rvAL^-Hr]G5ڛ"2v?u /&J(8֘!߁!>8e`Yl'X|=RcQHJ:a<3/RTۂ Tjm4Sbo~ -yEߘ7m:'طy$•G7Kݺ?reVҪ(&yCÁֆS58XYuqЬ,+?TQJn LJԵP_rqfq87'" uhRySTH@xc-SW}KkM B Brˬ<c w[rXF?7u=FvqAb6\ǹEŪSV)r[WipFC^#E|q5SXcA?XfQ&TD5g^2!b 9EC [2AYӉͿHŘmϢzKɨWAO^05>38V6r_57S]GyG"ɷN~1tI/yskAj3b,_#m t,:f*U@7fh 9#i.`3&C$YmV\P&ݰa%ٷV5~U "n2&>Q*.sWA ٸjqxTf{A c[\7jVHܓhp辺x6T="y%!޹o.,{nm3I =^*ّKD^٬BG%QnC#^5K[l d|vQ 5.\Tu/x ?| Y;Q#i)ByDL}CVϢO/|42Np}sLZ"1s՜ K0@qx󃗓G*Jf8FC)UGSHJH5(ee5P+6p%5d,4O'8R2Yb7\zV\T |_{a `}CRGlGe$?ӟol[zwPv0OQR55U Sg3j|Y}!&em[Qti@{9JWTc2Zbh ǝYJ4-xOJD)?xj7jE5t$;;bR4,41SQq!ޥaPDүlNr$;9[lï">8:ӾK G⪡= 춿FU?k )Ϛv9z¤5zfqlQCar( ~'A?[UTY "zѣdC#yET9#sfN=8`+(v#O~qpra=geOM2EJx)[^k_X%BթOqFܪf+k>p%t$}3_eKwx(^, @@aW1~ hI 甸H=)j\CԂ4M+@[4176MY8U#l$ІWAc>Bx:8D%4F+9&D7E~/ntZ J`_imž_0q-qD[*;2n8mv(S:u (@_kjv5S$"n*T*\lao#>)д Gra 8<3"+3?Q\Nﷴ"|pMj埖&{I/=h߱;Z>MWkQ};5lm7 #W'Ԯ`}A3|ʙ-~װm:uAυB`}e5\XNL dYYb;JۦnOpkr)SG0CY蔅VYJC; ^J1O3 (Z]`cӳw:rG? efc Ie^P:'>e 'MgIAcjTI>UIѨn'_x怢_υ4!Y0NS?,{ ݈x u=oeߒS Mgf[  's9v3~2F^INfq;}ܙ䞂)&JoU ް=vCYRk'(;aZ:ڗbϚj #/s.dTVf*Oz8[lwT;2bV⾒v X~:Fɽo'^\NSl7鍯g5l$Xz[tJ@.*14ks30ˉ۶4i8+V+廉p![C`FP[}]K0Ϊk9@G>fi{z0#񃓫[v,ԇx,fQ' BP ¡J`Llѣ.X 9ſA%'W;VgY?6aR4 ږd'exVU,V? £XvջGc"sxˁ/3yX)h_d>Ey_{==hWPm0 BnLTT"ݓĮ *%Ny?&5ii1 })M5窔W=4Lɑ1umwѴ 6璯“Rӈ;p< Ttego Tiko0Xshazw+*,+Sr $;/$Whk]: m 6>z N7&L7hcLbzT$/Fuw|#=W?k^psZz!GڴW zq./!!H(-qH!El.\'|EyU (ӂ^46ߡ6pYTf  7M#i:8҂bˡj9~a`{ ,tJ<nqG= ;w?PLNaT'j}X|۔y~a;2|3{ V'D~HHYP^~9]zwU͕an^Wy]riϹJR1j[ f XVMy>6=$FHMH8"x+˗5@M(z+8^!l#r48KX~/Q ~mer g7;aܮrK03:Kl_#ˑzy t'OD3@FI5;Qp=OiFO(HIϱƓ`|^Ӡ<ؒb" *+3jj'G1mbE59h{QB5T'y)|7u>%:E b$/p+,M4Qޗ*/FUcYr苾&Il㭄p&ug\Lj2oBsMDZ/UZ£ ZEOE 은v>@7ѐtcN#3}&;J;ʇ=GH@~e{A :J)M%Gj깤ph-ڝR2v*I0XD[\g(E[FKĎa-G*m.PՎJf}8^c|u!)cFr;Vsiݷ);{;j븢H&VgT" }@ud-,cS$8)lTߊ4hբ]B.i6 u̽9J% 8NCo1^;9=`G Dl*`1A%^8@ $[5 *0Kz$mř@|R=ֻbCAI9O= Hg/J -D\!L}[߿Y6}򹲬GVGB(IXGp=7sHJ!Eu ,o [WyZ4e{qgA5󡢞4QԸ{p2sǕ.ZMӬɾ޽ $liDGE)QâV݇ H+vt#BÞWzzrDYD.E엫T(QE[}=w.j)7"Y>QM,YN:Zx1- vPĎ4%Gv`aqZ%nqZ~((<;,X L#ndBS3j8MP#b:H -`2*lVCsbKƘ~\TK`! .L=F*SJ$h+;ZyO/<^{jvs(CTn=;su`ئK`Q8я\ƺ猫އEO'1߽SNj+ m#Awܿ4V1- C(l5H^N o)@Ja8 EL i+V3wqP\BHN\# aZ#fX7rO N^'W'I]/ vMԠ#䨄JVYLjB\=fz+Kv!ChbUNђ&=H )T𿈅 B YԄsZ -w5CNnhW=;2]&eDeReՅ3|Lomm)1ckXN)2`CKVLc5/WLR>([U;w?N=-NZCLmN:dD+͞EA'l6渘 b+RI}.o+䯹WxִXoy[o}Q;'(?WU1ݬd6Gu/I~)\zg#yJ޼|oExejq""7D_g)[yASyV8O|q"SO2O'W4^[7͹2t3m?ҷ*~6]]˿@gU9W,IXȧ7yEm.ILx?)Ǧ*s8twe:2' (\ sRJsRKRk3Ӹu^` endstream endobj 62 0 obj 33519 endobj 63 0 obj << /Length 64 0 R /Filter /FlateDecode >> stream x]Pn -/ 커NE8H15.|H)@Ck{S&%FgM tga[νuL.68\L#? k?8O `_Ռ؛̻OE^IKTI Y'ZЛiwV+&+x2ӎjM]ʷ5Jjx__ Dsm endstream endobj 64 0 obj 235 endobj 65 0 obj << /Type /FontDescriptor /FontName /LLLQPM+URWChanceryL /Flags 4 /FontBBox [ -133 -290 1097 994 ] /ItalicAngle 0 /Ascent 994 /Descent -290 /CapHeight 994 /StemV 80 /StemH 80 /FontFile 61 0 R >> endobj 17 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LLLQPM+URWChanceryL /FirstChar 0 /LastChar 3 /FontDescriptor 65 0 R /Widths [ 500 540 700 580 ] /ToUnicode 63 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 18 0 R ] /Count 1 >> endobj 66 0 obj << /Creator (cairo 1.10.0 (http://cairographics.org)) /Producer (cairo 1.10.0 (http://cairographics.org)) >> endobj 67 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 68 0000000000 65535 f 0000045300 00000 n 0000000245 00000 n 0000000015 00000 n 0000000223 00000 n 0000001547 00000 n 0000001099 00000 n 0000002425 00000 n 0000001977 00000 n 0000003306 00000 n 0000002857 00000 n 0000004185 00000 n 0000003736 00000 n 0000005065 00000 n 0000004616 00000 n 0000005945 00000 n 0000005496 00000 n 0000045103 00000 n 0000000543 00000 n 0000000756 00000 n 0000006033 00000 n 0000001487 00000 n 0000001634 00000 n 0000006303 00000 n 0000002365 00000 n 0000002512 00000 n 0000006573 00000 n 0000003246 00000 n 0000003393 00000 n 0000006843 00000 n 0000004125 00000 n 0000004273 00000 n 0000007113 00000 n 0000005005 00000 n 0000005153 00000 n 0000007383 00000 n 0000005885 00000 n 0000007653 00000 n 0000006281 00000 n 0000008203 00000 n 0000006551 00000 n 0000008667 00000 n 0000006821 00000 n 0000009360 00000 n 0000007091 00000 n 0000009858 00000 n 0000007361 00000 n 0000010359 00000 n 0000007631 00000 n 0000008130 00000 n 0000008107 00000 n 0000008594 00000 n 0000008571 00000 n 0000009283 00000 n 0000009260 00000 n 0000009785 00000 n 0000009762 00000 n 0000010286 00000 n 0000010263 00000 n 0000010779 00000 n 0000010756 00000 n 0000010852 00000 n 0000044501 00000 n 0000044526 00000 n 0000044840 00000 n 0000044863 00000 n 0000045366 00000 n 0000045494 00000 n trailer << /Size 68 /Root 67 0 R /Info 66 0 R >> startxref 45547 %%EOF gnustep-examples-1.4.0/gui/GSTest/Image-test/7.png0000664000175000017500000000572011622356446020624 0ustar fedorfedorPNG  IHDRRg OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME5o+IDAT8˽J@O&JY$bmaG} Q[{v؄cDI/ ߙ;;BbB8[$U9pAxb?0x83<3]ydONof|P$4MV,s^;DNN,)m[^l; (8vc f89ޙ/hr9 Wƺu:_ Pzl0,h`umw8ZO[_/;u!IENDB`gnustep-examples-1.4.0/gui/GSTest/Image-test/plasma.png0000664000175000017500000007315711657336046021746 0ustar fedorfedorPNG  IHDRL\sRGBbKGD pHYs  tIME &j| "tEXtCommentCreated with GIMP on a MacwC IDATx$ۮmvzkǘks``)~A@HBQ$g5koz[KG,N?G߰X ÕO2P! IZ+7@xt\ezϺcVn~zM{ҏ Zq~S`PYފ<&p̼NcvpN3L,+F%mYJi{uq~# ۡ[q U-[C a+qnJ^YF!2p+r:#Mٲ=&uum83Odr ۀ殎ϑ’*{_I`nԣUuxطR]&9":<RU'Ӓ7p@jK^Y);͙*>ъ:UqU㪄gF%, `_6z0׽D_6: L;1!7\0&4?ww5kQXޠ_/iq%`]N}2fLR8SmycwdqNwk9 8Kox7!6sҦh>eq4 '@ZTZ4.ء PO VouŒú 抅|;sYpǬw)`3Ͳ3y1W)/T'={ƞތ ^R tz* tCw쇝 9soQkBs5 apr.Ј^apfHZ:D=EZ`Ho DN7~8yŨ&iՠ1Q&{L-u򜐀sՋk9\#)(P>l2J SBW./e\m$Z~o7y,\+w(Oy1[V >0~MM좥m>{VX'ķPHڛP'e2zBJ|)'Fۨ=%YRHX+kt)ϘrzZ2_օơw{ ̄ gGF{A`࣪5쑕A4ٱ1sd[]w 1}qY7Wmfb!8=[9̝8c!ƒJ~Xck`35P"0#yR]|pbp0E6NZLiۇ4!cl턂ڝ5i_;xѴkF퓜@f6=UYm X_Jz5k9}"crZ[fQ$F`֯!_K ؂kJNPtwZV#Gm`cl`92茁nx&K:|{d;l0_‚gD^JPs.z#19ibɺ󾨚jQ&)cwL" "U4ѓ&tUy1cb7y~7){oͿ|u {)[I7zr\{%6M섀 xRK]{zrR ?>]\:,;̞])mo=D]+w3+l9[NО’PB e\ӣC޴;ZvDpDAoG0Q=!98!śN,U|1P(m)Ӧ$ګz1n7O >O'( ֯yz&+@ C6(\*X3IWJ9|\& V3cg2RD \'>6ƛ~%F\2Vvݗj#8|ȧbgKS SwF ٓ F J_ foc<|Ǟz Ԣע +RC&kyMoQ?dʞWzGODΉԱqӭϰR4WvӉwtg D0Sce1EYPŘ 2F$Rmcq'wObg孁5Pe݁ 7(q S95oR>r΅^ w>?Ţ =!&S my 9huP>tt v`ֻs(F'_R {B˱CcDO9AӭEo)o,$G?2fX<㱳 [Q+NtqOTZ7a(kٜv*s *5?>aq Eҋ0yIAߝ cݚMHqL0K+ګ4>50,_W~soɆ+Ft$kѯ+1>{3,SG~#3͈+kr<5GQXx.?X3 #٘jD9 =.#U6+Ā{=|:Ϧa|ϛB{Mǿpq+i ǝVڶ]WW0+hcR@4LaAڋp gݧÉ8Qަ[/L0/ =@@F@Se\Ti__Ns~ڗ֟y3vÍ"KMsWAT2_ף)_uܒ4;~/NȲgd_ 7ciڮ`ZN-!Z@xG,9.+Ǚ {KoY q0Cgl -VLjVG@??u,N^Sۃ A`BФXưMtzow>6G3v*/]% KW\kNj9+ =)U ;XޣE%}%+< xA_ $5͘<ǪfTȾqV#HddW@EA݈Z}т8}x!刋uJt)[GSgH^t.w=;@$-?ml_ (`9P ƞ (gWۈ!,{˥CF!WQz&"sxxܘxf+)7o#TPEfam< '|9.:`օPSe&p΀L;kqxhow)Á Ey0')h ,(DD/smiƞ`)͜&XEV}R%MtxN\3`یehf# eױ'y&nt {SgOH2aՏO_xQ(I@$; ! sʣ[iEjs|+~%e- G W9Wp%˼ز|}m~ F]"LSߺaa a s9 >¼72B&uͪy˽6TBQ5_ic"B+F1Tu?p1Po2m?E[h랂)ˢɫpM6!:ûXK]K^(#S.h;<w{Z@.8-)U )Z hd'kW8sL4kk򱋓'"ZN@hEa!UR4U>\(Ă>_C2O:Gݬ Th'Ы]A9G?bV*GCa7asfwJN wu@6BMshٙC:qRI.3f(&%M!R(QA-BϘ!ؐg.3q Ep2S5o* KV?31ݝ<Xm8(Tfr?8B6/|mkչw(uѫ; ߡVBG~ ޭja&I”gQxB!6@5e.lcxDZ8UZ17=%aig3a ˄`"P?Pa۵5MYRyHG5Ւlڪo$-5㊦w8vKU 6 F:$;.9c0u8{SG;nE P`E)c˧[7G)^B7s9ߤ*ViOؑ"q~$OK op7WRcPWX}f* 3;kքgqm #i:OawDhϣ$[NaLB̎|&ӥ&9F?s%8yF9S;^F1 \2Wev/L˙H&/ZQUn':e+o>Bi)g9q};]ۃ-q-)- y>aR=`3PKܭv++WSᎨ7~4Δs2ֹh-Av*2Ho}B_{'R&ASҒ\e!8'N )فLOZYo\AhQʾk9 gsр3lh)G+:ƚl,*YJUHJ|X Xr@IYkjARԞ!ޏޛ1-@/HF)nFS:#@d $fesqN$&93JJٝ%){~]i-`/ >q}Q'r}2DkݜˤOړ2r`5$pȯ>E1Lcٯ<:a=cVI)n.h?ؿ-c%NmwwR5cG9U96 ʴ=gwlSt6^LeץOFdH%5KHMX Ր^{eH&Rrؗmec<~uc֎^y#-Hׂp` Vuܫ,1vF`/1;!L;<}I'g A+\J5+@J@-^ 6&QY yIl44r ^sckWh B"<=PUk&DKzvg`kL7_+QwAQ[ZH'J8 @LI3^ _V)p{_ezG",<=B_ro؄1)inۛAPp3Nb`/ehGE0 MovB7i+Z${ld$_>N w9P f9 DDbCܟ ٜ5"@J|F7Sb09"^C~2 yAwNL /Q+.0-iM|/WI<"bAbA²GKSRO K^;o]4ə`*p{8ܒ&ˁF>Fw\1= ڴ":"U,=%KLQ_cg }6 /E9Yܩԯq֫m^{|}Ot/Wz{.3G0-fjXAGwi՟$g~u"$vAW0Iu0cҎs/[( 9k|+iO~'W-I[iSUZxp&_cگ{ H0R}."kb4ύckxixRDitB FxÑue\%# k9Q 3貧v8z7wEM PmRHm-[se0!)k H:=Ӏ!8xcuCp ?8󑒩!(̝;rikX=w#LjMZEn2ńGX1Q!{^+qFdԳ_;P{բ>#%U ZpbO| \CO}˳D.^;Rԙ#uϩOsr}eN逜Ow078UMJ#b_Vc=!?պ=vcGjs,`ZgHX7gR$$qH1Vxa\XJm4R4W+ýH^mc,uB>(p齡в^Ys\Gḭ'.owo@ZR{%>ϵzڻ5^.Cɗٰ[J]BsUjYLH)ѹs')mk5q O>Q pT{"dñ$E}=\eK+gZ s%Hi2 k =4uY:QmcNtbOEۺj"[b=\[Mpz@N= -X$C`dtqC|bd)x1bs5'nj)][\0wv/*0數R55<?WW˥/ZدYL| GK$Chc|vCLǔ-m;G&؀Òȵ&貙TG~vΫDR; EwJP̶?^aεaW~ϔ??$Ǜ4Pi'J%eDk{؄FƽcMyx(4VϊKg}Fw/36v6(X`ă\ao^ nޡ TZXϵwV-7pE@-i]gsyd+k RtQ c?V"FUlzܵ}I_mAlxj@:;/an02iR\G(|<~(mxJŤvxFX%)m )tS)]Z۸swomN/E;1= =ƉiwW:y,5D6Kë́'.=FrjGo˱ ͞OJxuzpaaR zF|oMRRo޽NkNZ79u` rUfX,ص}5WJuAZ|$nx{Rw\?p/$a:0nNg]t߽K\eiE k"]ARIVօ|C[>&|694k|v=Gs#9j^lB%Z(.#&,b|lkz U9n"rH>"My0I#ոI'zL}+ g>bᥠ?Ds~W11%VE](cb%a`5ߗ֬γf5(V7n[ܯy\k%mdiZ+[q }2BԊOXr7[!Jor3{ShdzQ0Ïy0S:~q.qԳYf|~+%7SůEo4V)G!XL۝\r4Jw]Y] i5V-Qx VQ#f+oce!/K&NNK|(3[eʁWcN5Jr ѲjV,4Qs8^PHG3tj=Rdr(^~̐ߞxac doidS<z!-reR3eWɭ5I!$ZvdUnwo/]/n)PKJ#βfK\Ͼ]~~o[Pk}֦Efw˪_џr)/LH$S{u|s_0_KO_Ķ̑ܔ9o6/y<<8|f+׹RatƼ*-k ; ozp/T5 \7XmF3vt[g~L@FAJg$\teHj#\4Fbn$Y訲vO-+1MmSQ}Dy ׽ CG l_:MYlqpݽ̏{}m_ޟ2!%6I]{\N&d6{cZv/Hy̤W:A̢I~~jڵJ9*[=rOt}sv^=z hP#4Ib^F>vk3w69yߊ^}Dsڱrȅ[SJHZ8âAh׊cLCcT^__B4,G[uvSDFZh8D@bj3nXJޥh^]5kwQ`%3QU90"0J֚T օYC&X)kϑk)bcyF[ـ!faӊ$ѡOT_Fl׈t۬QX0duj[-R-n-~2tw2Y!׽iuN#USײ=W(=95t5! 7TpQ"+t 3^|"h%6ѝߩusW.;-8\s4.Q2rޗ;Cwox;[>C1@y?EnsH|%{ 8ĵh[O U`{g[1:xhkͳyvҸ%δ6;G&v-NWH듌DfsKՒoů{eetr]_Q#^Z yoaݯ,Ͼ4^/)1ΥJv`*eu7b:=,aR$L~>>i A"=>W4V^8˞ݮ˝p 1!4DZ^HViԭM m̼ejC3;L~t0FBg45pGN~$HpJ1); 'Nɕl>TZWY?{p3qv꺱yW ZthˉXzfVIfы[^MKWY m<)툉>+Fz5fbXWW 2/_R=~FK⋗?ry_# 7syq`]0cyu!nzRgoߎo4u}me<&sc%H^:M~/d[ (.AV6B?pXőVG`u&u){+z4@Z MI겣aMEһξ'<7B˜U;];\L5?Om.a2"Jhn _Kގ!ew%cnʜv+ə9blŮV-W+"Q%EðL 8\Zў$A`^A}Mf$d [lƸ{OcN(?6EK$G'm8v 4DosF<>DFwu&\Qs7 kh{8lm*I6Lᎌ~$2< n>&t*_sJI㺇=Qi4#BlA{i0"{Kku̲jFzICiEMPtZ'.wLϜ6e.͙'E(GOfqooÐ/WG+$nyf^>CitG7TU=.ɿCڃL.ۥ2_= ^?M_}wu Xv\=-Ɋ#5riq6&=iƚt1Yz8r[CㅎQZNtYmZ"(T5p+6pk<$@/F3@͇S3H4yg#EbՎK iQ̋.{XY/Ydia9 ,4zMH*]͑rl%!r YK(uQQ7V.M5bl;M⏬@.t W4/u\!' *'+^Y~6Q&r#w c}?y /"y2j p(֕ˋ޶G_7ci.CۂW0Hadpԝ`΍`~ *͌mDA֛tUN[J#XiRJ+=Mw _FNAgUJGr[nKT#LEI#տ1_C,C sEW#m{^ޗEQ#i+n+5Erܧh+P N9fp,i~ Caۺ"PTPǼRqKh8sk0$l7@* a"+X+cIqN)-/7W/?װrw|czg^C#x},NvS-ٳ^r\g>46 =i˃,1<\ SsUYw_?„q诲x޷[_Xctq;6*WmֹLV4Iw0cNQ#|\Dy֐89ɍ=Lowe\g4$fnn dTK4_A&qD>a, gÏ-]ژRR` /^3'Om=-[kZǥV׌6C=|Z3$HAzln X3]Z /CEA?_Rt&L_fK Sp_N["ǥ^S*اeCcmB,۸v[һd$C3ZFRNY\[\<7"̅K>;Ҩ08Q ,D+9ߥ`2k, IDAT껃ϫ*)-'pbPQ~pa­nGΕS>+F.VF}sNymÄ[ fZ*ϣ?5ͮmbvWA`fa~KF9v^ ]`>7Ѩ֞wy}1WޘȮ՞i4~,-4yT߯H^I!JJfc%Tg_uųlz{}{$(Gr$/Z*!>h(?v"SRBD4I^ۙ@mۏيD]O9R:tKݮM?zCඡ0'*ouXȜUJڨ:R7kX* =z Kʖ :yuu.JZ&lj2g|Y,s\YԐyk6Ӯ{ni#%>j!4Ʌ-"JS(IC5=[6P)[R%TXTب {Ao ӝZJ$2BuI칮mA7=ф܍Q#,IKt!"0y0O*kX[iȺl|uT3$e.3AKSyL";IO\N'Xn}N܄D}mD/M VeWU\/v5^h-(sfJH9=̫ͫvr|JϺup{Vo ΁? m)Ypnxh]%]^??#m P89`MG]2[լnC=޺lݫdT>:=ǽ扮9v(bf=:,;&C`6w2U&_s6sNTMDn.皔ldaĤ=pd2&8Ma_CAa(n$bKFXWt3+̸s-绤:\Rk.=8_El-&PD%>kf/ ܲ5pj߄篟@e[^=pd ;J5wq r^Vٌr+W̋\wsV˪Fs3%`S޽N";!p#+>_=/_\2mB@=f7Ü.;ՄspnPzF\(+^V3m/(eb&^~&4q?1`Ϟí ?֑Ss+gFзdïZuxԯle-jrJ>Pے>GV-,U³ > 뇼Sy3᱌q  dmDO-o'$!8C ̜æQZ?O8_^ӑ =0YmL`:cie^vkQ"sxyzcE\6R[7K&ҹё:}%m%`9{XfYIi6tni}iݱyC)|cFB@ReA7MmJmrZd+W  qm _G'H|z)I:P19 pH:=.2ͦi%ȧŖqSWC7V\dO}-\=9M {2תַa\`'mb<&}?Q22G[ uVBP+asiɩ VTHo5B9i;^摶U@}lhq%B4?Һ^-zaI^㾲/{f|#YuhctGΨ0ixhnh*镅FH.}xm64:\8.)?.x/EWAs C={v^2'7$>h&Ƙu \m?`ܱRb9*T8-1t^- Ip.(oU𗚨(Zr]D+ iSF.yvO +Y|/qS#'ߘ qq<}*Bk|D׫`]qFe.Ӽw/ˀ@/_k%cVB;-0 g#!Ҧ{Hҭ-㳩ϼocQ]t-cu sHmQdu*%SI.| ֹOe&M(qǠ ZNYla3xM܏%91MW1| ֊mɋc]?;a({F6׫KN2ҍцVh`|= J}%X\5Uk{Ibh~K2KܣFpɁgZ TgRQRb;Bycثў[d;fc:ݗ?QIQH&ys&+RIAB΍\GuGi {5WHMr^Z7V e,kH) ^w)m!S+|v?ے*p>%:#fuz@9͈$<5;LK#vmۺ c̹>7Ž""nx@6[H."g5<1h e0֟9sN&;:t໇θTSJ}}Vu3 g+3m }`-J&$1QFzHG;"EYa;ĨѲGpՆ"ޅC<i1#t5cfxx&}Xrt"G KY1HcX.`x#ռ&KFf!MRl w~C%Me# VBIn3ul%2N%K1H|츿%ǕSw9ҦFZYYITO &* *-KAz{=LFHRgH1oi08,]b} F {/^׎q9 v &2O9aytcd-|p{lyhcnLKc[Ҳ(?HsTpҳwJ܁wt8 3]Ø0p,s{ <%v@);/\@:5ӹ#~HU別۫;RP)'esr8bn{N+ T`o P88Hڂw{ҙ W 1ej+v"C:v5iwۍ+pB bMv\6+tjN?{1t֭ZwbF˻IXLs aHgd6 l},e:ӽ |qԁ`z`Z X:7g1 ߚ).!!X-ۏ^'\۲, ^J #0q”jzdG eEZ}n4^uA7p/R%)N}b-̐zi<>MU4r{@kKc95Z|+I:t5@k0BIe5TO(O肋'<(Q>zR !ȡ؛tYL(͗ฏ`=˛NRҰ!'^w1i4a?C72]KX1dM( XS@g4#6R 6tapظ{P )^dB(ƒ/#/aI1q8]* B9CUBwS**t|tܛc'o(WsS񤍞r=FG1Z2QX1YGhy>)3p;7S9/Pw \JaCṐJF|%\뒀 @&0Ta_(RH /q'#_|5 cjOpN1]%WkqVTܙ_>x@R>#{m [aۻ7ُov> $~o#rf 3(O<pqs+XhOܶM^giIa3SJAg2FS5`O_< ,׷?;IXdFo z{~%'?󿶛utZ) ?uF-axJĆ&n(1g$֙{7}.WM;-0t"i  D 77R5ޝ-H3(_$V֏Dp+yq(QXf/;Q=Gr43I Ũ<{mB["bBԿ 69V{%( DKKR&]Y,RHɸrܻI쎇yp+FY"e)_ Ս$4Hcktʿvdi\A0kx^8?PI\x蟢>+?16E|h%N0["G􈲀b>GGEf baC\\m~pS L:~?;Wlu"@7zFRLQ[Q#AEx0.ʘI3u@;m)* |g&zXFOG=,-YcKZMf@ 1= gZ{ L\42Wj`QpMsߖogCCgmW ߙl9l%2>*y/K6#c[zҍJxqCc߄= | $-q<u~%8J=uQ9>̈ V7)oXw& t[r/t% sM;~G18_;MkC_L;fS9DzMz#]AdS*OgG;l яXBEi (-Y"FHkK.Ɵg/]i#[sH`ׄ_ qeE)OD`p#Z!V[>(Nٵ kr#86mڵ 3B IP3_8O5 $p+9V]#3t[.oz},.M|6nʭ'k/ O)e͙nBs2 l&|}&ʐxdb{x诹, ]QbɖW-ҸtV?<+ċc&_PaNWܤsal"3}OLҜae ? !^ jhi}gL%5:?%:|gzVs6s!Qً́DA"W&"ǂa}!P:Bm h A;[`$#EA;s X.xϩ1Y2v#߁<>p΄H3I$a02D@(~A9+Kx87 3e 3lsXИ L̒+: ')iVX{Ziky,.bɋMuOScLBk}9El3?e}o󝀀5'*GT_ԒJU dR‡w.X_[e(*[]JÁbvPb-d,Ndm]ьmA,PIxoW3ϛQ3CӼ!1c[>;9&Op%1i(₪! $*b:?,mh5mlԀ@Xp9TM O'ݴF e\f>1HDc9M 7^6W~s>g@Fn^}[#pw;3PJgL(R9SpǥࡥzZ-mmp4=EMNnA~C~F!drsQ `TV \[dX9A񎁍 {,vp`41_؉Ӑ}_. CfÎTee'qc9cID=tǽMv(X9a64!8_E1mmJPxi4VV7R*lQGꅆ}Ja!$v 8L0Qw1,6Mh ;5X,^_{vtn(a D;)n)u9<#Yutฆr+|w~ۆ4wƸ{kϻ!yyKPo!; dY]3w1 6x}z=q(7ezV=$YH^3 mߵy냏 fk0}9B[_񶘋c9cu b(j KpRF1ıZھF|TSJNlHvA&frfJ`}*Zv(+',LdǽNoaܳl>"~4Ar:LۜX33H((5ɮluNO 0@>Q }L99lT * L,O=$?u"}<]#=foI lIR}TkL1+0:#v5NzK_B3M< .0:Aa}=R3vJq?-SAK߲%{6u$8G&e*p`|;Yj"RT4wqbP VXyYrzL[W |IW"A_s2oB0@IGU R"Y ؗxS֝8Ns,Ts+ϰͩvpNim`08&!FA4ӻo18IKӀFƀHv:$U#D$,Q(,oJ=OJ 17jm3f:S@%27ik 2~5qxXwYv4l~lK 0zOgfNp¹7;}lAb(Em>~R-ʟP3%.r7xni %Bd 5uPMJ_nQ(&D(GַW(B Piw[Xex$R" t?%] Z!f{8|%[bz*v+r_!:΂ $#W,=\KM!eLb4/C6>PC47+e]Z&_uE 6[jp/ݍ}bgj(N>vR\yG̜f"inC-lql[-f> !#1&yky$[ S!}Gʭq G d[pt!<ƖT $LCh>~ǝ@6CmiTT7c̕-xIF%OJG_:J5YRO?}-wٟEԟf( ;Zb"*/Dx{`!cCݎk*6/`6i-{TAѯg B݁Nin|ey[8cC);gk/-SjߟL.뉵;swJSɡ_YMkvÎܠ|Z~S0P?y~Ns>wB\qoPjAT9&!r@e!nƝ) %xAa"eqҾ%BgO1<~wh0 YK.ՇSZâ\r 13C< xBy^X$m(} =(D34U#qY7_E`*al~(MZ"9%=$`cC{,85*><6Ǐ;.}ggLuO![T0sڥjRcj:[z[Dc:~E\wXqAat=}! Bٳ~/(1?SS1)sq߅Pf 1:$$AlHPޤju9AFHh <Ɨd_D]OmDG=T/BWrFw]䲥U2㑖QaLA%5=P-Pk9ۂ[~gN7 7)IO/"6=ʑOPWrsD10",zK U^;NMWPL|0u:r{)tBGmlZ9`G(rPUӒ} @s>\1BL@WMDg[vh =¼){lT2?s^G`33}||@djR=#.N'Y񤑶9638G#1̔܊|M4߶\8s=c!RU;"=,ӝxel`Q!>xgkm7r!oj2&LwkYl7@QҞ8'9Z;$ $p]r] ,FUHSoBk? &_y6 {AWjRf u(N]R^A|!'Yɘ SwGfJ]}o4L6"Ҧ j gYJ ig-5,1*1{W 8U<g+,}P6)/ی7JC x!YKG#xX0qh/Q<߾V4 B"B2I W:f@_) x4eڏ w rT4$4*~Q#U,)$!$Jj|Cg&G[yFB!**" xB! >.-@`>9NMM2Qb軣kAeA~.8uFόKHSF C`IENDB`gnustep-examples-1.4.0/gui/GSTest/Transparency-test/0000775000175000017500000000000012204034630021354 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/Transparency-test/Transparency-Test.m0000664000175000017500000001244612167350230025134 0ustar fedorfedor/* Transparency-test.m: test transparency Copyright (C) 2011 Free Software Foundation, Inc. Author: Eric Wasylishen Date: 2011 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" static void AddLabel(NSString *text, NSRect frame, NSView *dest) { NSTextField *labelView = [[NSTextField alloc] initWithFrame: frame]; [labelView setStringValue: text]; [labelView setEditable: NO]; [labelView setSelectable: NO]; [labelView setBezeled: NO]; [labelView setFont: [NSFont labelFontOfSize: 10]]; [labelView setDrawsBackground: NO]; [dest addSubview: labelView]; [labelView release]; } @interface TransparencyTest : NSObject { NSWindow *win; } -(void) restart; @end @interface TransparencyTestView : NSView { } - (void) changeColor: (id)sender; - (void) windowOpacity: (id)sender; - (void) ignoreMouse: (id)sender; @end @implementation TransparencyTestView - (id)initWithFrame: (NSRect)frame { self = [super initWithFrame: frame]; if (self != nil) { AddLabel(@"Ignore mouse events", NSMakeRect(0, 380, 150, 20), self); { NSButton *ignoreMouse = [[NSButton alloc] initWithFrame: NSMakeRect(200, 380, 80, 20)]; [ignoreMouse setButtonType: NSToggleButton]; [ignoreMouse setTitle: @"Ignore mouse events"]; [ignoreMouse setKeyEquivalent: @"i"]; [ignoreMouse setKeyEquivalentModifierMask: NSCommandKeyMask]; [ignoreMouse setTarget: self]; [ignoreMouse setAction: @selector(ignoreMouse:)]; [self addSubview: ignoreMouse]; RELEASE(ignoreMouse); } AddLabel(@"On X11, for the window opacity setting or the window background color alpha value to have any effect, you must be running a window manager with compositing enabled.", NSMakeRect(0, 310, 400, 50), self); AddLabel(@"Window opacity (including title bar):", NSMakeRect(0, 260, 200, 50), self); { NSSlider *slider = [[[NSSlider alloc] initWithFrame: NSMakeRect(200, 275, 200, 20)] autorelease]; [slider setMinValue: 0.0]; [slider setMaxValue: 1.0]; [slider setFloatValue: 1.0]; [slider setTarget: self]; [slider setAction: @selector(windowOpacity:)]; [slider setContinuous: YES]; [self addSubview: slider]; } AddLabel(@"Window background color (please verify that adjusting the opacity works):", NSMakeRect(0, 210, 200, 50), self); { NSColor *defaultColor; NSColorWell *well = [[[NSColorWell alloc] initWithFrame: NSMakeRect(200, 220, 30, 30)] autorelease]; // Convert the window background to NSCalibratedRGBColorSpace // so it is possible to change the alpha component defaultColor = [[NSColor windowBackgroundColor] colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; if (defaultColor != nil) { [well setColor: defaultColor]; } [well setTarget: self]; [well setAction: @selector(changeColor:)]; [self addSubview: well]; [[NSColorPanel sharedColorPanel] setShowsAlpha: YES]; } AddLabel(@"GNUstep logo:", NSMakeRect(0,10,200,200), self); { NSImageView *logo = [[[NSImageView alloc] initWithFrame: NSMakeRect(200, 10, 200, 200)] autorelease]; [logo setImage: [NSImage imageNamed: @"LogoGNUstep"]]; [logo setImageFrameStyle: NSImageFrameGrayBezel]; [self addSubview: logo]; } } return self; } - (void) changeColor: (id)sender { NSColor *color = [sender color]; NSLog(@"Set background color to: %@", color); [[self window] setBackgroundColor: color]; } - (void) windowOpacity: (id)sender { NSLog(@"Set window opacity to %f", (float)[sender floatValue]); [[self window] setAlphaValue: [sender floatValue]]; } - (void) ignoreMouse: (id)sender { NSLog(@"Set ignore mouse to %f", [sender state]); [[self window] setIgnoresMouseEvents: [sender state]]; } @end @implementation TransparencyTest : NSObject -(id) init { NSView *content; content = [[TransparencyTestView alloc] initWithFrame: NSMakeRect(0,0,380,430)]; // Create the window win = [[NSWindow alloc] initWithContentRect: [content frame] styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: content]; [win setMinSize: [win frame].size]; [win setTitle: @"Transparency Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: [win title] filename: NO]; } - (void) dealloc { RELEASE (win); [super dealloc]; } @end gnustep-examples-1.4.0/gui/GSTest/Transparency-test/GNUmakefile0000664000175000017500000000257311633504351023444 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = Transparency-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest $(BUNDLE_NAME)_OBJC_FILES = $(wildcard *.m) $(BUNDLE_NAME)_PRINCIPAL_CLASS = TransparencyTest $(BUNDLE_NAME)_RESOURCE_FILES = $(wildcard *.tiff) $(wildcard *.icns) $(wildcard *.png) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSOpenPanel-test/0000775000175000017500000000000012204034630021025 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSOpenPanel-test/NSOpenPanel-test.m0000664000175000017500000003104011312023142024273 0ustar fedorfedor/* NSOpenPanel-test.m: NSOpenPanel class demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include #include #include "../GSTestProtocol.h" // A unit rectangle of the little results table @interface TableEntry: NSTextField @end @implementation TableEntry - (id) initWithFrame: (NSRect)frameRect { [super initWithFrame: frameRect]; [self setEditable: NO]; [self setSelectable: NO]; [self setBezeled: NO]; [self setDrawsBackground: NO]; [self setAutoresizingMask: NSViewWidthSizable]; return self; } @end @interface NSOpenPanelTest: NSObject { NSButton *chooseDirsButton; NSButton *chooseFilesButton; NSButton *allowMultiButton; NSButton *packageButton; NSButton *accessoryViewButton; NSForm *configureForm; NSWindow *win; TableEntry *typesEntry; TableEntry *filenameEntry; TableEntry *filenamesEntry; TableEntry *directoryEntry; TableEntry *buttonEntry; } -(void)restart; -(void)startOpenPanel: (id)sender; -(NSBox *)accessoryView; @end @implementation NSOpenPanelTest: NSObject { // for instance variables see above } -(id) init { NSButton *button; GSVbox *vbox; GSVbox *ivbox; GSVbox *tmp_box; NSBox *configureBox; NSBox *resultsBox; GSTable *resultsTable; TableEntry *entry; NSRect winFrame; vbox = [[GSVbox new] autorelease]; [vbox setDefaultMinYMargin: 5]; [vbox setBorder: 5]; button = [[NSButton new] autorelease]; [button setTitle: @"Start Open Panel"]; [button sizeToFit]; [button setAutoresizingMask: NSViewMinXMargin]; [button setTarget: self]; [button setAction: @selector (startOpenPanel:)]; [vbox addView: button enablingYResizing: NO]; // The little results table resultsTable = [[[GSTable alloc] initWithNumberOfRows: 4 numberOfColumns: 2] autorelease]; // Set resizing properties [resultsTable setXResizingEnabled: NO forColumn: 0]; [resultsTable setXResizingEnabled: YES forColumn: 1]; [resultsTable setYResizingEnabled: NO forRow: 0]; [resultsTable setYResizingEnabled: NO forRow: 1]; [resultsTable setYResizingEnabled: NO forRow: 2]; [resultsTable setYResizingEnabled: NO forRow: 3]; [resultsTable setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; //Add entries in the table entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Button:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 0 column: 0 withMargins: 2]; entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Filenames:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 1 column: 0 withMargins: 2]; entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Filename:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 2 column: 0 withMargins: 2]; entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Directory:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 3 column: 0 withMargins: 2]; buttonEntry = [[TableEntry new] autorelease]; [buttonEntry setStringValue: @" "]; [buttonEntry setAlignment: NSLeftTextAlignment]; [buttonEntry sizeToFit]; [resultsTable putView: buttonEntry atRow: 0 column: 1 withMargins: 2]; filenamesEntry = [[TableEntry new] autorelease]; [filenamesEntry setStringValue: @" "]; [filenamesEntry setAlignment: NSLeftTextAlignment]; [filenamesEntry sizeToFit]; [resultsTable putView: filenamesEntry atRow: 1 column: 1 withMargins: 2]; filenameEntry = [[TableEntry new] autorelease]; [filenameEntry setStringValue: @" "]; [filenameEntry setAlignment: NSLeftTextAlignment]; [filenameEntry sizeToFit]; [resultsTable putView: filenameEntry atRow: 2 column: 1 withMargins: 2]; directoryEntry = [[TableEntry new] autorelease]; [directoryEntry setStringValue: @" "]; [directoryEntry setAlignment: NSLeftTextAlignment]; [directoryEntry sizeToFit]; [resultsTable putView: directoryEntry atRow: 3 column: 1 withMargins: 2]; // resultsBox = [[NSBox new] autorelease]; [resultsBox setTitle: @"Results"]; [resultsBox setTitlePosition: NSAtTop]; [resultsBox addSubview: resultsTable]; [resultsBox sizeToFit]; [resultsBox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: resultsBox withMinYMargin: 10]; configureForm = [[NSForm new] autorelease]; [configureForm addEntry: @"Title:"]; [configureForm addEntry: @"Prompt:"]; [configureForm addEntry: @"Directory:"]; [configureForm addEntry: @"File:"]; [configureForm addEntry: @"Types:"]; [configureForm sizeToFit]; [configureForm setAutoresizingMask: NSViewWidthSizable]; tmp_box = [[GSVbox new] autorelease]; [tmp_box setDefaultMinYMargin: 4]; [tmp_box setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin]; chooseDirsButton = [[NSButton new] autorelease]; [chooseDirsButton setTitle: @"Can Choose Directories"]; [chooseDirsButton setButtonType: NSSwitchButton]; [chooseDirsButton setBordered: NO]; [chooseDirsButton sizeToFit]; [chooseDirsButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: chooseDirsButton]; chooseFilesButton = [[NSButton new] autorelease]; [chooseFilesButton setTitle: @"Can Choose Files"]; [chooseFilesButton setButtonType: NSSwitchButton]; [chooseFilesButton setBordered: NO]; [chooseFilesButton setState: NSOnState]; [chooseFilesButton sizeToFit]; [chooseFilesButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: chooseFilesButton]; allowMultiButton = [[NSButton new] autorelease]; [allowMultiButton setTitle: @"Allow Multiple Files"]; [allowMultiButton setButtonType: NSSwitchButton]; [allowMultiButton setBordered: NO]; [allowMultiButton sizeToFit]; [allowMultiButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: allowMultiButton]; packageButton = [[NSButton new] autorelease]; [packageButton setTitle: @"Treat File Packages as Directories"]; [packageButton setButtonType: NSSwitchButton]; [packageButton setBordered: NO]; [packageButton sizeToFit]; [packageButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: packageButton]; accessoryViewButton = [[NSButton new] autorelease]; [accessoryViewButton setTitle: @"Add an Accessory View"]; [accessoryViewButton setButtonType: NSSwitchButton]; [accessoryViewButton setBordered: NO]; [accessoryViewButton sizeToFit]; [accessoryViewButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: accessoryViewButton]; ivbox = [[GSVbox new] autorelease]; [ivbox setDefaultMinYMargin: 8]; [ivbox addView: tmp_box enablingYResizing: NO]; [ivbox addView: configureForm enablingYResizing: NO]; [ivbox setAutoresizingMask: NSViewWidthSizable|NSViewMinYMargin]; configureBox = [[NSBox new] autorelease]; [configureBox setTitle: @"Options"]; [configureBox setTitlePosition: NSAtTop]; [configureBox addSubview: ivbox]; [configureBox sizeToFit]; [configureBox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: configureBox]; [vbox setAutoresizingMask: (NSViewWidthSizable | NSViewMinYMargin)]; [configureForm setNextKeyView: accessoryViewButton]; [accessoryViewButton setNextKeyView: packageButton]; [packageButton setNextKeyView: configureForm]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [win setTitle: @"NSOpenPanel Test"]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSOpenPanel Test" filename: NO]; } static NSArray *tokenize(NSString *string) { NSString *token; NSMutableArray *tokens = [NSMutableArray new]; NSScanner *scanner = [NSScanner scannerWithString: string]; NSCharacterSet *whiteSet = [NSCharacterSet whitespaceAndNewlineCharacterSet]; [scanner scanCharactersFromSet: whiteSet intoString: NULL]; while ([scanner scanUpToCharactersFromSet: whiteSet intoString: &token]) { [tokens addObject: token]; [scanner scanCharactersFromSet: whiteSet intoString: NULL]; } return [tokens autorelease]; } -(void) startOpenPanel: (id) sender { NSOpenPanel *openPanel; int packageFlag; int allowMultiFlag; int chooseFilesFlag; int chooseDirsFlag; int accessoryViewFlag; int result; NSString *string; NSString *directory; NSString *filename; NSArray *types; openPanel = [NSOpenPanel openPanel]; string = [[configureForm cellAtIndex: 0] stringValue]; if ([string length]) [openPanel setTitle: string]; string = [[configureForm cellAtIndex: 1] stringValue]; if ([string length]) [openPanel setPrompt: string]; packageFlag = [packageButton state]; if (packageFlag == 0) [openPanel setTreatsFilePackagesAsDirectories: NO]; else [openPanel setTreatsFilePackagesAsDirectories: YES]; allowMultiFlag = [allowMultiButton state]; if (allowMultiFlag == 0) [openPanel setAllowsMultipleSelection: NO]; else [openPanel setAllowsMultipleSelection: YES]; chooseFilesFlag = [chooseFilesButton state]; if (chooseFilesFlag == 0) [openPanel setCanChooseFiles: NO]; else [openPanel setCanChooseFiles: YES]; chooseDirsFlag = [chooseDirsButton state]; if (chooseDirsFlag == 0) [openPanel setCanChooseDirectories: NO]; else [openPanel setCanChooseDirectories: YES]; accessoryViewFlag = [accessoryViewButton state]; if (accessoryViewFlag == 1) [openPanel setAccessoryView: [self accessoryView]]; directory = [[configureForm cellAtIndex: 2] stringValue]; filename = [[configureForm cellAtIndex: 3] stringValue]; types = tokenize([[configureForm cellAtIndex: 4] stringValue]); if ([types count] == 0) types = nil; if ([filename hasPrefix: @"/"]) { NSRunAlertPanel (NULL, @"A valid filename can not begin with / !", @"OK", NULL, NULL); return; } result = [openPanel runModalForDirectory: directory file: filename types: types]; switch (result) { case NSOKButton: [buttonEntry setStringValue: @"NSOKButton"]; break; case NSCancelButton: [buttonEntry setStringValue: @"NSCancelButton"]; break; default: // There are no other cases. [buttonEntry setStringValue: @""]; break; } [directoryEntry setStringValue: [openPanel directory]]; [filenameEntry setStringValue: [openPanel filename]]; [filenamesEntry setObjectValue: [openPanel filenames]]; } -(NSBox *) accessoryView { NSTextField *view; NSBox *box; view = [NSTextField new]; [view setDrawsBackground: YES]; [view setBackgroundColor: [NSColor grayColor]]; [view setEditable: NO]; [view setSelectable: NO]; [view setBezeled: NO]; [view setBordered: YES]; [view setAlignment: NSCenterTextAlignment]; [view setStringValue: @"This is the AccessoryView"]; [view setFrameSize: NSMakeSize (400, 70)]; [view setAutoresizingMask: NSViewWidthSizable]; box = [NSBox new]; [box setTitle: @"AccessoryView"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: view]; [view release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable]; return [box autorelease]; } @end gnustep-examples-1.4.0/gui/GSTest/NSOpenPanel-test/.cvsignore0000664000175000017500000000005707024003530023026 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSOpenPanel-test/GNUmakefile0000664000175000017500000000245111312023142023074 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSOpenPanel-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSOpenPanel-test_OBJC_FILES = NSOpenPanel-test.m NSOpenPanel-test_PRINCIPAL_CLASS = NSOpenPanelTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSScrollView-test/0000775000175000017500000000000012204034630021235 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSScrollView-test/.cvsignore0000664000175000017500000000005707020255104023240 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSScrollView-test/GNUmakefile0000664000175000017500000000245610564603216023327 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSScrollView-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSScrollView-test_OBJC_FILES = NSScrollView-test.m NSScrollView-test_PRINCIPAL_CLASS = NSScrollViewTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSScrollView-test/NSScrollView-test.m0000664000175000017500000000717207075402053024741 0ustar fedorfedor/* NSScrollView-test.m: NSScrollView Class Demo/Test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" @interface NSScrollViewTest: NSObject { NSWindow *win; } -(void) restart; @end @implementation NSScrollViewTest: NSObject { // for instance variables see above } -(id) init { NSBox *externalBox; NSBox *borderBox; NSBox *box; NSScrollView *scrollView; NSTextField *view; NSRect winFrame; view = [NSTextField new]; [view setDrawsBackground: YES]; [view setBackgroundColor: [NSColor yellowColor]]; [view setEditable: NO]; [view setSelectable: NO]; [view setBezeled: NO]; [view setBordered: YES]; [view setAlignment: NSCenterTextAlignment]; [view setStringValue: @"This is the DocumentView"]; [view setFrameSize: NSMakeSize (400, 400)]; [view setAutoresizingMask: NSViewNotSizable]; box = [NSBox new]; [box setTitle: @"DocumentView"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: view]; [view release]; [box sizeToFit]; [box setAutoresizingMask: NSViewNotSizable]; borderBox = [NSBox new]; [borderBox setTitlePosition: NSNoTitle]; [borderBox setBorderType: NSNoBorder]; [borderBox addSubview: box]; [box release]; [borderBox sizeToFit]; [borderBox setAutoresizingMask: NSViewNotSizable]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 200, 200)]; [scrollView setDocumentView: borderBox]; [borderBox release]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; // TODO: Substitute the following with a Hbox with commands etc. externalBox = [NSBox new]; [externalBox setTitlePosition: NSNoTitle]; [externalBox setBorderType: NSNoBorder]; [externalBox addSubview: scrollView]; [scrollView release]; [externalBox sizeToFit]; [externalBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [externalBox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: externalBox]; [externalBox release]; [win setTitle: @"NSScrollView Test"]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSScrollView Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSWindowStyleMask-test/0000775000175000017500000000000012204034630022250 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSWindowStyleMask-test/.cvsignore0000664000175000017500000000005707235623633024271 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSWindowStyleMask-test/GNUmakefile0000664000175000017500000000235510564603216024340 0ustar fedorfedor# GNUmakefile # # Copyright (C) 2000 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 2000 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSWindowStyleMask-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSWindowStyleMask-test_OBJC_FILES = NSWindowStyleMask-test.m NSWindowStyleMask-test_PRINCIPAL_CLASS = NSWindowStyleMaskTest include $(GNUSTEP_MAKEFILES)/bundle.make gnustep-examples-1.4.0/gui/GSTest/NSWindowStyleMask-test/NSWindowStyleMask-test.m0000664000175000017500000001474711330472276027000 0ustar fedorfedor/* NSWindowStyleMask-test.m: NSWindow styleMasks test Copyright (C) 1999, 2000 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999, July 2000 This file is part of GNUstep. 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 #include #include #include #include #include "../GSTestProtocol.h" #define STYLE_NUMBER 7 #define PANEL_STYLE_NUMBER 4 struct { NSString *name; unsigned int styleMask; } styles[STYLE_NUMBER + PANEL_STYLE_NUMBER] = { { @"NSMiniWindowMask", NSMiniWindowMask }, { @"NSIconWindowMask", NSIconWindowMask }, { @"NSResizableWindowMask", NSResizableWindowMask }, { @"NSMiniaturizableWindowMask", NSMiniaturizableWindowMask }, { @"NSClosableWindowMask", NSClosableWindowMask }, { @"NSTitledWindowMask", NSTitledWindowMask }, { @"NSTexturedBackgroundWindowMask", NSTexturedBackgroundWindowMask }, { @"NSUtilityWindowMask (NSPanel only)", NSUtilityWindowMask }, { @"NSDocModalWindowMask (NSPanel only)", NSDocModalWindowMask }, { @"NSNonactivatingPanelMask (NSPanel only)", NSNonactivatingPanelMask }, { @"NSHUDWindowMask (NSPanel only)", NSHUDWindowMask } }; @interface NSWindowStyleMaskTest: NSObject { NSButton *styleButton[STYLE_NUMBER + PANEL_STYLE_NUMBER]; NSButton *panelButton; NSWindow *win; } -(void) restart; -(void) newWindow: (id)sender; @end @implementation NSWindowStyleMaskTest: NSObject { // for instance variables see above } -(id) init { int i; GSVbox *styleVbox; NSButton *newWindowButton; GSVbox *mainVbox; NSBox *optionsBox; NSRect winFrame; mainVbox = AUTORELEASE ([GSVbox new]); [mainVbox setDefaultMinYMargin: 5]; [mainVbox setBorder: 5]; newWindowButton = AUTORELEASE ([NSButton new]); [newWindowButton setTitle: @"Create Window"]; [newWindowButton sizeToFit]; [newWindowButton setAutoresizingMask: NSViewMinXMargin]; [newWindowButton setTarget: self]; [newWindowButton setAction: @selector (newWindow:)]; [mainVbox addView: newWindowButton enablingYResizing: NO]; panelButton = AUTORELEASE ([NSButton new]); [panelButton setTitle: @"Create NSPanel"]; [panelButton setButtonType: NSSwitchButton]; [panelButton setBordered: NO]; [panelButton sizeToFit]; [panelButton setAutoresizingMask: NSViewMaxXMargin]; [mainVbox addView: panelButton]; [mainVbox addSeparator]; styleVbox = AUTORELEASE ([GSVbox new]); [styleVbox setDefaultMinYMargin: 5]; [styleVbox setBorder: 5]; for (i = 0; i < STYLE_NUMBER + PANEL_STYLE_NUMBER; i++) { if (i == STYLE_NUMBER) { [styleVbox addSeparator]; } styleButton[i] = AUTORELEASE ([NSButton new]); [styleButton[i] setTitle: styles[i].name]; [styleButton[i] setButtonType: NSSwitchButton]; [styleButton[i] setBordered: NO]; [styleButton[i] sizeToFit]; [styleButton[i] setAutoresizingMask: NSViewMaxXMargin]; [styleVbox addView: styleButton[i]]; } optionsBox = AUTORELEASE ([NSBox new]); [optionsBox setTitle: @"Window Style Mask"]; [optionsBox setTitlePosition: NSAtTop]; [optionsBox addSubview: styleVbox]; [optionsBox sizeToFit]; [optionsBox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [mainVbox addView: optionsBox]; winFrame.size = [mainVbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: mainVbox]; [win setTitle: @"NSWindowStyleMask Test"]; [self restart]; return self; } -(void) dealloc { RELEASE (win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSWindowStyleMask Test" filename: NO]; } -(void) newWindow: (id) sender { BOOL isPanel; NSButton *button; NSTextField *label; NSString *labelString; NSWindow *newWindow; unsigned int styleMask; int i; isPanel = ([panelButton state] == 1); styleMask = 0; labelString = @""; for (i = 0; i < (isPanel ? (STYLE_NUMBER + PANEL_STYLE_NUMBER) : STYLE_NUMBER); i++) { if ([styleButton[i] state] == 1) { styleMask |= styles[i].styleMask; labelString = [NSString stringWithFormat: @"%@\n%@", labelString, styles[i].name]; } } if (isPanel) newWindow = [NSPanel alloc]; else newWindow = [NSWindow alloc]; newWindow = [newWindow initWithContentRect: NSMakeRect (100, 100, 300, 200) styleMask: styleMask backing: NSBackingStoreBuffered defer: NO]; [newWindow setReleasedWhenClosed: YES]; if (isPanel) [newWindow setTitle: @"Panel"]; button = [[[NSButton alloc] initWithFrame: NSMakeRect(100, 0, 100, 30)] autorelease]; [button setTitle: @"Close"]; [button setTarget: self]; [button setAction: @selector(closeWindow:)]; [[newWindow contentView] addSubview: button]; label = [[[NSTextField alloc] initWithFrame: NSMakeRect(0, 30, 300, 170)] autorelease]; [label setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [label setStringValue: labelString]; [label setDrawsBackground: NO]; [label setEditable: NO]; [label setBezeled: NO]; [label setSelectable: NO]; [[newWindow contentView] addSubview: label]; [newWindow orderFront: self]; } - (void) closeWindow: (id) sender { [[sender window] close]; } @end gnustep-examples-1.4.0/gui/GSTest/testList.h0000664000175000017500000000670611633504351017732 0ustar fedorfedor/* testList.h: List of Implemented Tests Copyright (C) 1999-2010 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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. */ // // If you want to write a new test, read this. // // // Each test is stored in a bundle. // A bundle is a bunch of resources (executable stuff too) // which can be dinamically loaded at run-time. // // // When the user selects a test from the menu for the first time, // the main program looks for the corresponding bundle, and // loads the "principal Class" of that bundle. (which class is the // principal class is specified in the GNUmakefile for that bundle). // An instance of this principal Class is allocated and initialized. // This should run the test, usually creating windows, gui objects, etc. // // Afterwards, each time the user selects the test again, // the main program sends a "-restart" message to this instance of the // principal class. The expected behaviour is that -restart should // bring all the windows to front. If the test wants, it may also reset // values to defaults or whatever. // // Releasing of tests after use would be easy to implement, but not really // useful, so not implemented by now. // // // This file contains the list of currently implemented test. // // Number of tests in the list #define TEST_NUMBER 23 struct { NSString *menuName; // Name shown on the menu NSString *bundleName; // Name of the bundle (without the extension .bundle) } testList[TEST_NUMBER] = { // Add your tests in this list, and update TEST_NUMBER above. {@"Composite", @"Composite-test"}, {@"Coordinate Check", @"CoordinateCheck-test"}, {@"GSHbox", @"GSHbox-test"}, {@"Keyboard Input", @"KeyboardInput-test"}, {@"NSBox", @"NSBox-test"}, {@"NSButton", @"NSButton-test"}, {@"NSColorList", @"NSColorList-test"}, {@"NSColorWell", @"NSColorWell-test"}, {@"NSForm", @"NSForm-test"}, {@"NSSavePanel", @"NSSavePanel-test"}, {@"NSScrollView", @"NSScrollView-test"}, {@"NSSecureTextField", @"NSSecureTextField-test"}, {@"NSSlider", @"NSSlider-test"}, {@"NSSplitView", @"NSSplitView-test"}, {@"NSTextView", @"NSTextView-test"}, {@"NSTableView", @"NSTableView-test"}, {@"NSProgressIndicator", @"NSProgressIndicator-test"}, {@"NSWindowStyleMask", @"NSWindowStyleMask-test"}, {@"StringDrawing", @"StringDrawing-test"}, {@"NSOutlineView", @"NSOutlineView-test"}, {@"Pixel Exact Drawing", @"PixelExactDrawing-test"}, {@"Image Selection", @"ImageSelection-test"}, {@"Image Test", @"Image-test"}, {@"Transparency Test", @"Transparency-test"} }; struct { BOOL isStarted; // YES after the test is started id principalClassInstance; // this is to send "restart" messages to it } testState[TEST_NUMBER]; gnustep-examples-1.4.0/gui/GSTest/NSSplitView-test/0000775000175000017500000000000012204034630021072 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSSplitView-test/NSSplitView-test.m0000664000175000017500000000632607075402053024433 0ustar fedorfedor/* NSSplitView-test.m: NSSplitView Class Demo/Test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" @interface NSSplitViewTest: NSObject { NSWindow *win; } -(void) restart; @end @implementation NSSplitViewTest: NSObject { // for instance variables see above } -(id) init { NSSplitView *split; NSTextField *firstView; NSTextField *secondView; NSRect winFrame; split = [[NSSplitView alloc] initWithFrame: NSMakeRect (0, 0, 400, 200)]; firstView = [NSTextField new]; [firstView setDrawsBackground: YES]; [firstView setBackgroundColor: [NSColor whiteColor]]; [firstView setEditable: NO]; [firstView setSelectable: NO]; [firstView setBezeled: YES]; [firstView setBordered: NO]; [firstView setAlignment: NSCenterTextAlignment]; [firstView setStringValue: @"First NSView Contents"]; [firstView setFrameSize: NSMakeSize (200, 200)]; [firstView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; secondView = [NSTextField new]; [secondView setDrawsBackground: YES]; [secondView setBackgroundColor: [NSColor grayColor]]; [secondView setEditable: NO]; [secondView setSelectable: NO]; [secondView setBezeled: YES]; [secondView setBordered: NO]; [secondView setAlignment: NSCenterTextAlignment]; [secondView setStringValue: @"Second NSView Contents"]; [secondView setFrameSize: NSMakeSize (200, 200)]; [secondView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [split addSubview: firstView]; [firstView release]; [split addSubview: secondView]; [secondView release]; [split setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [split frame].size; winFrame.origin = NSMakePoint (100, 120); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [win setReleasedWhenClosed: NO]; [win setContentView: split]; [split release]; [win setTitle: @"NSSplitView Test"]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSSplitView Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSSplitView-test/.cvsignore0000664000175000017500000000005707020255104023075 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSSplitView-test/GNUmakefile0000664000175000017500000000245110564603216023157 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSSplitView-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSSplitView-test_OBJC_FILES = NSSplitView-test.m NSSplitView-test_PRINCIPAL_CLASS = NSSplitViewTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/EncodingDecoding-test/0000775000175000017500000000000012204034630022066 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/EncodingDecoding-test/README0000664000175000017500000000073607026352235022766 0ustar fedorfedorThis test is for library developers -- library debugging purposes. It is to be used by writing a simple test with the window you want to test, and then encode/decode it with this test. If you encode/decode a generic window, you are likely to get a crash. This does not mean necessarily that the library is buggy or the code for this test is buggy. This test is *not* meant to manage a generic window: to make some use of it, you should write your own window to test! gnustep-examples-1.4.0/gui/GSTest/EncodingDecoding-test/EncodingDecoding-test.m0000664000175000017500000002177307722470343026434 0ustar fedorfedor/* EncodingDecoding-test.m: Encoding/deconding windows demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include #include "../GSTestProtocol.h" @interface EncodingDecodingTest: NSObject { NSBrowser *browser; NSWindow *win; } -(void)restart; // Reacting to button press -(void)encode: (id)sender; -(void)decode: (id)sender; -(void)openWindow: (id)sender; // Browser delegate methods -(NSString *)browser: (NSBrowser *)sender titleOfColumn: (int)column; -(void)browser: (NSBrowser *)sender createRowsForColumn: (int)column inMatrix: (NSMatrix *)matrix; -(void)browser: (NSBrowser *)sender willDisplayCell: (id)cell atRow: (int)row column: (int)column; // Called from the app upon updating of windows -(void) updateBrowser: (NSNotification *)aNotification; @end @implementation EncodingDecodingTest: NSObject { // for instance variables see above } -(id) init { GSVbox *vbox; GSVbox *vvbox; NSBox *box; NSButton *button; NSRect winFrame; vbox = [GSVbox new]; [vbox setDefaultMinYMargin: 5]; [vbox setBorder: 5]; // Decoding button = [NSButton new]; [button setTitle: @"Decode from File..."]; [button sizeToFit]; [button setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin]; [button setTarget: self]; [button setAction: @selector (decode:)]; box = [NSBox new]; [box setTitle: @"Decoding a Window"]; [box setTitlePosition: NSAtTop]; [box addSubview: button]; [button release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable]; [vbox addView: box]; //Encoding vvbox = [GSVbox new]; [vvbox setDefaultMinYMargin: 5]; button = [NSButton new]; [button setTitle: @"Encode to File..."]; [button sizeToFit]; [button setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin]; [button setTarget: self]; [button setAction: @selector (encode:)]; [vvbox addView: button]; [button release]; // We use a browser with one column to get a selection list browser = [[NSBrowser alloc] initWithFrame: NSMakeRect (0, 0, 200, 200)]; [browser setDelegate: self]; [browser setMaxVisibleColumns: 1]; [browser setAllowsMultipleSelection: NO]; [browser setAllowsEmptySelection: NO]; [browser setHasHorizontalScroller: NO]; [browser setTitled: YES]; [browser setTakesTitleFromPreviousColumn: NO]; [browser setPath: @"/"]; [browser setDoubleAction: @selector(openWindow:)]; [browser setTarget: self]; // We want to be informed when the windows change, so that we can // update the selection list. What we do is monitoring the windows // menu -- better than nothing and at least it should work. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateBrowser:) name: NSMenuDidAddItemNotification object: (id)[[NSApplication sharedApplication] windowsMenu]]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateBrowser:) name: NSMenuDidRemoveItemNotification object: (id)[[NSApplication sharedApplication] windowsMenu]]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateBrowser:) name: NSMenuDidChangeItemNotification object: (id)[[NSApplication sharedApplication] windowsMenu]]; [browser setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vvbox addView: browser]; [vvbox setAutoresizingMask: NSViewWidthSizable]; box = [NSBox new]; [box setTitle: @"Encoding a Window"]; [box setTitlePosition: NSAtTop]; [box addSubview: vvbox]; [vvbox release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable]; [vbox addView: box]; // Window winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [vbox release]; [win setTitle: @"Encoding-Decoding Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"Encoding-Decoding Test" filename: NO]; } -(void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(win); [super dealloc]; } -(void)encode: (id)sender { NSSavePanel *s; NSWindow *w; int result; // Get at once the window w = [[browser selectedCell] representedObject]; if (!w || ![w isKindOfClass: [NSWindow class]]) { NSRunCriticalAlertPanel (@"Error", @"You must choose a valid window", @"OK", nil, nil); return; } s = [NSSavePanel savePanel]; result = [s runModal]; if (result == NSOKButton) { BOOL result = NO; NSString *exception = nil; NS_DURING { result = [NSArchiver archiveRootObject: w toFile: [s filename]]; } NS_HANDLER { exception = [localException description]; result = NO; } NS_ENDHANDLER if (result == NO) { if (exception == nil) { exception = @"UnknownProblem"; } NSRunCriticalAlertPanel (@"Error", @"Error encoding to file %@:\n%@", @"OK", nil, nil, [s filename], exception); } } } -(void)decode: (id)sender { NSOpenPanel *o; id w = nil; int result; o = [NSOpenPanel openPanel]; result = [o runModalForTypes: nil]; if (result == NSOKButton) { NSArray *f = [o filenames]; int count = [f count]; int i; BOOL error_panels = YES; NSString *file; for (i = 0; i < count; i++) { file = [f objectAtIndex: i]; NS_DURING { w = [NSUnarchiver unarchiveObjectWithFile: file]; } NS_HANDLER { w = nil; } NS_ENDHANDLER if (w == nil) { if (error_panels) { int p = NSRunCriticalAlertPanel (@"Error", @"Error decoding file %@", @"OK", @"OK to all", nil, [f objectAtIndex: i]); if (p == NS_ALERTALTERNATE) error_panels = NO; } } else { if ([w isKindOfClass: [NSWindow class]]) { [w orderFront: self]; RETAIN (w); } else { if (error_panels) { int p = NSRunCriticalAlertPanel (@"Error", @"Object in file %@ is not a window", @"OK", @"OK to all", nil, [f objectAtIndex: i]); if (p == NS_ALERTALTERNATE) error_panels = NO; } } } } } } -(void) openWindow: (id)sender { id w; w = [[sender selectedCell] representedObject]; [w orderFront: self]; } -(NSString *)browser: (NSBrowser *)sender titleOfColumn: (int)column { if (column == 0) return @"Choose a Window to Encode"; else { NSLog (@"Bug: Asking title of column > 0!"); return @"Bug: Column > 0!"; } } -(void)browser: (NSBrowser *)sender createRowsForColumn: (int)column inMatrix: (NSMatrix *)matrix { int i; int count; int j; NSBrowserCell *cell; NSArray *windows; NSWindow *w; windows = [[NSApplication sharedApplication] windows]; count = [windows count]; [matrix addColumn]; j = 0; for (i = 0; i < count; i++) { w = [windows objectAtIndex: i]; // In practice, we show all interesting test windows // already started, both visible and out of screen // We do not manage our own window, // because we don't want to get into release/retain/etc problems. if (![w isExcludedFromWindowsMenu] && (w != win)) { if (j > 0) [matrix addRow]; cell = [matrix cellAtRow: j column: 0]; [cell setStringValue: [w title]]; // Warning: this retains w! It should be safe in this case. [cell setRepresentedObject: w]; [cell setLeaf: YES]; j++; } } if (j == 0) [matrix removeColumn: 0]; // [browser tile]; } - (void)browser: (NSBrowser *)sender willDisplayCell: (id)cell atRow: (int)row column: (int)column { } -(void) updateBrowser: (NSNotification *)aNotification { [browser reloadColumn: 0]; } @end gnustep-examples-1.4.0/gui/GSTest/EncodingDecoding-test/.cvsignore0000664000175000017500000000005707026344663024110 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/EncodingDecoding-test/GNUmakefile0000664000175000017500000000250210564603216024150 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = EncodingDecoding-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest EncodingDecoding-test_OBJC_FILES = EncodingDecoding-test.m EncodingDecoding-test_PRINCIPAL_CLASS = EncodingDecodingTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSAnimation-test/0000775000175000017500000000000012204034627021071 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSAnimation-test/AnimationView.m0000664000175000017500000003060411401540533024020 0ustar fedorfedor/* * AnimationView.m * * Created : 2007-03-Mar * Author : Xavier Glattard (xgl) * Copyright 2007 Free Software Foundation * * This file is part of the GNUstep framework. * * Last changes : 2007-04-Apr 17:44 (Paris, Madrid) by Xavier Glattard (xgl) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02111 USA. */ #include #include #include #include #include @interface AnimationTestLoopAnimation : NSAnimation {} @end @interface AnimationTestRoundTripAnimation : AnimationTestLoopAnimation { BOOL backward; } @end @interface AnimationTestMainAnimation : AnimationTestLoopAnimation { NSView *view; } - (AnimationTestMainAnimation*) initWithView: (NSView*) aView; @end //#define ANIMATION_MODE NSAnimationNonblocking //#define ANIMATION_MODE NSAnimationBlocking // NA #define ANIMATION_MODE NSAnimationNonblockingThreaded @implementation AnimationView - (NSView*) initWithFrame: (NSRect)frame { unsigned i; if ((self = [super initWithFrame: frame])) { mainAnimation = [[AnimationTestMainAnimation alloc] initWithView: self]; [mainAnimation setAnimationBlockingMode: ANIMATION_MODE]; [mainAnimation setFrameRate: 30.0]; fpsField = [[NSTextField alloc] initWithFrame: NSMakeRect (5,5,50,20)]; [fpsField setEditable: NO]; [fpsField setBezeled: YES]; [fpsField setDrawsBackground: YES]; [self addSubview: fpsField]; [fpsField setFloatValue: 0.0]; circlePosAnimation = [[AnimationTestLoopAnimation alloc] initWithDuration: 5 animationCurve: NSAnimationLinear]; [circlePosAnimation setAnimationBlockingMode: ANIMATION_MODE]; [circlePosAnimation setDelegate: self]; [circlePosAnimation setFrameRate: 0.0]; [circlePosAnimation addProgressMark: 0.23f]; [circlePosAnimation addProgressMark: 0.48f]; [circlePosAnimation addProgressMark: 0.73f]; [circlePosAnimation addProgressMark: 0.76f]; [circlePosAnimation addProgressMark: 0.98f]; circleColorAnimation = [[AnimationTestRoundTripAnimation alloc] initWithDuration: 0.4 animationCurve: NSAnimationEaseInOut]; [circleColorAnimation setAnimationBlockingMode: ANIMATION_MODE]; [circleColorAnimation setFrameRate: 0.0]; for (i=0;i<3;i++) { shapeAnimation[i] = [[NSAnimation alloc] initWithDuration: 0.5 animationCurve: NSAnimationEaseInOut]; [shapeAnimation[i] setAnimationBlockingMode: ANIMATION_MODE]; } shapeAnimation[3] = [[NSAnimation alloc] initWithDuration: 2.5 animationCurve: NSAnimationSpeedInOut]; [shapeAnimation[3] setAnimationBlockingMode: ANIMATION_MODE]; plotAnimation = [[AnimationTestLoopAnimation alloc] initWithDuration: 3.5 animationCurve: NSAnimationLinear]; [plotAnimation setAnimationBlockingMode: ANIMATION_MODE]; curvePathIndex = 0; [circlePosAnimation startWhenAnimation: mainAnimation reachesProgress: 0.0]; [circleColorAnimation startWhenAnimation: mainAnimation reachesProgress: 0.0]; [plotAnimation startWhenAnimation: mainAnimation reachesProgress: 0.0]; // delay the start : needed in case of a blocking animation [[NSRunLoop currentRunLoop] performSelector: @selector (startAnimation) target: mainAnimation argument: nil order: 1000 modes: [NSArray arrayWithObject: NSDefaultRunLoopMode]]; fpsDisplayTimer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target: self selector: @selector (fpsDisplay) userInfo: nil repeats: YES ]; } return self; } - (void) dealloc { RELEASE (mainAnimation); RELEASE (circlePosAnimation); RELEASE (circleColorAnimation); RELEASE (plotAnimation); RELEASE (fpsField); [fpsDisplayTimer invalidate]; RELEASE (fpsDisplayTimer); [super dealloc]; } - (void) fpsDisplay //{ [fpsField setFloatValue: [mainAnimation frameCount]]; } { [fpsField setFloatValue: [mainAnimation actualFrameRate]]; } - (void) drawRect: (NSRect)rect { float v,c; unsigned i,j; NSRect frame = [self frame]; float x,y,w,h; w = frame.size.width; h = frame.size.height; // Background c = [mainAnimation currentValue]; PSsetrgbcolor (1-c, c, (c+1)/2); // PSrectfill (rect.origin.x,rect.origin.y,rect.size.width,rect.size.height); // Cross lines PSnewpath (); PSsetrgbcolor (0.1,0.1,0.1); PSmoveto ( 0.0, 0.0) ; PSlineto(w,h); PSmoveto ( w, 0.0) ; PSlineto( 0.0,h); PSstroke (); #define CURVES_1D //BROKEN : uses private functions... #if 0 // Animation curves PSsetlinewidth (1); PSsetalpha (1.0); for (j=0;j<3;j++) { PSnewpath (); PSsetrgbcolor (j==0,j==1,j==2); cd = &_gs_animationCurveDesc[j]; #ifdef CURVES_1D PSmoveto (0,h*_gs_animationValueForCurve(cd,0.0,0)); #else PSmoveto (w*_GSBezierEval(&(cd->rb.n),0)/4,h*_GSBezierEval(&(cd->rb.d),0.0)/4); #endif for (i=1;i<=50;i++) { PSlineto ( #ifdef CURVES_1D i*w/50, h*_gs_animationValueForCurve (cd,i/50.0,0) #else w*_GSBezierEval (&(cd->rb.n),i/50.0)/4, h*_GSBezierEval (&(cd->rb.d),i/50.0)/4 #endif ); } PSstroke (); } // Moving plot cd = [plotAnimation _gs_curveDesc]; v = [plotAnimation _gs_curveShift]; #ifndef CURVES_1D PSnewpath (); PSsetrgbcolor (0,0,0); PSsetlinewidth (2); PSmoveto (h*cd->rb.w[0]*cd->rb.p[0]/4,w*cd->rb.w[0]/4); for (i=1;i<4;i++) PSlineto (h*cd->rb.w[i]*cd->rb.p[i]/4,w*cd->rb.w[i]/4); PSstroke (); for (i=0;i<4;i++) PSrectfill ((h*cd->rb.w[i]*cd->rb.p[i])/4-3,(w*cd->rb.w[i])/4-3,6,6); #endif PSnewpath (); PSsetrgbcolor (1,1,1); PSsetlinewidth (1); #ifdef CURVES_1D PSmoveto (v*w,h*_gs_animationValueForCurve(cd,v,v)); #else PSmoveto (w*_GSBezierEval(&(cd->rb.n),0)/4,h*_GSBezierEval(&(cd->rb.d),0.0)/4); #endif for (i=1;i<=50;i++) { PSlineto ( #ifdef CURVES_1D w*(i/50.0*(1-v)+v), h*_gs_animationValueForCurve (cd,i/50.0*(1-v)+v,v) #else w*_GSBezierEval (&(cd->rb.n),i/50.0)/4, h*_GSBezierEval (&(cd->rb.d),i/50.0)/4 #endif ); } PSstroke (); #endif // BROKEN // Moving plot c = 0; j = curvePathIndex/2; #ifdef CURVES_1D #else // BROKEN cd = [plotAnimation _gs_curveDesc]; #endif v = [plotAnimation currentProgress]; for (i=j;i<100;i++,c+=0.03) { PSsetrgbcolor (c/3,c/3,1.0); PSrectfill (curvePath[i].x*w-c, curvePath[i].y*h-c,2*c,2*c); } for (i=0;irb.n),v)/4; curvePath[j].y = _GSBezierEval (&(cd->rb.d),v)/4; #endif i = [plotAnimation animationCurve]; PSsetrgbcolor (i==0,i==1,i==2); PSsetalpha (1.0); PSrectfill ( curvePath[j].x*w-4, curvePath[j].y*h-4,8,8 ); if (curvePathIndex==199) curvePathIndex = 0; else curvePathIndex++; // shape[0] PSnewpath (); v = [shapeAnimation[0] currentValue] * 2; if (v>1) v=2-v; PSsetrgbcolor (1.0/2+v/2,v/2,0); x = w*(1.0/2 ); y = h*(1.0/2+1.0/3); PSmoveto ( x+40+v*25, y ); PSlineto ( x , y+40+v*13); PSlineto ( x-40-v*25, y ); PSlineto ( x , y-40-v*13); PSclosepath (); PSfill (); // shape[1] PSnewpath (); v = [shapeAnimation[1] currentValue]; PSsetrgbcolor (0,1.0/2+v/2,v/2); x = w*(1.0/2-1.0/3); y = h*(1.0/2 ); PSmoveto ( x+40*cos(v*2*M_PI- M_PI/6), y+40*sin(v*2*M_PI- M_PI/6) ); PSlineto ( x+40*cos(v*2*M_PI+ M_PI_2), y+40*sin(v*2*M_PI+ M_PI_2) ); PSlineto ( x+40*cos(v*2*M_PI+7*M_PI/6), y+40*sin(v*2*M_PI+7*M_PI/6) ); PSclosepath (); PSfill (); // shape[2] v = [shapeAnimation[2] currentValue] * 8; if (v>4.0) v=8-v; x = w*(1.0/2 ); y = h*(1.0/2-1.0/3); for (i=0;i<=v;i++) { PSnewpath (); PSsetrgbcolor ((v-i)/2.0,0.0,(1.0+v-i)/2.0); PSsetlinewidth (4.0+(i-v)*2+3); PSmoveto ( x+20+12*i, y+20+12*i ); PSlineto ( x-20-12*i, y+20+12*i ); PSlineto ( x-20-12*i, y-20-12*i ); PSlineto ( x+20+12*i, y-20-12*i ); PSclosepath (); PSstroke (); } // Moving circle v = [circlePosAnimation currentValue]; c = [circleColorAnimation currentValue]; PSnewpath (); PSsetrgbcolor (c,(c+1)/2,1-c); x = w/2*(1+cos (v*2*M_PI)*2/3); y = h/2*(1+sin (v*2*M_PI)*2/3); PSarc (x,y, 15-c*5,0,360 ); PSfill (); // shape[3] c = c+v*3; v = [shapeAnimation[3] currentValue] * 2; if (v>1) v=2-v; x = (1-v)*w*(1.0/2+1.0/3) + v*x; y = (1-v)*h*(1.0/2 ) + v*y; PSsetrgbcolor (v,1.0/2-v/2,0); PSarc (x+25*cos((c+v*2)*4.0*M_PI),y+18*sin((c+v*2+3)*3.0*M_PI), 8-c+v*5,0,360 ); PSfill (); } - (void) animation: (NSAnimation*)animation didReachProgressMark: (NSAnimationProgress)progress { if (animation == circlePosAnimation) { if (progress == 0.23f) { [plotAnimation setAnimationCurve: NSAnimationEaseOut]; [shapeAnimation[0] startAnimation]; } else if (progress == 0.48f) { [plotAnimation setAnimationCurve: NSAnimationEaseIn]; [shapeAnimation[1] startAnimation]; } else if (progress == 0.73f) { [plotAnimation setAnimationCurve: NSAnimationEaseInOut]; [shapeAnimation[2] startAnimation]; } else if (progress == 0.76f) { [shapeAnimation[3] startAnimation]; } else if (progress == 0.98f) { [plotAnimation setAnimationCurve: NSAnimationLinear]; } } } @end // implementation AnimationView @implementation AnimationTestLoopAnimation - (void) setCurrentProgress: (NSAnimationProgress) progress { // Does this work with Cocoa ?? [super setCurrentProgress: progress]; if (progress >= 1.0) [self startAnimation]; } - (NSArray*) runLoopModesForAnimating { return [NSArray arrayWithObject: NSDefaultRunLoopMode]; } @end @implementation AnimationTestRoundTripAnimation - (AnimationTestRoundTripAnimation*) initWithDuration: (NSTimeInterval)duration animationCurve: (NSAnimationCurve)curve { if ((self = [super initWithDuration: duration animationCurve: curve])) { backward = NO; } return self; } - (float) currentValue { float value = [super currentValue]; if (backward) value = 1 - value; return value; } - (void)setCurrentProgress:(NSAnimationProgress)progress { [super setCurrentProgress: progress]; if (progress >= 1.0) backward = !backward; } @end @implementation AnimationTestMainAnimation - (AnimationTestMainAnimation*) initWithView: (NSView*)aView; { if ((self = [super initWithDuration: 7 animationCurve: NSAnimationLinear])) { view = aView; RETAIN (view); } return self; } - (void) dealloc { RELEASE (view); [super dealloc]; } - (void) updateView { [view display]; } - (void)setCurrentProgress:(NSAnimationProgress)progress { [super setCurrentProgress: progress]; // needed in case of a threaded animation : is Appkit not thread safe ??? // Note : dont wait ! Avoids a deadlock... [self performSelectorOnMainThread: @selector(updateView) withObject: nil waitUntilDone: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSAnimation-test/NSAnimation-test.m0000664000175000017500000000357510607463037024424 0ustar fedorfedor/* NSAnimation-test.m: NSAnimation Demo/Test * * Copyright (C) 2000 Free Software Foundation, Inc. * * Created : 2007-03-Mar * Author : Xavier Glattard (xgl) * * This file is part of GNUstep. * * 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 #include #include "../GSTestProtocol.h" #include "AnimationView.h" @interface NSAnimationTest: NSObject { NSWindow *win; AnimationView *view; } -(void) restart; @end @implementation NSAnimationTest -(id) init { win = [[NSWindow alloc] initWithContentRect: NSMakeRect(100,200,400,400) styleMask: NSBorderlessWindowMask | NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask backing: NSBackingStoreRetained defer: NO ]; view = [[AnimationView alloc ] initWithFrame: NSZeroRect]; [win setContentView: view]; [win setReleasedWhenClosed: NO]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSAnimation Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSAnimation-test/GNUmakefile0000664000175000017500000000250410620632134023141 0ustar fedorfedor# GNUmakefile: makefile for NSAnimation-test # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Xavier Glattard # Date: 2007 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall BUNDLE_NAME = NSAnimation-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSAnimation-test_OBJC_FILES = NSAnimation-test.m AnimationView.m NSAnimation-test_PRINCIPAL_CLASS = NSAnimationTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSAnimation-test/AnimationView.h0000664000175000017500000000364610605134660024026 0ustar fedorfedor/* * AnimationView.h * * Created : 2007-03-Mar * Author : Xavier Glattard (xgl) * Copyright 2007 Free Software Foundation * * This file is part of the GNUstep framework. * * Last changes : 2007-04-Apr 09:17 (Paris, Madrid) by Xavier Glattard (xgl) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02111 USA. */ #ifndef _ANIMATIONVIEW_H_ #define _ANIMATIONVIEW_H_ #include #include #include @interface NSAnimation(Private) - (_NSAnimationCurveDesc*) _gs_curveDesc; - (NSAnimationProgress) _gs_curveShift; @end @class AnimationTestLoopAnimation; @class AnimationTestRoundTripAnimation; @class AnimationTestMainAnimation; /** * AnimationView */ @interface AnimationView : NSView { AnimationTestMainAnimation *mainAnimation; AnimationTestLoopAnimation *circlePosAnimation; AnimationTestRoundTripAnimation *circleColorAnimation; NSAnimation* shapeAnimation[4]; AnimationTestLoopAnimation* plotAnimation; NSPoint curvePath[100]; unsigned curvePathIndex; NSTimer *fpsDisplayTimer; NSTextField *fpsField; } - (void) fpsDisplay; @end // interface AnimationView #endif // _ANIMATIONVIEW_H_ gnustep-examples-1.4.0/gui/GSTest/PixelExactDrawing-test/0000775000175000017500000000000012204034630022265 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/PixelExactDrawing-test/pixelExact2.tiff0000664000175000017500000002175411562434220025345 0ustar fedorfedorII*?@$ B`DaCRFa 8 mK #R3T/#GqQŠr̪Y!Df2yFmOa 7KZ$bi5jtڼJ+EJbʇl>$V0*]Lrt*eN O vanGOeC sw+`٭NGQh6}ΟQy4ok#&MzR1ǍrywNvJU s٩NR}?F{z؟gz߾O)I/+9oz1R{.%,p|յ17(TFD)NĨLV.+H[q{GHDoh@&Jȫ#7 J%ɬ$)*rxҼP.20|1&D55K |čؗmT3!39=D x8r\/ *R1%'RE] 3SLŔP@GPԵ}[T&s]6g_65TaHV"?@ɦH%n {efj—lh[ ܗ5YEq(mo^w]uܷz(W^7v_uj`z7@?)]^+n[IIanXVYߕl'TF/3af9Uٞu vi)~j1W kR&ŵFO0۰ ?@$ Bpl5bP Dai3lv)cM] />cܕ)di :pfGVuZsIgg QYU?gq8{cr9n{szVn'_y}CjUxfe =s pixelExact2.tiff |HHImageMagick 6.6.2-6 2010-09-17 Q16 http://www.imagemagick.orgapplmntrRGB XYZ  +)acspAPPL-appldescPbdscmBcprtwtptrXYZgXYZbXYZrTRC aarg $ vcgt DndinX>chad,mmod(bTRC gTRC aabg $ aagg $ descDisplaymluc nlNLdaDKplPLenUS,nbNO>frFRPptBRfptPT~zhCN esESjaJPruRU$svSEzhTWdeDEfiFIitIT"koKR 6Kleuren-LCDLCD-farveskrmKolor LCDColor LCDFarge-LCDLCD couleurLCD ColoridoLCD a Cores_ir LCDLCD color000 LCD&25B=>9 -48A?;59Frg-LCD_irmfvoy:VhFarb-LCDVri-LCDLCD colori LCDtextCopyright Apple, Inc., 2011XYZ RXYZ \5?XYZ p4*XYZ )8curv #(-26;@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)Kmparaff Y vcgtV#j9 w e Y Z Y ^eju$Fh 3!_"#$&'K(~)*,-H.{/023B4p5679*:U;<=>@AABfCDEFHIJ6KPLhM~NOPQRSUV"W5XGYYZl[~\]^_`acde(f?)@9AFBRC[DdEmFsGwH{IJKLMNO~P{QyRvStTqUmVjWgXeYbZa[_\]]]^\_\`]a^b_cadbeffjglhpiujyk}lmnopqrstuvwxyz{|}~~tkaVJ>1$ڑɒq^K7#ӞmYE1 ѪyiYI9+۹кŻ‹ÇĆŅƆLJȋɏʖ˞̧Ͳο.Fa|ٚڹCh'Mq*@Scoy~{tj]O@. BgIQ m ' d & vCuFi@{T-  !"#l$G%%&'(y)O*#*+,-j.://01m283345T6678d9%9:;g<'<=>c?!?@A\BBCDUEEFGSHHIJXKKLMfN*NOP}QDR RSTiU3UVWXdY2ZZ[\n]?^^_`a[b/ccdef`g8hhijk|lXm4nnopqrisHt'uuvwxybz@{{|}~rN*ჼpI#Չ^6玿qJ$ؔkH&ěkP6ڣǤzurru|ߵ0c5n†,ǬɊ}͆Ϥ&։ە=Mndin6XUA(P T9 #/;IYi{5Ro9_,XH|W H O$o X Q  [  v =  wR6""5Qs4hD0 !-!"#;#$%]&&'(T))*+u,D--./0~1`2F3/45 66789:<=>&?;@UArBCDF G9HlIJLMYNOQ/R}SU$V|WY7Z[]h^`Dac.df$gi(jl8moUprtuwTxz|F}R|;W'іkQ:'  &8Nh 0V{˟->JQTRJ>-uL k9 &2@O`r2OnBjCs=sYW'oT J S  p 9 y ZF;;EXu1d?-,< !\""#$M%%&'_()()*+h,>--./01|2e3R4B556+7$8 9 :#;)<3=@>P?d@{ABCDF GKHzIJLMVNOQRgSUVWWYZb[]#^_aYbd5eghj kmnpqstv&wyBz|f}+Ƅb@⌆*ϑuÖkfa \VMB鷏6ݼ,}'.ˑGл{?٨ۂbJ90/7Je3~%  0BWo 0YEz*i4|e e~I !   {  9pd<X)sYB- !""#$%&'(*+,#-4.H/_0x123467C8m9:;=+>`?@B CJDEGHYIJL?MNP>QRTZUW(XZ[z\^o_atbdfgiKjln0oqs8tvx^z{}e,\,ϏuHŚnA棷U!묳w7a[!Øp*z@tР'0550( ߿~Y0uB ZXAd~1AT`dZsf32 B&lmmod_]gnustep-examples-1.4.0/gui/GSTest/PixelExactDrawing-test/pixelExact1.tiff0000664000175000017500000002507211562570436025353 0ustar fedorfedorII*?@$ ARpl4V e8|F'E" 29$ $Ai3i@3 OyOgw^#y?Wix>t7 ? Bh > ?.z|I x:NSXfix߱j2IH EȲg \09DIETYFiGԸࡂ#!x_#Mrl`%,p`/ G3P@hZAЃ(`&` '#8:L`DEi`T%AEcIҤ3ZZZ{-ںgb[7 @P(W5@)PNx%iڃd+snpYql-iYU5}Um]ۛ b7g֜d5aҀ ?@$ ARpi8& u8Y&`w;*^&]/?8<-&mF@ EZ1Lz<D E7VcU͍\.0`ZπX" @ xM+%%qS֡RdcaBkUebms30 Z7>8\2Y;J P @k.g* mMЎ]/s.eyM@}9NTοO\7p:PScBMiD#̴CL4Dt 1(BIDiu76S(3I;OYҕUmR=eO֓/VS+괯u9PcznSK+1^XG`[o݇oY;ϗeUn]wd\UTSeFWyBiqܸnMՃbt Va'`xdYI_Mߙda ϑ1\ ;Uؖycٮ{&懎g*huaw{dw}ӥ⺢gjj ?@$ ARpl4 q"H&=E84-&m7y\r7Gd8"Jm4CMiu=h4]1fz"Me4f"SUGRReJֺM+EWk(eNw^lպc--ma,eC /9Zme0-%ɧsvKMYlD;=]Z[k\hccF#~p^'PA@+"Ġ}Sy{0^ooj Hۺ/+?L=, A* N%@o{;\f,?ñ F0g2b9\Xo _ $p{KC(JNg*L&ED#Re1$$p2j`L1{98I"30 Ϩ*!b^QBfE$4ғF ɡM aOĒ'"~I N?UՊ\PUY5lWEu]uZRW*cv%XI-gtMiڈMlնe Cm%XؖC qNPvZʹob7] ^@$ gqvX& |ws V a^F!z_Kbw 8a $PW~gcy97D$>\gzNZȮ:: gڮeyz> hk|dN&ɧ~հ目=;.q]vE`oAMZR[2CPhmJT.lr("?@$ ARpl6DbQ'ؼv=܊M'Ht] mys.gU6Iy}&OS9ZWԫƹ_֬{eSwnu%$&@ @ ^C/  ~as9 _cWh|a4[էY+WWj Bu]fl[s7|#8}fo_Ԕo\ G=mcOMI ޛ q%2𑡉jҊiI@lA3*|V5|i"VSLZ1?@$ ARpl6DbQ'ؼv=܊M'Ht] mS4y?O9DƉGP*OӪ:NUp?˫ Z+^"bKv jE,aʬq{ݢ\rW;&cow k]̫ig3[ZMC, O#aWĿOv^mm7>^SwޡumΓShfw%l"SJw{f42[$S?  "F&d:0$A( Aл_ AHDq;'4X‘|KQDcBΫƑ s9L*u%qy"I"rro$!RT2|oJRܗ+DR5-JLGԃ1N%, d1˱L3Tv&$!2tOSmΉ-ѰH%(>dP=/E3PhE; ?@$ ARpl6DbQ'FcQn=Dc$7#JePD]*RmQ)̙@ ifh?P:RVňn) QŪMFH'U2P۫rn;-Ԩʑ$6&^ǰ1|[2e~Mez 7p c$ik[\.ɷ6M 6ҥ} 6n/uNv 3ڜq#݃oshZ'{|Q/}~ϝo"@|@*I,ЃN*CI|3/@CSڴMDL7 \S)\J>DkAk1TE#Ѥy"e1||tDz3'HrVo̫.p,%.i$确TK2jQ³ OA@\;BN<TTPF(=sN/Users/ericw/Desktop/t.tiff- 3 = 1 %' NHNHapplmntrRGB XYZ  +)acspAPPL-appldescPbdscmBcprtwtptrXYZgXYZbXYZrTRC aarg $ vcgt DndinX>chad,mmod(bTRC gTRC aabg $ aagg $ descDisplaymluc nlNLdaDKplPLenUS,nbNO>frFRPptBRfptPT~zhCN esESjaJPruRU$svSEzhTWdeDEfiFIitIT"koKR 6Kleuren-LCDLCD-farveskrmKolor LCDColor LCDFarge-LCDLCD couleurLCD ColoridoLCD a Cores_ir LCDLCD color000 LCD&25B=>9 -48A?;59Frg-LCD_irmfvoy:VhFarb-LCDVri-LCDLCD colori LCDtextCopyright Apple, Inc., 2011XYZ RXYZ \5?XYZ p4*XYZ )8curv #(-26;@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)Kmparaff Y vcgtV#j9 w e Y Z Y ^eju$Fh 3!_"#$&'K(~)*,-H.{/023B4p5679*:U;<=>@AABfCDEFHIJ6KPLhM~NOPQRSUV"W5XGYYZl[~\]^_`acde(f?)@9AFBRC[DdEmFsGwH{IJKLMNO~P{QyRvStTqUmVjWgXeYbZa[_\]]]^\_\`]a^b_cadbeffjglhpiujyk}lmnopqrstuvwxyz{|}~~tkaVJ>1$ڑɒq^K7#ӞmYE1 ѪyiYI9+۹кŻ‹ÇĆŅƆLJȋɏʖ˞̧Ͳο.Fa|ٚڹCh'Mq*@Scoy~{tj]O@. BgIQ m ' d & vCuFi@{T-  !"#l$G%%&'(y)O*#*+,-j.://01m283345T6678d9%9:;g<'<=>c?!?@A\BBCDUEEFGSHHIJXKKLMfN*NOP}QDR RSTiU3UVWXdY2ZZ[\n]?^^_`a[b/ccdef`g8hhijk|lXm4nnopqrisHt'uuvwxybz@{{|}~rN*ჼpI#Չ^6玿qJ$ؔkH&ěkP6ڣǤzurru|ߵ0c5n†,ǬɊ}͆Ϥ&։ە=Mndin6XUA(P T9 #/;IYi{5Ro9_,XH|W H O$o X Q  [  v =  wR6""5Qs4hD0 !-!"#;#$%]&&'(T))*+u,D--./0~1`2F3/45 66789:<=>&?;@UArBCDF G9HlIJLMYNOQ/R}SU$V|WY7Z[]h^`Dac.df$gi(jl8moUprtuwTxz|F}R|;W'іkQ:'  &8Nh 0V{˟->JQTRJ>-uL k9 &2@O`r2OnBjCs=sYW'oT J S  p 9 y ZF;;EXu1d?-,< !\""#$M%%&'_()()*+h,>--./01|2e3R4B556+7$8 9 :#;)<3=@>P?d@{ABCDF GKHzIJLMVNOQRgSUVWWYZb[]#^_aYbd5eghj kmnpqstv&wyBz|f}+Ƅb@⌆*ϑuÖkfa \VMB鷏6ݼ,}'.ˑGл{?٨ۂbJ90/7Je3~%  0BWo 0YEz*i4|e e~I !   {  9pd<X)sYB- !""#$%&'(*+,#-4.H/_0x123467C8m9:;=+>`?@B CJDEGHYIJL?MNP>QRTZUW(XZ[z\^o_atbdfgiKjln0oqs8tvx^z{}e,\,ϏuHŚnA棷U!묳w7a[!Øp*z@tР'0550( ߿~Y0uB ZXAd~1AT`dZsf32 B&lmmod_]gnustep-examples-1.4.0/gui/GSTest/PixelExactDrawing-test/GNUmakefile0000664000175000017500000000254011562434220024345 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = PixelExactDrawing-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest $(BUNDLE_NAME)_OBJC_FILES = $(wildcard *.m) $(BUNDLE_NAME)_PRINCIPAL_CLASS = PixelExactDrawingTest $(BUNDLE_NAME)_RESOURCE_FILES = $(wildcard *.tiff) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/PixelExactDrawing-test/PixelExactDrawing-test.m0000664000175000017500000003040511562570436027023 0ustar fedorfedor/* PixelExactDrawing-test.m: test that fills/strokes line up on the desired pixel boundaries. Copyright (C) 2011 Free Software Foundation, Inc. Author: Eric Wasylishen Date: 2011 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" @interface PixelExactDrawingTest : NSObject { NSWindow *win; } -(void) restart; @end /** * Creates a 72dpi w by h red and white checkerboard */ static NSImage *CheckerboardImage(NSInteger w, NSInteger h) { NSImage *img; NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL pixelsWide: w pixelsHigh: h bitsPerSample: 8 samplesPerPixel: 4 hasAlpha: YES isPlanar: NO colorSpaceName: NSDeviceRGBColorSpace bytesPerRow: 0 bitsPerPixel: 0]; NSInteger x, y; for (x=0; x Date: 2000 This file is part of GNUstep. 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 #include #include #include #include "../GSTestProtocol.h" static void create_test_color_list (void) { if ([NSColorList colorListNamed: @"test"]) return; else { NSColorList *testList; NSRunAlertPanel (NULL, @"Creating a new test color list", @"OK", NULL, NULL); testList = AUTORELEASE ([[NSColorList alloc] initWithName: @"test"]); [testList setColor: [NSColor blackColor] forKey: @"Black"]; [testList setColor: [NSColor redColor] forKey: @"Red"]; [testList setColor: [NSColor yellowColor] forKey: @"Yellow"]; [testList setColor: [NSColor blueColor] forKey: @"Blue"]; [testList setColor: [NSColor orangeColor] forKey: @"Orange"]; [testList setColor: [NSColor greenColor] forKey: @"Green"]; [testList setColor: [NSColor grayColor] forKey: @"Gray"]; [testList setColor: [NSColor brownColor] forKey: @"Brown"]; // Test remove [testList setColor: [NSColor darkGrayColor] forKey: @"DarkGray"]; [testList removeColorWithKey: @"DarkGray"]; // Test Insert [testList insertColor: [NSColor whiteColor] key: @"White" atIndex: 0]; // Test Implicit replace [testList setColor: [NSColor yellowColor] forKey: @"Purple"]; [testList setColor: [NSColor purpleColor] forKey: @"Purple"]; [testList writeToFile: nil]; } } @interface NSColorListTest: NSObject { NSBrowser *browser; NSWindow *win; } -(void)restart; -(void)showColorList: (id)sender; // Browser delegate methods -(NSString *)browser: (NSBrowser *)sender titleOfColumn: (int)column; -(void)browser: (NSBrowser *)sender createRowsForColumn: (int)column inMatrix: (NSMatrix *)matrix; -(void)browser: (NSBrowser *)sender willDisplayCell: (id)cell atRow: (int)row column: (int)column; @end @implementation NSColorListTest: NSObject { // for instance variables see above } -(id) init { GSVbox *vbox; NSRect winFrame; NSTextField *text; create_test_color_list (); vbox = [GSVbox new]; [vbox setDefaultMinYMargin: 5]; [vbox setBorder: 5]; // Some help text = [NSTextField new]; [text setEditable: NO]; [text setBezeled: NO]; [text setDrawsBackground: NO]; [text setStringValue: @"DoubleClick on a list to display"]; [text sizeToFit]; [text setAutoresizingMask: (NSViewMinYMargin | NSViewMaxYMargin | NSViewMinXMargin | NSViewMaxXMargin)]; [vbox addView: text]; [text release]; // We use a browser with one column to get a selection list browser = [[NSBrowser alloc] initWithFrame: NSMakeRect (0, 0, 200, 200)]; [browser setDelegate: self]; [browser setMaxVisibleColumns: 1]; [browser setAllowsMultipleSelection: NO]; [browser setAllowsEmptySelection: NO]; [browser setHasHorizontalScroller: NO]; [browser setTitled: YES]; [browser setTakesTitleFromPreviousColumn: NO]; [browser setPath: @"/"]; [browser setTarget: self]; [browser setDoubleAction: @selector(showColorList:)]; [browser setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [vbox addView: browser]; [browser release]; // Window winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [vbox release]; [win setTitle: @"NSColorList Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSColorList Test" filename: NO]; } -(void) dealloc { [win release]; [super dealloc]; } -(void) showColorList: (id)sender { NSColorList *cl; NSWindow *w; NSScrollView *scrollView; GSVbox *vbox; NSEnumerator *e; GSHbox *hbox; NSTextField *text; NSColorWell *color; NSString *name; cl = (NSColorList *)[[sender selectedCell] representedObject]; vbox = [GSVbox new]; [vbox setDefaultMinYMargin: 5]; [vbox setBorder: 5]; e = [[cl allKeys] objectEnumerator]; while ((name = [e nextObject])) { hbox = [GSHbox new]; [hbox setDefaultMinXMargin: 10]; text = [NSTextField new]; [text setEditable: NO]; [text setBezeled: NO]; [text setDrawsBackground: NO]; [text setStringValue: name]; [text sizeToFit]; [text setAutoresizingMask: (NSViewMinYMargin | NSViewMaxYMargin)]; [hbox addView: text]; [text release]; color = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [color setColor: [cl colorWithKey: name]]; [color setAutoresizingMask: NSViewMinXMargin]; [hbox addView: color]; [color release]; [hbox setAutoresizingMask: NSViewWidthSizable]; [vbox addView: hbox]; [hbox release]; } scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 150, 300)]; [scrollView setDocumentView: vbox]; [vbox release]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; w = [[NSWindow alloc] initWithContentRect: NSMakeRect (100, 100, 150, 300) styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [w setContentView: scrollView]; [scrollView release]; [w setTitle: [cl name]]; [w setReleasedWhenClosed: YES]; [w orderFront: self]; } -(NSString *)browser: (NSBrowser *)sender titleOfColumn: (int)column { if (column == 0) return @"Available Color Lists"; else { NSLog (@"Bug: Asking title of column > 0!"); return @"Bug: Column > 0!"; } } -(void)browser: (NSBrowser *)sender createRowsForColumn: (int)column inMatrix: (NSMatrix *)matrix { int i; int count; NSBrowserCell *cell; NSArray *colorLists; NSColorList *cl; colorLists = [NSColorList availableColorLists]; count = [colorLists count]; if (count) { [matrix addColumn]; for (i = 0; i < count; i++) { if (i > 0) [matrix addRow]; cl = (NSColorList *)[colorLists objectAtIndex: i]; cell = [matrix cellAtRow: i column: 0]; [cell setStringValue: [cl name]]; [cell setRepresentedObject: cl]; [cell setLeaf: YES]; } } } - (void)browser: (NSBrowser *)sender willDisplayCell: (id)cell atRow: (int)row column: (int)column { } @end gnustep-examples-1.4.0/gui/GSTest/NSColorList-test/.cvsignore0000664000175000017500000000005707036000462023063 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSColorList-test/GNUmakefile0000664000175000017500000000245110564603216023143 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSColorList-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSColorList-test_OBJC_FILES = NSColorList-test.m NSColorList-test_PRINCIPAL_CLASS = NSColorListTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/TextSystem-test/0000775000175000017500000000000012204034630021034 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/TextSystem-test/TextSystem-test.m0000664000175000017500000001147111654075375024347 0ustar fedorfedor/* TextSystem-test.m: test fonts, glyphs Copyright (C) 2011 Free Software Foundation, Inc. Author: Eric Wasylishen Date: 2011 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" static NSGlyph GlyphForCharacter(NSFont *f, unichar c) { NSTextView *view = [[NSTextView alloc] init]; NSGlyph g = 0; [view setFont: f]; [view setString: [[[NSString alloc] initWithCharacters: &c length: 1] autorelease]]; if ([[view layoutManager] numberOfGlyphs] > 0) { [[view layoutManager] getGlyphs: &g range: NSMakeRange(0, 1)]; } [view release]; return g; } static NSGlyph GlyphForAttributedStringIndex(NSAttributedString *as, NSUInteger i) { NSFont *f = [as attribute: NSFontAttributeName atIndex: i effectiveRange: NULL]; if (f == nil) { f = [NSFont systemFontOfSize: 0]; } return GlyphForCharacter(f, [[as string] characterAtIndex: i]); } /** * This glyph generator reverses the input string */ @interface CrazyGlyphGenerator : NSGlyphGenerator { } @end @implementation CrazyGlyphGenerator - (void) generateGlyphsForGlyphStorage: (id )storage desiredNumberOfCharacters: (NSUInteger)num glyphIndex: (NSUInteger*)glyph characterIndex: (NSUInteger*)index { NSAttributedString *as = [storage attributedString]; NSUInteger len = [as length]; NSUInteger i; for (i=*index; i<(*index + num); i++) { NSGlyph g = GlyphForAttributedStringIndex(as, i); [storage insertGlyphs: &g length: 1 forStartingGlyphAtIndex: (len - i) characterIndex: i]; } *index = *index + num; *glyph = *glyph + num; } @end static void AddLabel(NSString *text, NSRect frame, NSView *dest) { NSTextField *labelView = [[NSTextField alloc] initWithFrame: frame]; [labelView setStringValue: text]; [labelView setEditable: NO]; [labelView setSelectable: NO]; [labelView setBezeled: NO]; [labelView setFont: [NSFont labelFontOfSize: 10]]; [labelView setDrawsBackground: NO]; [dest addSubview: labelView]; [labelView release]; } @interface TextSystemTest : NSObject { NSWindow *win; } -(void) restart; @end @interface TextSystemTestView : NSView { } @end @implementation TextSystemTestView - (id)initWithFrame: (NSRect)frame { self = [super initWithFrame: frame]; if (self != nil) { AddLabel(@"The text view below has a glyph generator which reverses the input string. It should display HelloWorld backwards (dlroWolleH)", NSMakeRect(0, 310, 400, 50), self); { NSTextContainer *tc1; NSTextView *tv1; NSLayoutManager *lm1; NSTextStorage *storage; NSGlyphGenerator *gg; gg = [[CrazyGlyphGenerator alloc] init]; storage = [[NSTextStorage alloc] init]; lm1 = [[NSLayoutManager alloc] init]; [lm1 setGlyphGenerator: gg]; [gg release]; [storage addLayoutManager: lm1]; [lm1 release]; tc1 = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(150, 150)]; [lm1 addTextContainer: tc1]; [tc1 release]; tv1 = [[NSTextView alloc] initWithFrame: NSMakeRect(0, 0, 150,150) textContainer: tc1]; [self addSubview: tv1]; [tv1 release]; [[storage mutableString] appendString: @"HelloWorld"]; } } return self; } @end @implementation TextSystemTest : NSObject -(id) init { NSView *content; content = [[TextSystemTestView alloc] initWithFrame: NSMakeRect(0,0,400,360)]; // Create the window win = [[NSWindow alloc] initWithContentRect: [content frame] styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: content]; [win setMinSize: [win frame].size]; [win setTitle: @"TextSystem Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: [win title] filename: NO]; } - (void) dealloc { RELEASE (win); [super dealloc]; } @end gnustep-examples-1.4.0/gui/GSTest/TextSystem-test/GNUmakefile0000664000175000017500000000256711654075375023143 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = TextSystem-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest $(BUNDLE_NAME)_OBJC_FILES = $(wildcard *.m) $(BUNDLE_NAME)_PRINCIPAL_CLASS = TextSystemTest $(BUNDLE_NAME)_RESOURCE_FILES = $(wildcard *.tiff) $(wildcard *.icns) $(wildcard *.png) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/GSTestInfo.plist0000664000175000017500000000051510107552352020777 0ustar fedorfedor{ ApplicationName = "GSTest"; ApplicationDescription = "GNUstep GUI Demo/Test Suite"; ApplicationRelease = "1.0"; Authors = ("Nicola Pero "); Copyright = "Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc."; CopyrightDescription = "Released under the GNU General Public License 2.0"; } gnustep-examples-1.4.0/gui/GSTest/GSTestProtocol.h0000664000175000017500000000171407017347362021014 0ustar fedorfedor/* GSTestProtocol.h Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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. */ // // All the tests should adopt this protocol // @protocol GSTest - (void) restart; @end gnustep-examples-1.4.0/gui/GSTest/NSSavePanel-test/0000775000175000017500000000000012204034627021030 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSSavePanel-test/NSSavePanel-test.m0000664000175000017500000002557311312012564024311 0ustar fedorfedor/* NSSavePanel-test.m: NSSavePanel class demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include #include #include "../GSTestProtocol.h" // A unit rectangle of the little results table @interface TableEntry: NSTextField @end @implementation TableEntry - (id) initWithFrame: (NSRect)frameRect { [super initWithFrame: frameRect]; [self setEditable: NO]; [self setSelectable: NO]; [self setBezeled: NO]; [self setDrawsBackground: NO]; [self setAutoresizingMask: NSViewWidthSizable]; return self; } @end @interface NSSavePanelTest: NSObject { NSButton *otherTypesButton; NSButton *packageButton; NSButton *accessoryViewButton; NSForm *configureForm; NSWindow *win; TableEntry *typesEntry; TableEntry *filenameEntry; TableEntry *directoryEntry; TableEntry *buttonEntry; } -(void)restart; -(void)startSavePanel: (id)sender; -(NSBox *)accessoryView; @end @implementation NSSavePanelTest: NSObject { // for instance variables see above } -(id) init { NSButton *button; GSVbox *vbox; GSVbox *ivbox; GSVbox *tmp_box; NSBox *configureBox; NSBox *resultsBox; GSTable *resultsTable; TableEntry *entry; NSRect winFrame; vbox = [[GSVbox new] autorelease]; [vbox setDefaultMinYMargin: 5]; [vbox setBorder: 5]; button = [[NSButton new] autorelease]; [button setTitle: @"Start Save Panel"]; [button sizeToFit]; [button setAutoresizingMask: NSViewMinXMargin]; [button setTarget: self]; [button setAction: @selector (startSavePanel:)]; [vbox addView: button enablingYResizing: NO]; // The little results table resultsTable = [[[GSTable alloc] initWithNumberOfRows: 3 numberOfColumns: 2] autorelease]; // Set resizing properties [resultsTable setXResizingEnabled: NO forColumn: 0]; [resultsTable setXResizingEnabled: YES forColumn: 1]; [resultsTable setYResizingEnabled: NO forRow: 0]; [resultsTable setYResizingEnabled: NO forRow: 1]; [resultsTable setYResizingEnabled: NO forRow: 2]; [resultsTable setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; //Add entries in the table entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Button:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 0 column: 0 withMargins: 2]; entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Filename:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 1 column: 0 withMargins: 2]; entry = [[TableEntry new] autorelease]; [entry setStringValue: @"Directory:"]; [entry setAlignment: NSRightTextAlignment]; [entry sizeToFit]; [resultsTable putView: entry atRow: 2 column: 0 withMargins: 2]; buttonEntry = [[TableEntry new] autorelease]; [buttonEntry setStringValue: @" "]; [buttonEntry setAlignment: NSLeftTextAlignment]; [buttonEntry sizeToFit]; [resultsTable putView: buttonEntry atRow: 0 column: 1 withMargins: 2]; filenameEntry = [[TableEntry new] autorelease]; [filenameEntry setStringValue: @" "]; [filenameEntry setAlignment: NSLeftTextAlignment]; [filenameEntry sizeToFit]; [resultsTable putView: filenameEntry atRow: 1 column: 1 withMargins: 2]; directoryEntry = [[TableEntry new] autorelease]; [directoryEntry setStringValue: @" "]; [directoryEntry setAlignment: NSLeftTextAlignment]; [directoryEntry sizeToFit]; [resultsTable putView: directoryEntry atRow: 2 column: 1 withMargins: 2]; // resultsBox = [[NSBox new] autorelease]; [resultsBox setTitle: @"Results"]; [resultsBox setTitlePosition: NSAtTop]; [resultsBox addSubview: resultsTable]; [resultsBox sizeToFit]; [resultsBox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: resultsBox withMinYMargin: 10]; configureForm = [[NSForm new] autorelease]; [configureForm addEntry: @"Title:"]; [configureForm addEntry: @"Prompt:"]; [configureForm addEntry: @"Directory:"]; [configureForm addEntry: @"File:"]; [configureForm addEntry: @"Types:"]; [configureForm sizeToFit]; [configureForm setAutoresizingMask: NSViewWidthSizable]; tmp_box = [[GSVbox new] autorelease]; [tmp_box setDefaultMinYMargin: 4]; [tmp_box setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin]; otherTypesButton = [[NSButton new] autorelease]; [otherTypesButton setTitle: @"Allows Other Types"]; [otherTypesButton setButtonType: NSSwitchButton]; [otherTypesButton setBordered: NO]; [otherTypesButton sizeToFit]; [otherTypesButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: otherTypesButton]; packageButton = [[NSButton new] autorelease]; [packageButton setTitle: @"Treat File Packages as Directories"]; [packageButton setButtonType: NSSwitchButton]; [packageButton setBordered: NO]; [packageButton sizeToFit]; [packageButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: packageButton]; accessoryViewButton = [[NSButton new] autorelease]; [accessoryViewButton setTitle: @"Add an Accessory View"]; [accessoryViewButton setButtonType: NSSwitchButton]; [accessoryViewButton setBordered: NO]; [accessoryViewButton sizeToFit]; [accessoryViewButton setAutoresizingMask: NSViewMaxXMargin]; [tmp_box addView: accessoryViewButton]; ivbox = [[GSVbox new] autorelease]; [ivbox setDefaultMinYMargin: 8]; [ivbox addView: tmp_box enablingYResizing: NO]; [ivbox addView: configureForm enablingYResizing: NO]; [ivbox setAutoresizingMask: NSViewWidthSizable|NSViewMinYMargin]; configureBox = [[NSBox new] autorelease]; [configureBox setTitle: @"Options"]; [configureBox setTitlePosition: NSAtTop]; [configureBox addSubview: ivbox]; [configureBox sizeToFit]; [configureBox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: configureBox]; [vbox setAutoresizingMask: (NSViewWidthSizable | NSViewMinYMargin)]; [configureForm setNextKeyView: accessoryViewButton]; [accessoryViewButton setNextKeyView: packageButton]; [packageButton setNextKeyView: configureForm]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [win setTitle: @"NSSavePanel Test"]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSSavePanel Test" filename: NO]; } static NSArray *tokenize(NSString *string) { NSString *token; NSMutableArray *tokens = [NSMutableArray new]; NSScanner *scanner = [NSScanner scannerWithString: string]; NSCharacterSet *whiteSet = [NSCharacterSet whitespaceAndNewlineCharacterSet]; [scanner scanCharactersFromSet: whiteSet intoString: NULL]; while ([scanner scanUpToCharactersFromSet: whiteSet intoString: &token]) { [tokens addObject: token]; [scanner scanCharactersFromSet: whiteSet intoString: NULL]; } return [tokens autorelease]; } -(void) startSavePanel: (id) sender { NSSavePanel *savePanel; int otherTypesFlag; int packageFlag; int accessoryViewFlag; int result; NSString *string; NSString *directory; NSString *filename; NSArray *allowedTypes; savePanel = [NSSavePanel savePanel]; string = [[configureForm cellAtIndex: 0] stringValue]; if ([string length]) [savePanel setTitle: string]; string = [[configureForm cellAtIndex: 1] stringValue]; if ([string length]) [savePanel setPrompt: string]; packageFlag = [packageButton state]; if (packageFlag == 0) [savePanel setTreatsFilePackagesAsDirectories: NO]; else [savePanel setTreatsFilePackagesAsDirectories: YES]; allowedTypes = tokenize([[configureForm cellAtIndex: 4] stringValue]); if ([allowedTypes count] > 0) [savePanel setAllowedFileTypes: allowedTypes]; else [savePanel setAllowedFileTypes: nil]; otherTypesFlag = [otherTypesButton state]; if (otherTypesFlag == 0) [savePanel setAllowsOtherFileTypes: NO]; else [savePanel setAllowsOtherFileTypes: YES]; accessoryViewFlag = [accessoryViewButton state]; if (accessoryViewFlag == 1) [savePanel setAccessoryView: [self accessoryView]]; filename = [[configureForm cellAtIndex: 3] stringValue]; directory = [[configureForm cellAtIndex: 2] stringValue]; if ([filename hasPrefix: @"/"]) { NSRunAlertPanel (NULL, @"A valid filename can not begin with / !", @"OK", NULL, NULL); return; } result = [savePanel runModalForDirectory: directory file: filename]; switch (result) { case NSOKButton: [buttonEntry setStringValue: @"NSOKButton"]; break; case NSCancelButton: [buttonEntry setStringValue: @"NSCancelButton"]; break; default: // There are no other cases. [buttonEntry setStringValue: @""]; break; } [directoryEntry setStringValue: [savePanel directory]]; [filenameEntry setStringValue: [savePanel filename]]; } -(NSBox *) accessoryView { NSTextField *view; NSBox *box; view = [NSTextField new]; [view setDrawsBackground: YES]; [view setBackgroundColor: [NSColor grayColor]]; [view setEditable: NO]; [view setSelectable: NO]; [view setBezeled: NO]; [view setBordered: YES]; [view setAlignment: NSCenterTextAlignment]; [view setStringValue: @"This is the AccessoryView"]; [view setFrameSize: NSMakeSize (400, 70)]; [view setAutoresizingMask: NSViewWidthSizable]; box = [NSBox new]; [box setTitle: @"AccessoryView"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: view]; [view release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable]; return [box autorelease]; } @end gnustep-examples-1.4.0/gui/GSTest/NSSavePanel-test/.cvsignore0000664000175000017500000000005707024003530023023 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSSavePanel-test/GNUmakefile0000664000175000017500000000245110564603216023107 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSSavePanel-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSSavePanel-test_OBJC_FILES = NSSavePanel-test.m NSSavePanel-test_PRINCIPAL_CLASS = NSSavePanelTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/ImageSelection-test/0000775000175000017500000000000012204034630021573 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/ImageSelection-test/ImageSelection-test.m0000664000175000017500000002140111657327051025631 0ustar fedorfedor/* ImageSelection-test.m: test that fills/strokes line up on the desired pixel boundaries. Copyright (C) 2011 Free Software Foundation, Inc. Author: Eric Wasylishen Date: 2011 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" @interface ImageSelectionTest : NSObject { NSWindow *win; } -(void) restart; @end @interface VectorTestRep : NSImageRep { } + (NSImage*) testImage; @end @interface ImageSelectionTestView : NSView { NSImage *test72DPIAnd288DPI; NSImage *testICNSIcon; NSImage *testTIFFIconWithAllImages72DPI; NSImageView *imageView; NSPopUpButton *classesPopUp; NSPopUpButton *scalingModesPopUp; } - (void) sliderH: (id)sender; - (void) sliderV: (id)sender; - (void) imageScaling: (id)sender; - (void) imageClass: (id)sender; @end @implementation ImageSelectionTestView static NSImage *ImageFromBundle(NSString *name, NSString *type) { return [[[NSImage alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [ImageSelectionTestView class]] pathForResource: name ofType: type]] autorelease]; } - (id)initWithFrame: (NSRect)frame { self = [super initWithFrame: frame]; if (self != nil) { test72DPIAnd288DPI = [ImageFromBundle(@"test72DPIAnd288DPI", @"tiff") retain]; testICNSIcon = [ImageFromBundle(@"testICNSIcon", @"icns") retain]; testTIFFIconWithAllImages72DPI = [ImageFromBundle(@"testTIFFIconWithAllImages72DPI", @"tiff") retain]; { NSSlider *slider = [[[NSSlider alloc] initWithFrame: NSMakeRect(248, 200, 256, 16)] autorelease]; [slider setMinValue: 8.0]; [slider setMaxValue: 600.0]; [slider setFloatValue: 48.0]; [slider setTarget: self]; [slider setAction: @selector(sliderH:)]; [slider setContinuous: YES]; [self addSubview: slider]; } { NSSlider *sliderV = [[[NSSlider alloc] initWithFrame: NSMakeRect(228, 200, 16, 256)] autorelease]; [sliderV setMinValue: 8.0]; [sliderV setMaxValue: 600.0]; [sliderV setFloatValue: 48.0]; [sliderV setTarget: self]; [sliderV setAction: @selector(sliderV:)]; [sliderV setContinuous: YES]; [self addSubview: sliderV]; } { scalingModesPopUp = [[[NSPopUpButton alloc] initWithFrame: NSMakeRect (0, 200, 220, 32)] autorelease]; [scalingModesPopUp addItemWithTitle: @"NSImageScaleProportionallyDown"]; [[scalingModesPopUp lastItem] setTag: NSImageScaleProportionallyDown]; [scalingModesPopUp addItemWithTitle: @"NSImageScaleAxesIndependently"]; [[scalingModesPopUp lastItem] setTag: NSImageScaleAxesIndependently]; [scalingModesPopUp addItemWithTitle: @"NSImageScaleNone"]; [[scalingModesPopUp lastItem] setTag: NSImageScaleNone]; [scalingModesPopUp addItemWithTitle: @"NSImageScaleProportionallyUpOrDown"]; [[scalingModesPopUp lastItem] setTag: NSImageScaleProportionallyUpOrDown]; [scalingModesPopUp setTarget: self]; [scalingModesPopUp setAction: @selector(imageScaling:)]; [self addSubview: scalingModesPopUp]; } { classesPopUp = [[[NSPopUpButton alloc] initWithFrame: NSMakeRect (0, 240, 220, 32)] autorelease]; [classesPopUp addItemWithTitle: @"NSButton"]; [classesPopUp addItemWithTitle: @"NSImageView"]; [classesPopUp setTarget: self]; [classesPopUp setAction: @selector(imageClass:)]; [self addSubview: classesPopUp]; } [self imageClass: nil]; } return self; } - (void) sliderH: (id)sender { [[imageView superview] setNeedsDisplayInRect: [imageView frame]]; [imageView setFrameSize: NSMakeSize([sender floatValue], [imageView frame].size.height)]; [[imageView superview] setNeedsDisplayInRect: [imageView frame]]; } - (void) sliderV: (id)sender { [[imageView superview] setNeedsDisplayInRect: [imageView frame]]; [imageView setFrameSize: NSMakeSize([imageView frame].size.width, [sender floatValue])]; [[imageView superview] setNeedsDisplayInRect: [imageView frame]]; } - (void) imageScaling: (id)sender { NSInteger mode = [[scalingModesPopUp selectedItem] tag]; if ([imageView isKindOfClass: [NSImageView class]]) { [imageView setImageScaling: mode]; } else if ([imageView isKindOfClass: [NSButton class]]) { NSButtonCell *cell = [imageView cell]; [cell setImageScaling: mode]; } // FIXME: We need this line... but not sure if we should. [[imageView superview] setNeedsDisplayInRect: [imageView frame]]; } - (void) imageClass: (id)sender { Class c = Nil; NSRect frame; NSString *selected = [[classesPopUp selectedItem] title]; if (imageView) { frame = [imageView frame]; [imageView removeFromSuperview]; imageView = nil; } else { frame = NSMakeRect(248, 224, 48, 48); } if ([selected isEqual: @"NSImageView"]) { imageView = [[[NSImageView alloc] initWithFrame: frame] autorelease]; [imageView setImage: testTIFFIconWithAllImages72DPI]; [imageView setImageFrameStyle: NSImageFrameGrayBezel]; } else if ([selected isEqual: @"NSButton"]) { imageView = [[[NSButton alloc] initWithFrame: frame] autorelease]; [imageView setImage: testTIFFIconWithAllImages72DPI]; } if (imageView) { [self addSubview: imageView]; [self imageScaling: nil]; } } - (void) drawRect: (NSRect)dirty { // Image tests [test72DPIAnd288DPI drawInRect: NSMakeRect(0,0,32,32) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0f]; [testICNSIcon drawInRect: NSMakeRect(64, 0, 16, 16) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0f]; [testTIFFIconWithAllImages72DPI drawInRect: NSMakeRect(128, 0, 32, 32) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0f]; [testTIFFIconWithAllImages72DPI drawInRect: NSMakeRect(192, 0, 48, 48) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0f]; // Test calling setSize: and drawAtPoint: works { NSImage *img = [testTIFFIconWithAllImages72DPI copy]; [img setSize: NSMakeSize(24, 24)]; [img drawAtPoint: NSMakePoint(0, 64) fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; [[NSColor redColor] set]; NSFrameRect(NSMakeRect(0,64,24,24)); [img release]; } } @end @implementation ImageSelectionTest : NSObject -(id) init { NSView *content; content = [[ImageSelectionTestView alloc] initWithFrame: NSMakeRect(0,0,800,445)]; // Create the window win = [[NSWindow alloc] initWithContentRect: [content frame] styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: content]; [win setMinSize: [win frame].size]; [win setTitle: @"Image Selection Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: [win title] filename: NO]; } - (void) dealloc { RELEASE (win); [super dealloc]; } @end @implementation VectorTestRep - (id)init { [self setSize: NSMakeSize(32, 32)]; [self setAlpha: YES]; [self setOpaque: NO]; [self setBitsPerSample: NSImageRepMatchesDevice]; [self setPixelsWide: NSImageRepMatchesDevice]; [self setPixelsHigh: NSImageRepMatchesDevice]; return self; } - (BOOL)draw { [[[NSColor blueColor] colorWithAlphaComponent: 0.5] set]; [NSBezierPath setDefaultLineWidth: 2.0]; [NSBezierPath strokeRect: NSMakeRect(1, 1, 28, 28)]; [[[NSColor redColor] colorWithAlphaComponent: 0.5] set]; [NSBezierPath setDefaultLineWidth: 1.0]; [[NSBezierPath bezierPathWithOvalInRect: NSMakeRect(2,2,26,26)] stroke]; [@"Vector Rep" drawInRect: NSMakeRect(2,2,26,26) withAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [NSFont userFontOfSize: 8], NSFontAttributeName, nil]]; return YES; } + (NSImage *)testImage { NSImage *img = [[[NSImage alloc] initWithSize: NSMakeSize(32, 32)] autorelease]; [img addRepresentation: [[[self alloc] init] autorelease]]; return img; } @end gnustep-examples-1.4.0/gui/GSTest/ImageSelection-test/testICNSIcon.icns0000664000175000017500000022372711574040253024742 0ustar fedorfedoricns'is323s8mkil32 |Bހl UWJ1m0@Pv4 $h7?=081}7V>M C ^ |B޾l UWJ1m0@P6Pv4,t'$ (F"ނ1h7?t=# 81쾁2"}7V>9C|C ^  |Bހl UWJ1m0@Pv4 $h7?=081}7V>M C ^ |B޾l UWJ1m0@P6Pv4,t'$ (F"ނ1h7?t=# 81쾁2"}7V>9C|C ^  |Bހl UWJ1m0@Pv4 $h7?=081}7V>M C ^ |B޾l UWJ1m0@P6Pv4,t'$ (F"ނ1h7?t=# 81쾁2"}7V>9C|C ^ l8mkit320m {:*g ܃C HҐOǐ.;Ԏ\iTN 'ڏ(%fp/ ̊W||Vmj& @gcF'2mC7nkHW-b^y&pp#Ň  ݁‡%X@>^ CIЃH 1, vu *.OM]i(  ֌g NxaBVL]z}Q2o5gijhâI7]_G{ W&#]҇S[nd}`S3,) :yd "- (RoD٦ J 9x˨͓ {:*g ܃C HҐOǾ.;Ԏ\iTN 'چ(%fp/ ̊W||Vmj& @gcF'2mC7nkHW-b^y&pp#Ň 留 7?>6݁‡% X@>^&+ C_8IЃHj< 1, vu *v@.OMD]iIs( .c ցg NxaBTVL2]z}Q2o5g2mi!tj ؀xhà ł|b7] _G{ W&#]҇S!'[n}GS8L>C3, Oyd  "!  (RRDه J 9xˉm {:*g ܃C HҐOǐ.;Ԏ\iTN 'ڏ(%fp/ ̊W||Vmj& @gcF'2mC7nkHW-b^y&pp#Ň  ݁‡%X@>^ CIЃH 1, vu *.OM]i(  ֌g NxaBVL]z}Q2o5gijhâI7]_G{ W&#]҇S[nd}`S3,) :yd "- (RoD٦ J 9x˨͓ {:*g ܃C HҐOǾ.;Ԏ\iTN 'چ(%fp/ ̊W||Vmj& @gcF'2mC7nkHW-b^y&pp#Ň 留 7?>6݁‡% X@>^&+ C_8IЃHj< 1, vu *v@.OMD]iIs( .c ցg NxaBTVL2]z}Q2o5g2mi!tj ؀xhà ł|b7] _G{ W&#]҇S!'[n}GS8L>C3, Oyd  "!  (RRDه J 9xˉm {:*g ܃C HҐOǐ.;Ԏ\iTN 'ڏ(%fp/ ̊W||Vmj& @gcF'2mC7nkHW-b^y&pp#Ň  ݁‡%X@>^ CIЃH 1, vu *.OM]i(  ֌g NxaBVL]z}Q2o5gijhâI7]_G{ W&#]҇S[nd}`S3,) :yd "- (RoD٦ J 9x˨͓ {:*g ܃C HҐOǾ.;Ԏ\iTN 'چ(%fp/ ̊W||Vmj& @gcF'2mC7nkHW-b^y&pp#Ň 留 7?>6݁‡% X@>^&+ C_8IЃHj< 1, vu *v@.OMD]iIs( .c ցg NxaBTVL2]z}Q2o5g2mi!tj ؀xhà ł|b7] _G{ W&#]҇S!'[n}GS8L>C3, Oyd  "!  (RRDه J 9xˉt8mk@ic08< jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 ;<'+i)^RTcOO12J@A߀2Zl'\꾊mv*nqV \?XIAѶmn9ݺ_D1v>,0>oM&c!6eVr¢;?^}ض9eTrÁ" p zG}My҆ ^zU=@>hQ HXjcˊ*`_WYު /'D<.(@|-F ^tۜt In:Хl yWZ럝?k4xbo5o7W,&a-lYŦCIRgcVwzD/c"eL(z+ b` GinI"=; B>8 07yE'̿=ОE6^i`Jf @a?CA^9ѬxLrN0-t -$ CԶF&G w(2y.ˊSFwsSڄkAoYgOX~<1K@ֶ7Q4΃Cd eؚ,XGI-``< C8^D϶BҙRLz3jx$Y"Ԋ$n`k)`)nzoˀP ՚% ,̜ozچ YD;m3ȳ yamdQnzD'vu@g-#-dh41_邅q;t"אv{fY_nӵ.7 EC̓;8kɧkF>DG?iw}kƖާPEqFWF4r@-^38"gf}>ARwU |0WVd/m {,9;kxN0evY#r}\seG; S;b.4 C,OOQMweW˜o BVW4V\W$;ѴQ@~jG_z4.TBM\ձRiRjF\l-.#SNkxeIG(g=a۔v0!ݠ$EbYdBH@Qq?:x?zwT-_ bfq^JbwqyDsdQ\GAZlͯvr%Ш!s-p+ HĶ{zcEGv.<⨅V xu=p|ٷiXSI ȯY2=$Mٹv , jLnXf h;LOn.@!g#ߪ$QZU)wd<>ȐOJxdT?w/"KKvň`v*' dӲ%ap()C Hɵ/S1R٥ե0gs߀O:L-OvIγGn-_f Qp.s7wygq_8CZ |)--}TZɰR6&[A(Q#/U6YK c1M) +߲јO[B~~7]e*UQ/^>TiLukoK)S;emMi˘F/?EIN*sSJq&Gӱ!U@-Qq6t2Mg|z&[ ,tf3"9,A/eK!X^r곧4finSlT}~_qԭ#zµ:f|#b%]0Q!z'VB!fjnj%ːQ v5)FێO|APu=paz'Erglpw` κfQx9R~ bH5J⧄>4jl Ly7/JxbdOma@h2\`bҕ]kx!*t}kI%,X,:\^'z.B3NW:,VꫠN$.%ϨD`6XT;}Y S6n2ISkԓs7\*1ώ](sRa4~U|ݥOfG|Ȗ%5mpe}eljĬ5+홅Yc&ʂiY{:PrCmWyf=]7R*H HlǸњDō)!o.c@iaGNA[Pg`-̨%k($uA}-v.jMQc^ Aomo)eH>K| C[s')<Kdߓ$P!ߨ̰~bstl '߄+,{<-PP?4jP9$<#ᩇe0ҥʩ`ȵȕwbߟݏdnDm e@;ئnak[b,vbc|þT:'{X_3檌)W#8Ϫˡ$Ͱ#,ȸti9rz4DHAf\9; gBtkPÈnP&s: (\)yƴ3 mZ6*?w6j!0;lۋhwdEu7l,Sv3E56~߃o𚧆yuBbY/L%TK̎۟|_L[bT{$Z&E0di-yHhs:}pbmK5`Ag$4f K tº!@2MބxQ-GCUFQL .@zE%<${nnDq%݄GҞHDքMLP^BAwZGΰUIA (Iז4#$4.EJ:>4)OW1Jfj(ݮޜټzl/fs$o9>.]TOѯc'> j 4#b @(P|gb>(V!Vl,ġ._YI[i'zd҆{NU ZBFd.77ělDQ8 :-ဃ;_f!b9A e*d;p๫Mc"so |=%T%ѿBºdaˤ6h'IE`w?k#l{~w;kVӛđHSﮁLkj3žIQmSEG}Hi ͋ruAӵ+IMBY%[_ |ܼ6R]hchA\AxTYwp:F,CA|kjA(KM\v9ȵ/j@jԔͽ0jلq!䑿K9H,K ݫY)e8f,ph(&S&h# /ݮD|K̢[AC_i;l2`ز*2^\~nL3[iA%w=0MOP\$eQBhws4s}/+ %Q,q/q~E{k3ǒ`:Ҟ_[ӈӈo|_7 0Bܢ?19cc 2k ҠsS46Vz^B[c|^M(H V-Ňcg\&w EL$?҆YF.$L *(D\ fBr!rwfո[%nDlˬ,M'<*AoWsLr2v退'tY;AzgGt;VwzKݠXoNYBኟF6>\םvrTT{Кpvεz$b@+#=tkGҵ ukp먗}()OYּy wms]}p )yOc3`cց0> wkhZZVW_WJ* Db.qzX'ɱj9slR]mtG 'd!]KccFHr㊱? %QgiI;G^{`G (a1K rq5J՘SM=Ǎ"Z9s,x:5B"Bl|Qs6_A0;-,[A{Ub3a2>M!*T^HO`9]Ք֭ĻaE~BZI8p$ph ʼZiW;#9Qv"MӭUc0W4DGz+VN*243 S=($CV%"BՌLs 7LK%cS;Mt͗d7tuط\5r,$S#,3s+0ŶV8HрoDGا1]vhԮ\?ڭxp .6YFC^>Oy)gNŲ~hIIaS.r#Lm"@[{67;q78u Je(0aÕOŦ ?$C6 A_JoGYH)(F5W!  粴ȰG"=VM#iŋIH3Jr\)/fzcDluڴ+@0 _@ADǟ;X1I0R{nsK',+$y&LIۏiIQϒb *>_Ǘ+7 + Dv>,"" hh,.|C!sԩG]{W}9kivLwa2!eT)'{uRL7ӹ' tg;b|RP1=}J,9xq I+C \?q4b=t8zl56Ej-vU>%q( cbsSKM0||%Hl)ΤĪNh^7g֋' 97oSv+>Iج4 tdƋ+y`+8tX"kd7V-\a6Q|Zwu.= 캼Y[d±&D o(~aO:_;^DTB>San)PDEsF[|Tj*Vf:X#r ⢍OسavI ѡ F_V$eH bGsr^`&XJSbs_fmVW{) *olB!:DpF YPKYv`[ g' ޗ |4X{d4gj IDo|9/OH#7=RHh,y!{2|m@t!(L [_}fS5KL[QQHw.9z:\bUV[̧Ov%<4R򗹭FaI[_$6vt^?juT"Ǽ0uu#w4h(o$SuN^ot[927_^ ?ĬB P"7?OilU<?MQ'1qe!Md8#ݲR[eƮ'@b5|"HfX6tDڋ!'x)7~YY5 9BLr릋_SkI$8epO(05 ˠ,%MO*yr) 1c̚awz D+R,C,۵K7\_[<xP(E sq1b:5:W(tŜ%NI7*o7ޫ;F9#I>1=0(Xꡡo{8YK3xwd 3JCul&IvZz``:'D5x^×%$NYYz4@R\t.:FEeYeZzLM閚.ЍciXw;(,{*Ov/qo?sH.=s#LhU㐈Vh'}w.4f@[K{@l"m>es0 Mge)s ٍQQ 6nA-)n=7[]rd.}2@@<}Kgbj2 ; ;+9PI5/f  b7;5 )0@{QYELWCV~9 Ň"?{ē˫9\q$o欤-Lp+=Q#]&k?,|KK:$iz}fl$X5]iEyAӛnvS$QHG+ _ p*O=:7ax##}a4 Ig4u4‚I1+8^L֕Z&qMZt0dB܏ç (0[ .Mu7M2XٺU7ڤa "> o@v҈ʊ}@1!HpSP ICWK"//Pǚ4;]vb/x2A"#bmZfٸLzyhmiQke.nu!5VX%t?^O=txSHf)fW>E/ p=vEoN}FL #5Z V7HUxZhEyͷ1EL#gV%vsJr-ތ0maZJ ;np DL6@yږ)_-3Ɏ瀷J\Y ?iFX|!ZڥZ84puP#΃@^j[O<5 rO>\!"P3![~+ѵzw9~4nV9P)VjYqb,ă'K8!G\h=`1.C5vyO&ܜ5ՁPj&ǯ"Dc!?ϰ9}!F>h~EF#Ě7A%)kȝ(^pU^]D'9ZT#ГT+ʉgK݌R%Ǭ*|d-nI|v7޾YhR9 Q/6li+E<|LPCjQ"_ H7K39.Tͱ^m%>+in:}v fU0O֚¥?Ə.$% 4scv݉P <8"U -(hc mڧuXM9 +vRdg|i@a{Ǩ20숏U[ĀC*6*iÍAA:8DifD^K0?C-q [x*#1AxN) nڐOq0t-.o!WlDv z!l·8* ;_w9',;dE9k͑[f+ejb8kf|(%έT'c0G8rCD%emYڰ9֕{vZ0g-p{OAkz[67:{Jcp@sRn#yRvYHSнLP矞p (-AHI6Mױ =nch2pxIvT_bfeŞ'_: }Ȣ^6*$ϭV,WqJ VtDJAe;pFq$ J|Ҁ} oJH1FP/ĨmItaU?ҝ \%* @nN#F=Q:IۋˬEk}6beO5BTZ=}fJHPݎ8R2 Ox}2G_89?u|DX{i8t)̗o6?'eV~)y[K ;kk=%AfC"ujJL m~40p |Rn(.MvEpCDҥT_N|`#'hf܍mԷ7Wy]_R_Hk6aaC(7fD8Ǒ1v f.aN˞M\h&U9ҼlA v뽲T% n/Nn뚝}fus) Ʋǁ}+CI 94ߤbb"`FyE%0Ni$گI`IB>9q1?&_ p+T6 w5Dk/w X6ba'/b垖t<&eqlMOU |"%N"P[NOͧZk x>;4)t5 @ZI4jUUJwҠ-6NzN}m<$Uog zǘ5M>HlMP]lE<&b7R:ad{A*G!d"^%Mɸm,WAdXύ myzsPb/QE3"KI@S( xlXL[}qH|fz2Qb.* S6T12͍fQ~hƔk) `=`}9p CR4^W9X1 !/azݪ4"b vlZ9 &OUje]=L= eY NyO\O/dNb-᰿i!tx_}m7+EGeKŢk a 63 r[GXJD5Qk mME[O$ hn'AsF. FJ]|U=|8HdΑn.\ՠ|A61Y3tR6ߢFQP+leBH]?AيH\JNp^eB7&"g-a==y7H"e >5?XGlWt Կ$[X@ޕep򴭦~قKR\bK} ,iZN վ:ExB J^0!cji6=Ų.{;(MVD7Px, [!J90\i)[S?,/Ѓ$(6NwP 'W2$ʗ9zgO ;$_q8tń&ѭUK8w1}+yJy"MS@Ac GуMQ\`+0;ڝ5LY{HVQ"}T ?]o r7-+,e.Dq , ~;!ŗ: ㅘ71M.&hR+g#Ɠ^GC@yuoX2 SA"쬷,Z`C$WFμn^q KՉF|iߦԖguxA96s?H7еE}N]G1{v^= !1*)RTk$?ۢ/%3(9բ7f4-c_Q@TxU{ӵ54r;Aߖ 2=h3=;k8#1+JR HV9+^ɞ|PhP{]v]RL!?&AwP#uY"["-nۻYE83ߪޜ 5 +})I'V;.81Lm:NڬAeћ[È%*k9[[wqRx_DO=:\e >h\ +dڮ2*mծnА*TY $YLdsQ>sic09lI jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 k\ߞw 0k$9Тl3$-?Y_aЅd;@H'=<;Z,*5Gեf RE/ fA ܘРY&#(-*;0HLG4vbr]IXe#n)oީ[t?zॎ$]0B֣2}_(IG@3„^T '}!H.穘hC $v2JK$V\8?=w0,rOZ&,h3t8ϡA^6/sn-2=.~^@ӌFN<zs57Yp>{ 5~xfRV_[8QkDCY lȖ+>o~^@E+xґ[QG?Oƶ'sm2_bB21F,h&tj&nW ko=n;iFw^~*rL|{E*Ё@4U]@ ! \p~Wֹ3=86蔋spX9P`Mt}cg k2.W SXc#xF=1OkQ雯Q5Wqvi>L~w 3%(Rub(0DO!G$dN3P.F>4QBKb'ζb0EU"y5?HW#e-eVc$Sgw~ucmh?w$(YW#*ֲƢF˜^;>4<1삊~ˠM*ҚɌ6:*0Zd}/)XAX9NV@B)_JL 1C~7lDa(^tԠ6VOtz8bȆ7] :qW Gjq n4A _稃EfBJOsx"l;'lR&rQi"8;7t.ʜ[R^ܛĵ<̱Do~W_CDC8w749%m? `|lFkkMxrv%1 ح+F@M1O Ol xrE$Fv7j;2Ksm޼o}fJa H;>԰(c|R$;狜(>"eP[Dq:U+n^~BYxy[֒@_ l!5~~>=h`U鈭O4DcQL0feԊMn.1nZr3 _)3Z YJӯ@oweV$ܜ>eʛN ^69:eϐ":K 5YzܴgzN]3nv&xF̓,D\TkqsT({'bIhT2кiH8@k3o•/D#/ΰ-R8w`ߧ u']30"`T*K\TD ۯwSnˆe=㼬UK t𒗣QZV; CiyaឣQE&RJ]Ymt9jdw q ٥'f#J~~e 6Q`(xGqo=7hr7nN*컏w7s!E/2B.&OBl>w[tyX6S%!A6nAM\It 9,6K-@KL2Wރl%K׃I5mFGo^e "?\W#HtwOYhv.s71<^y8nfzGwJ՛z(= \\Cm(ͤ-eSy[+tF统n(8w>?"=i`9癋y2Aphմ22oyۛed<#DX~Gs!&gLmyI+X87Y*ʼn"EMT4^Rt$Gnkݔ%){FB xEzȻn=+ M}*gYaHpHdD:*|joQQMnGԽpJ}c0'a>0ȥCKƒ&sG͙_Y8 53"c"yC!&t#"lHaTĀD IHE~`+W:ht/g*!Q "`##F4H>x7p1Ɣɶzk*s#5_1ǧVp E16C|r73*?EXy79|Wdp4$R rB/$4+%JȪ|_w.y0j \v<Ԅj},⻾JBL,JD mؘ%j;${ߤn̜bKh`*i&jz䌊xO'A d\]jvܷJP9C>r&'*I]mBScBsIAɛO^N%b$9+H ]a:|Íi(M92!M䁁ԫOqrԣqj1,s T2HDH& 8DnĞ2Pr9*'/)_ ;/E gQ5Mh_^?uG:&1:së\Coٿ,C#@$w31c}er+wXrhchw=c_N2'kU9@#] ǨtXq`ޡlp;v{Ss';!;߬Eނ4̨sD!h2[d}l1mͪlus8uM9Y,ʔ`'V[i"U`Evę8;W| < X8QI(CNٞY]&,t 6F.FmK6}Bz=RzIqQ_l\Tr7'K`P`ȟ.ܸy7"q&? w*6oU3e=(`Zp.ZX_”t{kA@]Cͽ%uwGLT\Cl@$~QGR6ToKګ&OfDxxs0R4wɾE $qY?2LکrLܱ٠6ͧ5჆zV%o`kAHaUuyQ "{YENJҼ`](V,پ!b Yֵֶ2K7ߵ[jJ}N5rS4 u@^jK}Sz*C'ΰN0x-C~)e)j~hi]{UozaT7/UG9)C iI (X\0ZGzA;֞qm7π&s,utjssӇ%9u\ Cȩ-kLe+cBvw碣{;ѦyW2A{1Ű&ZɃbc Ci x7 Z8 ?DgNLhzqK(oٮToD3N@_!f .3d|aw(n~A yKPxJyl w~7zP] o:NF*؄j疾Uə  v"H-h&% \1,&K~EDwt {6Y!pC{=^mhiew9{m/QDe$-0TYJOk{^b*hjyHfhT4>gm,x>6ڍVŹl%ךs d(F$((mzUD'+^C*(9/ҦR06a;cRi΃.8W9Ly#]˧_a&P0A16Nq;`,8Py.Ƈ/eoʄj(x/ \H>= yKp Q)3*t.gԟ2QbFku&0 쿹h AP+^#Nr!DByb1q{AN8S憞)+]/ʔ^жjMYXdgq45C9+He;̦z_2~ f1 "QW.-ZՏ6ayƛeW {ˈPQ/|fS%CeMEno}Ymn9En{ֺ1ޟP{B^3FR -=' ɚѨ1\.\ɂZ2٪?2?K>0'*(~URi1C{"1 , AopSxPiˍUEˊI>1#Q$EͶoI5 GhCu kĶ)ЌrfnR2 lvÂ6QCVt,uy Yy4Iipmq!Fu 9:lDS:C,$4rs8d/Nw)T.QBó^ %kmk[kZZׇz+"Ua&l3~Z%%{QOeS\(S02M"c(֟ 7Tjn/Fŝ|&!Q7 _c:EA.Fz8^-Qb Sj0; 8o^۝{^҅[ &"'a!:'&k745 !)5 ~j^b>Ib$$&aUuN5 caa/Kدsx߳QiXaK .6is4qG2(U\7w:b VHSB,CczQPPZ 0)ۍ;],tHޓȀH&@8DWQq̘J %gF"a촔QMK!w B:Bɫ/jiXҺ7Ŀb4M?+X0"+e?fzCFc=?`$6q@,䰢DoNϦw- I:?9A+i5XA$ SY <%_^%"f4 UQ?F-sz1AZu05r$X #s]eX*]ѓpa:j&ڰތEQ0VM>IgeNgGݮ[@/ι'>|uWMއK7XEo nˮCGsA>v.+edzί0V LP2w< Xӻ?__cVu;(PB 1=aqA M%WYLU5ҕr[7>R1ϳ|t3hް.0@#m.1رcPs}֞@^}mOB 뻍>7U1"FuOSU>-Hl$T_8om6BӑP%A Ѐ p-_#=H> ~?ermv ,f.H!5bҘ[PkaJWަm0tZm+ pVx:<&AApo|mca 3-6'j1y;33ZY"8ihf0>eRI\}DbG}ی[I\Rm3;$_CVLﲂT^f_T}NGAFOpJC|n#,lZ:e5mݧߜR;36POn`냢܎D-n~NAVTp `i}?Bh Wb֏oZ(!{yQOBg 0k]w\3cG?»sj,Tb[sEz%mJ,\ژ,t^ rR/T>dn B}mk)\@H1ѥ N0 Νy}[xCԛ|_]aav:>8Kw wvSgΚ%`Cy[٪.*~+cvLzFbNb[&f lTتÔ/{ ' ID2j֍xZv"" NT.N볰3o2[/e`/Z֣t +Ƌl'ؔwC X]([%`GB1/wL}w9qcvW!}@e͡`N)Ա\[Yfo>S wanfLn }\KH ^Rj|B*8C޵01N8j |R#/Cqoxo;paK-\ho^0jk(DnR}N M%fۡJvYi4W^8ݸ۶ QZTa,iEcQ!zQӄ>KΦWlH[ p;Q_D0P"N"ܤ n;*vTuYԇCK'^Y9v K ipLSWӛYh6GyUu%{Mu EI &٦隇m:`ez CP&Vw4?R\"HlxyX2#?vvv3FxߌlphxЈ-6ݠH o_(pp߇@vDOPa0^+r!{Rx6aJppk{^xeq #*MفBGB[w{edPmK5f`VᣀCP7cJ2X`s+*z|d UXsۨALg4,ItOAmxn !Q!>"0.JS8 ʑ}Sj$<59 fC{cU_=%Fh=$=GW"d D4;CoR&.x|nublqfMNz=G}Ou2[MSo{G:d1gD抔̇oR Qz`}31y6:G_LCյ=08e(5ysD !9$g&K~O㙎lJl* 8a h ~vdOH)chNjV)ycc:5[u V)!KD"(쿬gVXvؕٻn,dISe]h. ji²-h.!KzVSPHX?~Z ;f~ &!#RBCs2Q`㶳,|({y8!ĮIπOtI$K8*Ud^b܈ߢkt*(4mA(fyeE`p z?p2z:\ME;*^J ^rsI-Ds7]3[b?ᡗḿp/} Rh'lݴ&>pkl~lg;Ы𣿞~Clԟۮ߶"߷N7O;/\7\6ǟRC6lԝj¹~xF'Ugj(jo1g{Ɂ?;_ǣ;EQYDn|YcޑN!҇tLBn\Yl !K`^n2,[j4t\w=/BSǯg5{X7 , i 45Z_sɳbN$~t* Zu̒JV٣-i-L9y3O|̥EM$/_ܦ 1g-s{]lK-7_7`}DP^a)or#2|hd4*Pn̥fkTJ#3λp dn0]FВ ߘB1,-M\zizR(C]#7%jO^cg|D 8Wn$ {(Wlg#jen*')d(LyfD򈷧GGM3[%/\<ߑ6IgX_qC~ְĝt6G7} sN4JӪ~t5~KdZי!/-RDF`qZW(]Ȕ̌xƭjI)@<47G,r8wKg eX=`s;;;;;;;LIջ{l XeݯvkݯvhA\;Ɵ?^j湮k湮k湤(z^>R򗔼/)yK^R򗔼U)yK^R򗔼/)yK^R򗔪^R򗔼/)yK^R򗔼* _\.͐6DV&$̶1$O흢W|[L1IS-?,:osBX.2RQGMϮPL}KX/#M] zśܱVvb?AGu$QӰ$r̓o6Fr`1D4L>0}Uc7bl(!,}U3\s!}iFiQ+캤AABvo! `>.ڲ / BtƒmMjzc罟yS>mǾS:s5#K% Wj!D`.z?YD霧\W[jǓ+L%'[RȯS K_R-A$/I%3}cK/}wA[Քlڑ5ooÚ?ܼ 8].9)^p"8ȰRk׀Q# LLmՈ/)w ` wf ΤsQU574~L#3Ha[} X(1JL^by`$W ~)`MfͻĔ֎c;NjPF56[a-ꑹ%ZZZZ= Wu؅1G5媾ZۉF/(R0It*m^uCM7_ؒD}kSp@=h2o0.:*m'M*&LDoAIK7@YA).&?}ٙ捌vŨL9.W7ѯ;Ch{ ٗ?_mP.e,)vxl?V v8kpU5 [ HibW~di}iV$ˎI;>^>xT."[6zWtPT.דQd hdSwq<"~adC'=9cӤPbM2'>Z#Zͥ Ջ5Ӈ# $08/nF qeEV[BVĹYwQ=k`_z֜O`dQ )vlWb/<ɿ$ &UoR nMxqc?sri(%(Vѝ!aL}쏊Yr srȀLSoz@cP&;4 2[g+R0?2iP~eBUsgZ`/S$cbduQ1%h*QƮ" |XIjNkJˆԩInW5)(\^O ͉kb8@(ºG_U ^g6ԝuJ`,\o"̹?2 L \޾\Rŭ|ں^(N:Th|퇴ieFsKKBaQWK`nb4 x_mQg#GN:0:gLcERyX KO 4;Iފ(^l+M|(ӫ4,43@k˛ F΁rdnp )y*z &҂AllPτ{*\BPV9* s㔷lxh% mG V}Y U=3MI@Vp# 0ŇyDƷLX,9R^$w 8a%HLcGgWVYx"^"PcyRnlNdy ۼ̓hqӏ|YtG]|EK4|Y 4C|˂JKA{Sσ piT\iQAna+d =QZ d]ʲҞ^/^`9ќ=f@̻~QjX%GX|ANic>nN+cG4N-EFOGpRI6K~.b6<$WXL$4y=تTN]Ô86uv H&ɟ7W͏f LQ1MDf^MPsjjy]g5y{:_v坖FiM5yo(ѡ4>/@~KK!iǝhί 3M Sf8,m`w|eBB,QTodH(1ːϧ6 .zb׮2YKp@Y-hmr0^ yRxn@ W҆zŐۇ4tPhJe,P4Zۿ>N|]4K&>:#17Eq E3F8u^|E]Tgn^4BiOOOOOOXE2o8 q>>A>xrxi:!6t"܊9cJԷq,5)!y;!zcL!X EoGzL"#ݍV pn5*K"Ac89n2B.<&X< bHY8(GAi-v 5K~2#~m?,X@4D~,[gM*k+ZSX`o>l[f_^Ef@sWӷ3ôjqkZh .c̏ uW%] (0>>IU鄑c1qn-Ÿ[qmŸ (L=_|9/'XH h | i ujR aNS   ]2VޙX%1Ds7֓ʛXުT2?lak q{<36Iڑ?#Я7q ;*5ϥCiY`x\ Gl.1E"wȻ,B +k>4nn[l4Kh7 ЈhI򍔞U+ 2u ;PL@hi-QQfӾ'D<7ЮE+D }4q1t Wi[ U'dcǐ<5D1nmk yXv:tJmԜ?a-ީ[XP+sܾk_).xK28DCK? k HH /4l2SaȬӐ^í_&-E?f}OZFH3$<4Mw 8ǖЬ&vK$wX}䂪hT6r):~R,xgZEl׌& u/ Wk!HHohaҁZ }}}}}\ycw)}}񊰄B>j9,]I,ۘo zzC㹏dLB0 6rK+j?V)*$-OGĬ@yrٍ$ .G沯4eV5 rLb-JX.QZD?!(x`Q>D@?! TN58/Dg#ՀYՑ]\ޓd1u'`'>'>wO'P7?3$L&&HhZڎ^t&6GٙJ짥+L}}zkqPO=_Sa~_u6:*5 Siu tKWSM>TFFlO?+А {+M2?tՈ2 Oiea&f(;AKM={qn-ŸTP*N`raLWY&|p[? mn#~XU)ݡW='v%ݖ҇Xf:5Ƚތ>>>>>>>?N{?rGkt^`鑿D %&b}g-ÓFaEY ݒL euZ]i7Jd!&9‏}l}41WT㿞{mmmE<D$i!;,`JTV-#"U'iЄ [˵v6}3Z.rĂ[}DcpD*p=?n;m\p%qֆj+@k}.NP0麗{`|ijvؘlXEʏBUio}T ?E 7$ $goPdk+Km":$hE]ؕuyu~3]lA`53tIkfq8{rݯ,y1\oN3q%2%Lg&W6’y'lMP]t2-4V dn呻FYI!n]<PrHa!/F2Mؽ؏A}fsSF4NaMs n*iZ5L4'|+fPcѮlۤlS!+<(LݟUҮ(Gbg/4d)ק0p,[flMSɹ" !bvŮ;xF`IԺC ~t \YCyT_̄Odܕ{F4uy 1%Fx[ Ȣj' mtꫥ"}Tq}69Eqmeō,ON} ]mK-y`>HsnGDV΃4ZF/I*uF 3u}7Tߔmm.T$I$zY4-1ˀ$>K{$,'Lٻ2ޯ3ARԻ23묣K4KY+7uG\ĝW;?,/}xlN4s̰E_|3l#fkQm?U(- Eq>[}uYo[tʲL(|@?B҈[+wM*h'!ٱdL3_g#ോV׮Zs5b$-j`0#}gbK,?d<:YٿyW\W׮6])=&ʇT|#WR9?+i'`]h 3ȼSQv3xɔ_;ۅ0ϯxK$Jl ^ p02^nNNM]ilMP]tU_B! 1(=hLC"x 6Pn0Yz.1_€ݑZP@-XOTep7b"!|MceUXlKLU0{ 0]r]!ugz1dܱ_4X U1֙ 9 }EAm(4pÂm)K?Xhu}A#BXrb ;JtU+Cdo5 zɎ.=A񊟻NgٜR:Ax&D-Q %tG51q@qAȌCB`^Tu(c\2R[%fNR;υ5-G)1VXS{1^ʅ Mg˞uOKd<# 'UbCc$-[x{q@ fpk+D(+{|T!|}7ڄ/@gG"K:`;\7hk'gkVV-Q } ha3 qؘalZ+0dඞ 8o~O[q%AČ\پ6/#?^|,P0L:V)NKebelD+EȢg~ct2bjB ֮L/ےI$I$I$I$tUo]6ǎCNqR 4z#icnV Bgnustep-examples-1.4.0/gui/GSTest/ImageSelection-test/testTIFFIconWithAllImages72DPI.tiff0000664000175000017500000013651411575360263030057 0ustar fedorfedorMM* O BaPd-#cPutBA8# LEcrLu @IH@  }6¨٬3Ca4x, J *oPƪ:uNA0ZK&sZim c]T85FUqs3mAǸѬJ]&]鯗4w9{S_`V uO;}gXKǻ!\0؞Շ߁?_>V\    8@(1>H=RS(16x16.tiffCreated with GIMP on a MacHHImageMagick 6.6.1-3 2010-04-16 Q16 http://www.imagemagick.org O B@(`?bPxV-Fc@t0MҰ](LfS9a7Pg 7_eZ%(P 6y>G0 QV@<',@ .Vy\@ˠ3woTx&]KS@ HEx;@̠9@vv.nz0L j@m`!+W5ᅪUHCNdV:@V ((9=S/&D;c>@2:dYAQ$?P Kd/#4Tqh"F/Gm-P *XI [Z/-%ʀ%" i" r2397Ls '**?PCL}IBSI H}K)ٻM= x=qG(BrLV@zoQc5ʪy@oK֘L;Rh͑v ߞ++ʂX9>h3vo_t",}`))A\$B)hCA|D q+61HZEvrTl1ǀ4͛(S%Ԝ -ˀ7/po Q3 A}( c΀q;eiP hwA tJvрGII5-DU41)"-j4m<V,嶌 وI戸=tX*hK z(KixM&Vjl`!>SDPn|x!sbimEPat 9j )b'D*u5՗Vݡwl=k=#pH+m©hlO6&JZ,}Sao?)J1 F x  GmS^ {xFL!q? ڳX& z jO!J<8ɋ HDRA,d!0m(@YX ޼I@ R+ a< o"t(Lc 셣`Z‚V(-Cb>,rK}p!bN'Ɍ.JX%,HRD, Ͱ QR`Y;!B&b1Ɍ$#Ұ,<#PDQ  (cq0 3 BU$x.HPc没2m)h]G ,8B t^;MKFԈu!EPs@J< Ub"ƙ8WSPiG(BnBAuN.xGъ{ L.@tR K$eaW,P3+@Ug-k}`Crʑ5" @MKbu`Zpe-qq(ѹ x@0G\5"%m셚Bd:ɓj@9$(A 7-C5duP0R[unȅ&\?%Q{=iw̲4,d ؘ_0~/Wp HZ/"O)C +%tWU *CD H0·~pȇЄB %ɝWV;JH-YL  7H@(GGǤ$7]ˀ4k {?.&_$__-j2 Z@6=e\x#z?H%,4 H DI8J Yee<;1VŚ/c@gcXܞ:?t4-$a gF)!,Hd#d2R*IITY$"EZN )'efQLĢYVIK+E̫H-%b+s/]sb0)vSeřJ[L933Bg5bsbjC7' d&LBƖrK):Ljc)X{&BZH}=$Whg ]h$@#sX@łag܈ĩN #@$>?G(7 [qqG+ & HS$\dT$/`I=h$Z'E9 }@18ļ(,h˧f.5E8d lS%_slC;ZP3J$3O>!Brc|rR%JV;F9X:7( H,p?~Oa"%;?*^ڴc{=UA&`wxu WjHſWdH2 \^ IX鿓afPhRzZ%ԇHVĬS2fpB1pK+cD܋+ͷ[=XRSbͷe.vb:N+pZՒ>0> ۼSK&sNsߍ@ӣ "˰Dmx^MVy䏓1*}̒{#zky<\ʽw c @D }[Pt{"8/m eW$PFoI"#EP)i.8<)P.삐pͬ^`;*㼚:"kòѭ$躡xo$p<&n$/F6BF\ ".ξ/dIp$zs'6AX @An$*_ b:@-! n|,  qIB0*G`dtM|`h"< q&VAf쭡$ o`!F+&K%,QT\] P6Q8 o8$ .Q%IkIr/πnFldk: LbA+s@-:!7$jCr!1+,e-b3pN1bHCA,8JRF T0`(;..T!.`$b,p1T&Hu_@A'I m'ȒmQn @ꪶ*"]*񘰢,ײ(](2a L\-?Έ@Dv##&?m ȅ:9 3"aRI5?Dw?zS-tT$2nv,^F#lRAtаFq!"ckw^"49JGdXn)HFEJEH,IE5;DDVnyNH`"r+K:`n|d68F~,@A>.{\!M>(ab,~kdVE\yeS$P\4Ӹ,s0җK(R$~5J2iIaCB2T+({A$o3CwA4a vzV(JOmqFO<2@˭p:0ca#tFD:h" k8s Oh"6x?) wk6b"η72 2Q}fNָ$$py+/ګ&=vv$n%Q 3G$$a#0t$(t$*'af&hv=!0qC*')c+xGfn,DQc'x;6p2r|`r/;$gW.@zGw~~2Nǥ0(%~) AvY‘E)07L)ܵy7:O % ~hchhl~avFNshȈȐ<#)/qfŲ(\dֵ`(tHX 8Vtwꔿ8QSi8M8ڐU 8E߇U9ǎJs9DD89 Al X91^9='9A9+/9Pb>$$W9aY8fO9p9Ws5bE}KY4TyZO}yX49w˜FAp7۞ib*   +  xY! !(=RS!TH/Users/ericw/Desktop/testicon/128x128.tiffCreated with GIMP on a MacHH OBaPd6DbQ8V-FcQv=HdR9$M'JeRd]/Lc7@e?PhT:%GRiTe6O*@Vm8_V@&}PXlV;%gZmVdr^ W:Y_Bۍ`pX<& ^ wCqWFW-fsYvcq=juZf]"Z)Ik[}_1=c#y\g7^8mǍz=wSQB!}^gzc^]~_>L, J]# ΖAT% re B=8CJ GLUN(Ī$OFmqr eH !QW)R4%ɒl;%%B(IҬ+_)*Ա/ W/&22LSL5D`64M;r3-3? ??(BPTMEALEҔ,QM 4=O4MQPULQ)#+VUUd \Vu][uyaؕ* bٖjeKShY֭ZE[6ovms̶\t޿]x^U|_ك&hl9~D(s\TG>t9Th:NU h,j 斶%[ol㳀մgۈ' A-pgx+-&hUrɬ<|+sπOD=(nuak:@4 "DbQ8V-FcQv=F20LWJ@ `/c)=7S)}?0(@GRiQr4A?:]V5VO v0 Zl6dlo&Vۥ4 ~m@  M;Woq;m De3Y4O WL:@}f&0mF[N/sBO4p9W4YlΧ.B:<׭ejUO4m@ی~v[A; F 0L G?B I D*:*SEh%F@݂S:}$S;Q LT Ukzw@YF8Wx/TL%OM1T6@Zer 6;[3oq*%Z(]_wnxմ/ W2z p|aE$m%6kE9N&U@lԗ VF5AvZ*I/mUrx-ADAݩ1Eb];sGcQJKe  >~{S;N14-[Gh= LhSuoIwc e@ 0a{+P1@8) ]H@8[Dp~7@wÏIIuתrfa L 9#S%`qJ@Yg-F>h! GVp)fI!dB.mJ-L$!= *˂楏 P$6B!c1, o)>A"P  J|& ¬^u_qFp~,) ^Z̾@**/dк#ql)&D BQgɢ0Lpb^j fޛ * LxB,#hq") T+P 񬗑 jJ)ϲ)$ "P%D̻-q-CMQ ) 覧As E⪅b$rx" I% ) & r\`6o& ,CM\ y' RA(ҝ.&I05*2>@66CҲyg.B@VV,z ) N)N$s>fJ0 SP)-^S pdvڢC2E )/hI-""I009`."5K6&z6e1l)p dJ7Bo" (jHΣ8l:Ӯ:=K8*͠$`mhsK )[4D*1b|X͉?H;TpUL#( LuA$J( `[ Җn*ScxI#ۀ~aC DeAH U#1 \@O7BF0"Lx(D6fS4'˿MCf\>j\b]K#I@)3 DD'*Hh|NI.A53`˴tS>g K)( |Ēbe=X4HUGS!ITVsO50a 7,\)$PL< /@#1;XEN⵴-lkU]?Zc7^mVբn!LL5sZeW *]N|`V%^yY1Q(-tcbaE"|6j&SPN."( ihC'Iћ &Rq'ADޛ fX̫F)_*rbA[e^m)? i=R)Vm5D)o:$AG*/: oz i e^`@,.YX!)SrmBعt :OI)g:B#7w4k7,4 t$\l.3-+uoYe.܌' N*wOgU18㝄B[p8=-7 {ER@xgN.0PBt>!DX^QVAEPPzrؠB`diq9NA PzpQTYіMV؁][4Pi)mqCPk^w؀3[5bj! H/\*ܮ~T*Z Qnd؀`SlMq;vnPǑpv i{\s0_|>^~@O;࿓p;@gd BZXOD =~P<^#ƱR\*ҸNG F"5BAI Q&HRrE*T灲=ˠ02L2:46BӐ[N<AP*P B6̆s8TJR /6 T6 #RQ55N(ӨUu^UiV\vu{_:T0{ }K8# (- [Em2IJRpsz0` _06/D75a'" b/Gc8?bx}Y6\;?^_L9湴U>sg95抝F1 [:jh~k:znŰl2)V֊ݶn;Vӹndk[m[<6Vͼoh|O#j~qFc7|?r?Et_=u:Is9WUrUTӨv=WeYgv7y5Qy7wDzIw{{ܫE^V>%M}L @s 8MlE r栔LD`OBaPd6DbQ8V-FcQv=HdR9$)'%RYd]/LfS9m7@ PhT:%GR@vT@J)VWVkR) yv;%gI)\FSnW;֫]Ϭ7kEbqX={?c2YmYgEOgͬW[o]ĤW(O]uw7)B] 'ρ xH2a`#6,ݭDaq+Tk> k~lY1<@|:rSaǣhB6],@t{ nlhm Of}Tu(툦ε(%qBg?+1Q`nmoP Bt>!DXsv0/ XZA!E2PP$r9 ` 鴺q9NA=ХPJpQ*\'$SoX [0Wi5<>g\+@7T;8p EK wr<8>| PP2jl"`BM&~qngOv< O٠;y|<O)'2Tj@]0 =bو)oB/ "!6ji$FmQVQrX C+7o8 G;R:H m"G22M &/؛(5M`*4#Pg 6̿0L*`/2TΞRͬ41 Nõ"p'T LIpP9N HR(UJ.:ˋTA CRRKĶB5WVT˰$2ZnsF΢c }b厞x j-D$tQW}lF*GݾP\ut[+Q.WUx<G2  __"vx2{fZ)Z1G6.Ca4(>:VGd&dVVYpg)]ox E>&~rV'zeXrC"8Y'9BC뺍N˙FlǴ֋ rеN8 {m\':U if2Cq (<`l5NSs<ɕ?ݍd!@x0,]p;)\EoiuXo WPP*lRp_>y{ͳ_|#,'?sQ4ZqzR&,9< '̝LS-RwVS1!{ZBzAk:^G7>Ԩ@`y aK0ÔeFW-@z3}!;2d aZL ѸNwp쎰>#5Q!]n.)Db}ў4$I0-BOܦHȤk4s :6jbGbY-Ii`,K2tS@8b^@H<s.M)n V-7N1ȚTU @ܝ ιH5j5M9Qj/zTšNZ'$CS4"/pCNaΑ~@8H+.TBbҸ |}j>''*KI˚Ff.I bi2:nhM,]G'@"YPf$ 02+@ OKJպ٩`V#t5rҧ E|'sŇ\btfy+%tqLF]Iڍ{6<P"zj EiBl"VAm'h 5ǧ@wbU  9zI78أ# PUy@`ʕT 7\6[m\ecA2(j%_@ 82_dU806|XF/p)=yv{r|F0CA`2X[֍OCK)h3%×W"'S? LZYAǙ@#J8ZO'@蔜OE 2x -k9=Y]LCQczP$K Yj=GčaY\D-$U¤eJ!<^%;,S*c)DB@ ͸ыl6j  ; -͙Ƶ'%t 0!.я`ÚMKws1|FЇ9 \ HBvBlSJ6s#^Ih {on!C $ 9m1tl( {j9#^ +y 3;6'd/ 6.{괳`|4{"8`i92 TvKh€uͣqOS5'@'{餫n`,W Q~[pNYO6H~@"@ZM:Pth 0^3'Qoք-(.ƴ&_G"Ʌ]+ߙ@ < A3Q]= >w)-9M 9@kכH+X>ց뼹C1CF=@?+(jZ;6щr:@$м:S+ . 鯾_(<Ӫ@ʒRZ%"a*< iם:M-0,`>kIVD6A.8#@|jAG"B$1,tPPǡ}X}wɚ;:@7 \cxƘ.X:GYPh95-ؑ Dh* 1@Љ:q0ΡR9h,O,"/8IE KXR@3y3|H*W M#t}GHYS;`7IS *rɍ ZQ79\gQk:5xhNۭ̝Oz**;#Aϒp̜O[SQx0ZxDlϴ҅ԺKH3xI8NQU KBҥZ;|M| YKFQ(Ui 5,&VZ.~;Ȅ׀F` (RgH4s( L B4A  ܪJI X$隥5|rP6!Dm CV#@:xGHxW (1(F0O8QA7͚ COM )Mczȝ%au0 Hۀ ZI@h,5翴=Y *<NќMųu ED 䅙 `Mej𔨊ܐPx ZVz.ɳH:ՈE,9"S#(](ׯD =B&S[ESl 䈴#a2VyUL/(kȩ;^88".BlLM4 6I^\L$ ZtU `[gckxXu B C ࠾  [`S`v D;PK. =H BKekp^:_iI7.ta7F؇S]{Ha~8ucG=KfՉ7]{ҍf&dp Z _ylac1Js@ ԍ M*J^%$7 Xýc>hYP`I91]lvk>-]HӪ$h>:(boBg,lbH5RkZ^lgO`?ɕR :֊-Zx}¡ZHPo([e\dE8ADBƔUuaKKm̜/@lvНك.d}XoP AAyznBChߖ GiݻjW 6mo ףhRl,VW;(W\j8Xli,|OP9Lp |Gι8;IB2< -eͷ$׾ f@|ؠy(6ͬm`P+nǐKddX40pl[φhӵ,¤ Qf4, ZȚ,ڍldpdtC’QH-JI: vVevU}cђ$`y̸Csd r{hV? !IG0 -5Λq{~r{[S CAl|,<wˆ:V{HP>8Mޤ*XCS9PoٵᆎN7F9n̞x; {y'3 ’n p4 ȯe\7ݽ:#WcɊVw^sv\ΗWv{Vާo7َz}[/{~ߗ~n_O迯L0, J&AJA- 0+ Ađ,LDPSe|#ѴiǑ|@mGCq#Le#?2$)&IR)Ȳ Yî!/L 0L6J\9Β|M\:ϓOn_?~_"=@, L=- 5 ÐW "ĭ,=LUől\DD_uǑ|gĭL#L%ɒl/ ](IҬ+̵-?)H+a.L,3LԘKM\9Γ;ӊI7? AЎdOBєmGEJ{JRT5MӔ= Jm,SMSMU:ԩmFյ]eY֕mV)}^W5}_ T*v׶eٖm.تݎY6}kʹک۶qܗ-̈);]7=wkvwZz^W}ߓ~. V$b5uJ+ 2=NTd~.^e晪9~Yh} pgLN궊i^~cdNFjiǰNO^mk;  pm7$'5x3/LkB=?]>um[unvo/jv߅7_oylw zv"{?ƾg};_~NQ ۔3 @ƆH'`P\V)`!P"<~#P#“g $.+J!PC 9AQDX?H6"DxII1-'(***!caZ}#&bbQFj O#BaPd6DbQ8V-FbHdR9$M'JeRd]/LfS9m7NgS}?PhT:$8H(e6B juVKH5zv_XlV;%gZmVe vAnMƕ|`pX<& bqXf6}~Sk N2w=htZ=&MfVSlbmnw[}}F^a;:Sx;l x/h@F[(]U pH\HZǀ$\{sP L H"ـ7mwot~Qx*`MnM=w {*@X4 BpDX^1F~A!A@2X#P$]Ylq9NA 4YIRHQ/*:{U|Wl[5hz p%q6n$yo ]\6/,N?!M=?'Izf[Hmiute/6`kbpY˟Gr ptΰ SAxA9LB|߷?0 v@p6K@@h(!|'B4 zNTEEʈtg)ojƨilH+",$,?#k&I,+K0.tLӍ563/`NS$t @ODPDAѨ$~e'(*=.4ϔ>ɛbfe@ PIՠ XU:FUo=U~v"Xte.kUYcuj' }ZIŶ+$\ U o(ku]Eu5Yװ,7i_Àv}֞ !3) p^8Km7ޗf;5^y S dN5-Ye^I]Fv yqh9˨0Q!dڌȂȗZ#:olv][v͊bɩOۄҙ /0q< Զ7VqqQ. |~sā ?2oHxrv]7<ژ\$xyLJE' !cwH54|O} x±ߴ/+j=}/'O@is1@y)A4\G2`%|%3 KIO`c8 (h7p!*T?E:px F&!Ģ0qf 7訃G x]@fq 9-@G1c GtE9!H4GoCs#@2/!$Y6Ih@Q%41U7\˛hF]1v2pب/RJQXILS$őr!DM\nD0 jmm9"͈q+tuNgs{~fiK3Mx:O =Z/eӜAC@u؝%!fREzUC?IL Πy;)liYh 3!jR)qLAՊq)m-n]@DNvjRmY#b"eg15e.ѺRuWJ_!?hz'`)X5d),0!zr@c@V+%ڹ3 RWe" OrH#`RLo@J]mx%.1̒~@mU_ø&=`7np:rܘ @l6lS-,/Ѥbc(-~.:?$c`Hjip.Vr_vQ( \')XkB;Xc8r;}^AqA_EȞ>J햌II8e0#C-„ i_ {d d&R3ad8fς\ŦIL3@LG\20| ^ 8%%&JD0 dE`݌"E^_{o4#5OVA22@MZnKמpF}ѭ4R9l~Oq"d?C'̼bFi>_Ϛk6̊@@S?`+/@2?>І >@˯8Rpy5[5!t,sb@t 2#}3&eIjBD&9+*B,-B<6 %40KZ!pȏB*,L-L. &C:$3AD4C7Heh -C$AL@T>D :DiDKKQ50XcFNCOA='$<.W!|Nd1LLMdKES20- 1AE\^h O#BaPd6DbP V'C`v=HdR9$M'/@ Q/LfS9 T4}?PhT:% G@e6@ j>/v_XlV;$Y(ko\nU\s^c`pX<$I1W#F4ag%fsYEhHM.ڍdGmkv[=]|)vUsryZ(Aˆk^W1Jx|^<ӻ @e:@x+~_{+0(mPdl<$P) B/ @TqlYƀN? ǒ !d J*ɀU'뫍"J(r@n`HoM/@O=<4 Gt/.) EђG$XSMt-O ؼTBE!'ETuhLr֎[t u"X+=b52TYmᐖ>ڋ;kaNn]g Q0hVyE _}=woJ}.Ԙ.QF!(zb4`f=#ǃ6Mv]fU! \7n;Y%Oz(Oi ڋzdU-ϫW4& Ql޶ٛNݷF{8.9߰lN>Ѹp qɿ*w^ hHHTx^}騣^|y}_~p&O^|  >'`;| >4@j"@+ :F MA='aa4p'[/@":F@9&48TuaM'*y8I;Q*fb(6+hb\dL~'ɢcd\2;$Ac2,yWl Lki<J LBGzt#eLH(d)/j^'>eLR@.e &%hRp#pǙnFa7sL%)e<"v7_3Y+(:5L@9"~*\$Jl\w4A4_ `E^L@MlR9,֒Ib%uRԜ51ㆪl9FROAA$"bQ - QnCl8Deali4VSZ4+@ \kmnFO5VU Jt3&W VL ,Zř_KɅ vT1M4JljCX R^FdVʎ[S40}+$]T#bv3e+ ѫ[6yrO$w:Ё{ٙc\.׶,"r#Ǿ 蠄l 0VigAJB BdPP j+dD$$ /L<@`bո _,h|Al@g@lfIԍ0YtOh@( !0\2"1(RcѨr; 9&J#X.&3)k6'3{>@4(#R%-:XN;1=PXI#ZfGX n.4 Z[/^"t F08, q>b\^ǀ*m? ]9ls;4995 V׀ j(n%%/.:pG0.Rf &M<>+_5z:X? Ų;@sa)vaQ`VV"蕧"؇c2(]# 3;Bg98 PH]e VVdc>Zpb0g^jɵ>IrⲌ~9 ƀ|ǢZE@ɥMvE*Ghfg*3k # }*M,p: [$ ,ɢ.|FҴ -ޤ)&x޸~eHV^k@v< +p 9u [EHvr @9rU'.2EC@|:L 0 Bf`2}\urFs 7Un!{0MKb+dx!ƍCAhX4LJN\u zpN-%5WR~@ - DIyde^eqυ-pyޕjNJTT.՛zn纍8s<Y/Y[薞ӭn3y=CҚ(n/k;1a/8Ψ@pT .`*JI恬hA ``- 0ذ?;F&f/pUZ !,X907 !6 B8n|a AJ;/@nE GI'Pţ\l L(F(\`|d]v4I ҍ-L"\e(aQG5cxuJ+ԐXc܎3I"cY%دғb$c8iVlM2D)/#!I)re8d)<%81ҋuA<l17%piw8&N6J[RdFR%,\Z.?~frPX@͈ &s P'VBҐF>))Yș3- L3~LkT\͕jm5"SȘQGU "N:¨5FBUd=u͆fuO-hJ~]"&: վ:`s6lhB‘.RI@ ;6{O}n/ Ѐ B-ڨka-Y*#ޛ,j>Ol?q VܠmAZۢ}@$\pxxO-<6ňSlk}Ӿ}^TAbL~uJ6Y[ٌ C?Jv 6鯾4|W آ4>Cm'wGXX<\qd'2wS,0h #ɑ1E]k<4L@QZ.X" 3h9͎l(&k!p*5 xDn89d &jѥi -Kz z'M>W2-:ؤ1ѝb@7-so&b$=Q@)Z_!x Ǭu kKÞ&'vV8?,#s=mx y/!{jGV_&I\]ԈjY 'U!]t=l;;,T,iTͪK@GC%I; cǙQ x ٿ8iǂWf rqm`kx|GSːF1=4; 3yȎhC@pIwc_3`[vR&^#,1=t: W 6喾Ch`00x~'%TÒ.[yDU]`eNv2BibbW O#BaPd6DbQ8V-FcQv80Δ24]/LfS97 }?Pa G-iT)r^T@z265ɍ_@%:`V]\nW;w^n3p " `pX<$muq@7 $d@ |?-])g=Ce I:\Ոs5j2@LK0ry\g7 WCe}Ͻax@'[oYG:@ϧ&'f (m % Œ:p5 f<wD  Ej/ d]$l q˒ǀwtrhbJ)ʒ /q-TsùQ3 @<+9P(ΑJ3sy=7.AsCІh\%Iȓc&`c.=< Qԕ-LQUWr*ր[tı`E}S- V(NM1`ZUVFo4[\sҲ3-)wL&=}ߔR:*ksbJ`ߍ<ld'K-iU!FlЈYYg-ȄH/陆]9en ;.\6IA>e]C B%pVM?$\5󊶦MX{b ]OQl Aݫ^tXE/;ߧ׉U{Ϟow>*%!9ϼ)ET)ya? ~QC  /=m-. AV@9A Qȝ!A \`@vCT(hh}݈@hP-1T:+%EB`pW8$@ ѦZ:*DXXs24.F/0jDlJ%C6=I;,pks.H@2ߜ=@.i*^/aEź4 \ɑKHיhN5>p~iUS*B*^lQ)4,%z0?jϟYܞJBuƊP-Eҹ8:PǢEd@WРiE#)dLT!V1T /j! %AFbwH)Ǩg{ %ru, RTFj*ՁTui*i94@SÜem9,O_MU螁 jLo-cŭq9ePcnrs1A&Y!@ZLMcp ZlelsSDHl)e }b9_qJ;u2[>I1]ԬS*X>umk il KX`=_o0x 7 r#s9F  8B ]}˜n^x!:yi :RE-545fMzǹ&42@o ~Q=18>D&O`}\<YDq͙rdZNś+~@< ?Uܼ3=Ylul՗IЅ=,5 Nl20}Z gd}t`UJƤ(.p$6À;-WcvXD^f8m}u2#WUYv׻ۥol7I=(ފ-ϛ mǠq$S+S[ @бxP=xޤ[,]СJN7fe3D2eܽ#bӫ@sҬW>/]t.w*stg/WNkDG~zFvRof(]v܄:T`r[b}N9b,>? |DM۬=,<Pێ辀IA>zq{RD{(|_G}?|K>wD;_!C}ߧߏ}g?~ߥw?O7k/tP[ ; o]IJP!I-.G5AnI.PUQ-]miGPqI}-G lU Й ,{ P   l 7 D P + [  k !+7Pmj 7CCQ* %G1j9)QEuMiY/BcQam)NQq1qx"Qzqq!weq'QQjyU1g9QˎK1QZ r i 2!eI !R"(O"0_F!#2=p O#BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/G8Im1NgS}?PhT:%GO4D ITjU:VWVkUfM0o]ZmVeo\nQjXoW`j[G gbqXf7W.x&G-fsY[cg=&Mjf98=;Ulv[=GE w[} wryVIQz]>Wkݾwߩ%/zc׫||I~[/g ƾ L+B% : B5 Èñ Eð£DLUY*e5u M+$#JIRl'2)J+d-˒w*.s1̓*%-LL57M$;ʳ=ONAS!CPMP4]G4C5IR,Q5MKOS DS5MS_UUm\Ե}eYkՕu]5y_ urXv cueي=YmiUk Uvͽoq܈-^\W]r]5l]pǎ{ߗA] W`06 bx-'a5y^]%d^c[gy|f &niz2F޷e+ٹ[hznQ%*I˽lp zq6vhgrue| * |_wإ^a~s @͝ AT. CKEn9Gv$Eq׌%/&fi)MEQ,UʨxU52%ke-Umu]}ZXfa PՍ=NHyQ tfEZYK hcmK?x ]kW.9sǩVs/|w-;{-+L B%[hA`p{X 0l,C JQ@1*jQ[$KֹGr!Hr"zH]%"\PIl(J"\pb_K1@TD5Mi7txM9=< tиOzk EQte>tu*G%2T-O/geBKIU`WS#[VDz-X_%xcYveKxY֢. Zj'jhk {ɉSy=n]mc~t^cWU5|Eu`xF58]Ԁ@׋3їs BMُ Rc.fT I:ә+8-Pz`hٗNsUNfQjC`Bư "Enđ纶շmV SL ;[0oT<i `^;`m3Ȣg +t3OS59*J̙]jvqw}ޠ~dA'k]zyOr\`okyBv t(*q=󂚁dCi-,p bPwQdtx 0BCQ^:IcTk(06pӎGxPD{?CxQk,h@R;!̓/G9 UDO t%@jF4)Q*HtnEy2,Fip\*[ H|P 34P{p k-6@KGM1gZ-S*d-w7<@+'ksMg@L8.KgBP8: GcrF\=LrT破NLF } |`֛RbK*T`{RbLKGJpkmSҫ0eV@#?1FiHkm \_=N+UAB e\bO\^T{RAsDj^Z s̏WR?ZS]kD5P;@yRK%l_unF׋d4BLiApQlykCX 9X"+%/S}sTh+qza΁=_pG1Hwqn% `RrUEN\vD1s VCG.o`7qO@q[ Z (1_T"kbGp/'5A8ܾc t@.o}fuWQwf |~@E{8??S,Ph[} ! 4pD{>T*Oől\DʼT,_TuĄ 2(`IA%򌀻Rc -E11̓+'s475N,~O-=3@A5 H;QGPI=,!S¸R5 EQ3B}:)SeIUՌ5LՋVֈ|etuHVYMa݌vH2Y6izyT(uUmۉ4Vջq܊ssEԺXԎr-{ul'wD䬷ٙ(j@b~a84_I0E㶼ąd9Uhf 癀fm^WvgI&SJ֮5)bHw.zOcAP// L#ksr|"ir5+h:0%::m#V]v="iۑγ; aŽ^y+a?К>Ꜩ\ϓQt:/}glvu~VyKd~?˴2˨@=WJ@8@?L ,40\iK %o *uԊa ϐˇ@CꟄ <-!"M@G83Uc8$PF |F!17 L* áJ'Ţdhh#49$L\,?TL4%)w</}/suw7kaO+x| n./ =~+/ˆg8~wCh @0a0@th xrS]%V"0d -c"0"%0 9iP.;9EH#ղ?RM,]Uc `A'eVi Ifu ]jtD䅞JA$ꁠ7&|Z2(2;a_@(:Q }YD,z}V ҩUF$+ Y*Jbc6vkM&9:O+FԴ+*2-;B[h;o;KW!U[c* 060U {wbS JAaiI5q5Ȁ%ő4 qjdo<͡(P΀= sOрI0GԀ'U}a gفw5aJ3aK uRyPˠ# BX+{2mр:εEg[V|:9ms dH D?NZWg2|0 b֪T?@'=0ArMC/#?6qURN/+!ЎrP)+wpIrƾK[pizWj-0A@QCyeq r8.,{[lpHu5d! Ⱦgc|;RYRZW}Th]Ǝ XS4pfGH6@x=p_rEb܈1Ta,40?$JAt JiryA^6'ݔYjĢBˢҺW*يceMD 3@Ț H ,~"B ¤$pS%9O 7N¢T˸  fyഄϺ Y'KE jk&aag_7'P\܈K4mb*izZK8ɺffd !RjzJAJF2S[wNPSu"*)(7"*W^pY j[ 5* +o,0nr%z$ύ ;zXe #Tz!ep ,>DBF ֪Jk = Y[@c6C_`-!4K4.suSL Bbn`LFBrRKX৺ky cI]^/&o= dޛ|/qj"J*5N(1`s76xYvXHY}ȕPa/0x`w Ll2Lؒ*qfۛ(,]ĐpSKNK+֎ҤL$ /%و9JW*s"$8FH)E;[3BLJ:r a-=+Ux86")C$ۖQ7}_3dke jY7oP 'i=$fbr@ o@d_Y{+uɒ(=Gъyb+JEI5 JAc׌7OƵ661K+T(@ZA_X--QMYZR4WvG% 6}HEǨ< fڽ]U 2ML|f V&ҭJ 馠|`h@  B\2"1(R+ h6$1KP\[.&3)k63>P(2AЩ4]2Nu &^*1pv*ՒKan4n -%S~p4$dÀ-w`_d /+5#hh&+J=j^c[7zl-wFC[kz7.\n6k8A:=+!'pp.ג;_\R6> ?ӢM4J be¨$0`FBD 8dѐ"b+8 >c&,#HD{:r*>[VvC|NyID/%HneBe7&BftUQ$+br`z 9h z[dX]9(D$* T8F.I v2k%jB)vq6b E]P&EJ{tnpz'Ʒof;@*jKp ²eL7l% Us1@qT" х* *Z+3L#@?F$=DYtMV-lsVK-o^SU@0>^D 8ڛ_yqo[s]aM^+ <]q\Jh: Xeun1={'ީ^dFw@,e7lQXǾ:O = ߇~FeE>q4@,}@<`)T*ΰc(^uCEh7`&%ϘNC,`&mu)A) (wT/5 `=L-fN~/!#]`xDţHт*"! K|+o<;ЮFnJ1ʄN 16xLQK@tOXCz⤌WI *eɩ)nGIتG3oqt!7rbM;b\Ԣ0@hteWiI3BcI<[eH)Ħ=x46%ys!̙O (S3Mt 6dbqT!*~>9Yt(uJ6_KTDNBL%F&i1Q bD*dLYMM ,:iS:zL9!SؐR:KP3{ X(G֑Qb(zqYAՙPgMC$Uf+7=\%MvFe`l*ˤ@48,4+Z*ؑk*EzB/xFulڋnE"x1lABưR UrPf7c<2kLT-!0 Ş=hn-'^:Ȇ'E1Yr,c.d`NB,/H-kLpٸT!чgp Zya[_4ߜFD4G/q; uuv&>H=(5X$-+ǖB?hțnfy'-#A)@a8ιԫ)MS4"(B @рΙ].gI[A r\D"caŭfeVl6'k+֟6, ]m`l_Tt[&X` i{ROaSeB[P>7*M*Mn/Wk^ 0{ڛyj݈NRKq@uQJ3$R_( S=ÌI{xQL\pu+@ t01 8)9,xm DF^/ϖܬHbipر A 8Ǵ; <'i`x7\Y[ O#BaPd6DbQ8V-@v1HdR\]/H0m1NgS}?;@->R@:eOTjU8@TAkvq3_f$gVYq"V@wU*D y`a '`4`b}sY,i6 tZ=&qu{Qt`O0 z@f[1|}oۻ0@Idjx- ".DQ,1TdpHi|1 G! ;#ũ,2l҈)ʌE+'˒lTRĘIrr `/59TY:4c/?A|E҄4L5M3 :aԀySӕKC- UWV>2PT#@W_ ;U?Y ZGˆUiݬ VV[-*k "s7k:s^ 7t^Xطs:,eF( _XJb RUZc< Sd,`I˙XHOC՘gҮ_9S6g֌ HXiJƤ xb%rҵ( hVOpM'h o\.ç7ɠk? Qir`Ps AtHӀTAh`#٪S:75(1!O} =/.3J˾ y޺ .G/'Є~0R`v .J)$=gNJ'cP" =M<[@PހhLMPf>Ё50&"y@DCJbdl"7 "AS^3j*KKr E[@"PFc` Lqf<7pTy01 ׾eAW i@Fc#,`rLQ%`\7%[+qvP"y$Hd V+M-ym)`? r|#qPy;# i ̀Cޠ-YO`wrz]qx#]ʐ'y^ScF J/:P/ӵۏ\K3>k@>p1_R5sh. dpM-``r l 61 W@(LF&bF@3\JcZ2.DI9U㲰\*T )]zne~`\bfeyy|ĉdYpbcVN gid P 2@@PL(j!qza1,)Ud `iW,5T\&)gq_d`,@n\ {pDƚ/4@N%&Tk@SB,fw,@fvY|plob L|{C_0L,w,&Fs& @8jZP_3\R{7W0Hh-N:o-,+ \21eݍo\D$ٍpEO@x 7k6p}PQ2gր`}y.]5Nn>Ӡ0H.a`"1SϨ@T?+<j}/ՠob ](b\dp@`0:ԅRf<·YKvg1z_8f!B $%*9H3!" ޣ,RJ!<ofȭ 4،` h 41 4?ZBms($ <#hڜK.FbeAO  pϓqF)r⨤hF[*Tf$߁U^2L$e/HA jfC'Gq1@y`DLBP>Lpn8")>şYt0g$`9D~@r-T (-CD(}LffFpqpB“~3֒(aE&`(GUJ4qc51iˀMҞ0GPSv`b86 g,(m 8^ynJ ZzAG%@B;u[# [X%VVW>\, *Fe~â-h v: 7N o ,vri]YC(BJz=jOfeS[5H ܍4pcPޛ{`90YQh4v#+ W-b q lFN%Z g9`BjA. L0bS qŨYAgJUi$/3Mwf݌A)8%GȕUx:Y0WBj2ij؆(+d'@Kj$ҋ64̮ 6~ӕ)Zs+)Ji0>o&bdFU|`Lli7rV;[) 8naKn6*CׂBCmP>A xSh' NT\%Yi 0n"e |a^R%WvN4݇;weL{ @CZ \mKʤT%\ KtYDQUUnL@z,_.) 4-u.$wD 5T%1ʈ &s)^SǴ5=il'= E }wBRH^r=}H~__X<'8?ϣv{)sl,w3L>K506:ܳ7IYP3*nMN=#:X T!d`i d " Kc7y J[hUD~z@a8K(-X Ka^P>nـqWArmeb-" hK 3QR[1xW7+}7J05(\H)`Bmm_}7`'0V {o$%EVb0" @SˁT7ЉNLHs8%Eo]SaV()ȡȤ33AƇv`stطp&6ngztxy*:f0nVHEW'>t`?P`3zR]Bop6t uKe 9<2huA:!CDI9FlVTQQM#ʔTQn.$*@@ +@4<(=RSD/Users/ericw/Desktop/testicon/512x512.tiffCreated with GIMP on a MacUYgwC<  E\R%HHgnustep-examples-1.4.0/gui/GSTest/ImageSelection-test/GNUmakefile0000664000175000017500000000257711575711443023676 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = ImageSelection-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest $(BUNDLE_NAME)_OBJC_FILES = $(wildcard *.m) $(BUNDLE_NAME)_PRINCIPAL_CLASS = ImageSelectionTest $(BUNDLE_NAME)_RESOURCE_FILES = $(wildcard *.tiff) $(wildcard *.icns) $(wildcard *.png) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/ImageSelection-test/test72DPIAnd288DPI.tiff0000664000175000017500000002613011575360263025374 0ustar fedorfedorMM* O BaPd6DbQ8V-A_dR9$M'0%@ A%LQ7NgS$j@hR}O)Te6S+A@$GSUIHu~gZb6hu5E[-W;:@[bWɁVpd'anVϔor|[=8sUiއ?blla .ew}w۟ ]x7K͞r}tOKn=^o?*cM*=_7w(4;~F=DM@Oj [B L4"$- 1B&\\cdl{G+>DbzlH ɈY'|2K99-, /3(@TXiM'7q#;lS zЀC*\R|@]4?\Ԁ S-ThDYSNד?mD (-elF3)5)m)aoVaYq]WH4݀w՜ 7F`_'(*a<y>$X#ыLddsM}ߩ)c\-f^6y~t:hWӔm}8֬Z~u GQR^]i _ ygpq#ŀgUf;9m[W4YW(~k;]oH'B _@ '1b,_w$a ͇Ldl9b"@zEI&7BL 8 )C}Dt6~A' HS7Q*,7F"#P@8Iik jcYxJ4AOMjBTF Mᔗ"1a>q<R&RrS+ LXU P@L  7&>AʑCE,Y׃KiV@PsBX샯'[D-XCD0)$"'EvNЇ?x’ >$KD8XčZ%D<#  CH /S YZCb%9Uj!3V^e( V*&:t5yzԟ=g\I5;,Cem= Yf=+pZhݨ+VZCjU86qlM`eGߘ mnL۵rI$w6˩Bj+W^ꖻH3t3qIܼ U몶|7&/}⽷_l` ek0a6aVp"=,ECY>|b@@@@ )@(=RS*/Users/ericw/Desktop/testicon/72dpi.tiffCreated with GIMP on a MacHH O BaPd6DbQ8V-FcQv=HdR9$M'JeRd]$@ _7NgS}?PhT:%G/@6 A)KڑWVkUv_XlV8NAmT5Y.W;w^oWվm]|bqXf7Oм sYw=hrT?+9]lv[;!bm}px\;v51tz]:?6+ǺNwx`cu!x^g{|I7~__6IC@, ;%T$°5 Ðj0.C0ML'F4TeƑ?rF}U(#K#%"&IR)҂]'+2-˒-DK[P33LI,r3MS9y7,s=ϓMM C - O D9GjET5R=,SEQ Ou5IUՍ T u_V֕ 8bu}_]c ݌XdL7kEgVʹ ۶h+\R]+ݷ]>^+^*_4eLm}^ᐖ2]ⓦb./6c/?Fd/VO咮' e8_Vf/ogg/w芾0&V0>>j0. k0f4.)m16϶曛;Nݵ[9\J%;4qT qG'E!<1.sW9~s\IнtGXSG_]-m=hOqwdw/?v =yMyԏM^߹Q>bYюU~YQT?  288Ysp5q j{d AskJ! Rakt)x3I3OpՖæK!DX^1FH!H/4Q)Jta19g)I5IU>-+ YNa+,uGZuY\ ;qZ-Vp.GPKpv?:b@|FhSOu zPQjM97I [.6]jn7['"9paC.qW''bNϿ>8ߒγrp@p / .P|éh[Y$O.nE {D^@' LnbG qIűyp.nt1a!, ̨6M8%Nk(vD`y# g/CG{)p/OΎvp00~ 1km(\x'x.gJ0B24aE9P X|/:z2FG7@p=D0!b1j0@BHCQ#x6 IBDУ$#t;,#Do'S< #aR0GmIYd#crD|  8T9ȑGI7$8#Iq&_B8T^]KC<}9PTDpC3H(k3O#p:#;sYȷN?M7 D%SxwN F x)nD̼HD4N&e>6GdQ`e9ԅ)DbdJ(*FZc'SA)uG&h!AH0Z7|N) q jEj֪efL<@y*J4&LpT fwF(v$0Rl2 Ħ7032dT-a,#hnFm5~Ex7NjO{* |Z_t7f8p:B]Caue"dXݻhBǁf&pq ^""tܒr^Ă0x$\V6ï%a.m b62)ǰ 8.%"%N=?/UF9P6G#W%ՓN:9E p#d7L΀@d,@mbGiQMC'=џ@B_{op\E$zt3a#ip݁94Pk ;@ p$^UJt5 lŌX]V5FXi^g2z6\X? 7emIg,YUi~ i`6ޏ3zGI -1l]#u2SOrLp;"8r'ߡx,LVAh 7<3ݯ̘[hUsIv@EQ:sX#\rP_ Hkg` X>K׼&4:[jmXFV۹L;Cdl‚2HvwoVwD݂xzwt*$9~YhL]2#`CD;`>g=%8xo*yp*}64)kXC=TI>?)%Lx0\a=wc#dqUK?c006p-0 k4׉B6ȢωD 4:]>A>>PbL4Ў-1>xv "+$$ "(]B9HRB[,8A| Eh͋XG9Ӟ7A@10( "T J>6l5Y64FH?9&@FDr4DIC?qD"D@bg `2cz88yd4RG :)tHd##D]EžgJl %3c-ƱXI@uGqG G/xr16IWM2MEvT"A{ }~MEX 5+X$Dꃫt=đx=05mt,5VQYp@7E-PM'҈L(YY'Z0Z؍ڍւEug5TUFݵѝ n O#BaPd6:D@ؤ>v=HdAy '%@|E/;&@Bӹ-$ ɥ SY.Ras'dm gSȲ cj_@-gUC\@79 &^n7V`d! ɇbm0 @,#q8f@ & X5 y O>A 2j@XK LÀQ `DTqhQF :G4Q qLWq|W QG tGd,H@/Đ(Ub|o ƐAds^ORz'Og?#uͳ9Ӎ AD MRNS;EӈJD(OJb !]PsU?X%MTMURkV$pGZ亗N8LАhlEiӨd^-Qܖl]WurBWyZ81F۰@@=}^Xxb[!< $^}zMXoc<τ6t!|΄-$e [ zWkN;.j(ms_{<ٖqI ɿogA0RUӯ`i341ͤ; r)1S04\@-v?: ;) :9x\%w>m:I7'x:!~5; K? AQ|,,-^d@  H G, |@BF#IcHlc^H4&rۘx'viHl9/y==@/di*6Q{Om{ܽ_1lHa# 0| TYؚ*.: l>i !aHA<ZF$buR<1cBHi"`֑4PFgҮCd 8Z) ~/-g#T&Υ;@3,OYL'Ȱs ,#.,m!GUc`ˠ̨JԮi ^R EI(!6$)LUy7O3#=Mc~H)i 7jڨƮF ~Y:i#)2aXΤUL*SҲZ@{\+tSC'biL ,ug8F3&>'d/25@ g%=S[,@R^b<6F̂L +gv E DmN1*:bA=}>@($"X _ @aE;=/p9{ 0T`UkBVΥlcX) H/Gq8v5b_y$fYpsU"='|&7s*@JgPFg˜SP̆g%+CPW4QҀ{iz( ӚyFdLVia+':;vmsAε [mr.64 ꜆`[+eD.erNN5!zyDDûw@Z٫偩fxE=K~i1G :Z,ڇ@z@r^L8g6]1<.NB_SMj1xIA`pGj'㄂8U1yӀ\s_u3jYUF{alirC!]7$,Aꈍa?&\޼C>--/\[v0)v=$xz^%xnÌo>c+(hcrq>s sS3S?@q?R;@ 4T!AqB19AB% 1T-7C2)CO@2DTA$tM ;tSDeEuEqF](4ite>Fx6tos>G ԇ!=4Htw%IIqJ0Jt2Ա KsOL/KwL6M3MMIN]NMNoJOINѷOOUG u PQQs%ORRROR-R8P5.1SI,uGC.UOTX>ASWUh^9uboVxKu r5wW#/X$5)5lYo#uZ9fPէ[1U \#A]3)tI)^70U(_ U_^#^v au_Oabq]NV Vb5bAaV7d1c%cidEe0FL!VAeV`aEe`vcfB/eqgeq`5\}h>gil_?~_"=@, L=- 5 ÐW "ĭ,=LUől\DD_uǑ|gĭL#L%ɒl/ ](IҬ+̵-?)H+a.L,3LԘKM\9Γ;ӊI7? AЎdOBєmGEJ{JRT5MӔ= Jm,SMSMU:ԩmFյ]eY֕mV)}^W5}_ T*v׶eٖm.تݎY6}kʹک۶qܗ-̈);]7=wkvwZz^W}ߓ~. V$b5uJ+ 2=NTd~.^e晪9~Yh} pgLN궊i^~cdNFjiǰNO^mk;  pm7$'5x3/LkB=?]>um[unvo/jv߅7_oylw zv"{?ƾg};_~NQ ۔3 @ƆH'`P\V)`!P"<~#P#“g $.+J!PC 9AQDX?H6"DxII1-'(***!caZ}#&bbQFj O#BaPd6DbQ8V-FbHdR9$M'JeRd]/LfS9m7NgS}?PhT:$8H(e6B juVKH5zv_XlV;%gZmVe vAnMƕ|`pX<& bqXf6}~Sk N2w=htZ=&MfVSlbmnw[}}F^a;:Sx;l x/h@F[(]U pH\HZǀ$\{sP L H"ـ7mwot~Qx*`MnM=w {*@X4 BpDX^1F~A!A@2X#P$]Ylq9NA 4YIRHQ/*:{U|Wl[5hz p%q6n$yo ]\6/,N?!M=?'Izf[Hmiute/6`kbpY˟Gr ptΰ SAxA9LB|߷?0 v@p6K@@h(!|'B4 zNTEEʈtg)ojƨilH+",$,?#k&I,+K0.tLӍ563/`NS$t @ODPDAѨ$~e'(*=.4ϔ>ɛbfe@ PIՠ XU:FUo=U~v"Xte.kUYcuj' }ZIŶ+$\ U o(ku]Eu5Yװ,7i_Àv}֞ !3) p^8Km7ޗf;5^y S dN5-Ye^I]Fv yqh9˨0Q!dڌȂȗZ#:olv][v͊bɩOۄҙ /0q< Զ7VqqQ. |~sā ?2oHxrv]7<ژ\$xyLJE' !cwH54|O} x±ߴ/+j=}/'O@is1@y)A4\G2`%|%3 KIO`c8 (h7p!*T?E:px F&!Ģ0qf 7訃G x]@fq 9-@G1c GtE9!H4GoCs#@2/!$Y6Ih@Q%41U7\˛hF]1v2pب/RJQXILS$őr!DM\nD0 jmm9"͈q+tuNgs{~fiK3Mx:O =Z/eӜAC@u؝%!fREzUC?IL Πy;)liYh 3!jR)qLAՊq)m-n]@DNvjRmY#b"eg15e.ѺRuWJ_!?hz'`)X5d),0!zr@c@V+%ڹ3 RWe" OrH#`RLo@J]mx%.1̒~@mU_ø&=`7np:rܘ @l6lS-,/Ѥbc(-~.:?$c`Hjip.Vr_vQ( \')XkB;Xc8r;}^AqA_EȞ>J햌II8e0#C-„ i_ {d d&R3ad8fς\ŦIL3@LG\20| ^ 8%%&JD0 dE`݌"E^_{o4#5OVA22@MZnKמpF}ѭ4R9l~Oq"d?C'̼bFi>_Ϛk6̊@@S?`+/@2?>І >@˯8Rpy5[5!t,sb@t 2#}3&eIjBD&9+*B,-B<6 %40KZ!pȏB*,L-L. &C:$3AD4C7Heh -C$AL@T>D :DiDKKQ50XcFNCOA='$<.W!|Nd1LLMdKES20- 1AE\^h O#BaPd6DbP V'C`v=HdR9$M'/@ Q/LfS9 T4}?PhT:% G@e6@ j>/v_XlV;$Y(ko\nU\s^c`pX<$I1W#F4ag%fsYEhHM.ڍdGmkv[=]|)vUsryZ(Aˆk^W1Jx|^<ӻ @e:@x+~_{+0(mPdl<$P) B/ @TqlYƀN? ǒ !d J*ɀU'뫍"J(r@n`HoM/@O=<4 Gt/.) EђG$XSMt-O ؼTBE!'ETuhLr֎[t u"X+=b52TYmᐖ>ڋ;kaNn]g Q0hVyE _}=woJ}.Ԙ.QF!(zb4`f=#ǃ6Mv]fU! \7n;Y%Oz(Oi ڋzdU-ϫW4& Ql޶ٛNݷF{8.9߰lN>Ѹp qɿ*w^ hHHTx^}騣^|y}_~p&O^|  >'`;| >4@j"@+ :F MA='aa4p'[/@":F@9&48TuaM'*y8I;Q*fb(6+hb\dL~'ɢcd\2;$Ac2,yWl Lki<J LBGzt#eLH(d)/j^'>eLR@.e &%hRp#pǙnFa7sL%)e<"v7_3Y+(:5L@9"~*\$Jl\w4A4_ `E^L@MlR9,֒Ib%uRԜ51ㆪl9FROAA$"bQ - QnCl8Deali4VSZ4+@ \kmnFO5VU Jt3&W VL ,Zř_KɅ vT1M4JljCX R^FdVʎ[S40}+$]T#bv3e+ ѫ[6yrO$w:Ё{ٙc\.׶,"r#Ǿ 蠄l 0VigAJB BdPP j+dD$$ /L<@`bո _,h|Al@g@lfIԍ0YtOh@( !0\2"1(RcѨr; 9&J#X.&3)k6'3{>@4(#R%-:XN;1=PXI#ZfGX n.4 Z[/^"t F08, q>b\^ǀ*m? ]9ls;4995 V׀ j(n%%/.:pG0.Rf &M<>+_5z:X? Ų;@sa)vaQ`VV"蕧"؇c2(]# 3;Bg98 PH]e VVdc>Zpb0g^jɵ>IrⲌ~9 ƀ|ǢZE@ɥMvE*Ghfg*3k # }*M,p: [$ ,ɢ.|FҴ -ޤ)&x޸~eHV^k@v< +p 9u [EHvr @9rU'.2EC@|:L 0 Bf`2}\urFs 7Un!{0MKb+dx!ƍCAhX4LJN\u zpN-%5WR~@ - DIyde^eqυ-pyޕjNJTT.՛zn纍8s<Y/Y[薞ӭn3y=CҚ(n/k;1a/8Ψ@pT .`*JI恬hA ``- 0ذ?;F&f/pUZ !,X907 !6 B8n|a AJ;/@nE GI'Pţ\l L(F(\`|d]v4I ҍ-L"\e(aQG5cxuJ+ԐXc܎3I"cY%دғb$c8iVlM2D)/#!I)re8d)<%81ҋuA<l17%piw8&N6J[RdFR%,\Z.?~frPX@͈ &s P'VBҐF>))Yș3- L3~LkT\͕jm5"SȘQGU "N:¨5FBUd=u͆fuO-hJ~]"&: վ:`s6lhB‘.RI@ ;6{O}n/ Ѐ B-ڨka-Y*#ޛ,j>Ol?q VܠmAZۢ}@$\pxxO-<6ňSlk}Ӿ}^TAbL~uJ6Y[ٌ C?Jv 6鯾4|W آ4>Cm'wGXX<\qd'2wS,0h #ɑ1E]k<4L@QZ.X" 3h9͎l(&k!p*5 xDn89d &jѥi -Kz z'M>W2-:ؤ1ѝb@7-so&b$=Q@)Z_!x Ǭu kKÞ&'vV8?,#s=mx y/!{jGV_&I\]ԈjY 'U!]t=l;;,T,iTͪK@GC%I; cǙQ x ٿ8iǂWf rqm`kx|GSːF1=4; 3yȎhC@pIwc_3`[vR&^#,1=t: W 6喾Ch`00x~'%TÒ.[yDU]`eNv2BibbW O#BaPd6DbQ8V-FcQv80Δ24]/LfS97 }?Pa G-iT)r^T@z265ɍ_@%:`V]\nW;w^n3p " `pX<$muq@7 $d@ |?-])g=Ce I:\Ոs5j2@LK0ry\g7 WCe}Ͻax@'[oYG:@ϧ&'f (m % Œ:p5 f<wD  Ej/ d]$l q˒ǀwtrhbJ)ʒ /q-TsùQ3 @<+9P(ΑJ3sy=7.AsCІh\%Iȓc&`c.=< Qԕ-LQUWr*ր[tı`E}S- V(NM1`ZUVFo4[\sҲ3-)wL&=}ߔR:*ksbJ`ߍ<ld'K-iU!FlЈYYg-ȄH/陆]9en ;.\6IA>e]C B%pVM?$\5󊶦MX{b ]OQl Aݫ^tXE/;ߧ׉U{Ϟow>*%!9ϼ)ET)ya? ~QC  /=m-. AV@9A Qȝ!A \`@vCT(hh}݈@hP-1T:+%EB`pW8$@ ѦZ:*DXXs24.F/0jDlJ%C6=I;,pks.H@2ߜ=@.i*^/aEź4 \ɑKHיhN5>p~iUS*B*^lQ)4,%z0?jϟYܞJBuƊP-Eҹ8:PǢEd@WРiE#)dLT!V1T /j! %AFbwH)Ǩg{ %ru, RTFj*ՁTui*i94@SÜem9,O_MU螁 jLo-cŭq9ePcnrs1A&Y!@ZLMcp ZlelsSDHl)e }b9_qJ;u2[>I1]ԬS*X>umk il KX`=_o0x 7 r#s9F  8B ]}˜n^x!:yi :RE-545fMzǹ&42@o ~Q=18>D&O`}\<YDq͙rdZNś+~@< ?Uܼ3=Ylul՗IЅ=,5 Nl20}Z gd}t`UJƤ(.p$6À;-WcvXD^f8m}u2#WUYv׻ۥol7I=(ފ-ϛ mǠq$S+S[ @бxP=xޤ[,]СJN7fe3D2eܽ#bӫ@sҬW>/]t.w*stg/WNkDG~zFvRof(]v܄:T`r[b}N9b,>? |DM۬=,<Pێ辀IA>zq{RD{(|_G}?|K>wD;_!C}ߧߏ}g?~ߥw?O7k/tP[ ; o]IJP!I-.G5AnI.PUQ-]miGPqI}-G lU Й ,{ P   l 7 D P + [  k !+7Pmj 7CCQ* %G1j9)QEuMiY/BcQam)NQq1qx"Qzqq!weq'QQjyU1g9QˎK1QZ r i 2!eI !R"(O"0_F!#2=p O#BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/G8Im1NgS}?PhT:%GO4D ITjU:VWVkUfM0o]ZmVeo\nQjXoW`j[G gbqXf7W.x&G-fsY[cg=&Mjf98=;Ulv[=GE w[} wryVIQz]>Wkݾwߩ%/zc׫||I~[/g ƾ L+B% : B5 Èñ Eð£DLUY*e5u M+$#JIRl'2)J+d-˒w*.s1̓*%-LL57M$;ʳ=ONAS!CPMP4]G4C5IR,Q5MKOS DS5MS_UUm\Ե}eYkՕu]5y_ urXv cueي=YmiUk Uvͽoq܈-^\W]r]5l]pǎ{ߗA] W`06 bx-'a5y^]%d^c[gy|f &niz2F޷e+ٹ[hznQ%*I˽lp zq6vhgrue| * |_wإ^a~s @͝ AT. CKEn9Gv$Eq׌%/&fi)MEQ,UʨxU52%ke-Umu]}ZXfa PՍ=NHyQ tfEZYK hcmK?x ]kW.9sǩVs/|w-;{-+L B%[hA`p{X 0l,C JQ@1*jQ[$KֹGr!Hr"zH]%"\PIl(J"\pb_K1@TD5Mi7txM9=< tиOzk EQte>tu*G%2T-O/geBKIU`WS#[VDz-X_%xcYveKxY֢. Zj'jhk {ɉSy=n]mc~t^cWU5|Eu`xF58]Ԁ@׋3їs BMُ Rc.fT I:ә+8-Pz`hٗNsUNfQjC`Bư "Enđ纶շmV SL ;[0oT<i `^;`m3Ȣg +t3OS59*J̙]jvqw}ޠ~dA'k]zyOr\`okyBv t(*q=󂚁dCi-,p bPwQdtx 0BCQ^:IcTk(06pӎGxPD{?CxQk,h@R;!̓/G9 UDO t%@jF4)Q*HtnEy2,Fip\*[ H|P 34P{p k-6@KGM1gZ-S*d-w7<@+'ksMg@L8.KgBP8: GcrF\=LrT破NLF } |`֛RbK*T`{RbLKGJpkmSҫ0eV@#?1FiHkm \_=N+UAB e\bO\^T{RAsDj^Z s̏WR?ZS]kD5P;@yRK%l_unF׋d4BLiApQlykCX 9X"+%/S}sTh+qza΁=_pG1Hwqn% `RrUEN\vD1s VCG.o`7qO@q[ Z (1_T"kbGp/'5A8ܾc t@.o}fuWQwf |~@E{8??S,Ph[} ! 4pD{>T*Oől\DʼT,_TuĄ 2(`IA%򌀻Rc -E11̓+'s475N,~O-=3@A5 H;QGPI=,!S¸R5 EQ3B}:)SeIUՌ5LՋVֈ|etuHVYMa݌vH2Y6izyT(uUmۉ4Vջq܊ssEԺXԎr-{ul'wD䬷ٙ(j@b~a84_I0E㶼ąd9Uhf 癀fm^WvgI&SJ֮5)bHw.zOcAP// L#ksr|"ir5+h:0%::m#V]v="iۑγ; aŽ^y+a?К>Ꜩ\ϓQt:/}glvu~VyKd~?˴2˨@=WJ@8@?L ,40\iK %o *uԊa ϐˇ@CꟄ <-!"M@G83Uc8$PF |F!17 L* áJ'Ţdhh#49$L\,?TL4%)w</}/suw7kaO+x| n./ =~+/ˆg8~wCh @0a0@th xrS]%V"0d -c"0"%0 9iP.;9EH#ղ?RM,]Uc `A'eVi Ifu ]jtD䅞JA$ꁠ7&|Z2(2;a_@(:Q }YD,z}V ҩUF$+ Y*Jbc6vkM&9:O+FԴ+*2-;B[h;o;KW!U[c* 060U {wbS JAaiI5q5Ȁ%ő4 qjdo<͡(P΀= sOрI0GԀ'U}a gفw5aJ3aK uRyPˠ# BX+{2mр:εEg[V|:9ms dH D?NZWg2|0 b֪T?@'=0ArMC/#?6qURN/+!ЎrP)+wpIrƾK[pizWj-0A@QCyeq r8.,{[lpHu5d! Ⱦgc|;RYRZW}Th]Ǝ XS4pfGH6@x=p_rEb܈1Ta,40?$JAt JiryA^6'ݔYjĢBˢҺW*يceMD 3@Ț H ,~"B ¤$pS%9O 7N¢T˸  fyഄϺ Y'KE jk&aag_7'P\܈K4mb*izZK8ɺffd !RjzJAJF2S[wNPSu"*)(7"*W^pY j[ 5* +o,0nr%z$ύ ;zXe #Tz!ep ,>DBF ֪Jk = Y[@c6C_`-!4K4.suSL Bbn`LFBrRKX৺ky cI]^/&o= dޛ|/qj"J*5N(1`s76xYvXHY}ȕPa/0x`w Ll2Lؒ*qfۛ(,]ĐpSKNK+֎ҤL$ /%و9JW*s"$8FH)E;[3BLJ:r a-=+Ux86")C$ۖQ7}_3dke jY7oP 'i=$fbr@ o@d_Y{+uɒ(=Gъyb+JEI5 JAc׌7OƵ661K+T(@ZA_X--QMYZR4WvG% 6}HEǨ< fڽ]U 2ML|f V&ҭJ 馠|`h@  B\2"1(R+ h6$1KP\[.&3)k63>P(2AЩ4]2Nu &^*1pv*ՒKan4n -%S~p4$dÀ-w`_d /+5#hh&+J=j^c[7zl-wFC[kz7.\n6k8A:=+!'pp.ג;_\R6> ?ӢM4J be¨$0`FBD 8dѐ"b+8 >c&,#HD{:r*>[VvC|NyID/%HneBe7&BftUQ$+br`z 9h z[dX]9(D$* T8F.I v2k%jB)vq6b E]P&EJ{tnpz'Ʒof;@*jKp ²eL7l% Us1@qT" х* *Z+3L#@?F$=DYtMV-lsVK-o^SU@0>^D 8ڛ_yqo[s]aM^+ <]q\Jh: Xeun1={'ީ^dFw@,e7lQXǾ:O = ߇~FeE>q4@,}@<`)T*ΰc(^uCEh7`&%ϘNC,`&mu)A) (wT/5 `=L-fN~/!#]`xDţHт*"! K|+o<;ЮFnJ1ʄN 16xLQK@tOXCz⤌WI *eɩ)nGIتG3oqt!7rbM;b\Ԣ0@hteWiI3BcI<[eH)Ħ=x46%ys!̙O (S3Mt 6dbqT!*~>9Yt(uJ6_KTDNBL%F&i1Q bD*dLYMM ,:iS:zL9!SؐR:KP3{ X(G֑Qb(zqYAՙPgMC$Uf+7=\%MvFe`l*ˤ@48,4+Z*ؑk*EzB/xFulڋnE"x1lABưR UrPf7c<2kLT-!0 Ş=hn-'^:Ȇ'E1Yr,c.d`NB,/H-kLpٸT!чgp Zya[_4ߜFD4G/q; uuv&>H=(5X$-+ǖB?hțnfy'-#A)@a8ιԫ)MS4"(B @рΙ].gI[A r\D"caŭfeVl6'k+֟6, ]m`l_Tt[&X` i{ROaSeB[P>7*M*Mn/Wk^ 0{ڛyj݈NRKq@uQJ3$R_( S=ÌI{xQL\pu+@ t01 8)9,xm DF^/ϖܬHbipر A 8Ǵ; <'i`x7\Y[ O#BaPd6DbQ8V-@v1HdR\]/H0m1NgS}?;@->R@:eOTjU8@TAkvq3_f$gVYq"V@wU*D y`a '`4`b}sY,i6 tZ=&qu{Qt`O0 z@f[1|}oۻ0@Idjx- ".DQ,1TdpHi|1 G! ;#ũ,2l҈)ʌE+'˒lTRĘIrr `/59TY:4c/?A|E҄4L5M3 :aԀySӕKC- UWV>2PT#@W_ ;U?Y ZGˆUiݬ VV[-*k "s7k:s^ 7t^Xطs:,eF( _XJb RUZc< Sd,`I˙XHOC՘gҮ_9S6g֌ HXiJƤ xb%rҵ( hVOpM'h o\.ç7ɠk? Qir`Ps AtHӀTAh`#٪S:75(1!O} =/.3J˾ y޺ .G/'Є~0R`v .J)$=gNJ'cP" =M<[@PހhLMPf>Ё50&"y@DCJbdl"7 "AS^3j*KKr E[@"PFc` Lqf<7pTy01 ׾eAW i@Fc#,`rLQ%`\7%[+qvP"y$Hd V+M-ym)`? r|#qPy;# i ̀Cޠ-YO`wrz]qx#]ʐ'y^ScF J/:P/ӵۏ\K3>k@>p1_R5sh. dpM-``r l 61 W@(LF&bF@3\JcZ2.DI9U㲰\*T )]zne~`\bfeyy|ĉdYpbcVN gid P 2@@PL(j!qza1,)Ud `iW,5T\&)gq_d`,@n\ {pDƚ/4@N%&Tk@SB,fw,@fvY|plob L|{C_0L,w,&Fs& @8jZP_3\R{7W0Hh-N:o-,+ \21eݍo\D$ٍpEO@x 7k6p}PQ2gր`}y.]5Nn>Ӡ0H.a`"1SϨ@T?+<j}/ՠob ](b\dp@`0:ԅRf<·YKvg1z_8f!B $%*9H3!" ޣ,RJ!<ofȭ 4،` h 41 4?ZBms($ <#hڜK.FbeAO  pϓqF)r⨤hF[*Tf$߁U^2L$e/HA jfC'Gq1@y`DLBP>Lpn8")>şYt0g$`9D~@r-T (-CD(}LffFpqpB“~3֒(aE&`(GUJ4qc51iˀMҞ0GPSv`b86 g,(m 8^ynJ ZzAG%@B;u[# [X%VVW>\, *Fe~â-h v: 7N o ,vri]YC(BJz=jOfeS[5H ܍4pcPޛ{`90YQh4v#+ W-b q lFN%Z g9`BjA. L0bS qŨYAgJUi$/3Mwf݌A)8%GȕUx:Y0WBj2ij؆(+d'@Kj$ҋ64̮ 6~ӕ)Zs+)Ji0>o&bdFU|`Lli7rV;[) 8naKn6*CׂBCmP>A xSh' NT\%Yi 0n"e |a^R%WvN4݇;weL{ @CZ \mKʤT%\ KtYDQUUnL@z,_.) 4-u.$wD 5T%1ʈ &s)^SǴ5=il'= E }wBRH^r=}H~__X<'8?ϣv{)sl,w3L>K506:ܳ7IYP3*nMN=#:X T!d`i d " Kc7y J[hUD~z@a8K(-X Ka^P>nـqWArmeb-" hK 3QR[1xW7+}7J05(\H)`Bmm_}7`'0V {o$%EVb0" @SˁT7ЉNLHs8%Eo]SaV()ȡȤ33AƇv`stطp&6ngztxy*:f0nVHEW'>t`?P`3zR]Bop6t uKe 9<2huA:!CDI9FlVTQQM#ʔTQn.$*@@g +g g6gR@grgg(=RSg/Users/ericw/Desktop/testicon/512x512.tiffCreated with GIMP on a MacD",-8ENa<  E\R%HH OBaPd6DbQ8V-FcQv=HdR9$M'JeRd]/Lc7@e?PhT:%GRiTe6O*@Vm8_V@&}PXlV;%gZmVdr^ W:Y_Bۍ`pX<& ^ wCqWFW-fsYvcq=juZf]"Z)Ik[}_1=c#y\g7^8mǍz=wSQB!}^gzc^]~_>L, J]# ΖAT% re B=8CJ GLUN(Ī$OFmqr eH !QW)R4%ɒl;%%B(IҬ+_)*Ա/ W/&22LSL5D`64M;r3-3? ??(BPTMEALEҔ,QM 4=O4MQPULQ)#+VUUd \Vu][uyaؕ* bٖjeKShY֭ZE[6ovms̶\t޿]x^U|_ك&hl9~D(s\TG>t9Th:NU h,j 斶%[ol㳀մgۈ' A-pgx+-&hUrɬ<|+sπOD=(nuak:@4 "DbQ8V-FcQv=F20LWJ@ `/c)=7S)}?0(@GRiQr4A?:]V5VO v0 Zl6dlo&Vۥ4 ~m@  M;Woq;m De3Y4O WL:@}f&0mF[N/sBO4p9W4YlΧ.B:<׭ejUO4m@ی~v[A; F 0L G?B I D*:*SEh%F@݂S:}$S;Q LT Ukzw@YF8Wx/TL%OM1T6@Zer 6;[3oq*%Z(]_wnxմ/ W2z p|aE$m%6kE9N&U@lԗ VF5AvZ*I/mUrx-ADAݩ1Eb];sGcQJKe  >~{S;N14-[Gh= LhSuoIwc e@ 0a{+P1@8) ]H@8[Dp~7@wÏIIuתrfa L 9#S%`qJ@Yg-F>h! GVp)fI!dB.mJ-L$!= *˂楏 P$6B!c1, o)>A"P  J|& ¬^u_qFp~,) ^Z̾@**/dк#ql)&D BQgɢ0Lpb^j fޛ * LxB,#hq") T+P 񬗑 jJ)ϲ)$ "P%D̻-q-CMQ ) 覧As E⪅b$rx" I% ) & r\`6o& ,CM\ y' RA(ҝ.&I05*2>@66CҲyg.B@VV,z ) N)N$s>fJ0 SP)-^S pdvڢC2E )/hI-""I009`."5K6&z6e1l)p dJ7Bo" (jHΣ8l:Ӯ:=K8*͠$`mhsK )[4D*1b|X͉?H;TpUL#( LuA$J( `[ Җn*ScxI#ۀ~aC DeAH U#1 \@O7BF0"Lx(D6fS4'˿MCf\>j\b]K#I@)3 DD'*Hh|NI.A53`˴tS>g K)( |Ēbe=X4HUGS!ITVsO50a 7,\)$PL< /@#1;XEN⵴-lkU]?Zc7^mVբn!LL5sZeW *]N|`V%^yY1Q(-tcbaE"|6j&SPN."( ihC'Iћ &Rq'ADޛ fX̫F)_*rbA[e^m)? i=R)Vm5D)o:$AG*/: oz i e^`@,.YX!)SrmBعt :OI)g:B#7w4k7,4 t$\l.3-+uoYe.܌' N*wOgU18㝄B[p8=-7 {ER@xgN.0PBt>!DX^QVAEPPzrؠB`diq9NA PzpQTYіMV؁][4Pi)mqCPk^w؀3[5bj! H/\*ܮ~T*Z Qnd؀`SlMq;vnPǑpv i{\s0_|>^~@O;࿓p;@gd BZXOD =~P<^#ƱR\*ҸNG F"5BAI Q&HRrE*T灲=ˠ02L2:46BӐ[N<AP*P B6̆s8TJR /6 T6 #RQ55N(ӨUu^UiV\vu{_:T0{ }K8# (- [Em2IJRpsz0` _06/D75a'" b/Gc8?bx}Y6\;?^_L9湴U>sg95抝F1 [:jh~k:znŰl2)V֊ݶn;Vӹndk[m[<6Vͼoh|O#j~qFc7|?r?Et_=u:Is9WUrUTӨv=WeYgv7y5Qy7wDzIw{{ܫE^V>%M}L @s 8MlE r栔LD`OBaPd6DbQ8V-FcQv=HdR9$)'%RYd]/LfS9m7@ PhT:%GR@vT@J)VWVkR) yv;%gI)\FSnW;֫]Ϭ7kEbqX={?c2YmYgEOgͬW[o]ĤW(O]uw7)B] 'ρ xH2a`#6,ݭDaq+Tk> k~lY1<@|:rSaǣhB6],@t{ nlhm Of}Tu(툦ε(%qBg?+1Q`nmoP Bt>!DXsv0/ XZA!E2PP$r9 ` 鴺q9NA=ХPJpQ*\'$SoX [0Wi5<>g\+@7T;8p EK wr<8>| PP2jl"`BM&~qngOv< O٠;y|<O)'2Tj@]0 =bو)oB/ "!6ji$FmQVQrX C+7o8 G;R:H m"G22M &/؛(5M`*4#Pg 6̿0L*`/2TΞRͬ41 Nõ"p'T LIpP9N HR(UJ.:ˋTA CRRKĶB5WVT˰$2ZnsF΢c }b厞x j-D$tQW}lF*GݾP\ut[+Q.WUx<G2  __"vx2{fZ)Z1G6.Ca4(>:VGd&dVVYpg)]ox E>&~rV'zeXrC"8Y'9BC뺍N˙FlǴ֋ rеN8 {m\':U if2Cq (<`l5NSs<ɕ?ݍd!@x0,]p;)\EoiuXo WPP*lRp_>y{ͳ_|#,'?sQ4ZqzR&,9< '̝LS-RwVS1!{ZBzAk:^G7>Ԩ@`y aK0ÔeFW-@z3}!;2d aZL ѸNwp쎰>#5Q!]n.)Db}ў4$I0-BOܦHȤk4s :6jbGbY-Ii`,K2tS@8b^@H<s.M)n V-7N1ȚTU @ܝ ιH5j5M9Qj/zTšNZ'$CS4"/pCNaΑ~@8H+.TBbҸ |}j>''*KI˚Ff.I bi2:nhM,]G'@"YPf$ 02+@ OKJպ٩`V#t5rҧ E|'sŇ\btfy+%tqLF]Iڍ{6<P"zj EiBl"VAm'h 5ǧ@wbU  9zI78أ# PUy@`ʕT 7\6[m\ecA2(j%_@ 82_dU806|XF/p)=yv{r|F0CA`2X[֍OCK)h3%×W"'S? LZYAǙ@#J8ZO'@蔜OE 2x -k9=Y]LCQczP$K Yj=GčaY\D-$U¤eJ!<^%;,S*c)DB@ ͸ыl6j  ; -͙Ƶ'%t 0!.я`ÚMKws1|FЇ9 \ HBvBlSJ6s#^Ih {on!C $ 9m1tl( {j9#^ +y 3;6'd/ 6.{괳`|4{"8`i92 TvKh€uͣqOS5'@'{餫n`,W Q~[pNYO6H~@"@ZM:Pth 0^3'Qoք-(.ƴ&_G"Ʌ]+ߙ@ < A3Q]= >w)-9M 9@kכH+X>ց뼹C1CF=@?+(jZ;6щr:@$м:S+ . 鯾_(<Ӫ@ʒRZ%"a*< iם:M-0,`>kIVD6A.8#@|jAG"B$1,tPPǡ}X}wɚ;:@7 \cxƘ.X:GYPh95-ؑ Dh* 1@Љ:q0ΡR9h,O,"/8IE KXR@3y3|H*W M#t}GHYS;`7IS *rɍ ZQ79\gQk:5xhNۭ̝Oz**;#Aϒp̜O[SQx0ZxDlϴ҅ԺKH3xI8NQU KBҥZ;|M| YKFQ(Ui 5,&VZ.~;Ȅ׀F` (RgH4s( L B4A  ܪJI X$隥5|rP6!Dm CV#@:xGHxW (1(F0O8QA7͚ COM )Mczȝ%au0 Hۀ ZI@h,5翴=Y *<NќMųu ED 䅙 `Mej𔨊ܐPx ZVz.ɳH:ՈE,9"S#(](ׯD =B&S[ESl 䈴#a2VyUL/(kȩ;^88".BlLM4 6I^\L$ ZtU `[gckxXu B C ࠾  [`S`v D;PK. =H BKekp^:_iI7.ta7F؇S]{Ha~8ucG=KfՉ7]{ҍf&dp Z _ylac1Js@ ԍ M*J^%$7 Xýc>hYP`I91]lvk>-]HӪ$h>:(boBg,lbH5RkZ^lgO`?ɕR :֊-Zx}¡ZHPo([e\dE8ADBƔUuaKKm̜/@lvНك.d}XoP AAyznBChߖ GiݻjW 6mo ףhRl,VW;(W\j8Xli,|OP9Lp |Gι8;IB2< -eͷ$׾ f@|ؠy(6ͬm`P+nǐKddX40pl[φhӵ,¤ Qf4, ZȚ,ڍldpdtC’QH-JI: vVevU}cђ$`y̸Csd r{hV? !IG0 -5Λq{~r{[S CAl|,<wˆ:V{HP>8Mޤ*XCS9PoٵᆎN7F9n̞x; {y'3 ’n p4 ȯe\7ݽ:#WcɊVw^sv\ΗWv{Vާo7َz}[/{~ߗ~n_O迯L0, J&AJA- 0+ Ađ,LDPSe|#ѴiǑ|@mGCq#Le#?2$)&IR)Ȳ Yî!/L 0L6J\9Β|M\:ϓOn))A\$B)hCA|D q+61HZEvrTl1ǀ4͛(S%Ԝ -ˀ7/po Q3 A}( c΀q;eiP hwA tJvрGII5-DU41)"-j4m<V,嶌 وI戸=tX*hK z(KixM&Vjl`!>SDPn|x!sbimEPat 9j )b'D*u5՗Vݡwl=k=#pH+m©hlO6&JZ,}Sao?)J1 F x  GmS^ {xFL!q? ڳX& z jO!J<8ɋ HDRA,d!0m(@YX ޼I@ R+ a< o"t(Lc 셣`Z‚V(-Cb>,rK}p!bN'Ɍ.JX%,HRD, Ͱ QR`Y;!B&b1Ɍ$#Ұ,<#PDQ  (cq0 3 BU$x.HPc没2m)h]G ,8B t^;MKFԈu!EPs@J< Ub"ƙ8WSPiG(BnBAuN.xGъ{ L.@tR K$eaW,P3+@Ug-k}`Crʑ5" @MKbu`Zpe-qq(ѹ x@0G\5"%m셚Bd:ɓj@9$(A 7-C5duP0R[unȅ&\?%Q{=iw̲4,d ؘ_0~/Wp HZ/"O)C +%tWU *CD H0·~pȇЄB %ɝWV;JH-YL  7H@(GGǤ$7]ˀ4k {?.&_$__-j2 Z@6=e\x#z?H%,4 H DI8J Yee<;1VŚ/c@gcXܞ:?t4-$a gF)!,Hd#d2R*IITY$"EZN )'efQLĢYVIK+E̫H-%b+s/]sb0)vSeřJ[L933Bg5bsbjC7' d&LBƖrK):Ljc)X{&BZH}=$Whg ]h$@#sX@łag܈ĩN #@$>?G(7 [qqG+ & HS$\dT$/`I=h$Z'E9 }@18ļ(,h˧f.5E8d lS%_slC;ZP3J$3O>!Brc|rR%JV;F9X:7( H,p?~Oa"%;?*^ڴc{=UA&`wxu WjHſWdH2 \^ IX鿓afPhRzZ%ԇHVĬS2fpB1pK+cD܋+ͷ[=XRSbͷe.vb:N+pZՒ>0> ۼSK&sNsߍ@ӣ "˰Dmx^MVy䏓1*}̒{#zky<\ʽw c @D }[Pt{"8/m eW$PFoI"#EP)i.8<)P.삐pͬ^`;*㼚:"kòѭ$躡xo$p<&n$/F6BF\ ".ξ/dIp$zs'6AX @An$*_ b:@-! n|,  qIB0*G`dtM|`h"< q&VAf쭡$ o`!F+&K%,QT\] P6Q8 o8$ .Q%IkIr/πnFldk: LbA+s@-:!7$jCr!1+,e-b3pN1bHCA,8JRF T0`(;..T!.`$b,p1T&Hu_@A'I m'ȒmQn @ꪶ*"]*񘰢,ײ(](2a L\-?Έ@Dv##&?m ȅ:9 3"aRI5?Dw?zS-tT$2nv,^F#lRAtаFq!"ckw^"49JGdXn)HFEJEH,IE5;DDVnyNH`"r+K:`n|d68F~,@A>.{\!M>(ab,~kdVE\yeS$P\4Ӹ,s0җK(R$~5J2iIaCB2T+({A$o3CwA4a vzV(JOmqFO<2@˭p:0ca#tFD:h" k8s Oh"6x?) wk6b"η72 2Q}fNָ$$py+/ګ&=vv$n%Q 3G$$a#0t$(t$*'af&hv=!0qC*')c+xGfn,DQc'x;6p2r|`r/;$gW.@zGw~~2Nǥ0(%~) AvY‘E)07L)ܵy7:O % ~hchhl~avFNshȈȐ<#)/qfŲ(\dֵ`(tHX 8Vtwꔿ8QSi8M8ڐU 8E߇U9ǎJs9DD89 Al X91^9='9A9+/9Pb>$$W9aY8fO9p9Ws5bE}KY4TyZO}yX49w˜FAp7۞ib* t +|0Y(=RSv/Users/ericw/Desktop/testicon/128x128.tiffCreated with GIMP on a MacHH O B@(`?bPxV-Fc@t0MҰ](LfS9a7Pg 7_eZ%(P 6y>G0 QV@<',@ .Vy\@ˠ3woTx&]KS@ HEx;@̠9@vv.nz0L j@m`!+W5ᅪUHCNdV:@V ((9=S/&D;c>@2:dYAQ$?P Kd/#4Tqh"F/Gm-P *XI [Z/-%ʀ%" i" r2397Ls '**?PCL}IBSI H}K)ٻM= x=qG(BrLV@zoQc5ʪy@oK֘L;Rh͑v ߞ++ʂX9>h3vo_t",}`V\    (1>=RSD16x16.tiffCreated with GIMP on a MacHHImageMagick 6.6.1-3 2010-04-16 Q16 http://www.imagemagick.orggnustep-examples-1.4.0/gui/GSTest/infoPanel.m0000664000175000017500000001322107722470343020034 0ustar fedorfedor/* infoPanel.m: Info Panel for GNUstep GUI Test Suite Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 "infoPanel.h" #include #include /* * * This class is unused at the moment; for the InfoPanel * we are using the standardInfoPanel provided by NSApplication * */ // This simply shows some non-editable text @interface Label: NSTextField { } -(id) initWithText: (NSString *)aText; @end @implementation Label { } -(id) init { return [self initWithText: nil]; } -(id) initWithText: (NSString *)aText { [super initWithFrame: NSZeroRect]; [self setEditable: NO]; [self setSelectable: NO]; [self setBezeled: NO]; [self setBordered: NO]; [self setDrawsBackground: NO]; [self setAlignment: NSCenterTextAlignment]; [self setStringValue: aText]; [self sizeToFit]; return self; } @end @implementation infoPanel: NSPanel { } -(id) init { // Labels Label *title; Label *subtitle; Label *authors; Label *version; Label *fsf; Label *copyrightOne; Label *copyrightTwo; // Text *description; NSImageView *logo; // General vbox GSVbox *vbox; // Lower part GSVbox *lowerVbox; // Upper part GSHbox *hbox; GSVbox *upperVbox; // Window frame NSRect winFrame; vbox = [GSVbox new]; // Lower Part of the Panel lowerVbox = [GSVbox new]; [lowerVbox setBorder: 5]; copyrightTwo = [Label new]; [copyrightTwo setStringValue: @"it under the terms of the GNU General Public License."]; [copyrightTwo setFont: [NSFont systemFontOfSize: 10]]; [copyrightTwo setAutoresizingMask: NSViewMaxXMargin | NSViewMinXMargin]; [copyrightTwo sizeToFit]; [lowerVbox addView: copyrightTwo]; [copyrightTwo release]; copyrightOne = [Label new]; [copyrightOne setStringValue: @"This program is free software; you can redistribute it and/or modify"]; [copyrightOne setFont: [NSFont systemFontOfSize: 10]]; [copyrightOne setAutoresizingMask: NSViewMaxXMargin | NSViewMinXMargin]; [copyrightOne sizeToFit]; [lowerVbox addView: copyrightOne]; [copyrightOne release]; fsf = [Label new]; [fsf setStringValue: @"Copyright (C) 1999, 2000 Free Software Foundation, Inc."]; [fsf setFont: [NSFont systemFontOfSize: 10]]; [fsf setAutoresizingMask: NSViewMaxXMargin | NSViewMinXMargin]; [fsf sizeToFit]; [lowerVbox addView: fsf]; [fsf release]; authors = [Label new]; [authors setStringValue: @"Author: Nicola Pero "]; [authors setFont: [NSFont systemFontOfSize: 10]]; [authors setAutoresizingMask: NSViewMaxXMargin | NSViewMinXMargin]; [authors sizeToFit]; [lowerVbox addView: authors]; [authors release]; [vbox addView: lowerVbox]; [lowerVbox release]; // Separator [vbox addSeparator]; // Upper Part of the Panel hbox = [GSHbox new]; [hbox setBorder: 5]; logo = [NSImageView new]; [logo setImage: [NSImage imageNamed: @"GNUstep.tiff"]]; [logo setImageFrameStyle: NSImageFrameNone]; [logo setEditable: NO]; [logo sizeToFit]; [logo setAutoresizingMask: (NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin | NSViewMaxYMargin)]; [hbox addView: logo]; [logo release]; upperVbox = [GSVbox new]; version = [Label new]; #ifdef GNUSTEP_SUBMINOR_VERSION [version setStringValue: [NSString stringWithFormat: @"GNUstep Version: %d.%d.%d", GNUSTEP_MAJOR_VERSION, GNUSTEP_MINOR_VERSION, GNUSTEP_SUBMINOR_VERSION]]; #else [version setStringValue: [NSString stringWithFormat: @"GNUstep Version: %d.%d.x", GNUSTEP_MAJOR_VERSION, GNUSTEP_MINOR_VERSION]]; #endif [version setFont: [NSFont systemFontOfSize: 12]]; [version setAutoresizingMask: NSViewMinXMargin]; [version sizeToFit]; [upperVbox addView: version]; [version release]; subtitle = [Label new]; [subtitle setStringValue: @"GNUstep GUI test/demo app"]; [subtitle setFont: [NSFont boldSystemFontOfSize: 16]]; [subtitle setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin]; [subtitle sizeToFit]; [upperVbox addView: subtitle]; [subtitle release]; title = [Label new]; [title setStringValue: @"GSTest.app"]; [title setFont: [NSFont boldSystemFontOfSize: 18]]; [title setAutoresizingMask: NSViewMaxXMargin | NSViewMinXMargin]; [title sizeToFit]; [upperVbox addView: title]; [title release]; [upperVbox setAutoresizingMask: NSViewMaxXMargin]; [hbox addView: upperVbox]; [upperVbox release]; [hbox setAutoresizingMask: NSViewWidthSizable]; [vbox addView: hbox]; // margin: 10]; [hbox release]; // Window winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); [self initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [self setContentView: vbox]; [vbox release]; [self setTitle: @"Info Panel"]; [self center]; return self; } @end gnustep-examples-1.4.0/gui/GSTest/Controller.h0000664000175000017500000000054310107552352020232 0ustar fedorfedor#include #include "GSTestProtocol.h" @interface Controller : NSObject { NSMutableArray *tests; NSMutableArray *loadedTests; NSMutableArray *loadedTestTags; } - (void) startListedTest: (id) sender; - (void) startUnlistedTest: (id) sender; - (id) loadAndStartTestWithBundlePath: (NSString *)fullPath; - (void) _findBundles; @end gnustep-examples-1.4.0/gui/GSTest/.cvsignore0000664000175000017500000000004607017346340017740 0ustar fedorfedor*.app *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSForm-test/0000775000175000017500000000000012204034630020047 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSForm-test/NSForm-test.m0000664000175000017500000001100607722470343022362 0ustar fedorfedor/* NSForm-test.m: NSForm class demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" @interface NSFormTest: NSObject { NSWindow *win; } -(void) restart; @end @implementation NSFormTest: NSObject { // for instance variables see above } -(id) init { GSVbox* vbox; NSBox* boxOne; NSForm* formOne; NSBox* boxTwo; NSForm* formTwo; NSBox* fieldBox; NSTextField* field; NSRect winFrame; field = [[NSTextField new] autorelease]; // I suppose this could be considered a hack [field setStringValue: @"Test"]; [field sizeToFit]; [field setStringValue: @""]; // [field setEditable: YES]; [field setAutoresizingMask: NSViewWidthSizable]; fieldBox = [[NSBox new] autorelease]; [fieldBox setTitlePosition: NSAtTop]; [fieldBox setTitle: @"A NSTextField"]; [fieldBox setBorderType: NSGrooveBorder]; [fieldBox addSubview: field]; [fieldBox sizeToFit]; [fieldBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; formOne = [[NSForm new] autorelease]; [formOne addEntry: @"First Name:"]; [formOne addEntry: @"Surname:"]; [formOne addEntry: @"Address:"]; [formOne addEntry: @"City:"]; [formOne addEntry: @"State:"]; [formOne setAutoresizingMask: NSViewWidthSizable]; // Please note the order of the following commands [formOne setAutosizesCells: YES]; // We use sizeToFit to make the form nice in the vertical direction [formOne sizeToFit]; // Only then we set a bigger entry width (otherwise sizeToFit sets the // minimum width). [formOne setEntryWidth: 240]; boxOne = [[NSBox new] autorelease]; [boxOne setTitlePosition: NSAtTop]; [boxOne setTitle: @"A NSForm"]; [boxOne setBorderType: NSGrooveBorder]; [boxOne addSubview: formOne]; [boxOne sizeToFit]; [boxOne setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; formTwo = [[NSForm new] autorelease]; [formTwo addEntry: @"First Name:"]; [formTwo addEntry: @"Surname:"]; [formTwo addEntry: @"Address:"]; [formTwo addEntry: @"City:"]; [formTwo addEntry: @"State:"]; // Please note the order of the following commands [formTwo setAutoresizingMask: (NSViewWidthSizable)]; [formTwo setAutosizesCells: YES]; [formTwo sizeToFit]; [formTwo setEntryWidth: 240]; boxTwo = [[NSBox new] autorelease]; [boxTwo setTitlePosition: NSAtTop]; [boxTwo setTitle: @"Another NSForm"]; [boxTwo setBorderType: NSGrooveBorder]; [boxTwo addSubview: formTwo]; [boxTwo sizeToFit]; [boxTwo setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; vbox = [[GSVbox new] autorelease]; [vbox setBorder: 10]; [vbox setDefaultMinYMargin: 10]; [vbox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: boxTwo]; [vbox addView: boxOne]; [vbox addView: fieldBox]; // NB: Always set next/previous text/keyview // after all the objects have been created! [field setNextText: formOne]; [formOne setNextText: formTwo]; [formTwo setNextText: field]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (150, 150); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [win setTitle: @"NSForm Test"]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [self restart]; return self; } -(void) dealloc { [win release]; [super dealloc]; } - (void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSForm Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSForm-test/.cvsignore0000664000175000017500000000005707020257266022065 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSForm-test/GNUmakefile0000664000175000017500000000242110564603216022131 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSForm-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSForm-test_OBJC_FILES = NSForm-test.m NSForm-test_PRINCIPAL_CLASS = NSFormTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSTableView-test/0000775000175000017500000000000012204034630021026 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSTableView-test/NSTableView-test.m0000664000175000017500000002620612167350230024317 0ustar fedorfedor/* NSTableView-test.m: NSTableView Class Demo/Test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: March 2000 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" static NSString *NSTableViewTestPboardType = @"NSTableViewTestPboardType"; static NSArray *draggedRows; // Something to show in the table static NSString *keys[20] = { @"From", @"Reply-To", @"To", @"Cc", @"Bcc", @"Newsgrps", @"Fcc", @"Lcc", @"Attchmnt", @"Subject", @"More (A)", @"More (B)", @"More (C)", @"More (D)", @"More (E)", @"More (F)", @"More (G)", @"More (H)", @"More (I)", @"More (J)" }; static NSString *values[20] = { @"Nicola Pero ", @"Nicola Pero ", @"richard@brainstorm.co.uk", @"ettore@helixcode.com", @"", @"", @"Sent Mail", @"", @"test_app.tgz", @"Test mail", @"Info (A)", @"Info (B)", @"Info (C)", @"Info (D)", @"Info (E)", @"Info (F)", @"Info (G)", @"Info (H)", @"Info (I)", @"Info (J)" }; static NSString *test[20] = { @"Other info (1)", @"Other info (2)", @"Other info (3)", @"Other info (4)", @"Other info (5)", @"Other info (6)", @"Other info (7)", @"Other info (8)", @"Other info (9)", @"Other info (10)", @"Other info (11)", @"Other info (12)", @"Other info (13)", @"Other info (14)", @"Other info (15)", @"Other info (16)", @"Other info (17)", @"Other info (18)", @"Other info (19)", @"Other info (20)" }; // @interface NSTableViewTest: NSObject { NSWindow *win; NSMutableArray *keysArray; NSMutableArray *valuesArray; NSMutableArray *testArray; } -(void) restart; - (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; @end @implementation NSTableViewTest: NSObject -(id) init { NSBox *externalBox; NSTableView *tableView; NSRect winFrame; NSTableColumn *keyColumn; NSTableColumn *valueColumn; NSTableColumn *testColumn; NSTableColumn *tb; NSScrollView *scrollView; int i; NSString *string; NSCell *cell; keysArray = [[NSMutableArray alloc] initWithObjects: keys count:20]; valuesArray = [[NSMutableArray alloc] initWithObjects: values count:20]; testArray = [[NSMutableArray alloc] initWithObjects: test count:20]; keyColumn = [[NSTableColumn alloc] initWithIdentifier: @"key"]; AUTORELEASE (keyColumn); [keyColumn setEditable: NO]; [[keyColumn headerCell] setStringValue: @"key"]; [keyColumn setMinWidth: 100]; valueColumn = [[NSTableColumn alloc] initWithIdentifier: @"value"]; AUTORELEASE (valueColumn); [valueColumn setEditable: NO]; [[valueColumn headerCell] setStringValue: @"value"]; [valueColumn setMinWidth: 100]; testColumn = [[NSTableColumn alloc] initWithIdentifier: @"test"]; AUTORELEASE (testColumn); [testColumn setEditable: NO]; [[testColumn headerCell] setStringValue: @"test"]; [testColumn setMinWidth: 70]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect (0, 0, 300, 300)]; [tableView addTableColumn: keyColumn]; [tableView addTableColumn: valueColumn]; [tableView addTableColumn: testColumn]; // [tableView setAutoresizesAllColumnsToFit: YES]; [tableView setAllowsMultipleSelection: YES]; /* column with selectable but not editable cell */ string = @"Selectable"; tb = AUTORELEASE ([[NSTableColumn alloc] initWithIdentifier: string]); [tb setEditable: YES]; [tb setMinWidth: 50]; [tb setMaxWidth: 400]; [[tb headerCell] setStringValue: string]; cell = [tb dataCell]; [cell setSelectable: YES]; [cell setEditable: YES]; [tb setDataCell: cell]; NSLog(@"data cell %@", cell); [tableView addTableColumn: tb]; /* Now add some more columns */ for (i = 1; i < 5; i++) { string = [NSString stringWithFormat: @"Column %d", i]; tb = AUTORELEASE ([[NSTableColumn alloc] initWithIdentifier: string]); [tb setEditable: NO]; [tb setMinWidth: 50]; [tb setMaxWidth: 400]; [[tb headerCell] setStringValue: string]; [tableView addTableColumn: tb]; } [tableView setDataSource: self]; [tableView setDelegate: self]; /* The following are to have a table without headers */ //[tableView setHeaderView: nil]; //[tableView setCornerView: nil]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 300, 200)]; [scrollView setDocumentView: tableView]; RELEASE (tableView); [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; externalBox = [NSBox new]; [externalBox setTitlePosition: NSNoTitle]; [externalBox setBorderType: NSNoBorder]; [externalBox addSubview: scrollView]; RELEASE (scrollView); [externalBox sizeToFit]; [externalBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [externalBox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: externalBox]; RELEASE (externalBox); [win setTitle: @"NSTableView Test"]; [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSTableView Test" filename: NO]; [tableView registerForDraggedTypes: [NSArray arrayWithObject: NSTableViewTestPboardType]]; return self; } -(void) dealloc { RELEASE(win); RELEASE(keysArray); RELEASE(valuesArray); RELEASE(testArray); [super dealloc]; } -(void) restart { [[self class] new]; // [win orderFront: nil]; } - (int) numberOfRowsInTableView: (NSTableView *)aTableView { return [keysArray count]; } - (id) tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row:(int)rowIndex { if (rowIndex < 0 || rowIndex >= (int)[keysArray count]) { NSLog (@"BUG: We were asked for rowIndex: %d", rowIndex); return nil; } if (aTableColumn == nil) { NSLog (@"BUG: We were asked with nil tableColumn"); return nil; } if ([(NSString *)[aTableColumn identifier] isEqual: @"key"]) return [keysArray objectAtIndex: rowIndex]; else if ([(NSString *)[aTableColumn identifier] isEqual: @"value"]) return [valuesArray objectAtIndex: rowIndex]; else if ([(NSString *)[aTableColumn identifier] isEqual: @"test"]) return [testArray objectAtIndex: rowIndex]; else return [testArray objectAtIndex: rowIndex]; } - (void) tableView: (NSTableView *)aTableView willDisplayCell: (id)aCell forTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { if (rowIndex == 9) [aCell setFont: [NSFont boldSystemFontOfSize: 0]]; else [aCell setFont: [NSFont systemFontOfSize: 0]]; } - (BOOL) tableView: (NSTableView *)aTableView writeRows: (NSArray *) rows toPasteboard: (NSPasteboard *) pboard { NSMutableArray *propertyList; unsigned int i; draggedRows = RETAIN(rows); propertyList = [[NSMutableArray alloc] initWithCapacity: [rows count]]; for (i = 0; i < [rows count]; i++) { NSMutableArray *line = [[NSMutableArray alloc] initWithCapacity: 3]; [line addObject: [self tableView: aTableView objectValueForTableColumn: [[aTableView tableColumns] objectAtIndex: 0] row: [[rows objectAtIndex: i] intValue]]]; [line addObject: [self tableView: aTableView objectValueForTableColumn: [[aTableView tableColumns] objectAtIndex: 1] row: [[rows objectAtIndex: i] intValue]]]; [line addObject: [self tableView: aTableView objectValueForTableColumn: [[aTableView tableColumns] objectAtIndex: 2] row: [[rows objectAtIndex: i] intValue]]]; [propertyList addObject: line]; RELEASE(line); } [pboard declareTypes: [NSArray arrayWithObject: NSTableViewTestPboardType] owner: self]; [pboard setPropertyList: propertyList forType: NSTableViewTestPboardType]; RELEASE(propertyList); return YES; } - (NSDragOperation) tableView: (NSTableView *) tv validateDrop: (id ) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation { if ([info draggingSourceOperationMask] & NSDragOperationGeneric) return NSDragOperationGeneric; else if ([info draggingSourceOperationMask] & NSDragOperationCopy) return NSDragOperationCopy; else return NSDragOperationNone; } - (BOOL) tableView: (NSTableView *)tv acceptDrop: (id ) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation) operation { NSDragOperation dragOperation; if ([info draggingSourceOperationMask] & NSDragOperationGeneric) dragOperation = NSDragOperationGeneric; else if ([info draggingSourceOperationMask] & NSDragOperationCopy) dragOperation = NSDragOperationCopy; else dragOperation = NSDragOperationNone; { NSInteger i, j; NSArray *pl = [[info draggingPasteboard] propertyListForType: NSTableViewTestPboardType]; NSUInteger count = [pl count]; for ( i = count - 1; i >= 0; i-- ) { [keysArray insertObject: [[pl objectAtIndex: i] objectAtIndex: 0] atIndex: row]; [valuesArray insertObject: [[pl objectAtIndex: i] objectAtIndex: 1] atIndex: row]; [testArray insertObject: [[pl objectAtIndex: i] objectAtIndex: 2] atIndex: row]; } if (dragOperation == NSDragOperationGeneric) { for ( i = count - 1; i >= 0; i-- ) { j = [[draggedRows objectAtIndex: i] intValue]; if (j >= row) { j += count; } [keysArray removeObjectAtIndex: j]; [valuesArray removeObjectAtIndex: j]; [testArray removeObjectAtIndex: j]; } } [tv reloadData]; } return YES; } @end gnustep-examples-1.4.0/gui/GSTest/NSTableView-test/.cvsignore0000664000175000017500000000005707235623633023047 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSTableView-test/GNUmakefile0000664000175000017500000000245110564603216023113 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSTableView-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSTableView-test_OBJC_FILES = NSTableView-test.m NSTableView-test_PRINCIPAL_CLASS = NSTableViewTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/GSHbox-test/0000775000175000017500000000000012204034630020035 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/GSHbox-test/.cvsignore0000664000175000017500000000005707022017047022044 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/GSHbox-test/GNUmakefile0000664000175000017500000000242110564603216022117 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = GSHbox-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest GSHbox-test_OBJC_FILES = GSHbox-test.m GSHbox-test_PRINCIPAL_CLASS = GSHboxTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/GSHbox-test/GSHbox-test.m0000664000175000017500000000653607722470343022352 0ustar fedorfedor/* GSHbox-test.m: GSHbox Class Demo/Test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" @interface GSHboxTest: NSObject { NSWindow *win; } -(void) restart; @end @implementation GSHboxTest: NSObject { } -(id) init { GSHbox* hbox; NSColorWell *wA; NSColorWell *wB; NSColorWell *wC; NSColorWell *wD; NSColorWell *wE; NSColorWell *wF; NSColorWell *wG; NSRect winFrame; wA = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [wA setAutoresizingMask: NSViewHeightSizable]; wB = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [wB setAutoresizingMask: NSViewMinYMargin | NSViewMaxYMargin | NSViewMinXMargin | NSViewMaxXMargin]; wC = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [wC setAutoresizingMask: NSViewMaxYMargin]; wD = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [wD setAutoresizingMask: NSViewMinYMargin]; wE = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 90, 90)]; [wE setAutoresizingMask: NSViewNotSizable]; wF = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [wF setAutoresizingMask: NSViewMinXMargin]; wG = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 50)]; [wG setAutoresizingMask: NSViewMinYMargin]; hbox = [GSHbox new]; [hbox setDefaultMinXMargin: 10]; [hbox addView: wA]; [wA release]; [hbox addView: wB]; [wB release]; [hbox addView: wC]; [wC release]; [hbox addView: wD]; [wD release]; [hbox addSeparator]; [hbox addView: wE]; [wE release]; [hbox addView: wF]; [wF release]; [hbox addView: wG enablingXResizing: NO]; [wG release]; [hbox setBorder: 10]; [hbox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; winFrame.size = [hbox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: hbox]; [hbox release]; [win setTitle: @"GSHbox Test"]; [self restart]; return self; } -(void) dealloc { [win release]; [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"GSHbox Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSSlider-test/0000775000175000017500000000000012204034630020366 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSSlider-test/.cvsignore0000664000175000017500000000005707020255104022371 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSSlider-test/GNUmakefile0000664000175000017500000000243310564603216022453 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSSlider-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSSlider-test_OBJC_FILES = NSSlider-test.m NSSlider-test_PRINCIPAL_CLASS = NSSliderTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSSlider-test/NSSlider-test.m0000664000175000017500000002150407722470343023224 0ustar fedorfedor/* NSSlider-test.m: NSSlider class demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include #include #include "../GSTestProtocol.h" @interface NSSliderTest: NSObject { NSWindow *win; NSSlider *hSlider; NSSlider *vSlider; NSTextField *hNumber; NSTextField *vNumber; } -(void) restart; -(void) hContinuousChanged: (id) sender; -(void) vContinuousChanged: (id) sender; @end @implementation NSSliderTest: NSObject { // for instance variables see above } -(id) init { NSBox *vSliderBox; NSBox *hSliderBox; GSVbox *vSliderVbox; GSVbox *hSliderVbox; GSTable *table; GSVbox *vboxOne; NSButton *hButton1; NSButton *hButton2; NSButton *vButton1; NSButton *vButton2; NSTextField *hLabel; NSTextField *vLabel; GSHbox *hLabelBox; GSHbox *vLabelBox; NSRect winFrame; // Vertical Slider Box vButton1 = [NSButton new]; [vButton1 setButtonType: NSSwitchButton]; [vButton1 setBordered: NO]; [vButton1 setTitle: @"Disabled"]; [vButton1 setAlternateTitle: @"Enabled"]; [vButton1 sizeToFit]; [vButton1 setTarget: self]; [vButton1 setAction: @selector (vEnabledChanged:)]; [vButton1 setState: YES]; [vButton1 setAutoresizingMask: NSViewMaxXMargin]; vButton2 = [NSButton new]; [vButton2 setButtonType: NSSwitchButton]; [vButton2 setBordered: NO]; [vButton2 setTitle: @"Not Continuous"]; [vButton2 setAlternateTitle: @"Continuous"]; [vButton2 sizeToFit]; [vButton2 setTarget: self]; [vButton2 setAction: @selector (vContinuousChanged:)]; [vButton2 setState: NO]; [vButton2 setAutoresizingMask: NSViewMaxXMargin]; vLabel = [NSTextField new]; [vLabel setSelectable: NO]; [vLabel setEnabled: NO]; [vLabel setBezeled: NO]; [vLabel setBordered: NO]; [vLabel setDrawsBackground: NO]; [vLabel setStringValue: @"Value: "]; [vLabel sizeToFit]; vNumber = [NSTextField new]; [vNumber setSelectable: NO]; [vNumber setEnabled: NO]; [vNumber setBezeled: NO]; [vNumber setBordered: NO]; [vNumber setDrawsBackground: NO]; [vNumber setFloatValue: 500.0]; [vNumber sizeToFit]; vLabelBox = [GSHbox new]; [vLabelBox addView: vLabel enablingXResizing: NO]; [vLabel release]; [vLabelBox addView: vNumber]; [vNumber release]; [vLabelBox setAutoresizingMask: NSViewMaxXMargin]; vSliderVbox = [GSVbox new]; [vSliderVbox setDefaultMinYMargin: 5]; [vSliderVbox addView: vButton1]; [vButton1 release]; [vSliderVbox addView: vButton2]; [vButton2 release]; [vSliderVbox addView: vLabelBox]; [vLabelBox release]; [vSliderVbox setAutoresizingMask: (NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin)]; vSliderBox = [NSBox new]; [vSliderBox setTitle: @"Vertical Slider"]; [vSliderBox setTitlePosition: NSAtTop]; [vSliderBox setBorderType: NSGrooveBorder]; [vSliderBox addSubview: vSliderVbox]; [vSliderVbox release]; [vSliderBox sizeToFit]; [vSliderBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; // Horizontal Slider Box hButton1 = [NSButton new]; [hButton1 setButtonType: NSSwitchButton]; [hButton1 setBordered: NO]; [hButton1 setTitle: @"Disabled"]; [hButton1 setAlternateTitle: @"Enabled"]; [hButton1 sizeToFit]; [hButton1 setTarget: self]; [hButton1 setAction: @selector (hEnabledChanged:)]; [hButton1 setState: YES]; [hButton1 setAutoresizingMask: NSViewMaxXMargin]; hButton2 = [NSButton new]; [hButton2 setButtonType: NSSwitchButton]; [hButton2 setBordered: NO]; [hButton2 setTitle: @"Not Continuous"]; [hButton2 setAlternateTitle: @"Continuous"]; [hButton2 sizeToFit]; [hButton2 setTarget: self]; [hButton2 setAction: @selector (hContinuousChanged:)]; [hButton2 setState: NO]; [hButton2 setAutoresizingMask: NSViewMaxXMargin]; hLabel = [NSTextField new]; [hLabel setSelectable: NO]; [hLabel setEnabled: NO]; [hLabel setBezeled: NO]; [hLabel setBordered: NO]; [hLabel setDrawsBackground: NO]; [hLabel setStringValue: @"Value: "]; [hLabel sizeToFit]; hNumber = [NSTextField new]; [hNumber setSelectable: NO]; [hNumber setEnabled: NO]; [hNumber setBordered: NO]; [hNumber setBezeled: NO]; [hNumber setDrawsBackground: NO]; [hNumber setFloatValue: 500.0]; [hNumber sizeToFit]; hLabelBox = [GSHbox new]; [hLabelBox addView: hLabel enablingXResizing: NO]; [hLabel release]; [hLabelBox addView: hNumber]; [hNumber release]; [hLabelBox setAutoresizingMask: NSViewMaxXMargin]; hSliderVbox = [GSVbox new]; [hSliderVbox setDefaultMinYMargin: 5]; [hSliderVbox addView: hButton1]; [hButton1 release]; [hSliderVbox addView: hButton2]; [hButton2 release]; [hSliderVbox addView: hLabelBox]; [hLabelBox release]; [hSliderVbox setAutoresizingMask: (NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin)]; hSliderBox = [NSBox new]; [hSliderBox setTitle: @"Horizontal Slider"]; [hSliderBox setTitlePosition: NSAtTop]; [hSliderBox setBorderType: NSGrooveBorder]; [hSliderBox addSubview: hSliderVbox]; [hSliderVbox release]; [hSliderBox sizeToFit]; [hSliderBox setAutoresizingMask: (NSViewHeightSizable | NSViewWidthSizable)]; vboxOne = [GSVbox new]; [vboxOne setDefaultMinYMargin: 10]; [vboxOne addView: hSliderBox]; [hSliderBox release]; [vboxOne addView: vSliderBox]; [vSliderBox release]; [vboxOne setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; // The sliders themselves hSlider = [[NSSlider alloc] initWithFrame: NSMakeRect (0, 0, 200, 14)]; // [hSlider setFrame: NSMakeRect (0, 0, 200, [hSlider knobThickness])]; [hSlider setAutoresizingMask: (NSViewWidthSizable)]; [hSlider setTitle: @"Slider Title"]; [hSlider setMinValue: 0]; [hSlider setMaxValue: 1000]; [hSlider setFloatValue: 500]; [hSlider setAction: @selector (takeFloatValueFrom:)]; [hSlider setTarget: hNumber]; [hSlider setContinuous: NO]; vSlider = [[NSSlider alloc] initWithFrame: NSMakeRect (0, 0, 14, 200)]; // [vSlider setFrame: NSMakeRect (0, 0, [vSlider knobThickness], 200)]; [vSlider setAutoresizingMask: (NSViewHeightSizable)]; // [vSlider setTitle: @"Number"]; [vSlider setMinValue: 0]; [vSlider setMaxValue: 1000]; [vSlider setFloatValue: 500]; [vSlider setAction: @selector (takeFloatValueFrom:)]; [vSlider setTarget: vNumber]; [vSlider setContinuous: NO]; table = [GSTable new]; [table putView: vSlider atRow: 1 column:0 withMinXMargin: 10 maxXMargin: 5 minYMargin: 5 maxYMargin: 10]; [table putView: vboxOne atRow: 1 column: 1 withMinXMargin: 5 maxXMargin: 10 minYMargin: 5 maxYMargin: 10]; [table putView: hSlider atRow: 0 column: 1 withMinXMargin: 5 maxXMargin: 10 minYMargin: 10 maxYMargin: 5]; [table setYResizingEnabled: NO forRow: 0]; [table setXResizingEnabled: NO forColumn: 0]; [table setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [table frame].size; winFrame.origin = NSMakePoint (150, 150); // The Window win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [win setTitle: @"NSSlider Test"]; [win setReleasedWhenClosed: NO]; [win setContentView: table]; [win setMinSize: [NSWindow frameRectForContentRect: winFrame styleMask: [win styleMask]].size]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSSlider Test" filename: NO]; } -(void) hContinuousChanged: (id) sender { [hSlider setContinuous: [sender state]]; } -(void) vContinuousChanged: (id) sender { [vSlider setContinuous: [sender state]]; } -(void) hEnabledChanged: (id) sender { [hSlider setEnabled: [sender state]]; } -(void) vEnabledChanged: (id) sender { [vSlider setEnabled: [sender state]]; } @end gnustep-examples-1.4.0/gui/GSTest/NSSecureTextField-test/0000775000175000017500000000000012204034630022203 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSSecureTextField-test/NSSecureTextField-test.m0000664000175000017500000000627207722470343026663 0ustar fedorfedor/* NSSecureTextField-test.m: NSSecureTextField Class Demo/Test Copyright (C) 2001 Free Software Foundation, Inc. Author: Nicola Pero Date: 2001 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" @interface NSSecureTextFieldTest: NSObject { NSWindow *win; } - (void) restart; @end @implementation NSSecureTextFieldTest: NSObject { // for instance variables see above } -(id) init { GSVbox *vbox; NSBox *box; NSRect winFrame; NSSecureTextField *sview; NSTextField *view; vbox = [GSVbox new]; [vbox setBorder: 5]; sview = [NSSecureTextField new]; [sview setEditable: YES]; [sview setBezeled: YES]; [sview setStringValue: @"A very long password inserted here"]; [sview sizeToFit]; [sview setStringValue: @""]; [sview setAutoresizingMask: NSViewWidthSizable]; box = [NSBox new]; [box setTitle: @"Insert Password"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: sview]; [sview release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable]; [vbox addView: box]; view = [NSTextField new]; [view setEditable: YES]; [view setBezeled: YES]; [view setStringValue: @"A very long login inserted here"]; [view sizeToFit]; [view setStringValue: @""]; [view setAutoresizingMask: NSViewWidthSizable]; [view setNextKeyView: sview]; [sview setNextKeyView: view]; box = [NSBox new]; [box setTitle: @"Insert Login"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: view]; [view release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable]; [vbox addView: box]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [vbox release]; [win setTitle: @"NSSecureTextField Test"]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSSecureTextFieldTest" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSSecureTextField-test/.cvsignore0000664000175000017500000000005707240606066024221 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSSecureTextField-test/GNUmakefile0000664000175000017500000000250710564603216024272 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSSecureTextField-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSSecureTextField-test_OBJC_FILES = NSSecureTextField-test.m NSSecureTextField-test_PRINCIPAL_CLASS = NSSecureTextFieldTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/GNUmakefile0000664000175000017500000000406111657311442020013 0ustar fedorfedor# GNUmakefile: main makefile for GNUstep GUI Demo Suite # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # Each test is a bundle subproject, in its own dir # SUBPROJECTS = \ Composite-test \ CoordinateCheck-test \ GSHbox-test \ KeyboardInput-test \ NSAnimation-test \ NSBox-test \ NSButton-test \ NSColorList-test \ NSColorWell-test \ NSForm-test \ NSOpenPanel-test \ NSSavePanel-test \ NSScrollView-test \ NSSecureTextField-test \ NSSlider-test \ NSSplitView-test \ NSTableView-test \ NSTextView-test \ StringDrawing-test \ NSViewAnimation-test \ NSWindowStyleMask-test \ NSOutlineView-test \ NSProgressIndicator-test \ PixelExactDrawing-test \ ImageSelection-test \ Image-test \ Transparency-test \ TextSystem-test \ NSWindow-test # # MAIN APP # APP_NAME = GSTest GSTest_MAIN_MODEL_FILE = MainMenu.nib GSTest_HEADERS = \ GSTestProtocol.h GSTest_OBJC_FILES = \ main.m \ Controller.m GSTest_RESOURCE_FILES = MainMenu.gorm -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/application.make include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/infoPanel.h0000664000175000017500000000225207043173366020032 0ustar fedorfedor/* infoPanel.h Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 INFO_PANEL_H #define INFO_PANEL_H /* * * This class is unused at the moment; for the InfoPanel * we are using the standardInfoPanel provided by NSApplication * */ #include #include @interface infoPanel: NSPanel { } -(id) init; @end #endif // INFO_PANEL_H gnustep-examples-1.4.0/gui/GSTest/CoordinateCheck-test/0000775000175000017500000000000012204034630021730 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/CoordinateCheck-test/.cvsignore0000664000175000017500000000005707235623633023751 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/CoordinateCheck-test/GNUmakefile0000664000175000017500000000247510564603216024023 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = CoordinateCheck-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest CoordinateCheck-test_OBJC_FILES = CoordinateCheck-test.m CoordinateCheck-test_PRINCIPAL_CLASS = CoordinateCheckTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/CoordinateCheck-test/CoordinateCheck-test.m0000664000175000017500000001713412144707254026132 0ustar fedorfedor/* CoordinateCheck-test.m: checking coordinate sanity in other windows Copyright (C) 2001 Free Software Foundation, Inc. Author: Nicola Pero Date: 2001 This file is part of GNUstep. 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 #include #include #include #include "../GSTestProtocol.h" /* The checking categories */ @interface NSView (CheckCoordinates) - (NSString *) checkCoordinates; @end @implementation NSView (CheckCoordinates) - (NSString *) checkCoordinates { NSRect rect1, rect2; rect1 = [self convertRect: _bounds toView: nil]; rect2 = [[self superview] convertRect: _frame toView: nil]; if (NSEqualRects (rect1, rect2) != YES) { NSMutableString *string; string = AUTORELEASE ([NSMutableString new]); [string appendFormat: @"%@: INVALID - \n", self]; [string appendFormat: @" bounds in window space are: `%@'\n", NSStringFromRect (rect1)]; [string appendFormat: @" frame in window space is: `%@'\n", NSStringFromRect (rect2)]; return string; } else { return [NSString stringWithFormat: @"%@: Ok\n", self]; } } - (NSString *) recursivelyCheckCoordinates { int i, count; NSMutableString *string; string = AUTORELEASE ([NSMutableString new]); [string appendString: [self checkCoordinates]]; count = [[self subviews] count]; for (i = 0; i < count; i++) { NSView *v; v = [[self subviews] objectAtIndex: i]; [string appendString: [v recursivelyCheckCoordinates]]; } return string; } @end @implementation NSWindow (CheckCoordinates) - (NSString *) checkCoordinates { return [[self contentView] recursivelyCheckCoordinates]; } @end @interface NSWindow (CheckCoordinates) - (NSString *) checkCoordinates; @end /* Now the test itself */ @interface CoordinateCheckTest: NSObject { NSTextField *windowName; NSTextView *text; NSWindow *win; NSWindow *winToCheck; } -(void) restart; -(void) check: (id)sender; -(void) choose: (id)sender; -(void) reset: (id)sender; @end @implementation CoordinateCheckTest: NSObject { // for instance variables see above } -(id) init { GSHbox *hbox; GSVbox *vbox; NSButton *button; NSScrollView *scrollView; NSRect winFrame; vbox = [GSVbox new]; [vbox setDefaultMinYMargin: 5]; [vbox setBorder: 5]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 300, 300)]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; text = [[NSText alloc] initWithFrame: [[scrollView contentView] frame]]; [text setEditable: NO]; [text setRichText: YES]; [text setDelegate: self]; [text setHorizontallyResizable: NO]; [text setVerticallyResizable: YES]; [text setMinSize: NSMakeSize (0, 0)]; [text setMaxSize: NSMakeSize (1E7, 1E7)]; [text setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; [[text textContainer] setContainerSize: NSMakeSize ([text frame].size.width, 1e7)]; [[text textContainer] setWidthTracksTextView: YES]; [scrollView setDocumentView: text]; RELEASE(text); [vbox addView: scrollView]; RELEASE (scrollView); windowName = [NSTextField new]; [windowName setEditable: NO]; [windowName setSelectable: NO]; [windowName setBezeled: NO]; [windowName setDrawsBackground: NO]; [windowName setAutoresizingMask: NSViewMaxXMargin]; [windowName setStringValue: @"Window Title: (null)"]; [windowName sizeToFit]; [vbox addView: windowName enablingYResizing: NO]; RELEASE (windowName); [vbox addSeparator]; hbox = [GSHbox new]; [hbox setDefaultMinXMargin: 5]; [hbox setBorder: 0]; button = [NSButton new]; [button setFrame: NSMakeRect (0, 0, 64, 64)]; [button setTitle: @"Choose\nWindow"]; [button setAutoresizingMask: NSViewMaxXMargin]; [button setTarget: self]; [button setAction: @selector (choose:)]; [hbox addView: button]; RELEASE (button); button = [NSButton new]; [button setFrame: NSMakeRect (0, 0, 64, 64)]; [button setTitle: @"Check\nWindow"]; [button setAutoresizingMask: NSViewMaxXMargin]; [button setTarget: self]; [button setAction: @selector (check:)]; [hbox addView: button]; RELEASE (button); button = [NSButton new]; [button setFrame: NSMakeRect (0, 0, 64, 64)]; [button setTitle: @"Reset"]; [button setAutoresizingMask: NSViewMaxXMargin]; [button setTarget: self]; [button setAction: @selector (reset:)]; [hbox addView: button]; RELEASE (button); [hbox setAutoresizingMask: NSViewNotSizable]; [vbox addView: hbox enablingYResizing: NO]; RELEASE (hbox); [vbox setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [win setMinSize: [win frame].size]; RELEASE (vbox); [win setTitle: @"Coordinate Check Test"]; [text setString: @"To select the window to check -\npress `Choose Window' and then click\ninside the window you want to choose\n"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"Coordinate Check Test" filename: NO]; } - (void) dealloc { RELEASE (win); RELEASE (winToCheck); [super dealloc]; } - (void) choose: (id)sender { NSEvent *event; event = [NSApp nextEventMatchingMask: NSLeftMouseDownMask untilDate: nil inMode: NSEventTrackingRunLoopMode dequeue: YES]; ASSIGN (winToCheck, [event window]); [windowName setStringValue: [NSString stringWithFormat: @"Window Title: %@", [winToCheck title]]]; [windowName sizeToFit]; } - (void) check: (id)sender { if (winToCheck == nil) { [text replaceCharactersInRange: NSMakeRange ([[text textStorage] length], 0) withString: @"Please select a window first -\nby pressing `Choose Window'\nand then clicking inside the window\nyou want to select\n"]; } else { NSString *newCheck = [winToCheck checkCoordinates]; [text replaceCharactersInRange: NSMakeRange ([[text textStorage] length], 0) withString: [NSString stringWithFormat: @" - %@ -\n", [winToCheck title]]]; [text replaceCharactersInRange: NSMakeRange ([[text textStorage] length], 0) withString: newCheck]; [text replaceCharactersInRange: NSMakeRange ([[text textStorage] length], 0) withString: [NSString stringWithFormat: @"\n", [winToCheck title]]]; } } - (void) reset: (id)sender { [text setString: @""]; } @end gnustep-examples-1.4.0/gui/GSTest/NSOutlineView-test/0000775000175000017500000000000012204034627021424 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSOutlineView-test/GNUmakefile0000664000175000017500000000246610564603216023511 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall -g # # We are creating a bundle # BUNDLE_NAME = NSOutlineView-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSOutlineView-test_OBJC_FILES = NSOutlineView-test.m NSOutlineView-test_PRINCIPAL_CLASS = NSOutlineViewTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSOutlineView-test/NSOutlineView-test.m0000664000175000017500000002520112144673072025300 0ustar fedorfedor/* NSOutlineView-test.m: NSOutlineView Class Demo/Test Copyright (C) 1999 Free Software Foundation, Inc. Author: Gregory John Casamento Date: Feb 2002 Based on Nicola's test for NSTableView... This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" // Something to show in the table static NSString *keys[20] = { @"NSObject", @"NSApplication", @"NSResponder", @"NSWindow", @"NSPanel" }; static NSString *values[20] = { @"Nicola Pero ", @"Nicola Pero ", @"richard@brainstorm.co.uk", @"ettore@helixcode.com", @"greg_casamento@yahoo.com" }; static NSString *test[20] = { @"Other info (1)", @"Other info (2)", @"Other info (3)", @"Other info (4)", @"Other info (5)" }; // @interface NSOutlineViewTest: NSObject { NSWindow *win; } -(void) restart; @end @implementation NSOutlineViewTest: NSObject -(id) init { NSBox *externalBox; NSOutlineView *outlineView; NSRect winFrame; NSTableColumn *keyColumn; NSTableColumn *valueColumn; NSTableColumn *testColumn; NSTableColumn *tb; NSScrollView *scrollView; int i; NSString *string; keyColumn = [[NSTableColumn alloc] initWithIdentifier: @"classes"]; AUTORELEASE (keyColumn); [keyColumn setEditable: NO]; [[keyColumn headerCell] setStringValue: @"classes"]; [keyColumn setMinWidth: 100]; valueColumn = [[NSTableColumn alloc] initWithIdentifier: @"outlets"]; AUTORELEASE (valueColumn); [valueColumn setEditable: NO]; [[valueColumn headerCell] setStringValue: @"outlets"]; [valueColumn setMinWidth: 100]; testColumn = [[NSTableColumn alloc] initWithIdentifier: @"actions"]; AUTORELEASE (testColumn); [testColumn setEditable: NO]; [[testColumn headerCell] setStringValue: @"actions"]; [testColumn setMinWidth: 100]; outlineView = [[NSOutlineView alloc] initWithFrame: NSMakeRect (0, 0, 300, 300)]; [outlineView addTableColumn: keyColumn]; [outlineView addTableColumn: valueColumn]; [outlineView addTableColumn: testColumn]; [outlineView setOutlineTableColumn: keyColumn]; [outlineView setDrawsGrid: NO]; [outlineView setIndentationPerLevel: 10]; [outlineView setAllowsColumnReordering: NO]; [outlineView setAutoresizesOutlineColumn: YES]; [outlineView setIndentationMarkerFollowsCell: YES]; /* Now add some more columns */ for (i = 0; i < 5; i++) { string = [NSString stringWithFormat: @"Column %d", i]; tb = AUTORELEASE ([[NSTableColumn alloc] initWithIdentifier: string]); [tb setEditable: NO]; [[tb headerCell] setStringValue: string]; [outlineView addTableColumn: tb]; } [outlineView setDataSource: self]; [outlineView setDelegate: self]; [outlineView registerForDraggedTypes: [NSArray arrayWithObject: NSStringPboardType]]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 300, 200)]; [scrollView setDocumentView: outlineView]; RELEASE (outlineView); [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [outlineView sizeToFit]; externalBox = [NSBox new]; [externalBox setTitlePosition: NSNoTitle]; [externalBox setBorderType: NSNoBorder]; [externalBox addSubview: scrollView]; RELEASE (scrollView); [externalBox sizeToFit]; [externalBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [externalBox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: externalBox]; RELEASE (externalBox); [win setTitle: @"NSOutlineView Test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSOutlineView Test" filename: NO]; } // required methods for data source - (id)outlineView: (NSOutlineView *)outlineView child: (NSInteger)index ofItem: (id)item { //NSLog(@"child: %"PRIiPTR" ofItem: %@", index, item); if ([item isEqual: @"NSObject"]) { switch(index) { case 0: return @"NSApplication"; case 1: return @"NSPanel"; case 2: return @"NSWindow"; case 3: return @"NSOutlineView"; case 4: return @"City"; default: break; } } else if ([item isEqual: @"NSPanel"]) { switch (index) { case 0: return @"class1"; case 1: return @"class2"; case 2: return @"class3"; case 3: return @"class4"; case 4: return @"Color"; default: break; } } else if ([item isEqual: @"Color"]) { return @"blue"; } else if (item == nil && index == 0) { return @"NSObject"; } return nil; } - (BOOL)outlineView: (NSOutlineView *)outlineView isItemExpandable: (id)item { //NSLog(@"isItemExpandable:...."); if ([item isEqual: @"NSObject"] || [item isEqual: @"NSPanel"] || [item isEqual: @"City"] || [item isEqual: @"Color"]) { return YES; } return NO; } - (NSInteger) outlineView: (NSOutlineView *)outlineView numberOfChildrenOfItem: (id)item { //NSLog(@"numberOfChildren:...."); if (item == nil) { return 1; } else if ([item isEqual: @"NSObject"]) { return 5; } else if ([item isEqual: @"NSPanel"]) { return 5; } else if ([item isEqual: @"City"]) { return 0; } else if ([item isEqual: @"Color"]) { return 1; } return 0; } - (id) outlineView: (NSOutlineView *)outlineView objectValueForTableColumn: (NSTableColumn *)tableColumn byItem: (id)item { NSString *value = nil; //NSLog(@"item = %@", item); if ([item isEqual: @"NSObject"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = @"NSObject"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"outlets"]) { value = @"1"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"actions"]) { value = @"2"; } } else if ([item isEqual: @"NSApplication"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = @"NSApplication"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"outlets"]) { value = @"2"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"actions"]) { value = @"3"; } } else if ([item isEqual: @"NSPanel"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = @"NSPanel"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"outlets"]) { value = @"2"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"actions"]) { value = @"3"; } } else if ([item isEqual: @"NSWindow"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = @"NSWindow"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"outlets"]) { value = @"3"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"actions"]) { value = @"5"; } } else if ([item isEqual: @"NSOutlineView"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = @"NSOutlineView"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"outlets"]) { value = @"4"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"actions"]) { value = @"6"; } } else if ([item isEqual: @"class1"] || [item isEqual: @"class2"] || [item isEqual: @"class3"] || [item isEqual: @"class4"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = item; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"outlets"]) { value = @"2"; } else if ([[[tableColumn headerCell] stringValue] isEqual: @"actions"]) { value = @"3"; } } else if ([item isEqual: @"Color"] || [item isEqual: @"blue"] || [item isEqual: @"City"]) { if ([[[tableColumn headerCell] stringValue] isEqual: @"classes"]) { value = item; } } return value; } // delegate methods - (void) outlineView: (NSOutlineView *)aTableView willDisplayCell: (id)aCell forTableColumn: (NSTableColumn *)aTableColumn item: (id)item { //NSLog(@"outlineView:willDisplayCell:forTableColumn:item:"); } - (BOOL) outlineView: (NSOutlineView *)anOutlineView shouldSelectItem: (id)item { NSLog(@"should select item...."); return YES; } - (BOOL) outlineView: (NSTableView *)aTableView writeItems: (NSArray *) items toPasteboard: (NSPasteboard *) pboard { NSLog(@"%@", items); [pboard declareTypes: [NSArray arrayWithObject: NSStringPboardType] owner: self]; [pboard setPropertyList: @"1" forType: NSStringPboardType]; return YES; } - (NSDragOperation) outlineView: (NSOutlineView *) ov validateDrop: (id ) info proposedItem: (id) item proposedChildIndex: (NSInteger) childIndex { NSLog(@"Validate drop %@ at %"PRIiPTR"", item, childIndex); /*if (item == nil) [ov setDropItem: @"NSObject" dropChildIndex: NSOutlineViewDropOnItemIndex]; else [ov setDropItem: item dropChildIndex: NSOutlineViewDropOnItemIndex];*/ return NSDragOperationCopy; } /* - (BOOL) tableView: (NSTableView *)tv acceptDrop: (id ) info row: (int) row operation: (NSTableViewDropOperation) operation { if (row % 2 == 0) { NSLog(@"acceptingRow"); return YES; } else { NSLog(@"refusingRow"); return NO; } } */ @end gnustep-examples-1.4.0/gui/GSTest/Composite-test/0000775000175000017500000000000012204034630020645 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/Composite-test/MyView.h0000664000175000017500000000177607062620374022265 0ustar fedorfedor/* MyView - Custom view. Copyright (C) 2000 Free Software Foundation, Inc. Author: Adam Fedor Date: Feb 2000 This file is part of GNUstep. 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 MyView_h_INCLUDE #define MyView_h_INCLUDE #include @interface MyView : NSView { NSImage *comp; } @end #endif gnustep-examples-1.4.0/gui/GSTest/Composite-test/MyView.m0000664000175000017500000000326207710503554022262 0ustar fedorfedor/* MyView - Custom view. Copyright (C) 2000 Free Software Foundation, Inc. Author: Adam Fedor Date: Feb 2000 This file is part of GNUstep. 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 "MyView.h" @implementation MyView -(void) dealloc { RELEASE(comp); [super dealloc]; } - (NSImage *) compositeImage { NSRect frame; if (comp) return comp; frame = NSMakeRect(0, 0, 100, 100); comp = [[NSImage alloc] initWithSize: frame.size]; [comp lockFocus]; [[NSColor clearColor] set]; NSRectFill (frame); PSsetlinewidth(4); PSsetrgbcolor(0.6, 0.3, 0); PSsetalpha(1); PSmoveto(10, 10); PSlineto(90, 90); PSstroke(); PSsetrgbcolor(0.0, 0.3, 0.8); PSsetalpha(0.5); PSrectfill(30, 40, 23, 24); [comp unlockFocus]; return comp; } - (void) drawRect: (NSRect)rect { NSPoint origin; origin = NSMakePoint (50, 50); PSsetrgbcolor(0, 0.5, 0.6); NSRectFill(rect); [[self compositeImage] compositeToPoint: origin operation: NSCompositeSourceOver]; } @end gnustep-examples-1.4.0/gui/GSTest/Composite-test/Composite-test.m0000664000175000017500000000647707075402053023770 0ustar fedorfedor/* Composite-test.m: Composite Demo/Test Copyright (C) 2000 Free Software Foundation, Inc. Author: Adam Fedor Date: Feb 2000 This file is part of GNUstep. 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 #include #include "../GSTestProtocol.h" #include "MyView.h" @interface Composite: NSObject { NSWindow *win; } -(void) restart; @end @implementation Composite : NSObject { // for instance variables see above } -(id) init { NSBox *externalBox; NSBox *borderBox; NSBox *box; NSScrollView *scrollView; MyView *view; NSRect winFrame; view = [[MyView alloc] initWithFrame: NSMakeRect(0, 0, 400, 300)]; [view setAutoresizingMask: NSViewNotSizable]; box = [NSBox new]; [box setTitle: @"DocumentView"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: view]; [view release]; [box sizeToFit]; [box setAutoresizingMask: NSViewNotSizable]; borderBox = [NSBox new]; [borderBox setTitlePosition: NSNoTitle]; [borderBox setBorderType: NSNoBorder]; [borderBox addSubview: box]; [box release]; [borderBox sizeToFit]; [borderBox setAutoresizingMask: NSViewNotSizable]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 200, 200)]; [scrollView setDocumentView: borderBox]; [borderBox release]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; // TODO: Substitute the following with a Hbox with commands etc. externalBox = [NSBox new]; [externalBox setTitlePosition: NSNoTitle]; [externalBox setBorderType: NSNoBorder]; [externalBox addSubview: scrollView]; [scrollView release]; [externalBox sizeToFit]; [externalBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [externalBox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: externalBox]; [externalBox release]; [win setTitle: @"Composite Test"]; [self restart]; return self; } -(void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"Composite Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/Composite-test/.cvsignore0000664000175000017500000000005707235623633022666 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/Composite-test/GNUmakefile0000664000175000017500000000244410564603216022734 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = Composite-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest Composite-test_OBJC_FILES = Composite-test.m MyView.m Composite-test_PRINCIPAL_CLASS = Composite -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSProgressIndicator-test/0000775000175000017500000000000012204034630022605 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSProgressIndicator-test/NSProgressIndicator-test.m0000664000175000017500000000633711405711371027661 0ustar fedorfedor/* NSProgressIndicator-test.m: NSProgressIndicator Class Demo/Test Copyright (C) 2010 Free Software Foundation, Inc. Author: Riccardo Mottola Date: 2010 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" @interface NSProgressIndicatorTest: NSObject { NSWindow *win; NSProgressIndicator *pi1; } -(void) restart; @end @implementation NSProgressIndicatorTest: NSObject -(id) init { GSVbox *vbox; NSBox *box; NSRect winFrame; NSProgressIndicator *pi2; vbox = [GSVbox new]; [vbox setBorder: 5]; // pi1 = [NSProgressIndicator new]; pi1 = [[NSProgressIndicator alloc] initWithFrame: NSMakeRect (0, 0, 120, 20)]; [pi1 setIndeterminate: YES]; [pi1 setBezeled: YES]; [pi1 setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [pi1 sizeToFit]; box = [NSBox new]; [box setTitle: @"Indeterminate progress"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: pi1]; [pi1 release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: box]; pi2 = [[NSProgressIndicator alloc] initWithFrame: NSMakeRect (0, 0, 120, 20)]; [pi2 setIndeterminate: NO]; [pi2 setMinValue: 0]; [pi2 setMaxValue: 1]; [pi2 setBezeled: YES]; [pi2 setDoubleValue: 0.5]; [pi2 sizeToFit]; [pi2 setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; box = [NSBox new]; [box setTitle: @"Determinate"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: pi2]; [pi2 release]; [box sizeToFit]; [box setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [vbox addView: box]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 200); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [vbox release]; [win setTitle: @"NSProgressIndicator Test"]; [self restart]; return self; } -(void) dealloc { RELEASE (win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSProgressIndicator Test" filename: NO]; [pi1 startAnimation: self]; } @end gnustep-examples-1.4.0/gui/GSTest/NSProgressIndicator-test/GNUmakefile0000664000175000017500000000252111405711371024665 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSProgressIndicator-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSProgressIndicator-test_OBJC_FILES = NSProgressIndicator-test.m NSProgressIndicator-test_PRINCIPAL_CLASS = NSProgressIndicatorTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSViewAnimation-test/0000775000175000017500000000000012204034627021724 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSViewAnimation-test/NSViewAnimation-test.m0000664000175000017500000000622410607463037026104 0ustar fedorfedor/* NSViewAnimation-test.m: NSViewAnimation Demo/Test * * Copyright (C) 2000 Free Software Foundation, Inc. * * Created : 2007-03-Mar * Author : Xavier Glattard (xgl) * * This file is part of GNUstep. * * 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 #include #include "../GSTestProtocol.h" //#define ANIMATION_MODE NSAnimationNonblocking //#define ANIMATION_MODE NSAnimationBlocking #define ANIMATION_MODE NSAnimationNonblockingThreaded @interface NSViewAnimationTest: NSObject { NSWindow* win[3]; NSArray* animations; NSViewAnimation* viewAnimation; } -(void) restart; @end @implementation NSViewAnimationTest -(id) init { unsigned i; for(i=0;i<3;i++) win[i] = [[NSWindow alloc] initWithContentRect: NSMakeRect(100+i*15,200+i*15,400,400) styleMask: NSBorderlessWindowMask | NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask backing: NSBackingStoreRetained defer: YES ]; animations = [[NSArray alloc] initWithObjects: [NSDictionary dictionaryWithObjectsAndKeys: win[0], NSViewAnimationTargetKey, [NSValue valueWithRect: NSMakeRect( 50,50,50,100 )], NSViewAnimationEndFrameKey, nil], [NSDictionary dictionaryWithObjectsAndKeys: win[1], NSViewAnimationTargetKey, [NSValue valueWithRect: NSMakeRect( 110,50,120,120 )], NSViewAnimationEndFrameKey, nil], [NSDictionary dictionaryWithObjectsAndKeys: win[2], NSViewAnimationTargetKey, [NSValue valueWithRect: NSMakeRect( 50,180,150,180 )], NSViewAnimationEndFrameKey, nil], nil]; viewAnimation = [[NSViewAnimation alloc] initWithViewAnimations: animations]; [viewAnimation setAnimationBlockingMode: ANIMATION_MODE]; [self restart]; return self; } -(void) dealloc { unsigned i; for(i=0;i<3;i++) RELEASE(win[i]); RELEASE(animations); RELEASE(viewAnimation); [super dealloc]; } -(void) restart { unsigned i; for(i=0;i<3;i++) { [win[i] setFrame: NSMakeRect(100+i*15,200+i*15,400,400) display:YES]; [win[i] orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win[i] title: @"NSViewAnimation Test" filename: NO]; } [NSTimer scheduledTimerWithTimeInterval: 1.5 target: self selector: @selector(animate) userInfo: nil repeats: NO]; } - (void) animate { [viewAnimation startAnimation]; } @end gnustep-examples-1.4.0/gui/GSTest/NSViewAnimation-test/GNUmakefile0000664000175000017500000000251410620632134023775 0ustar fedorfedor# GNUmakefile: makefile for NSViewAnimation-test # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Xavier Glattard # Date: 2007 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall BUNDLE_NAME = NSViewAnimation-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSViewAnimation-test_OBJC_FILES = NSViewAnimation-test.m NSViewAnimation-test_PRINCIPAL_CLASS = NSViewAnimationTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSColorWell-test/0000775000175000017500000000000012204034627021054 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSColorWell-test/.cvsignore0000664000175000017500000000005707020255104023051 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSColorWell-test/GNUmakefile0000664000175000017500000000245010564603216023132 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSColorWell-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSColorWell-test_OBJC_FILES = NSColorWell-test.m NSColorWell-test_PRINCIPAL_CLASS = NSColorWellTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/NSColorWell-test/NSColorWell-test.m0000664000175000017500000000547007722470343024370 0ustar fedorfedor/* NSColorWell-test.m: NSColorWell class demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" @interface NSColorWellTest: NSObject { NSWindow *win; } -(void) restart; @end @implementation NSColorWellTest: NSObject { // for instance variables see above } -(id) init { GSHbox *hbox; NSTextField *label; NSRect winFrame; NSColorWell *well; label =[NSTextField new]; [label setEditable: NO]; [label setSelectable: NO]; [label setBezeled: NO]; [label setBordered: NO]; [label setDrawsBackground: NO]; [label setStringValue:@"Choose a color:"]; [label sizeToFit]; [label setAutoresizingMask: NSViewMinYMargin | NSViewMaxYMargin]; well = [[NSColorWell alloc] initWithFrame: NSMakeRect (0, 0, 50, 40)]; [well setAutoresizingMask: (NSViewMaxXMargin | NSViewMinYMargin | NSViewMaxYMargin)]; hbox = [GSHbox new]; [hbox setDefaultMinXMargin: 10]; [hbox setBorder: 5]; [hbox addView: label enablingXResizing: NO]; [label release]; [hbox addView: well]; [well release]; [hbox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; winFrame.size = [hbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [win setTitle: @"NSColorWell Test"]; [win setReleasedWhenClosed: NO]; [win setContentView: hbox]; [hbox release]; [win setMinSize: [NSWindow frameRectForContentRect: winFrame styleMask: [win styleMask]].size]; [self restart]; return self; } - (void) dealloc { RELEASE(win); [super dealloc]; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSColorWell Test" filename: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/NSBox-test/0000775000175000017500000000000012204034630017674 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSBox-test/.cvsignore0000664000175000017500000000005707020255104021677 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/NSBox-test/NSBox-test.m0000664000175000017500000001701507722470343022042 0ustar fedorfedor/* NSBox-test.m: NSBox class demo/test Copyright (C) 1999 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" @interface NSBoxTest: NSObject { NSWindow *win; NSBox *box; } -(void) restart; -(void) setNSNoBorder: (id)sender; -(void) setNSLineBorder: (id)sender; -(void) setNSBezelBorder: (id)sender; -(void) setNSGrooveBorder: (id)sender; -(void) setNSNoTitle: (id)sender; -(void) setNSAboveTop: (id)sender; -(void) setNSAtTop: (id)sender; -(void) setNSBelowTop: (id)sender; -(void) setNSAboveBottom: (id)sender; -(void) setNSAtBottom: (id)sender; -(void) setNSBelowBottom: (id)sender; @end @implementation NSBoxTest: NSObject { // for instance variables see above } -(id) init { GSHbox *hbox; NSMatrix *borderMatrix; NSMatrix *titleMatrix; NSButtonCell *cell; NSTextField *boxContents; NSRect winFrame; NSBox *tmp_box; boxContents = [NSTextField new]; [boxContents setDrawsBackground: YES]; [boxContents setBackgroundColor: [NSColor redColor]]; [boxContents setEditable: NO]; [boxContents setSelectable: NO]; [boxContents setBezeled: NO]; [boxContents setBordered: YES]; [boxContents setAlignment: NSCenterTextAlignment]; [boxContents setStringValue: @"Box Contents"]; [boxContents setFrameSize: NSMakeSize (140, 140)]; [boxContents setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; box = [NSBox new]; [box setTitle: @"Box Title"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: boxContents]; [boxContents release]; [box sizeToFit]; [box setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; cell = [[NSButtonCell alloc] init]; [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; borderMatrix = [[NSMatrix alloc] initWithFrame: NSZeroRect mode: NSRadioModeMatrix prototype: cell numberOfRows: 4 numberOfColumns: 1]; titleMatrix = [[NSMatrix alloc] initWithFrame: NSZeroRect mode: NSRadioModeMatrix prototype: cell numberOfRows: 7 numberOfColumns: 1]; [cell release]; [borderMatrix setIntercellSpacing: NSMakeSize (0, 4) ]; [borderMatrix setTarget: self]; [borderMatrix setAutosizesCells: NO]; cell = [borderMatrix cellAtRow: 0 column: 0]; [cell setTitle: @"NSNoBorder"]; [cell setAction: @selector (setNSNoBorder:)]; cell = [borderMatrix cellAtRow: 1 column: 0]; [cell setTitle: @"NSLineBorder"]; [cell setAction: @selector (setNSLineBorder:)]; cell = [borderMatrix cellAtRow: 2 column: 0]; [cell setTitle: @"NSBezelBorder"]; [cell setAction: @selector (setNSBezelBorder:)]; cell = [borderMatrix cellAtRow: 3 column: 0]; [cell setTitle: @"NSGrooveBorder"]; [cell setAction: @selector (setNSGrooveBorder:)]; [borderMatrix selectCellAtRow: 3 column: 0]; [borderMatrix setAutoresizingMask: (NSViewMinXMargin | NSViewMaxXMargin)]; [borderMatrix sizeToFit]; [titleMatrix setIntercellSpacing: NSMakeSize (0, 4) ]; [titleMatrix setTarget: self]; cell = [titleMatrix cellAtRow: 0 column: 0]; [cell setTitle: @"NSNoTitle"]; [cell setAction: @selector (setNSNoTitle:)]; cell = [titleMatrix cellAtRow: 1 column: 0]; [cell setTitle: @"NSAboveTop"]; [cell setAction: @selector (setNSAboveTop:)]; cell = [titleMatrix cellAtRow: 2 column: 0]; [cell setTitle: @"NSAtTop"]; [cell setAction: @selector (setNSAtTop:)]; cell = [titleMatrix cellAtRow: 3 column: 0]; [cell setTitle: @"NSBelowTop"]; [cell setAction: @selector (setNSBelowTop:)]; cell = [titleMatrix cellAtRow: 4 column: 0]; [cell setTitle: @"NSAboveBottom"]; [cell setAction: @selector (setNSAboveBottom:)]; cell = [titleMatrix cellAtRow: 5 column: 0]; [cell setTitle: @"NSAtBottom"]; [cell setAction: @selector (setNSAtBottom:)]; cell = [titleMatrix cellAtRow: 6 column: 0]; [cell setTitle: @"NSBelowBottom"]; [cell setAction: @selector (setNSBelowBottom:)]; [titleMatrix selectCellAtRow: 2 column: 0]; [titleMatrix setAutoresizingMask: (NSViewMinXMargin | NSViewMaxXMargin)]; [titleMatrix sizeToFit]; hbox = [GSHbox new]; [hbox setDefaultMinXMargin: 10]; [hbox setBorder: 10]; [hbox addView: box]; [box release]; tmp_box = [NSBox new]; [tmp_box setTitle: @"setBorderType:"]; [tmp_box setTitlePosition: NSAtTop]; [tmp_box setBorderType: NSGrooveBorder]; [tmp_box addSubview: borderMatrix]; [borderMatrix release]; [tmp_box sizeToFit]; [tmp_box setAutoresizingMask: (NSViewMinYMargin | NSViewWidthSizable)]; [hbox addView: tmp_box]; [tmp_box release]; tmp_box = [NSBox new]; [tmp_box setTitle: @"setTitlePosition:"]; [tmp_box setTitlePosition: NSAtTop]; [tmp_box setBorderType: NSGrooveBorder]; [tmp_box addSubview: titleMatrix]; [titleMatrix release]; [tmp_box sizeToFit]; [tmp_box setAutoresizingMask: (NSViewMinYMargin | NSViewWidthSizable)]; [hbox addView: tmp_box]; [tmp_box release]; [hbox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; winFrame.size = [hbox frame].size; winFrame.origin = NSMakePoint (100, 100); // Now we can make the window of the exact size win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [win setTitle:@"NSBox Test"]; [win setReleasedWhenClosed: NO]; [win setContentView: hbox]; [hbox release]; [win setMinSize: [NSWindow frameRectForContentRect: winFrame styleMask: [win styleMask]].size]; [self restart]; return self; } - (void) dealloc { RELEASE(win); [super dealloc]; } - (void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"NSBox Test" filename: NO]; } -(void) setNSNoBorder: (id)sender { [box setBorderType: NSNoBorder]; } -(void) setNSLineBorder: (id)sender { [box setBorderType: NSLineBorder]; } -(void) setNSBezelBorder: (id)sender { [box setBorderType: NSBezelBorder]; } -(void) setNSGrooveBorder: (id)sender { [box setBorderType: NSGrooveBorder]; } -(void) setNSNoTitle: (id)sender { [box setTitlePosition: NSNoTitle]; } -(void) setNSAboveTop: (id)sender { [box setTitlePosition: NSAboveTop]; } -(void) setNSAtTop: (id)sender { [box setTitlePosition: NSAtTop]; } -(void) setNSBelowTop: (id)sender { [box setTitlePosition: NSBelowTop]; } -(void) setNSAboveBottom: (id)sender { [box setTitlePosition: NSAboveBottom]; } -(void) setNSAtBottom: (id)sender { [box setTitlePosition: NSAtBottom]; } -(void) setNSBelowBottom: (id)sender { [box setTitlePosition: NSBelowBottom]; } @end gnustep-examples-1.4.0/gui/GSTest/NSBox-test/GNUmakefile0000664000175000017500000000241110564603216021755 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSBox-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSBox-test_OBJC_FILES = NSBox-test.m NSBox-test_PRINCIPAL_CLASS = NSBoxTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/MainMenu.gorm/0000775000175000017500000000000012204034630020402 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/MainMenu.gorm/objects.gorm0000664000175000017500000002735711557070076022755 0ustar fedorfedorGNUstep archive0000300c:00000018:000001b4:00000001:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01 GSNibItem01NSString& % Controller  &01NSMenu0&%GSTest01NSMutableArray1 NSArray&01 NSMenuItem0 & % Info Panel...0 &&&%0 1 NSImage0 1 NSMutableString&%common_2DCheckMark0 0 & % common_2DDash%0 0&%Tests0&&&% 2submenuAction:%*00&0 0&%Test Not in the List...0&&&% %0 0&%Edit0&&&%0 0&%NSMenuCheckmark0 0&%NSMenuMixedState%00&0 0!&%Undo0"&%z&&%%0# 0$&%Redo0%&%Z&&%%0& 0'&%Cut0(&%x&&%%0) 0*&%Copy0+&%c&&%%0, 0-&%Paste0.&%v&&%%0/ 00& % Select All01&%a&&%%02 03&%Find04&&&%%05306&07 08& % Find Panel...09&%f&&%%0: 0;& % Find Next0<&%g&&%%0= 0>& % Find Previous0?&%d&&%%0@ 0A&%Enter Selection0B&%e&&%%0C 0D&%Jump To Selection0E&%j&&%%0F 0G&%Format0H&&&%%0IG0J&0K 0L&%FontH&&%%0ML0N&0O 0P& % Font Panel0Q&%t&&%%0R 0S&%Italic0T&%i&&%%0U 0V&%Bold0W&%b&&%%0X 0Y&%Heavier0Z&&&%%0[ 0\&%LighterZ&&%%0] 0^&%Larger0_&%+&&%%0` 0a&%Smaller0b&%-&&%%0c 0d& % UnderlineH&&%%0e 0f& % SuperscriptH&&%%0g 0h& % SubscriptH&&%%0i 0j&%UnscriptH&&%%0k 0l& % Colors...0m&&&%%0n 0o& % Copy Font0p&%3&&%%0q 0r& % Paste Font0s&%4&&%%0t 0u&%TextH&&%%0vu0w&0x 0y& % Align LeftH&&%%0z 0{&%CenterH&&%%0| 0}& % Align RightH&&%%0~ 0& % Show RulerH&&%%0 0& % Copy Ruler0&%1&&%%0 0& % Paste Ruler0&%2&&%%0 0&%Page Layout...0&%P&&%%0 0&%Windows0&&&% %00&0 0&%Arrange In Front0&&&% %0 0&%Miniaturize Window0&%m&&% %0 0& % Close Window0&%w&&% %0 0&%Services0&&&% %00&0 0&%Hide0&%h&&% %0 0&%Quit0&%q&&% %00& % NSFontManager  &0&0&01 NSMutableDictionary1 NSDictionary&K0& % GormNSMenu10& % GormNSMenu20& % MenuItem(26)&0&%NSFont0& % GormNSMenu30& % MenuItem(30)20& % MenuItem(14)q0& % MenuItem(3)R0& % MenuItem(29)/0& % MenuItem(33)=0& % MenuItem(17)z0& % MenuItem(21)0&%NSMenu0& % MenuItem(6)[0&%Menu(2)v0& % MenuItem100& % MenuItem110& % MenuItem(36)k0& % MenuItem120& % MenuItem130& % MenuItem(24) 0& % MenuItem140& % MenuItem150& % MenuItem(12)i0& % MenuItem160& % NSWindowsMenu0& % MenuItem(9)c0±& % MenuItem170ñ& % MenuItem180ı& % MenuItem(1)K0ű& % MenuItem(27))0Ʊ& % MenuItem(31)70DZ& % MenuItem(15)t0ȱ& % MenuItem(4)U0ɱ&%Menu(0)I0ʱ&%MenuItem0˱& % MenuItem(34)@0̱& % MenuItem(18)|0ͱ& % MenuItem(22)0α& % MenuItem(10)e0ϱ& % MenuItem(7)]0б&%Menu(3)0ѱ& % GormNSMenu0ұ& % MenuItem(25)#0ӱ& % MenuItem(13)n0Ա& % MenuItem(2)O0ձ& % MenuItem10ֱ&%NSOwner0ױ& % NSApplication0ر& % MenuItem20ٱ& % MenuItem30ڱ& % MenuItem40۱& % MenuItem(28),0ܱ& % TableColumn101 NSTableColumn0ޱ&%right C A GP01NSTableHeaderCell1NSTextFieldCell1 NSActionCell1NSCell0&%Right01NSFont% &&&&&&&& &&&&&&%01NSColor0&%NSNamedColorSpace0&%System0&%controlShadowColor00&%windowFrameTextColor00&%six0%&&&&&&&& &&&&&&%00&%System0&%textBackgroundColor00& % textColor0& % MenuItem50& % MenuItem(32):0& % TableColumn200&%left C A GP00&%Left&&&&&&&& &&&&&&%00&%nine&&&&&&&& &&&&&&%0& % MenuItem60& % MenuItem(16)x0& % TableColumn300&%right C A GP00&% Right&&&&&&&& &&&&&&%P&&&&&&&& &&&&&&%P& % MenuItem7P& % MenuItem(20)P& % MenuItem8P& % MenuItem9P&%NSServicesMenuP& % MenuItem(5)XP&%Menu(1)MP& % TableColumnP P &%left C A GPP P &%Left&&&&&&&& &&&&&&%P 鐰&&&&&&&& &&&&&&%P& % MenuItem(35)CP& % MenuItem(19)~P& % MenuItem(23)P& % MenuItem(11)gP& % MenuItem(8)`P&%Menu(4)5P& % MenuItem(0)FP&llP1NSNibConnectorP&%NSOwnerPڰP1NSNibControlConnectorP&%NSFirstP&%hide:P𰳐PP& % terminate:PP ܐP!P"1NSNibOutletConnectorP#&%delegateP$P%P&&%submenuAction:P'P(P)P*P+&%orderFrontStandardInfoPanel:P,P-&%startUnlistedTest:P.P/P0&%submenuAction:P1P2P3P4&%arrangeInFront:P5P6P7&%performMiniaturize:P8P9P:& % performClose:P;P<P=&%submenuAction:P>P?P@PAİɐPBĐPCPDPE԰PF&%orderFrontFontPanel:PGPHPI& % addFontTrait:PJPKȰPL& % addFontTrait:PMPNPO& % modifyFont:PPPQPR& % modifyFont:PSPTϰPU& % modifyFont:PVPWPX& % modifyFont:PYPZP[& % underline:P\P]P^& % superscript:P_P`Pa& % subscript:PbPcPd& % unscript:PePfPg& % copyFont:PhPiPj& % pasteFont:PkİPl&%submenuAction:PmǰɐPnǐPoPpPq& % alignLeft:PrPsPt& % alignCenter:PṵPvPw& % alignRight:PxPyPz& % toggleRuler:P{P|P}& % copyRuler:P~PP& % pasteRuler:PǰP&%submenuAction:PͰɐPP&%runPageLayout:PP&%submenuAction:PPPАPP&%undo:PҰАPP&%redo:PАPP&%cut:PŰАPP&%copy:P۰АPP&%paste:PАPP& % selectAll:PP&%submenuAction:PАPPPP&%performFindPanelAction:PPP&%performFindPanelAction:PPP&%performFindPanelAction:PPP&%performFindPanelAction:PPP&%centerSelectionInVisibleArea:PP&%submenuAction:PPP&%orderFrontColorPanel:P &gnustep-examples-1.4.0/gui/GSTest/MainMenu.gorm/data.classes0000664000175000017500000000033311557070076022707 0ustar fedorfedor{ "## Comment" = "Do NOT change this file, Gorm maintains it"; Controller = { Actions = ( "startListedTest:", "startUnlistedTest:", "restartTest:" ); Outlets = ( ); Super = NSObject; }; }gnustep-examples-1.4.0/gui/GSTest/StringDrawing-test/0000775000175000017500000000000012204034630021465 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/StringDrawing-test/.cvsignore0000664000175000017500000000005707043157024023477 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/StringDrawing-test/StringDrawing-test.m0000664000175000017500000001200611661271346025416 0ustar fedorfedor/* StringDrawing-test.m: Display an ASCII file in a scrollview Copyright (C) 2000 Free Software Foundation, Inc. Author: Nicola Pero Date: 2000 This file is part of GNUstep. 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 #include #include #include "../GSTestProtocol.h" /* * This test is included to show to people how * they can simply and reliably display simple texts to the user in their * GNUstep progs using the current (0.6.5) GNUstep libraries -- waiting for * the full NSText* classes. * * Simply, you create your NSString (with newlines inside it if you want) * and then ask the string to draw itself where you want, * with -drawInRect:WithAttributes: * You can easily pass attributes, such as color, font, etc. * */ /* * A trivial view showing an attributed string. */ @interface TrivialTextView: NSView { NSAttributedString *attr; } -(void) setAttributedString: (NSAttributedString *)s; -(void) sizeToFit; @end @implementation TrivialTextView -(void) dealloc { TEST_RELEASE (attr); [super dealloc]; } -(void) setAttributedString: (NSAttributedString *)s { ASSIGN (attr, s); } -(void) sizeToFit { if (attr) [self setFrameSize: [attr size]]; else [self setFrameSize: NSZeroSize]; } -(void) drawRect: (NSRect)rect { if (attr) [attr drawInRect: [self bounds]]; } @end /* * Now the real test */ @interface StringDrawingTest: NSObject { TrivialTextView *text; NSWindow *win; } -(void) restart; @end @implementation StringDrawingTest: NSObject { // for instance variables see above } -(id) init { GSVbox *vbox; NSButton *button; NSScrollView *scrollView; text = [TrivialTextView new]; /* Minimum size we want it to have */ scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 60, 60)]; [scrollView setDocumentView: text]; [text release]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; button = [NSButton new]; [button setTitle: @"Choose Text File To Display..."]; [button sizeToFit]; [button setAutoresizingMask: NSViewMinXMargin]; [button setTarget: self]; [button setAction: @selector (chooseTextFile:)]; vbox = [GSVbox new]; [vbox setBorder: 5]; [vbox setDefaultMinYMargin: 5]; [vbox addView: button enablingYResizing: NO]; [vbox addView: scrollView]; [vbox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; win = [[NSWindow alloc] initWithContentRect: NSMakeRect (100, 100, 500, 250) styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [vbox release]; [win setTitle: @"StringDrawing Test"]; [self restart]; return self; } - (void) dealloc { // NB: text is automatically released releasing win, // since it is a subview of win. RELEASE(win); [super dealloc]; } - (void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"StringDrawing Test" filename: NO]; } -(void) chooseTextFile: (id) sender { NSOpenPanel *openPanel; int result; openPanel = [NSOpenPanel openPanel]; [openPanel setTitle: @"Open Text File"]; [openPanel setTreatsFilePackagesAsDirectories: YES]; [openPanel setAllowsMultipleSelection: NO]; result = [openPanel runModalForDirectory: NSHomeDirectory () file: nil types: nil]; if (result == NSOKButton) { NSString *string; NSDictionary *dict; NSAttributedString *attr; string = [NSString stringWithContentsOfFile: [openPanel filename]]; dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSFont systemFontOfSize: 0], NSFontAttributeName, [NSColor textColor], NSForegroundColorAttributeName, nil]; attr = [[[NSAttributedString alloc] initWithString: string attributes: dict] autorelease]; [text setAttributedString: attr]; [text sizeToFit]; /* It is a bit exagerated to redisplay all the window but anyway. */ [win display]; } } @end gnustep-examples-1.4.0/gui/GSTest/StringDrawing-test/GNUmakefile0000664000175000017500000000246110564603216023553 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = StringDrawing-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest StringDrawing-test_OBJC_FILES = StringDrawing-test.m StringDrawing-test_PRINCIPAL_CLASS = StringDrawingTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/Controller.m0000664000175000017500000001126212144711755020246 0ustar fedorfedor#include "Controller.h" int nameSort(id path1, id path2, void *context); @implementation Controller -(void) dealloc { RELEASE(tests); RELEASE(loadedTests); [super dealloc]; } -(id) init { [super init]; loadedTests = [[NSMutableArray alloc] init]; tests = [[NSMutableArray alloc] init]; [self _findBundles]; return self; } - (void) awakeFromNib { id menuItem; NSMenu *testMenu = [[[NSApp mainMenu] itemWithTag: 42] submenu]; NSString *name; int i; for (i = 0; i < [tests count]; i++) { name = [[[tests objectAtIndex: i] lastPathComponent] stringByDeletingPathExtension]; menuItem = [testMenu addItemWithTitle: name action: @selector (startListedTest:) keyEquivalent: @""]; [menuItem setTag: i]; } #ifdef __MINGW__ NSWindow *w = [[NSWindow alloc] initWithContentRect: NSMakeRect(400,400,300,200) styleMask: NSTitledWindowMask backing: NSBackingStoreBuffered defer: NO]; [w setTitle: @"GSTest"]; [w makeKeyAndOrderFront: nil]; #endif } -(id) loadAndStartTestWithBundlePath: (NSString *)fullPath { NSBundle *bundle; Class principalClass; // Load the bundle bundle = [NSBundle bundleWithPath: fullPath]; if (bundle) // Bundle was succesfully loaded { // Load the principal class of the bundle principalClass = [bundle principalClass]; if (principalClass) // succesfully loaded { return AUTORELEASE ([principalClass new]); } else // !principalClass { NSRunAlertPanel (NULL, @"Could not load principal class", @"OK", NULL, NULL); return nil; } } else // !bundle { NSRunAlertPanel (NULL, @"Could not load Bundle", @"OK", NULL, NULL); return nil; } } -(void) startListedTest: (id) sender { NSString *bundlePath; int i; i = [sender tag]; if ( [[loadedTests objectAtIndex: i] conformsToProtocol: @protocol(GSTest)]) { [(id)[loadedTests objectAtIndex: i] restart]; return; } else // not started yet { bundlePath = [tests objectAtIndex: i]; [loadedTests replaceObjectAtIndex: i withObject: [self loadAndStartTestWithBundlePath: bundlePath]]; } } -(void) startUnlistedTest: (id) sender { NSOpenPanel *openPanel; int result; openPanel = [NSOpenPanel openPanel]; [openPanel setTitle: @"Select Bundle"]; [openPanel setPrompt: @"Bundle:"]; [openPanel setTreatsFilePackagesAsDirectories: NO]; result = [openPanel runModalForDirectory: nil file: nil types: [NSArray arrayWithObject: @"bundle"]]; if (result == NSOKButton) { NSEnumerator *e = [[openPanel filenames] objectEnumerator]; NSString *file; while ((file = (NSString *)[e nextObject])) { id test = [self loadAndStartTestWithBundlePath: file]; [loadedTests addObject: test]; } } } -(void) _findBundles { NSMutableArray *bundlePaths; NSArray *stdPaths; NSEnumerator *enm; NSString *path; int i = 0; int k = 0; // The test bundles could be in a few places bundlePaths = [NSMutableArray arrayWithCapacity: 1]; [bundlePaths addObject: [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]]; stdPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask | NSLocalDomainMask | NSSystemDomainMask, YES); enm = [stdPaths objectEnumerator]; while( (path = [enm nextObject]) ) { [bundlePaths addObject: [[path stringByAppendingPathComponent: @"ApplicationSupport"] stringByAppendingPathComponent: @"GSTest"]]; } // stow away the bundle paths for( i=0; i < [bundlePaths count]; i++ ) { if( [[NSFileManager defaultManager] fileExistsAtPath: [bundlePaths objectAtIndex: i]] ) { enm = [[NSFileManager defaultManager] enumeratorAtPath: [bundlePaths objectAtIndex: i]]; while( (path = [enm nextObject]) ) { path = [[bundlePaths objectAtIndex: i] stringByAppendingPathComponent: path]; if( [[path pathExtension] isEqualToString: @"bundle"] && ![tests containsObject: path] ) { [tests addObject: path]; [loadedTests insertObject: @"X" atIndex: k]; k++; } } } } // alphabatize them so they're easy to find [tests sortUsingFunction: nameSort context: nil]; } int nameSort(id path1, id path2, void *context) { return [[path1 lastPathComponent] compare: [path2 lastPathComponent]]; } @end gnustep-examples-1.4.0/gui/GSTest/main.m0000664000175000017500000000201310107552352017032 0ustar fedorfedor/* main.m: Main Body of GNUstep Gui demo suite Copyright (C) 1999, 2000 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999, 2000 This file is part of GNUstep. 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 int main (int argc, const char **argv) { return NSApplicationMain (argc, argv); } gnustep-examples-1.4.0/gui/GSTest/KeyboardInput-test/0000775000175000017500000000000012204034627021471 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/KeyboardInput-test/KeyboardInput-test.m0000664000175000017500000002212310011533166025400 0ustar fedorfedor/* KeyboardInput-test.m: Keyboard Input demo/test Copyright (C) 1999, 2000 Free Software Foundation, Inc. Author: Nicola Pero Date: 1999, 2000 This file is part of GNUstep. 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 #include #include #include #include "../GSTestProtocol.h" #include "ConvertKeys.h" static unsigned int modifiers[8] = { NSAlphaShiftKeyMask, NSShiftKeyMask, NSControlKeyMask, NSCommandKeyMask, NSAlternateKeyMask, NSHelpKeyMask, NSFunctionKeyMask, NSNumericPadKeyMask }; static NSString *modifierTitle[8] = { @"NSAlphaShiftKeyMask", @"NSShiftKeyMask", @"NSControlKeyMask", @"NSCommandKeyMask", @"NSAlternateKeyMask", @"NSHelpKeyMask", @"NSFunctionKeyMask", @"NSNumericPadKeyMask" }; static void set_standard_properties (NSTextField *tf, NSTextAlignment align) { [tf setEditable: NO]; [tf setSelectable: NO]; [tf setBezeled: NO]; [tf setDrawsBackground: NO]; [tf setAlignment: align]; [tf setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; } /* An NSTextField which can become invisible on request */ @interface ModifierEntry: NSTextField { BOOL is_visible; } -(void)setVisible: (BOOL) flag; @end @implementation ModifierEntry -(void)setVisible: (BOOL) flag { if (is_visible != flag) [self setNeedsDisplay]; is_visible = flag; } -(void) drawRect: (NSRect)aRect { if (is_visible == NO) return; [super drawRect: aRect]; } @end /* The object displaying the list of modifiers */ @interface ModifiersList: GSVbox { ModifierEntry *mod[8]; } -(void)setModifiers: (unsigned int)flags; @end @implementation ModifiersList: GSVbox { } -(id) init { int i; [super init]; [self setDefaultMinYMargin: 2]; /* Start from 7 so that mod[0] is the uppest entry */ for (i = 7; i > -1; i--) { mod[i] = AUTORELEASE ([ModifierEntry new]); set_standard_properties (mod[i], NSLeftTextAlignment); /* setStringValue just to compute dimension */ [mod[i] setStringValue: modifierTitle[i]]; [mod[i] sizeToFit]; [mod[i] setVisible: NO]; [self addView: mod[i]]; } return self; } -(void)setModifiers: (unsigned int)flags { int i, entries = 0; for (i = 0; i < 8; i++) { if (flags & modifiers[i]) { [mod[entries] setStringValue: modifierTitle[i]]; [mod[entries] setVisible: YES]; entries++; } } for (i = entries; i < 8; i++) { [mod[i] setVisible: NO]; } } @end /* The main view in our test window */ @interface InputTestView: NSView { /* If NO, we behave as a common NSView */ /* If YES, we catch all key events */ BOOL enabled; ModifiersList *modifiersList; NSTextField *keyCodeField; NSTextField *charactersField; NSTextField *charactersIgnoringModifiersField; } -(void) setEnabled: (BOOL)flag; @end @implementation InputTestView { } -(id) init { NSBox *box; NSBox *borderBox; GSTable *table; NSTextField *entry; [super init]; // The little results table table = AUTORELEASE ([[GSTable alloc] initWithNumberOfRows: 4 numberOfColumns: 2]); // Set resizing properties [table setXResizingEnabled: NO forColumn: 0]; [table setXResizingEnabled: YES forColumn: 1]; [table setYResizingEnabled: NO forRow: 0]; [table setYResizingEnabled: NO forRow: 1]; [table setYResizingEnabled: NO forRow: 2]; [table setYResizingEnabled: NO forRow: 3]; [table setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; //Add entries in the table entry = AUTORELEASE ([NSTextField new]); set_standard_properties (entry, NSRightTextAlignment); [entry setStringValue: @"keyCode:"]; [entry sizeToFit]; [table putView: entry atRow: 3 column: 0 withMargins: 2]; entry = AUTORELEASE ([NSTextField new]); set_standard_properties (entry, NSRightTextAlignment); [entry setStringValue: @"characters:"]; [entry sizeToFit]; [table putView: entry atRow: 2 column: 0 withMargins: 2]; entry = AUTORELEASE ([NSTextField new]); set_standard_properties (entry, NSRightTextAlignment); [entry setStringValue: @"charactersIgnoringModifiers:"]; [entry sizeToFit]; [table putView: entry atRow: 1 column: 0 withMargins: 2]; entry = AUTORELEASE ([NSTextField new]); set_standard_properties (entry, NSRightTextAlignment); [entry setStringValue: @"modifiers:"]; [entry sizeToFit]; [table putView: entry atRow: 0 column: 0 withMargins: 2]; keyCodeField = AUTORELEASE ([NSTextField new]); set_standard_properties (keyCodeField, NSLeftTextAlignment); [keyCodeField setStringValue: @" "]; [keyCodeField sizeToFit]; [table putView: keyCodeField atRow: 3 column: 1 withMargins: 2]; charactersField = AUTORELEASE ([NSTextField new]); set_standard_properties (charactersField, NSLeftTextAlignment); [charactersField setStringValue: @" "]; [charactersField sizeToFit]; [table putView: charactersField atRow: 2 column: 1 withMargins: 2]; charactersIgnoringModifiersField = AUTORELEASE ([NSTextField new]); set_standard_properties (charactersIgnoringModifiersField, NSLeftTextAlignment); [charactersIgnoringModifiersField setStringValue: @" "]; [charactersIgnoringModifiersField sizeToFit]; [table putView: charactersIgnoringModifiersField atRow: 1 column: 1 withMargins: 2]; modifiersList = AUTORELEASE ([ModifiersList new]); [table putView: modifiersList atRow: 0 column: 1 withMargins: 2]; box = AUTORELEASE ([NSBox new]); [box setTitle: @"Information On Latest Key Event"]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [box addSubview: table]; [box sizeToFit]; [box setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; borderBox = AUTORELEASE ([NSBox new]); [borderBox setTitlePosition: NSNoTitle]; [borderBox setBorderType: NSNoBorder]; [borderBox addSubview: box]; [borderBox sizeToFit]; [borderBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)]; [self setFrameSize: [borderBox frame].size]; [borderBox setFrameOrigin: NSMakePoint (0, 0)]; [self addSubview: borderBox]; enabled = NO; return self; } /* NB: We do not need any dealloc method. We are not retaining anything. */ -(void) setEnabled: (BOOL)flag; { enabled = flag; [[self window] makeFirstResponder: self]; } - (BOOL) acceptsFirstResponder { return enabled; } - (BOOL) resignFirstResponder { return (!enabled); } -(BOOL) performKeyEquivalent: (NSEvent *)theEvent { if (enabled) { [self keyDown: theEvent]; return YES; } else return [super performKeyEquivalent: theEvent]; } -(void) keyDown: (NSEvent *)theEvent { if (enabled) { NSString *s; [modifiersList setModifiers: [theEvent modifierFlags]]; [keyCodeField setIntValue: [theEvent keyCode]]; s = convertCharactersToDisplayable ([theEvent characters]); [charactersField setStringValue: s]; s = convertCharactersToDisplayable ([theEvent charactersIgnoringModifiers]); [charactersIgnoringModifiersField setStringValue: s]; } else [super keyDown: theEvent]; } @end @interface KeyboardInputTest: NSObject { InputTestView *v; NSWindow *win; } -(void) restart; - (void)windowDidBecomeKey: (NSNotification *)aNotification; - (void)windowDidResignKey: (NSNotification *)aNotification; @end @implementation KeyboardInputTest: NSObject { // for instance variables see above } -(id) init { NSRect winFrame; v = AUTORELEASE ([InputTestView new]); winFrame.size = [v frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: YES]; [win setTitle:@"Keyboard Input Test"]; [win setReleasedWhenClosed: NO]; [win setContentView: v]; [win setMinSize: [NSWindow frameRectForContentRect: winFrame styleMask: [win styleMask]].size]; [win setDelegate: self]; [self restart]; return self; } - (void) dealloc { [win setDelegate: nil]; RELEASE(win); [super dealloc]; } - (void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"Keyboard Input Test" filename: NO]; } - (void)windowDidBecomeKey: (NSNotification *)aNotification { [v setEnabled: YES]; } - (void)windowDidResignKey: (NSNotification *)aNotification { [v setEnabled: NO]; } @end gnustep-examples-1.4.0/gui/GSTest/KeyboardInput-test/.cvsignore0000664000175000017500000000005707020255104023466 0ustar fedorfedor*.app *.bundle *.debug *.profile *obj .gdbinit gnustep-examples-1.4.0/gui/GSTest/KeyboardInput-test/ConvertKeys.h0000664000175000017500000000010107410643636024117 0ustar fedorfedorNSString *convertCharactersToDisplayable (NSString *characters); gnustep-examples-1.4.0/gui/GSTest/KeyboardInput-test/GNUmakefile0000664000175000017500000000247710564603216023560 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = KeyboardInput-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest KeyboardInput-test_OBJC_FILES = KeyboardInput-test.m ConvertKeys.m KeyboardInput-test_PRINCIPAL_CLASS = KeyboardInputTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/gui/GSTest/KeyboardInput-test/ConvertKeys.m0000664000175000017500000001046011423301771024123 0ustar fedorfedor/* ConvertKeys.m: Convert characters to their names Copyright (C) 2001 Free Software Foundation, Inc. Author: Nicola Pero Date: 2001 This file is part of GNUstep. 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 #include #include "ConvertKeys.h" /* Code stolen from the corresponding gnustep-gui code also by myself. */ #define CHARACTER_TABLE_SIZE 78 static struct { NSString *name; unichar character; } character_table[CHARACTER_TABLE_SIZE] = { { @"UpArrow", NSUpArrowFunctionKey }, { @"DownArrow", NSDownArrowFunctionKey }, { @"LeftArrow", NSLeftArrowFunctionKey }, { @"RightArrow", NSRightArrowFunctionKey }, { @"F1", NSF1FunctionKey }, { @"F2", NSF2FunctionKey }, { @"F3", NSF3FunctionKey }, { @"F4", NSF4FunctionKey }, { @"F5", NSF5FunctionKey }, { @"F6", NSF6FunctionKey }, { @"F7", NSF7FunctionKey }, { @"F8", NSF8FunctionKey }, { @"F9", NSF9FunctionKey }, { @"F10", NSF10FunctionKey }, { @"F11", NSF11FunctionKey }, { @"F12", NSF12FunctionKey }, { @"F13", NSF13FunctionKey }, { @"F14", NSF14FunctionKey }, { @"F15", NSF15FunctionKey }, { @"F16", NSF16FunctionKey }, { @"F17", NSF17FunctionKey }, { @"F18", NSF18FunctionKey }, { @"F19", NSF19FunctionKey }, { @"F20", NSF20FunctionKey }, { @"F21", NSF21FunctionKey }, { @"F22", NSF22FunctionKey }, { @"F23", NSF23FunctionKey }, { @"F24", NSF24FunctionKey }, { @"F25", NSF25FunctionKey }, { @"F26", NSF26FunctionKey }, { @"F27", NSF27FunctionKey }, { @"F28", NSF28FunctionKey }, { @"F29", NSF29FunctionKey }, { @"F30", NSF30FunctionKey }, { @"F31", NSF31FunctionKey }, { @"F32", NSF32FunctionKey }, { @"F33", NSF33FunctionKey }, { @"F34", NSF34FunctionKey }, { @"F35", NSF35FunctionKey }, { @"Insert", NSInsertFunctionKey }, { @"Delete", NSDeleteFunctionKey }, { @"Home", NSHomeFunctionKey }, { @"Begin", NSBeginFunctionKey }, { @"End", NSEndFunctionKey }, { @"PageUp", NSPageUpFunctionKey }, { @"PageDown", NSPageDownFunctionKey }, { @"PrintScreen", NSPrintScreenFunctionKey }, { @"ScrollLock", NSScrollLockFunctionKey }, { @"Pause", NSPauseFunctionKey }, { @"SysReq", NSSysReqFunctionKey }, { @"Break", NSBreakFunctionKey }, { @"Reset", NSResetFunctionKey }, { @"Stop", NSStopFunctionKey }, { @"Menu", NSMenuFunctionKey }, { @"User", NSUserFunctionKey }, { @"System", NSSystemFunctionKey }, { @"Print", NSPrintFunctionKey }, { @"ClearLine", NSClearLineFunctionKey }, { @"ClearDisplay", NSClearDisplayFunctionKey }, { @"InsertLine", NSInsertLineFunctionKey }, { @"DeleteLine", NSDeleteLineFunctionKey }, { @"InsertChar", NSInsertCharFunctionKey }, { @"DeleteChar", NSDeleteCharFunctionKey }, { @"Prev", NSPrevFunctionKey }, { @"Next", NSNextFunctionKey }, { @"Select", NSSelectFunctionKey }, { @"Execute", NSExecuteFunctionKey }, { @"Undo", NSUndoFunctionKey }, { @"Redo", NSRedoFunctionKey }, { @"Find", NSFindFunctionKey }, { @"Help", NSHelpFunctionKey }, { @"ModeSwitch", NSModeSwitchFunctionKey }, { @"Backspace", NSDeleteCharacter }, { @"BackTab", NSBackTabCharacter }, { @"Tab", NSTabCharacter }, { @"Enter", NSEnterCharacter }, { @"FormFeed", NSFormFeedCharacter }, { @"CarriageReturn", NSCarriageReturnCharacter } }; NSString *convertCharactersToDisplayable (NSString *characters) { if ([characters length] == 1) { int i; unichar c = [characters characterAtIndex: 0]; for (i = 0; i < CHARACTER_TABLE_SIZE; i++) { if (c == character_table[i].character) { return [NSString stringWithFormat: @"<%@>", character_table[i].name]; } } } return characters; } gnustep-examples-1.4.0/gui/GSTest/ChangeLog0000664000175000017500000005763612167350230017526 0ustar fedorfedor2013-07-10 Fred Kiefer * Transparency-test/Transparency-Test.m: Add toggle button to ignore mouse events. Toggle with NSCommandKeyMask-i. * NSTableView-test/NSTableView-test.m: Make first column selectable. 2011-11-17 Eric Wasylishen * StringDrawing-test/StringDrawing-test.m: Fix copy/paste mistake 2011-11-11 Eric Wasylishen * Image-test/Image-test.m: Add a test for scalesWhenResized 2011-11-11 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Test button scaling modes. 2011-11-11 Eric Wasylishen * NSWindow-test/NSWindow-test.m: Don't implement windowDidUpdate: delegate method as it isn't very interesting and spams the log 2011-11-11 Eric Wasylishen * NSWindow-test: add a window test. 2011-09-26 Eric Wasylishen * TextSystem-test: add an experimental test for text system stuff 2011-09-26 Eric Wasylishen * Image-test/Image-test.m: Test that [NSGraphicsContext saveGraphicsState] preserves complicated (bezier-path) clipping paths. (currently an expected fail.) When passing, two copies of the 'g' figure should show up. 2011-09-12 Eric Wasylishen * Transparency-test/Transparency-Test.m: Convert the window background to NSCalibratedRGBColorSpace so it is possible to change the alpha component. 2011-09-12 Eric Wasylishen * Transparency-test: Add a test for window opacity and background color alpha 2011-08-29 Eric Wasylishen * Image-test/Image-test.m: Test drawing images with strange DPI's 2011-08-29 Eric Wasylishen * Image-test/Image-test.m: Test using lockFocus and drawing an image into an image 2011-08-16 Eric Wasylishen * Image-test/Image-test.m: Test the edges of an image remain sharp when it's scaled up a lot (20x). 2011-08-15 Eric Wasylishen * Image-test/Image-test.m: Test NSDrawNinePartImage with not enough space for drawing all of the parts 2011-08-15 Eric Wasylishen * Image-test/Image-test.m: Test NSDrawNinePartImage in a flipped view 2011-08-15 Eric Wasylishen * Image-test/Image-test.m: Test NSDrawNinePartImage 2011-08-15 Eric Wasylishen * Image-test/Image-test.m: Test NSCustomImageRep, and test that drawing it still works even if the rep size is not set. 2011-07-19 Eric Wasylishen * Image-test/Image-test.m: Test SVG and PDF drawing. 2011-07-15 Eric Wasylishen * Image-test/Image-test.m: Test drawing images with a combination of flip, rotation, scale, and translation 2011-07-15 Eric Wasylishen * Image-test/Image-test.m: Test drawing images in a a flipped view 2011-07-15 Eric Wasylishen * ImageSelection-test: * Image-test: Split part of ImageSelection test off in to a new test for general testing of image drawing. 2011-07-14 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Test +[NSGraphicsContext graphicsContextWithBitmapImageRep:], which isn't working with cairo. 2011-06-27 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Test that drawing a vector rep scales properly. 2011-06-16 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Also test NSButton's image scaling 2011-06-15 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Test NSImageView scaling 2011-06-14 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Add a few more cases 2011-06-14 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Test drawing sub- regions of images. 2011-06-14 Eric Wasylishen * ImageSelection-test/ImageSelection-test.m: Expand to include tests for -setSize: as well as complex clipping paths 2011-06-13 Eric Wasylishen * ImageSelection-test: Fix the TIFFs, which had some sub-images inadvertently set to greyscale. 2011-06-08 Eric Wasylishen * ImageSelection-test: New test to test how NSImage chooses an image rep to draw when many are available. Only a basic skeleton of a test is written so far. This should include testing: ICNS files with multiple icon sizes, TIFF files with multiple icon sizes and the same DPI, TIFF files with multiple simage izes and different DPI (e.g. 64x64@72dpi and 256x256@288dpi) 2011-05-15 Eric Wasylishen * NSTextView-test/NSTextView-test.m: Test links (add a link on the second word of the lorem ipsum text to a wikipedia article) 2011-05-11 Eric Wasylishen * PixelExactDrawing-test: Add a new test case. 2011-05-11 Eric Wasylishen * PixelExactDrawing-test: Add a new test 2011-04-30 Eric Wasylishen * MainMenu.gorm: Add an Edit and a Format menu. 2011-04-29 Eric Wasylishen * NSTextView-test/NSTextView-test.m: Test multiple layout managers per text storage, and multiple text views per layout manager. 2010-07-26 Fred Kiefer * KeyboardInput-test/ConvertKeys.m: Correct setting for backspace key. 2010-07-25 Fred Kiefer * KeyboardInput-test/ConvertKeys.m: Add support for backtab character. 2010-06-15 Riccardo Mottola * NSProgressIndicator-test: Added new test for the progress indicator 2010-04-14 Eric Wasylishen * Controller.m: On MinGW, display a main window so GSTest can be run when the WinUXTheme is enabled. * NSButton-test/NSButton-test.m: Add tooltips to the buttons. This is to demonstrate a bug I am reporting. 2010-01-28 Eric Wasylishen * NSButton-test/NSButton-test.m: Show an NSPushOnPushOff button, as well as a disabled button. 2010-01-28 Eric Wasylishen * NSWindowStyleMask-test/NSWindowStyleMask-test.m: Tweak to allow creating NSPanels, and allow setting the new NSWindow and NSPanel style masks. Also added a close button and descriptive label to the created windows. 2010-01-28 Eric Wasylishen * NSButton-test/NSButton-test.m: Add NSPopUpButton and NSComboBox 2010-01-28 Eric Wasylishen * NSButton-test/NSButton-test.m: Show some NSSegmentedControls 2010-01-28 Eric Wasylishen * GNUmakefile: * NSButton-test/NSButton-test.m: * testList.h: Enable the NSButton test. Modify the test to show off all of the bezel styles. 2009-12-16 Wolfgang Lux * GNUmakefile: * NSOpenPanel-test/GNUmakefile: * NSOpenPanel-test/NSOpenPanel-test.m: Add demo/test for the Open panel. The test has been adapted from the Save panel test. 2009-12-15 Wolfgang Lux * NSSavePanel-test/NSSavePanel-test.m: Add field to supply a list of allowed file type extension to the save panel and a button to control whether the panel allows other file type extensions. 2009-12-05 Quentin Mathe * NSOutlineView-test/NSOutlineView-test.m: Added new expandable items to better test drop above at multiple levels on the same row. 2009-12-05 Quentin Mathe * NSOutlineView-test/NSOutlineView-test.m: Reindented more sensibly and rearranged a bit the if else statements logic to be simpler. 2007-02-14 Nicola Pero * Composite-test/GNUmakefile: Updated definition of BUNDLE_INSTALL_DIR to use GNUSTEP_LIBRARY instead of GNUSTEP_INSTALLATION_DIR. * CoordinateCheck-test/GNUmakefile: Same change. * EncodingDecoding-test/GNUmakefile: Same change. * GSHbox-test/GNUmakefile: Same change. * KeyboardInput-test/GNUmakefile: Same change. * NSBox-test/GNUmakefile: Same change. * NSButton-test/GNUmakefile: Same change. * NSColorList-test/GNUmakefile: Same change. * NSColorWell-test/GNUmakefile: Same change. * NSForm-test/GNUmakefile: Same change. * NSOutlineView-test/GNUmakefile: Same change. * NSSavePanel-test/GNUmakefile: Same change. * NSScrollView-test/GNUmakefile: Same change. * NSSecureTextField-test/GNUmakefile: Same change. * NSSlider-test/GNUmakefile: Same change. * NSSplitView-test/GNUmakefile: Same change. * NSTableView-test/GNUmakefile: Same change. * NSTextView-test/GNUmakefile: Same change. * NSWindowStyleMask-test/GNUmakefile: Same change. * StringDrawing-test/GNUmakefile: Same change. 2004-08-14 Adam Fedor * Controller.[hm]: New files split from main * MainModel.gmodel: Interface file. * GSTestInfo.plist: New file * */GNUmakefile: Install bundles in ApplicationSupport/GSTest (Patches from Rob Burns ). 2004-02-08 Fred Kiefer * KeyboardInput-test/KeyboardInput-test.m (-dealloc) Unset window delegate to prevent call to freed object. 2003-07-26 Fred Kiefer * main.m Changed type of variable menuItem in main() to remove compiler warnings. * Composite-test/MyView.m * NSTableView-test/NSTableView-test.m Added [dealloc] method. * NSBox-test/NSBox-test.m In [NSBoxTest init] release the cell prototype. * NSSavePanel-test/NSSavePanel-test.m Added missing @end. Mon Jun 10 09:36:57 2002 Nicola Pero * NSButton-test/GNUmakefile: New file. * NSButton-test/NSButton-test.m: New file. * NSButton-test/README: New file. 2002-04-24 Adam Fedor * main.m ([Controller -startUnlistedTest:sender]): Retain unlisted tests in an array so they don't disappear after the next autorelease loop. Thu Apr 11 22:59:34 2002 Nicola Pero * NSSavePanel-test/NSSavePanel-test.m ([NSSavePanelTest -init]): Updated for newer gnustep-gui: no longer adjust manually button size, the new gnustep-gui gets them right automatically. * StringDrawing-test/StringDrawing-test.m ([StringDrawingTest -init]): Idem. * NSWindowStyleMask-test/NSWindowStyleMask-test.m ([NSWindowStyleMaskTest -init]): Idem. * EncodingDecoding-test/EncodingDecoding-test.m ([EncodingDecodingTest -init]): Idem. * main.m: Version 1.0. 2002-03-22 Pierre-Yves Rivaille * NSTableView-test/NSTableView-test.m : Modified to use drag'n'drop. keys, values and test are now declared as static. * NSOutlineView-test/NSOutlineView-test.m Modified to use drag'n'drop. keys, values and test are now declared as static. 2002-03-05 Gregory John Casamento * NSOutlineView-test/NSOutlineView-test.m made modifications to the [NSOutlineViewTest -outlineView:child:ofItem:] method to return children starting from zero instead of one. 2002-03-05 Pierre-Yves Rivaille * NSTableView-test/NSTableView-test.m ([NSTableViewTest -init]): Set minWidth for all columns. Don't call sizeToFit: anymore. Mon Mar 4 09:31:04 2002 Nicola Pero * main.m (main): Set to nil the listed test instances at startup; do not dealloc pools after termination of program. ([Controller -dealloc]): Destroy the test instances. ([Controller -loadAndStartTestWithBundlePath:]): Autorelease the returned object. ([Controller -startListedTest:]): Retain the new bundle principal class instance. ([Controller -applicationWillTerminate:]): New method. Sat Feb 27 01:54:10 2002 Gregory Casamento * NSOutlineView-test/NSOutlineView-test.m: Added code to test indentation in NSOutlineView. Sat Feb 23 13:08:47 2002 Gregory Casamento * NSOutlineView-test/NSOutlineView-test.m: Further improvements to this test bundle to exercise NSOutlineView. Sat Feb 23 13:08:47 2002 Gregory Casamento * Added NSOutlineView-test.m to the test directory. Wed Feb 20 19:28:52 2002 Nicola Pero Moved the memory panel into gnustep-gui so all apps have it. To get the memory panel with new apps click on application icon in the info panel (works for any app). * MemoryPanel.m: Removed. * MemoryPanel.h: Removed. * main.m: Do not include MemoryPanel.h. (main): Do not add the memory panel submenu. * GNUmakefile: Do not compile MemoryPanel.m Wed Jan 16 22:12:24 2002 Nicola Pero * NSSlider-test/NSSlider-test.m ([-init]): Added enable/disable buttons to enable/disable the sliders. ([-vEnabledChanged:], [-hEnabledChanged:]): New methods 2002-01-09 Adam Fedor * main.m (main): Remove main menu display. Fri Dec 21 14:28:48 2001 Nicola Pero * KeyboardInput-test/ConvertKeys.m: New file. * KeyboardInput-test/ConvertKeys.h: Idem. * KeyboardInput-test/GNUmakefile: Compile it. * KeyboardInput-test/KeyboardInput-test.m ([InputTestView -keyDown:]): Use the new falitites to display pretty names for function keys. * main.m: Updated version to 0.8. Wed Jul 4 18:41:29 2001 Nicola Pero * GNUmakefile (SUBPROJECTS), testList.h (testList): Added NSTextView-test. * NSTextView-test: New directory. * NSTextView-test/NSTextView-test.m: New file. * NSTextView-test/GNumakefile: New file. * main.m: Updated version to 0.7. Sun Jun 10 20:00:51 2001 Nicola Pero * StringDrawing-test/StringDrawing-test.m ([-chooseTextFile:sender]): Use an NSOpenPanel rather than a NSSavePanel. Thu Feb 8 19:42:38 2001 Nicola Pero * GNUmakefile (SUBPROJECTS), testList.h (testList): Added NSSecureTextField-test. * NSSecureTextField-test: New directory. * NSSecureTextField-test/NSSecureTextField-test.m: New file. * NSSecureTextField-test/GNUmakefile: New file. * main.m: Updated version to 0.6. Tue Jan 20 Michael Hanni * Composite-test/.cvsignore, CoordinateCheck-test/.cvsignore, NSTableView-test/.cvsignore, NSWindowStyleMask-test/.cvsignore: added for cleanliness. Sun Jan 28 19:37:39 2001 Nicola Pero * main.m: Updated version to 0.5; keep track of date. Sun Jan 28 19:14:45 2001 Nicola Pero * GNUmakefile, testList.h (testList): Added CoordinateCheck-test. * CoordinateCheck-test: New directory. * CoordinateCheck-test/CoordinateCheck-test.m: New file. * CoordinateCheck-test/GNUmakefile: New file. 2001-01-08 Fred Kiefer * NSColorWell-test/NSColorWell-test.m ([NSColorWellTest -showColorList]) release the hboxes. Tue Dec 12 02:32:35 2000 Nicola Pero * GSTest/GNUmakefile: Updated/Simplified. Tue Dec 12 02:20:23 2000 Nicola Pero * MemoryPanel.h, MemoryPanel.m: Rewritten to use the new GSDebugAllocation functions. Wed Sep 6 23:46:35 2000 Nicola Pero * GNUmakefile: Added NSWindowStyleMask-test. Tue Sep 5 19:09:32 2000 Nicola Pero * EncodingDecoding-test/EncodingDecoding-test.m ([-encode:]): Output exception description. Tue Sep 5 00:55:55 2000 Nicola Pero * EncodingDecoding-test/EncodingDecoding-test.m ([-openWindow:]): RETAIN decoded window. Sun Sep 3 21:28:46 2000 Nicola Pero * NSSlider-test/NSSlider-test.m ([NSSliderTest -init]): Set title of horizontal slider. Sat Sep 2 01:05:48 2000 Nicola Pero * MemoryPanel.m ([NSMenu -addMemoryPanelSubmenu]): Create the shared memory panel later. * MemoryPanel.h, MemoryPanel.m ([MemoryPanel +update:]): New method. * main.m (main): Empty autorelease pool before running application. Fri Sep 1 22:47:42 2000 Nicola Pero * MemoryPanel.m ([MemoryPanel -init]): Order entries by number of allocated objects by default. Fri Sep 1 16:18:50 2000 Nicola Pero Implemented a memory panel to track memory leaks in the library. * main.m (main): Added memory menu. * MemoryPanel.m, MemoryPabel.h: New files. * GNUmakefile: Added the new files. Thu Jul 20 01:53:27 2000 Nicola Pero * NSWindowStyleMask: New test. * testList.h (testList): Added test. Tue Jul 18 17:46:12 2000 Nicola Pero * KeyboardInput-test/KeyboardInput-test.m ([-init]): Fixed min size of window. * NSBox-test/NSBox-test.m ([-init]): Idem. * NSColorWell-test/NSColorWell-test.m ([-init]): Idem. * NSSlider-test/NSSlider-test.m ([-init]): Idem. Thu Apr 13 19:00:36 2000 Nicola Pero * EncodingDecoding-test/EncodingDecoding-test.m ([-decode:]): Catch exception on decoding and show an error panel if that happens. ([-encode:]): Idem on encoding. Thu Apr 13 18:31:08 2000 Nicola Pero * Composite-test/Composite-test.m ([-init]): Do not release the window when closed. * EncodingDecoding-test/EncodingDecoding-test.m ([EncodingDecodingTest -init]): Idem. * GSHbox-test/GSHbox-test.m ([GSHboxTest -init]): Idem. * KeyboardInput-test/KeyboardInput-test.m ([KeyboardInputTest -dealloc]): Idem. * NSBox-test/NSBox-test.m ([NSBoxTest -init]): Idem. * NSColorList-test/NSColorList-test.m ([NSColorListTest -init]): Idem. * NSColorWell-test/NSColorWell-test.m ([NSColorWellTest -init]): Idem. * NSForm-test/NSForm-test.m ([NSFormTest -init]): Idem. * NSSavePanel-test/NSSavePanel-test.m ([NSSavePanelTest -init]): Idem. * NSScrollView-test/NSScrollView-test.m ([NSScrollViewTest -init]): Idem. * NSSlider-test/NSSlider-test.m ([NSSliderTest -init]): Idem. * NSSplitView-test/NSSplitView-test.m ([NSSplitViewTest -init]): Idem. * NSTableView-test/NSTableView-test.m ([NSTableViewTest -init]): Idem. * StringDrawing-test/StringDrawing-test.m ([StringDrawingTest -init]): Idem. Sat Mar 18 00:11:31 2000 Nicola Pero * NSTableView-test: New test. * testList.h: Added test. 2000-03-11 Adam Fedor * Composite-test: New test. Mon Feb 14 22:14:14 2000 Nicola Pero * NSSavePanel-test/NSSavePanel-test.m ([-startSavePanel:sender]): Emit a warning panel and refuse to run the save panel if a not-valid filename, ie one beginning with "/", is supplied. Sun Feb 13 01:18:37 2000 Nicola Pero * main.m ([Controller -runInfoPanel:sender]): Use AUTORELEASE instead of -autorelease. (main): AUTORELEASE each created menu, and a couple of minor memory management tidyups. Sat Feb 12 18:03:01 2000 Nicola Pero * StringDrawing-test/StringDrawing-test.m ([-init]): Improved autoresizing. Sat Feb 5 03:37:52 2000 Nicola Pero * main.m (main): Added "Hide" menu item. * StringDrawing-test/StringDrawing-test.m ([-init]): Changed button text. Thu Feb 3 01:23:59 2000 Nicola Pero * main.m (main): Added "..." to Info Panel, Help and Test Not In The List menu items. Mon Jan 31 22:31:09 2000 Nicola Pero * NSSlider-test/NSSlider-test.m ([NSSliderTest -init]): Fixed attributes of text fields. Mon Jan 31 22:01:07 2000 Nicola Pero * KeyboardInput-test/KeyboardInput-test.m: Test rewritten with new interface design. Tue Jan 25 23:40:24 2000 Nicola Pero * StringDrawing-test/StringDrawing-test.m ([TrivialTextView -drawRect:]): Fix for nil attr. ([StringDrawingTest -chooseTextFile:]): Fixed memory leak. ([StringDrawingTest -init]): Made the scrollview bigger. Tue Jan 25 00:41:11 2000 Nicola Pero * main.m ([Controller -runInfoPanel:sender]): Use the new standard Info Panel provided by the GNUstep libraries; * main.m (main): Invoke the Help Panel even if not yet implemented yet. * infoPanel.m, infoPanel.h: Added comment saying that this class is unused. * GNUmakefile: Removed any reference to infoPanel.m, infoPanel.h. Mon Jan 24 23:17:12 2000 Nicola Pero New test StringDrawing-test: * StringDrawing-test/StringDrawing-test.m: New file. * StringDrawing-test/GNUmakefile: New file. * GNUmakefile: Added StringDrawing-test. * testList.h: Added StringDrawing-test. Fri Jan 14 06:55:29 2000 Nicola Pero * EncodingDecoding-test/EncodingDecoding-test.m ([-init]): Set autoresizing mask of the browser; removed border in excess. * NSBox-test/NSBox-test.m ([-init]): Set vertical intercell spacing of set boxes to 4; added boxes to group options; centered option matrixes inside boxes. * NSColorList-test/NSColorList-test.m ([-init]): Set autoresizing mask of the browser. ([-showColorList:]): Added border around vbox showing color list. * NSForm-test/NSForm-test.m ([-init]): Added missing autoreleases; added size to fit of NSForms. * NSSavePanel-test/NSSavePanel-test.m ([-init]): Better sizing of button and options form; added subvbox to center left-aligned group of buttons; rewritten result output presentation. * NSSlider-test/NSSlider-test.m ([-init]): Changed alignment, disposition of things. Sat Jan 8 23:33:21 2000 Nicola Pero * main.m: ([Controller -init]): Added missing retain. ([Controller -dealloc]): Added method. ([Controller -runInfoPanel:sender]): Simplified. ([Controller -startUnlistedTest:sender]): Use the Open Panel. * NSBox-test/NSBox-test.m ([-dealloc]): Added method. * NSColorWell-test/NSColorWell-test.m ([-init]): The color well is not any longer an instance variable. ([-dealloc]): Added method. * NSSavePanel-test/NSSavePanel-test.m ([-dealloc]): Added method. * NSScrollView-test/NSScrollView-test.m ([-dealloc]): Added method. * NSSlider-test/NSSlider-test.m ([-dealloc]): Added method. * NSSplitView-test/NSSplitView-test.m ([-dealloc]): Added method. * EncodingDecoding-test/EncodingDecoding-test.m ([-init]): Set browser target so that double clicking on a window opens the window. ([-openWindow:]): Removed log. ([-dealloc]): Finished. ([-decode:]): Invoke the open panel in adherence to doc. * KeyboardInput-test/KeyboardInput-test.m ([-dealloc]): Added method. New test NSColorList-test. * NSColorList-test: New directory. * NSColorList-test/GNUmakefile: New file. * NSColorList-test/NSColorList-test.m: New file. * testList.h: Added test to the list. * GNUmakefile: idem. Fri Dec 17 06:16:30 1999 Nicola Pero * NSSavePanel-test/NSSavePanel-test.m ([NSSavePanelTest -init]): Make 'Start Save Panel' button bigger; add more space over the button. New test EncodingDecoding-test. This test is meant for library developing. It will be replaced with a test more focused as a demo. * EncodingDecoding-test: New directory. * EncodingDecoding-test/GNUmakefile: New file. * EncodingDecoding-test/EncodingDecoding-test.m: New file. Thu Dec 9 20:47:06 1999 Nicola Pero New test NSSavePanel-test. * NSSavePanel-test: New directory. * NSSavePanel-test/GNUmakefile: New file. * NSSavePanel-test/NSSavePanel-test.m: New file. * testList.h: Added test to the list. * GNUmakefile: idem. Tue Dec 7 04:28:15 1999 Nicola Pero * KeyboardInput-test/KeyboardInput-test.m ([-init]): Set background color of non editable text fields. Fri Dec 3 20:38:26 1999 Nicola Pero New test GSHbox-test. * GSHbox-test: New directory. * GSHbox-test/GNUmakefile: New file. * GSHbox-test/GSHbox-test.m: New directory. * NSForm-test/NSForm-test.m ([-dealloc]): Added. Sun Nov 28 18:09:46 1999 Nicola Pero New test NSForm-test. * NSForm-test: New directory. * NSForm-test/GNUmakefile: New file. * NSForm-test/NSForm-test.m: New file. Sat Nov 27 05:25:15 1999 Nicola Pero * KeyboardInput-test/KeyboardInput-test.m ([inputTestView -drawRect:]): Fixed bug. * KeyboardInput-test/KeyboardInput-test.m ([KeyboardInputTest -init]): Moved typing view to top. gnustep-examples-1.4.0/gui/GSTest/NSButton-test/0000775000175000017500000000000012204034630020417 5ustar fedorfedorgnustep-examples-1.4.0/gui/GSTest/NSButton-test/README0000664000175000017500000000010607501101605021275 0ustar fedorfedorThis test would enjoy being extended - it's just a preliminary sketch gnustep-examples-1.4.0/gui/GSTest/NSButton-test/NSButton-test.m0000664000175000017500000002410411365366437023313 0ustar fedorfedor/* NSButton-test.m: check continuous buttons Copyright (C) 2001 Free Software Foundation, Inc. Author: Nicola Pero Date: 2001 This file is part of GNUstep. 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 #include #include #include #include "../GSTestProtocol.h" @interface NSButtonTest: NSObject { NSWindow *win; NSTextView *text; } -(void) restart; -(void) action: (id)sender; @end @implementation NSButtonTest: NSObject - (NSTextField *) addLabel: (NSString *)label to: (id)box { NSTextField *labelView = [NSTextField new]; [labelView setStringValue: label]; [labelView setFrame: NSMakeRect (0, 0, 250, 16)]; [labelView setEditable: NO]; [labelView setSelectable: NO]; [labelView setBezeled: NO]; [labelView setDrawsBackground: NO]; [box addView: labelView]; return [labelView autorelease]; } - (NSButton *) addButtonWithLabel: (NSString *)label to: (id)box { NSButton *button = [NSButton new]; [button setFrame: NSMakeRect (0, 0, 200, 32)]; [button setTitle: label]; [button setAutoresizingMask: NSViewMaxXMargin]; [button setTarget: self]; [button setContinuous: YES]; [button setAction: @selector (action:)]; [button setToolTip: label]; [box addView: button]; return [button autorelease]; } - (NSButton *) addButtonWithLabel: (NSString *)label bezel: (NSBezelStyle)bezel to: (id)box { NSButton *button = [self addButtonWithLabel: label to: box]; [button setBezelStyle: bezel]; return button; } - (NSSegmentedControl *) addSegmentedControlWithLabel: (NSString *)label style: (NSSegmentStyle)style to: (id)box { NSSegmentedControl *segmented = [NSSegmentedControl new]; [segmented setFrame: NSMakeRect (0, 0, 200, 32)]; [segmented setAutoresizingMask: NSViewMaxXMargin]; [segmented setSegmentCount: 3]; [segmented setSegmentStyle: style]; [segmented setLabel: @"First" forSegment: 0]; [segmented setLabel: @"Second" forSegment: 1]; [segmented setLabel: @"Third" forSegment: 2]; [segmented setTarget: self]; [segmented setAction: @selector (action:)]; [segmented setToolTip: label]; [box addView: segmented]; [self addLabel: label to: box]; return [segmented autorelease]; } - (NSComboBox *) addComboBoxWithLabel: (NSString *)label buttonBordered: (BOOL)button to: (id)box { NSComboBox *combo = [NSComboBox new]; [combo setFrame: NSMakeRect (0, 0, 200, 32)]; [combo setAutoresizingMask: NSViewMaxXMargin]; [combo setButtonBordered: button]; [combo addItemWithObjectValue: @"First"]; [combo addItemWithObjectValue: @"Second"]; [combo addItemWithObjectValue: @"Third"]; [combo setTarget: self]; [combo setAction: @selector (action:)]; [combo setToolTip: label]; [box addView: combo]; [self addLabel: label to: box]; return [combo autorelease]; } - (NSPopUpButton *) addPopUpButtonWithLabel: (NSString *)label pullsDown:(BOOL)pullsDown to: (id)box { NSPopUpButton *button = [NSPopUpButton new]; [button setFrame: NSMakeRect (0, 0, 200, 32)]; [button setPullsDown: pullsDown]; [button setAutoresizingMask: NSViewMaxXMargin]; [button addItemWithTitle: @"First"]; [button addItemWithTitle: @"Second"]; [button addItemWithTitle: @"Third"]; [button setTarget: self]; [button setAction: @selector (action:)]; [button setToolTip: label]; [box addView: button]; [self addLabel: label to: box]; return [button autorelease]; } - (NSPopUpButton *) addPopUpButtonWithLabel: (NSString *)label pullsDown:(BOOL)pullsDown bezel:(NSBezelStyle)bezel to: (id)box { NSPopUpButton *button = [self addPopUpButtonWithLabel: label pullsDown: pullsDown to: box]; [button setBezelStyle: bezel]; return button; } -(id) init { NSScrollView *scrollView; NSRect winFrame; GSVbox *vbox, *column; GSHbox *hbox; NSButton *button; vbox = [GSVbox new]; [vbox setDefaultMinYMargin: 1]; [vbox setBorder: 5]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 300, 100)]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; text = [[NSText alloc] initWithFrame: [[scrollView contentView] frame]]; [text setEditable: NO]; [text setRichText: YES]; [text setDelegate: self]; [text setHorizontallyResizable: NO]; [text setVerticallyResizable: YES]; [text setMinSize: NSMakeSize (0, 0)]; [text setMaxSize: NSMakeSize (1E7, 1E7)]; [text setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; [[text textContainer] setContainerSize: NSMakeSize ([text frame].size.width, 1e7)]; [[text textContainer] setWidthTracksTextView: YES]; [scrollView setDocumentView: text]; RELEASE(text); [vbox addView: scrollView]; RELEASE (scrollView); [vbox addSeparator]; hbox = [GSHbox new]; [hbox setDefaultMinXMargin: 5]; column = [GSVbox new]; [column setDefaultMinYMargin: 2]; [self addButtonWithLabel: @"NSButton" to: column]; [self addButtonWithLabel: @"NSRoundedBezelStyle" bezel: NSRoundedBezelStyle to: column]; [self addButtonWithLabel: @"NSRegularSquareBezelStyle" bezel: NSRegularSquareBezelStyle to: column]; [self addButtonWithLabel: @"NSThickSquareBezelStyle" bezel: NSThickSquareBezelStyle to: column]; [self addButtonWithLabel: @"NSThickerSquareBezelStyle" bezel: NSThickerSquareBezelStyle to: column]; [self addButtonWithLabel: @"NSDisclosureBezelStyle" bezel: NSDisclosureBezelStyle to: column]; [self addButtonWithLabel: @"NSShadowlessSquareBezelStyle" bezel: NSShadowlessSquareBezelStyle to: column]; [self addButtonWithLabel: @"NSCircularBezelStyle" bezel: NSCircularBezelStyle to: column]; [self addButtonWithLabel: @"NSTexturedSquareBezelStyle" bezel: NSTexturedSquareBezelStyle to: column]; [self addButtonWithLabel: @"NSHelpButtonBezelStyle" bezel: NSHelpButtonBezelStyle to: column]; [self addButtonWithLabel: @"NSSmallSquareBezelStyle" bezel: NSSmallSquareBezelStyle to: column]; [self addButtonWithLabel: @"NSTexturedRoundedBezelStyle" bezel: NSTexturedRoundedBezelStyle to: column]; [self addButtonWithLabel: @"NSRoundRectBezelStyle" bezel: NSRoundRectBezelStyle to: column]; [self addButtonWithLabel: @"NSRecessedBezelStyle" bezel: NSRecessedBezelStyle to: column]; [self addButtonWithLabel: @"NSRoundedDisclosureBezelStyle" bezel: NSRoundedDisclosureBezelStyle to: column]; [hbox addView: column]; RELEASE(column); column = [GSVbox new]; [column setDefaultMinYMargin: 2]; [self addSegmentedControlWithLabel: @"NSSegmentStyleAutomatic" style: NSSegmentStyleAutomatic to: column]; [self addSegmentedControlWithLabel: @"NSSegmentStyleRounded" style: NSSegmentStyleRounded to: column]; [self addSegmentedControlWithLabel: @"NSSegmentStyleTexturedRounded" style: NSSegmentStyleTexturedRounded to: column]; [self addSegmentedControlWithLabel: @"NSSegmentStyleRoundRect" style: NSSegmentStyleRoundRect to: column]; [self addSegmentedControlWithLabel: @"NSSegmentStyleTexturedSquare" style: NSSegmentStyleTexturedSquare to: column]; [self addSegmentedControlWithLabel: @"NSSegmentStyleCapsule" style: NSSegmentStyleCapsule to: column]; [self addSegmentedControlWithLabel: @"NSSegmentStyleSmallSquare" style: NSSegmentStyleSmallSquare to: column]; [column addSeparator]; button = [self addButtonWithLabel: @"Disabled Button" to: column]; [button setEnabled: NO]; button = [self addButtonWithLabel: @"PushOnPushOff Button" to: column]; [button setButtonType: NSPushOnPushOffButton]; button = [self addButtonWithLabel: @"Disabled PushOnPushOff Button" to: column]; [button setButtonType: NSPushOnPushOffButton]; [button setState: NSOnState]; [button setEnabled: NO]; [hbox addView: column]; RELEASE(column); column = [GSVbox new]; [column setDefaultMinYMargin: 2]; [self addPopUpButtonWithLabel: @"NSPopUpButton" pullsDown:NO to: column]; [self addPopUpButtonWithLabel: @"NSPopUpButton pullsDown" pullsDown:YES to: column]; [self addPopUpButtonWithLabel: @"NSPopUpButton NSRoundedBezelStyle" pullsDown:NO bezel: NSRoundedBezelStyle to: column]; [hbox addView: column]; RELEASE(column); column = [GSVbox new]; [column setDefaultMinYMargin: 2]; [self addComboBoxWithLabel: @"NSComboBox" buttonBordered: NO to: column]; [self addComboBoxWithLabel: @"NSComboBox buttonBordered" buttonBordered: YES to: column]; [hbox addView: column]; RELEASE(column); [vbox addView: hbox]; RELEASE(hbox); [vbox setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; winFrame.size = [vbox frame].size; winFrame.origin = NSMakePoint (100, 100); win = [[NSWindow alloc] initWithContentRect: winFrame styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; [win setReleasedWhenClosed: NO]; [win setContentView: vbox]; [win setMinSize: [win frame].size]; [win setTitle: @"Continuous button test"]; [self restart]; return self; } -(void) restart { [win orderFront: nil]; [[NSApplication sharedApplication] addWindowsItem: win title: @"Continuous button test" filename: NO]; } - (void) dealloc { RELEASE (win); [super dealloc]; } - (void) action: (id)sender { [text replaceCharactersInRange: NSMakeRange ([[text textStorage] length], 0) withString: [NSString stringWithFormat: @"Action sent from %@!\n", sender]]; } @end gnustep-examples-1.4.0/gui/GSTest/NSButton-test/GNUmakefile0000664000175000017500000000243210564603216022503 0ustar fedorfedor# GNUmakefile # # Copyright (C) 1999 Free Software Foundation, Inc. # # Author: Nicola Pero # Date: 1999 # # This file is part of GNUstep. # # 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 OBJCFLAGS += -Wall # # We are creating a bundle # BUNDLE_NAME = NSButton-test BUNDLE_INSTALL_DIR = $(GNUSTEP_LIBRARY)/ApplicationSupport/GSTest NSButton-test_OBJC_FILES = NSButton-test.m NSButton-test_PRINCIPAL_CLASS = NSButtonTest -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble gnustep-examples-1.4.0/COPYING0000664000175000017500000010451311447133133015036 0ustar fedorfedor GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS 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 state 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) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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 Lesser General Public License instead of this License. But first, please read . gnustep-examples-1.4.0/ChangeLog0000664000175000017500000000207112205446270015553 0ustar fedorfedor2013-08-22: Adam Fedor * Version 1.4.0 2013-05-15: Sebastian Reitenbach * gui/Classes/NSPanelTest/NSPanelTest.m convert to UTF-8 * gui/Classes/NSScreenTest/screen_main.m some NSInteger conversions * gui/CurrencyConverter/CurrencyConverter.h the CurrencyConverter honours NSTextFieldDelegate protocol * gui/ExampleService/example.m fix implicit declaration of fork and setsid * gui/GSTest/NSTableView-test/NSTableView-test.m gui/GSTest/NSOutlineView-test/NSOutlineView-test.m some NSInteger conversions * gui/GFractal/FractalView.m some CGFloat conversions * gui/GSTest/CoordinateCheck-test/CoordinateCheck-test.m move @interface before @implementation * gui/GSTest/Controller.m fix cast 2010-06-02 Adam Fedor * Version 1.3.0 2007-05-24 Adam Fedor * Version 1.2.0 * Update makefiles for new filesystem directories * Some new examples 2006-09-11 Adam Fedor * Version 1.1.0 2004-09-23 Adam Fedor * Version 1.0.0