This is Calculator.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ /* Modified by Eric Tremblay */ #import <appkit/Form.h> #import "Calculator.h" @implementation Calculator #define CANADA 0 #define USA 1 int Country = USA; /* Default country */ int dummy; /* Use as you wish */ - init { [super init]; return self; } - appDidInit:sender; /* This method is executed right after the application was initilized but before * the application receives it's first event. */ { [self getDefaults:sender]; /*This will reset/display the proper default rates for the country*/ return self; } - calculate:sender { [inputForm selectTextAt:0]; { /* Declare variables */ float CANADAdollar; float BritainPound; float FranceFranc; float GermanyMark; float ItalyLira; float JapanYen; float MexicoPeso; float SwitzerlandFranc; float GreeceDrachma; float OtherCurrency; /* Do the conversion */ CANADAdollar = ([inputForm floatValue]/[canadarate floatValue]); BritainPound = ([inputForm floatValue]/[britainrate floatValue]); FranceFranc = ([inputForm floatValue]/[francerate floatValue]); GermanyMark = ([inputForm floatValue]/[germanyrate floatValue]); ItalyLira = ([inputForm floatValue]/[italyrate floatValue]); JapanYen = ([inputForm floatValue]/[japanrate floatValue]); MexicoPeso = ([inputForm floatValue]/[mexicorate floatValue]); SwitzerlandFranc = ([inputForm floatValue]/[switzerlandrate floatValue]); GreeceDrachma = ([inputForm floatValue]/[greecerate floatValue]); OtherCurrency = ([inputForm floatValue]/[otherrate floatValue]); /* Display the result */ [outputForm setFloatValue:CANADAdollar at:0]; [outputForm setFloatValue:BritainPound at:1]; [outputForm setFloatValue:FranceFranc at:2]; [outputForm setFloatValue:GermanyMark at:3]; [outputForm setFloatValue:ItalyLira at:4]; [outputForm setFloatValue:JapanYen at:5]; [outputForm setFloatValue:MexicoPeso at:6]; [outputForm setFloatValue:SwitzerlandFranc at:7]; [outputForm setFloatValue:GreeceDrachma at:8]; [outputForm setFloatValue:OtherCurrency at:9]; } return self; } - getDefaults:sender /* This method sets and displays all the values depending on what * Country was selected */ { if (Country == CANADA) { /* open the If canada */ /* Default values for Today's rates (April 25, 96) */ float CANADAdollar=1.3621; /* In this case the CANADAdollar is a US dollar */ float BritainPound=2.0645; float FranceFranc=0.2654; float GermanyMark=0.8966; float ItalyLira=0.000878; float JapanYen=0.01278; float MexicoPeso=0.1838; float SwitzerlandFranc=1.1078; float GreeceDrachma=0.00562; float OtherCurrency=2; /* This assigns the default values in their proper form in the Today's Rates panel */ [canadarate setFloatValue:CANADAdollar]; [britainrate setFloatValue:BritainPound]; [francerate setFloatValue:FranceFranc]; [germanyrate setFloatValue:GermanyMark]; [italyrate setFloatValue:ItalyLira]; [japanrate setFloatValue:JapanYen]; [mexicorate setFloatValue:MexicoPeso]; [switzerlandrate setFloatValue:SwitzerlandFranc]; [greecerate setFloatValue:GreeceDrachma]; [otherrate setFloatValue:OtherCurrency]; /* This displays the default values in their proper form in the Today's Rates panel */ [canadarate display]; [britainrate display]; [francerate display]; [germanyrate display]; [italyrate display]; [japanrate display]; [mexicorate display]; [switzerlandrate display]; [greecerate display]; [otherrate display]; } /* close the if canada */ if (Country == USA) { /* open the If usa */ /* Default values for Today's rates (April 25,96) */ /* The rates below are for one american dollar in foreign currency */ /* Example one US dollar equals = 106.60 Japanese Yen */ float CANADAdollar=0.73287; float BritainPound=1.5153; float FranceFranc=0.19450; float GermanyMark=0.65671; float ItalyLira=0.0006449; float JapanYen=0.009381; float MexicoPeso=0.1349; float SwitzerlandFranc=0.81142; float GreeceDrachma=0.004134; float OtherCurrency=2; /* This assigns the default values in their proper form in the Today's Rates panel */ [canadarate setFloatValue:CANADAdollar]; [britainrate setFloatValue:BritainPound]; [francerate setFloatValue:FranceFranc]; [germanyrate setFloatValue:GermanyMark]; [italyrate setFloatValue:ItalyLira]; [japanrate setFloatValue:JapanYen]; [mexicorate setFloatValue:MexicoPeso]; [switzerlandrate setFloatValue:SwitzerlandFranc]; [greecerate setFloatValue:GreeceDrachma]; [otherrate setFloatValue:OtherCurrency]; /* Changes the labels in the Currency Converter panel and in the Today's rates * panel when the COUNTRY is set to USA. */ [inputForm setTitle:"U.S. Dollar :" at:0]; /* Changes the label in Currency Converter panel */ [outputForm setTitle:"Canada:" at:0]; /* Changes the label in Currency Converter panel */ [canadarate setTitle:"Canada:" at:0]; /* Changes the label in the Today's rates panel */ [inputForm display]; [outputForm display]; [canadarate display]; } /* close If usa */ return self; /* End getDefaults method */ } - setCanada:sender /* This method changes the Country to CANADA and re-labels the panels */ { Country = CANADA; /* Sets Country to Canada */ /* Changes the labels to be used by a Canadian.*/ [inputForm setTitle:"Canadian Dollar:" at:0]; [outputForm setTitle:" U.S.A. :" at:0]; [canadarate setTitle:" U.S.A. :" at:0]; [inputForm display]; [outputForm display]; [canadarate display]; [self getDefaults:sender]; /* This will reset/display the proper default rates this country */ return self; /* Ends setCanada method */ } - setUSA:sender /* This method changes the Country to USA and re-lables the panels */ { Country = USA;/* Sets Country to USA */ /* Changes the labels to be use by an American. */ [inputForm setTitle:"U.S. Dollar:" at:0]; [outputForm setTitle:"Canada:" at:0]; [canadarate setTitle:"Canada:" at:0]; [inputForm display]; [outputForm display]; [canadarate display]; [self getDefaults:sender]; /* This will reset/display the proper default rates for this country */ return self; /* Ends setUSA method */ } - findRate:sender /* This method will find the exchange rate. When given X number of one currency * and X number of another currency */ { float findRate; /* number variable */ /* Calculate the exchange rate */ findRate = ([firstCurrency floatValue]/[anotherCurrency floatValue]); /* Sets the value for the number findRate in the "exchange is:" form in the FindRate panel */ [findRateOutput setFloatValue:findRate]; /* Displays the result in the "exchange is:" form in the FindRate panel */ [findRateOutput display]; return self; /* End findRate method */ } - findValue:sender /* This method will find the value of a currency when given X number of currency and * the exchange rate of this currency. */ { float findValue; /* number variable */ /* Calculate the value */ findValue = ([youHave floatValue]*[valueRate floatValue]); /* Sets the value for the number findValue in the "value is:" form in the findValue panel */ [findValueOutput setFloatValue:findValue]; /* Displays the results in the "value is:" form in the findValue panel */ [findValueOutput display]; return self; /* End of findValue method */ } - closeInfo:sender /* This method closes the Info panel and opens and displays the MoreInfo panel */ { [Info performClose:sender]; /* This closes the Info panel */ [MoreInfo orderFront:sender]; /* This displays the MoreInfo panel */ return self; /* End of closeInfo method */ } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.