[comp.sys.acorn] Spreadsheet window in C

walther@econ.vu.nl (Walther Schoonenberg/10000) (01/14/91)

  I want to write a kind of spreadsheet program for my Archie (not exactly a
spreadsheet appliaction but a spreadsheet window is *included* in this appl)
in ANSI C. I'm wondering what is the best way to program a lot of spreadsheet
cells in a window. First I thought a lot about writable icons but I think
it is not good programming to include hundreds of writable icons in a
window. It would make the program very slow (and it's a bit anti-social).

  The best solution I 'invented' is this: draw a grid in a window and let
the user select a cell. Make there a writable icon which will be deleted if
the user selects a different cell where a new writable icon is created, etc.
The only minor drawback of this is that you have to draw all other cell
contents with MOVE en PRINT equivalents.

  Is the best way to do this? Do you know a better solution? If so, please
email me.

==============================================================================
Walther Schoonenberg
Vakgroep Econometrie
Faculteit der Econonomische Wetenschappen en Econometrie   *       *    * * *
Vrije Universiteit                                         *   *   *   *
De Boelelaan 1105                                          *   *   *    * *  
1081 HV Amsterdam                                          *   *   *        *
The Netherlands                                              *   *     * * *
(020) 5483609                                              walther@econ.vu.nl
==============================================================================
Disclaimer :  The views expressed above are those of the author alone and may
not represent the views of the University.
==============================================================================

x51@nikhefh.nikhef.nl (Excursiecommissie) (01/16/91)

In article <734@.econ.vu.nl> you write:
>
>  I want to write a kind of spreadsheet program for my Archie (not exactly a
>spreadsheet appliaction but a spreadsheet window is *included* in this appl)
>in ANSI C. I'm wondering what is the best way to program a lot of spreadsheet
>cells in a window. First I thought a lot about writable icons but I think
>it is not good programming to include hundreds of writable icons in a
>window. It would make the program very slow (and it's a bit anti-social).

The approach used in most spreadsheet programs (i.e. Excel, Works) is to use a
separate input 'window', the input bar, on top of the screen, just below 
the menu-bar. This could ofcourse be moved above the icon bar on the
 Archimedes.
In this way you have only one writeable icon, and you only have to update the
cells' contents with a move and print(f) command. What's wrong with the move
and print option, surely it's one of the fastest ways of doing it?

Oh, and another thing: If at all possible, make the width of the cells variable
with the mouse, (Also the standard Mac way), instead of typing in character-
widths, (the standard dos way).

Axel

maumg@warwick.ac.uk (Pop Mobility Freak) (01/18/91)

        Here is a little a application I wrote after being feed up of how long
it took applications to read in the names of all the fonts I have upon
start up. What the application does is to intercept any calls to the SWI
Font_ListFonts (this is done intercepting the SWI decoding and checking for
this SWI. I know this is unpleasant but I cannot find any other ways to do it
as there does not seem to be a Font Manager Vector to intercept (unlike
most the other modules, Draw, ColourTrans, etc), is there one Acorn which
is undocumented, or any other way to it for that matter?) and instead of
reading the fontlist from disc it is read from a prepared list in memory.
        How it works in is the UUEncoded file below there is a basic
program and some documentation. You have to set the system variable Font$Path
and then run the basic program. This will generate a module in the current
directory called TurbFntLst. To improve the speed of the font list reading
simply load the module. Then whenever a list of fonts is tried to be read the
path is checked and if it the one the module "knows" about then the list is
returned from memory otherwise the call is passed onto the font manager for
processing.

        Yours,
                Pop Mobility Freak

__________________________________CUT HERE______________________________\O
                                  CUT HERE                              /O
Filetype: &DDC
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 TurbFntArc
M&O]296%D364 @20SA(%0S ,  #$627W:XQD&  !"____G+,:Y0,    0"D (a
M'"B0"IHT<T"T>4.F#ILR"L.L*9.0#AJ(<LJ$(9/&S1D0;\R L C1S!LW=-@@a
MI,,"A$DY(,* .)/&3ADW(."$L<A"@9TT<NC4"<.&31X0'>?0"8.2:9DW=>:Xa
M !'$S=$Q1-E4? ,BX\:1%UV>3+D2!(HY=<:@B9GPSD4W"L+ @:,2*YTT)Q,Ja
M#1,41!TX*6)F1(JRC)PQ9>#0*4,FIIO&:422%(M2IT408LIT_.@5<L6+"DY"a
M%+'&S9L[;D2,Y#IY8<.'8&_&IDQ6*=*$&87*<</8I9PW;12662CG:)@YH>>^a
MF=.;#M?,F[MJ;&SF=W".<\9,32(YK,G*.]="]RC]*T(0ING,%JT@XY@W9]P@a
M["WF:&N&#B&2Q#D9:]';.1W'7&-CL>;=6&TP%<89AKD0$$$#4<'5&%XM-IMKa
M^8' G'J3V<%7&F&( 9L18Y$ 17BKS991''4 U9ME:"B PDL@E(%'&&W0!5%]a
M() !E8@0C5'7&M&=%!,((9"(4D(<N>=<<8$QU=A^7=7!7UA"')?&& K \=L9a
M<N!(&%CG-5G&&$_F,540"N$'FW\/-49%'7*(801*3-AV1QK_9:9A&#9!=F49a
M"HQ!9T8H]>@BFF\4-]44:>1H% ALO/'5?:_IQU54$*5!QU0&080A;&'4X5R"a
M=\&9AP(;?@:1AW* ""0(2M)A(HK.S>8A&W5TJMX=QX'@EFR89@AL0A1JM!@9a
M"I1A4W$C1:I?6*-VFE!'GH*HTH!FI;'C45(TP82E9+04KA16@@13N%2D048>a
M*4R5!52LH@$5&XWYB55&9CB48H(3:4CGM#O-]IUZ";JQH&$ AH'F4$4=5>E&a
MO0T+5U31671>M6RA-^%%8ZPA%DR> I@@&1!)B=2O?+*A81G#I2@775ONA)<;a
MR%E4\&0')\17RA[R&2*I;%@$U1EKD734GO\Y\005F'7:74D(*LB@' H@Y,8)a
MZDV,,AD./@@A547;6P?2("0! AJ ZD?1LF0FY"5\809G1AA 36KT;V>C,:G:a
M(9G!L&D*G#$4HHM!Y%;!<W#E;(,@"&%J3@\=AU%BC:K'U%%BG)V0259.^4:7a
M;9@!1!UKN."P"\#*L6?(+HPAE=@0&G3>W&"*>5Y'L\%1AXA;]@@<WCBIG"#Ga
M)654QJ3OP>%M8\%6ZE%<"9D&@EI\,>CS8"=33;+FC\7M$I_64EJ&&>I9B;U'a
MC,D+541'<:K 9(W3B1A((ND45$(AK3QF'E"!R6EP@KNZ^2PATON(VL24+(XLa
M*VQC$\B\Z#2'GD3P@FEC"E7FX+<RK H:_U1U<F)&;G13<F, @5"3%   ,!;.a
M$!=3H2H  $+[__\Z+$SD P   ! - "B00 ^$#Q!4ZL@18\0-G2ERQ@2DT*%@a
MDC!N0 29@X9-F3P@E&"L$T8.R!@Y<L0(Z %(P29AUI0!,28,&S9S0-!Y T).a
MF3!D0)AYXS!GFC9MRI!)$X;.S*%R0!"=":<DG31CZK I":(J'30!400I",6Ja
M5#,ZT<P<\X;,S#MA<M*)62:C&3EOVF@D8F3*G#MIJ,@) P>$&)!37("P@U%Ca
M23)T LH@$)#'@74@8 0TLD">S#QSRD0& $6"O+BAVXCQ^"6-FS2CM420YQ/Ha
M4(=>P0(@T^#TG-2KRP1TXX#V3S*WZ<P)B">!O#EA[ @'(*@ N(",* .P1*$;a
M"-_ 6;N&'1"4AC9A\'Q)_F5.&CUE2H#H <*$#!CX ZK*,*?JF/@@!"B@@/3%a
M4$-^ - R@C<TM05@?V'\)]\*(*"G'GONP5="0+YHA\P%?Z7Q!19?B ';?"#$a
M  (//*1X0T#2:,<-!7:LM]49**K((@@RX!"0.12,86,8.!:X8HLRY! 0/!3Ha
M,621*1X)P@R: : /!6X\F:.4,ZP4  &4!># !NRQD<8<="27$WTFT("?2@T$a
M@$$!X<0I0I@L3."=<;8114=N<=K0@#J&U6&&&67(L6$ 0-R@0A)HB<"#$7Z2a
M4-97/HB H@B:4J%61D7(@5=4,(! J4.6-H4&"'6X$5ID 2@1 8-B&(JHHCS6a
M(&@ 5!R!3"8@B/#$%%](<9P5)2'+A@@LB' J':E^Q6RMAR9: @LRZ,H"#"S,a
M  (N(+# 0G*Y?>&1&V=\M:@7(5![:PD_D*NJN76EBX9\!<X0)QH6R/L5"3V0a
MX*ZU<<I!9YQ\A&G( WNB5H9J'L4)20;Q!+M1>*[AV$9;6I4A0IR:6#".5'#0a
M44(/,<CP;8HT@( (CW&2XD" 3YS,EEN+NJ) @%"<K%D N% 0(!,GUPP"A1!*a
M&*<P83)3P!9Q6H/!@ .^43+55IL<)SAAJC/%#B"T(/;89)=M]MEHIZWVVFO'a
M2<\$8#?!L4<@J 54HG'Z<Q#5 9811QU!"5@JWX07#@+83O"$IEE D>'3;PT(a
M@  1A?L-^(#CT6'XYH>#D,1K5]ET9E-I$ 5"XX\O)X $0E3^=^ !FN&:39P7a
M#K81LYL)W56FHUX&Y )PH(3KEPL8FAQV8#53[0."/46BR?]'DTULU(T1&1Y%a
MY3OP)K1.N.6P5SAW&5]<10?=G,<]ODZPT;V]ZC $07SX&Y/1\1=JL5%8[>K;a
M3W?^A7E?Y'2P-[Z!;T"#8Y[M0. &GK %*=>;PPL &#DB_&!^"%2@X<#60!"$a
M*"=SJ ,<X/ &.3B%-P)P0@4P*+C(86&%WWL= B,G!A@:4(8M%  ;*", .T3 a
M!?6[G_DB)@! H(!X.1&0"!*RD#<\BPEG<HH<1+""7FA& (J(0.%$=P8W1(X2a
M$ #B^/!7!OU%SA-'C&$=DAB@)2I$#$[T$Q31E"@J]D)) D!%"Y X(!'$P 7Xa
M 0$*J!B,2)" !35@00QBD((5B" %=KRB++1(."YZ40"\X*$QOA8VMGGRDZ ,a
MI=DB!XW.!9%NF6.*[DAGNIL)1P#:, '87"/%_USM#FKQB0<!DY.2S,0MKD0Aa
M.1+@@LQ%SATD*!R:VF &V,DA!C,( 0OV( <8M$ .-&#!,VG0A\CA(YF5=!S5a
MJCDN/Y7+#6%(2@,&( #YA#,J WIF.7$S+\:PH0["&0 #3% X-H@SGC*8YY_Fa
M=2Y[K=,"&2C<QNPPSAFP8 2:&0 ($DJXA8XSFQ!=IPI&H$S 4$T$6!C6%YY'a
M!V3)05D?&P -P,DW?S+3F="4)C6MB4UMQH";Z_2!!A3Z!CO8X3<!@L,8;$J#a
M=2)! <4$G0S6*0664FV9S130,Z,YS6I>,YO;[.8 N  $GC(TGMP:@0E@@ ,-a
M!LAY5TC"8LHPAIUHCPR.^]UR!F &CKYSG#%@P;!"] 5@.FB=<-@IX5;#MX66a
M00QR6*<>.K#%?TJ56XC%R!C ,@!"=+6B/<7K0\=:5K.B5:W2:6L)3P?7U*W3a
M$8+E&V&I9EC$KA,33AV02Z,:H*G*U*HU%6H?O+!.45!F *R0@ O\A88OH%.=a
M ["%IM3(QF ]*UIHB.0Z@4%)OEERG<J @@OV"IB^LM5!9DT?" !SDP8Y) RNa
M,<Q@W#!9G?#D*S,95H/<LDYJ((&% 1HK?O8;2 6"#9=8614<\/*?W_QNEVF8a
MWDWFX()U>F,!+H@L>RF+#B@43@R$HV6BDK*4IBQO<V ;@I_P@I/QYG(F)BBKa
MA-M[)A"<X0T9:_  Y)$!%^ R4>0K4Q35M$Y^+/>&Q8N=G\RU8S\MAP &H P!a
M(,!)43KYR5 >6P,(H $/@.V43\G=Z'B7$5=.F00M )M/# L"#4>D#+<\,8)[a
MJ4N_NH4W!' !4F6'3C9,&0>Q-1X=7BK5F%:5I@'-ZI2%8%?K.K:VW.*NB-PLa
M' (P80->U:Q8R3IE*Z26:JL=4&L32P PY#E LX4I56=ZS8#JEK<$4(.2'P*Va
M*+OZU6TC@!\T +;C16\MU+.>&["'-P(@@@$NL+7RIBP)#RASS[3MB9^I>=-Na
M$H 3!:2:4^(@Z3;5(+RU+L-,TH"6 9?AFK\3S91-05'5>H3: J*S3:8,BPL2a
M;MK5EL$-L.U!;9>YVV] $[A?-65=E!O3Y\:<4J=,# L3+M1]'O6I_7LZ-L %a
M-%UQ6%!,AX(TS.29K)HP1LZ@E!1,V1E*QD:384WRDK=@RN*(@9C?4(>KN.' a
M:U2*>^NM.1&J5[*K<@V:Y%"'MI;.55-FAY+M >'(EK8!!0# 9?D&55'?-J]9a
M%>_BQK &9;?L?0TN@ +^K>G,QA/JFBD !2!]\$/WA%M;>&87D.Z!'[/6ZX_5a
M)K=P4KU)^Z@ @XPT6.7.@KA$9=*"*H ,CM#8\)V=[QC7(-@:-_.:W"1CI(TKa
M4(6*=!X8.YR&)R<Y[8YT(S"AGV3@<VV7+<^%@[@GHE%(1M8(^:G+)"C;C+P<a
ML@X%RA1 "Q!&G6L+0(:E/Q793J\JU)LM];E0W>JREVO6W< !9=8!PWN79S61a
MCH?+,_WYX^36YCF+=$$8SJ+1YY;?03""I1: $9^6BJBRSW>Q_H2_^2F )3Y?a
M=M$K>]2E'\-NQ>L3.JB>5>Z!+AYD?*^'?*B3=:!@>ZH 89N&=+3@>P/2= EWa
M6X%&?*?G>@986LJ'=+[ =0("?E)5@4B'#$9P8=6#:8-16N'5.1RG.2NV*DV1a
M%BUV@$@G#4Z@=WTF=RO8.=?3('  $CNA;#V .C/W@NZ%=-S@@0$"@HBF3>9Ga
M#O<U6"<X(+H'3YY%$[7A%.I59JY"!U%Q%WEQ>,^$=/"@A.+S53DH!^:G#S9Pa
M;%;8A&D7 UU ;VA20ML6&4E&?RT5>LEF6U5E:OKG!?R7>G*P>@&((ZXG<[%'a
M@P;@ )1A !@P<B8WB5#6  8@ BX -JZD8!X1%#>6$8T1(F4F%SPA!K_T76]Fa
MB2SP0V;&84SA%)9H ];W>_;GA\R&4P8 !"%P;+5(>C25,MUD $HP!3M8C)WCa
M*2W68FCP!G<  E*0!%,P!/)U%'#@$4E1%&DQ$R%BB53@;L9(;VX&>7C1<JY1a
M!@UF %YP A>&%7A5@=E$?B9@!$, ?_IB &@P!*#WALJ65W$84"/0 C0PAZ=Ga
M!*+17J*H<U[8<UQFB7) 'X/%CE\W?'DE5D9@!/"70 ("-D6 !UX8(9KS!'"0a
M*-=CB7P0;0-B(F. 5Q+Y4'Q%(B:B.5038D0A'28$ EBP9B#P Y9H"!12=OI(a
M3C?F$^LQ9+J3)D9FB9" C^_F-^SW3"I"A_;&;4)!E$56%):H"7J(:2]'-57Qa
M&ZT!DXHW7G'A!B>@.7/ $QZA.<\8C?+%:&6&AZ1 C-](;YMX![_$$^E5C1$Ra
M$V^ %L_R!7-$!\^R' ;@"A^0C^,44''H4".  VMG +A@AO &4 ^E&08@#.DGa
M!EL9@=K6&F;0&@Z1*+:$A\Q@./[TDPZUF ^5,H]I#91#.&/0!AD13XSYE%"Ya
M;6C!>@+X7)<"%@8 #FYWDDPY(+IY!D-)3U]AB>I@ADPHAO5(#WMT5U_' EDAa
M*G5!!\<Y4%_Q!?:$3Y;H#V176'!76_Z8+8)R  BPBX0CBGT44L1R!%,@&!@Qa
M!Q]S !*0 A<&FVI!=<:53N1S/?2"+LEY !PP 2Y0G-D)* =@ ND'%#_)+<35a
MG^IT -;46#^95]7I$PZ1H/5D$]YY #H0GF^'AN3Y4.;9  = !,PYGCW!F)IQa
M $ZPHB3:$QBE+P> !>G'GDKDGL5R+,EB$_4I!A H(),9@I6Y@]DV$XPA!TP1a
M'!G';P? !L-3?WX35;:(6\ H7E)YEJC'%C39<-53!%@P!$4 !51@=2AJ!U*@a
M4';P<NC6$_Z(D6'Y*D)Q(S/G&DM1$UK801NC2T%8&[QQ (#067N8%'%@I<MFa
M>OR3C1GA$=$A' >@"#+*?AEU )1@DGJV$'L7ATXHD(M:AWZZ8;/C5BCJ"1K@a
M I/%5FL@H?^Y:P%J4 > "OSDD^P7H04UH++PFGQ3I$VHADA:;[AI/4$!'4D!a
M K<*%@? "S<X6)LI( /V!@4V!R62!]F)'NC$<? T2VB1EE/I$!6"$422*%U!a
M8'+%B2AJ#.YD: \J4.72G9 *#0^ JONYJL0*J=HPB[+E.-!76ZE935VPFBA*a
M#O@J(*>YKS3* G'XKR.P$@?@#I(YG%+E4-B$HOB@ A?6K$%%KEYY&-4*KMC:a
M  @0/,XG!LVEADX(L C   ,;()KY80&2JOQ9KR!K 2MKK/H:3]F4L"B[(H43a
MF_LC535JFV'9@CHAJNA$J@B@ A8[6!S'E1HKK1R;'-8:KHF% #2P!&Z8F"Q@a
M9J.I)7R3;9IC!G;*I7;)A;6$9IKC>':& #Y0 <'6F=P&FF=;,B"+!.E*-:?)a
M?ER+MD\"LE+PL&_:A!F% %RPM*J%L>,*K7(UK1U[K7B# &:@JWC+A\%':L\Da
M WTPB%XJKKDFIF1JIFB* ' PJTP'?!/X9]<$=3-P5=V$ 'I NI.[KFY0!ZJ1a
M*%_0E]FY' A " :WJQ#;JRJS@DEZ;]8C'0T'J" !J,8:%V'K)R#K"$_ IFYJa
MI!#UJUNJ.*)1IT0R'P?!IW8X<X *LI@ N_EJJ(B*?[^H3:N+3:TK"H0ZN>8+a
M>XD:B P'7XWZ$](!LJQ@. Y:JU2))B!K"S):LA*[5 @ ##5KBH$[E:U"!MD)a
MLLK@ ,.%IP^, -1  1/LJNSA&B]7M=Y0LP6+LPCKKRB+#I<V(+QZL&+%&P@@a
M#X6FE2XK%!2\P6[0P2#+#\VWGL]'P.H+L E@ (S%K#%,9PZ<' V0 ! 0KT/1a
MP ^< !I@H&SQ@]G)JD=, B!\LT [PC"@L"M!3#6[<P9;4SJ[L$>, R=,I+^Ka
MPB; &PD@!,$I("U+-5%,K>QQ7,*1 $R0PX:6>8'FCUUL!>1+L)1[NI:KNJQ[a
MQ&#@+?77A_.[?\P#-HZ:OPF@:D=,!\#6E=)*'@G@!^I9J(R,OJF+N4>,"%?<a
MB_C7;$<L"89CL *B:-[E90G "921 *:P 2[PK-'*N%+KL7B3 + PJ7M'Q@F@a
M"TV0M7NWMR7CM3%)<]J+(T$('2!!!D11EF8KFFA[Q,1@AIF6;KESQ,[0R?#[a
MR;?UBZ*< -APMQ'H4>WYEX$YF!^3 .) >%+(-YD3O/3V%2VFMN,:;LAS8&)+a
M),N1 .Q0S(M<N;H5EI'\%#?22SG1?ZHG<X?1K9&1 /9P;7-YA5/[L0H  )2Aa
M  H@B908TJ#4  I  3@P2Z%Y9E?SSSC2@[X4!@ H<\_L5C/!FZK"A23M 0:*a
MS-C)TB2- C9$-0?40@H@ [:<H=?)H=OIKB3- WHLU'_37,20,CC  E;D<0I@a
M!$\]()8CU51MU3" U;5'TEH TB)]UFI#TF0@2Q(=<5]Q.KMFK/7RUJ J<R=&a
MTFZ P;8ZUV"A 'B0?D,M9,A97,>Z(0H@" 8:H4RM (Q@.%T](,1% E6D&0I@a
M"=5%-=>E  E(TJI@UFC]V65#TK2@<MEHK%%T%A*=$^15/:8X@'88%&%@!E)4a
M-SA&TKZ P;-;NW)PNY_)8PJ #$'-U3@4()0M#1*L8P"L -Q0 &NG .:@ .U a
M,EJC /!P, J@#Y2Q $NV)X#*8PO@ "* W":#(N)]-/,5'PVP !A  BI 4@CQa
M1G'D$(&9*$SP!G<3%"*0!;_S,0L@ CZ@ E+0!$7@*@HQ$TP$1T\41>(* X!4a
M*E7@*ME[X/%-!_,M!_5]W^G- D/P*)'" Q*>X'1DX?;]9IFR(@?!*0CQ*<[8a
M!$N0!N7UX7*DX(FU &VH @].IS NWS)^X:FX $!@ 15S B)@+$ !>6K"WTI@a
M ;EMBKN-NVKB,^E-!050#^GM!<OZ*\XU9.UL9,PB4$2&)M>RY+;KY$9V+2V@a
M(N B+F+>Y+U=YNF-!D%\#@Q$NTS.V[E; CYPYB# ".FMCQ6C"-Q2 RDP#&MNa
MYT^>WGPPBQ5# N)= CM #&[2+,'B<0M@"&DDV-A9E!-"'ZF  HS^OR:#GQ2Ra
M$@L "18=("&  H5.YMA((:Y4 OA)'ZO>YD6Q(0N@"3HP('+>Z 8A2*]NWDD#a
M(!1B(5.<(?&!GWR^ *2@!7Q3,4/>&"RG.7W9$V\0AC/]O?"5VF *K1[F07DQa
M$WTZ$Q$]61L'>720[>[*WZ[@C0+B['0:A.Q![,8N'WE)KO:C2PX#,>23.2[ a
MW[BP 'QS'0L@# DP(,V0WLQP  %R\ M@#1G0#W.NVX9>YCUPYND-#@>S .J0a
MW?2P 'L"'?F[ /X Y" @Y%,0'9"'91_#  @0 _\0+"=OO ?>$!2.)L&R L/@a
M!Z_N2#>?\XW>  P@ 2'P\B) 4E20!R'YW@M!\TQ@\W+C/QX#]!QP,/M$&0R@a
M&7OR&?S& #HP 2JP!$60!5%"!6GE!$^  WS0!$!/!!;P]6'/(R P!4%@!460a
M]E)0!4Z0]D#O!!W@]F+O+2K !$\0!)0S\_*-)GK/ "_D]R#0,BKP+$/0%(DOa
7!AS ^-?&XTK/$ X!$6.0^&QP,/\ &H Sa
 a
end