Rebol [title: "Database"] ; The function below watches for the GUI close button, to keep ; the program from being shut down accidentally. The code was ; adjusted from an example at: ; http://www.rebolforces.com/view-faq.html evt-close: func [face event] [ either event/type = 'close [ inform layout [ across Button "Save Changes" [ ; when the save button is clicked, a backup data ; file is automatically created: backup-file: to-file rejoin ["backup_" now/date] write backup-file read %database.db save %database.db theview/data quit ] Button "Lose Changes" [quit] Button "CANCEL" [hide-popup] ] none ] [ event ] ] insert-event-func :evt-close ; The code below is the list-view.r module in compressed format. ; It's decompressed, and then imported with the "do" command. do decompress #{ 789CCD3D6B73E3C871DFF52BE6369592F67629905A9F73A6B2A7B2EFECD8E557 2AE738A96221551031142181040D8092B8A9FC97FCD474F7BCBA07038ADA3B3B E6D56909CCABA7BBA75FD333FCB75FFEE28FBF538B33A5FE54F5B59EAB377FFE CD77EA77BFF9FE4F933FFFE697FFA17E552CF51B28FD558585FF58575D3F79AC F4D3650B2F7FBEEFD74D3B578B37BFD6DBB67A50BFAF1E0A5DABDFB6504D6F3B BD7D9343B56F9BDDA1ADEED63DF47E359D7EF55EC1DF9FAA89FAF5EF7FABBED3 5D75B7C521BE6D75D1EB728EA55F4D665793AB9FC1DBEFE01DBDFAE9643A9B5C CDE0D59F75DB55CD76AEA697D3CBABAFE1CDEFAA250E3757FF0D0F4AFDE2FBEF D4C5D3D3D365B383D7CDBE5DEACBA6BDCB6A53ADCB6EBB72621F2E77EBDD5B6A F5EF9D5645AF0E505F354F5B059378B88492FF81FFFF75DFEE1A1AE05FF456B7 45AD76E68D428C2042D453D5AFD5A6D81ED40AE6B16F75A7564DABF650A7DA2A C0EA2576F487A6F760FE695D411D40AC827F8BC7A2AA8BDB1A619853F1BAEF77 F32CC379AC370F25E1E9B27CC85A7DDBD499A74426690218D39B4615DB52F5BA EB9705CCF787765E428FAEF36609DDB59A7509B3DB140FBA6C965738E30DE0F0 F3A7D03FF79FD972DD6FEACF6B3A013AF44D7BF8FCC17D0F1608A4F4AFCDAB39 2D2EA5BED740F71FDC717E969F9D75FDA1AE3EE96C53C02A6BA97F6AB0AA740D CBE7177FFC4FC38C66E00EAAC25279BE9AD2A32EEFE01109465FD5C294CF9E67 4AAF567A098BF4BCBAD58FB08C974D8DABFBEA27B0CACCFF3975317C4FAF57CD 161A6F9BADA6C75DD1167620FCAA164F6DB1BB99AB555177DA74B4AA8BBB0E10 4480ABBEB8BDD5A56A352C9EAD6AB693FD76D52CF71D30D86EDFDB165AD7B6D3 65FF3CE9F5739FE9B2EAD56D050C6F26ACA08BB22D9E60A8FD7609BD830853C5 B257B05E735745A96AA58ABA560B605FAA714ED3EAD46DDD2C1F6EE85D665EE5 2AB452AC60AE76D5F281D7343DFDF337808B65514FF0C9B7CCCFE4BFA5EE09DB 1E614A358FBA152FF4F6AE4072451301EA6C7B3695FA71AEEE748F2B713537F0 00CAA1CE24FEAECED9836FDF01BB2CD7D4359F69895290BF008080AF80E5F45F F6456D70A4904DBFCCC284D562BFAD51DA1375F2A8036413A069B66D26DDBA79 A22EF2A886E9710980027A9AD5AAD3D05733A117664C4240668AA2C6BE57F69E 0F80388E60024ED836FDC44E8A8DFEF2E083D999BE6C276B40834145D7172D54 4EBE9EF321635CA841577A5B8A16F3410BF56AA4A5D12611C7BF3FE843CC18B0 0889E06C2CCF93C478C05DA0B463C41BA0B0BF8FEA1FDEFCD7E4CD00A382E506 70C3B2D7CFC089B8FC138CBFD5C349E1A78695D5AF6F469AC420E05250AB0C06 A9BAF584A69A980DA068A42148B663AD4E40B9141E3962D5C93F75DEE97A7566 CA480FE0DB97D48011D62448F1AB9FB2D50633608802D6BF91460A358EB6DF0B 6043B0BDCE6BBDEA9D2AB8AD8BE5C35900F015B29F8404BDE95B90726801BA8A F4B62DB64102EE8AAA9D29FC7BA5B21A458E6AD50EDE5C0539B39BC1C8801F56 D7955C214CCF891298C2128C54B5707846CB0D2ACE32EC1BFECC184F60D901CB AEB0EC0ACB2A3024617DF7601201404537C1CEA18383A79B6A197A56FBBAB654 62EA72ABD9235374F8D50F6F5404D307CD63EB50B10245404A4EFD78AA019628 8EC019BB7ECC108AC952FB59505F7E56AC2E6958D7A06D9EEC0AC065411A3B51 543FF22500E353E78139A2D579ADBE47D1D5374DADFA6A37B27AAEDD572B4D08 AEF056D124091898172C0754E1386C59F4C5B5AA9BED1DC8DD667FB70E6D72D1 DEB49D23136BFE7E25D06DBB9F87CE79DD6BB009EAE26015231FC9F58EEC11DB 11A336422FF9023919987355FEC8EC615029308116D404451108F5B0922D4780 83B440003FAA733230ECF7A2063F039E39F1A5FDB4906C01E3A04C4517E48678 6C5D959AC46CCC3F25C377C43DB05AE67EBD9EA64B18ED784F82B194F80029B2 6E5DAD62AD4BA800C0417E832538D934A5464C6CF6755FA991F7B852621BC154 45C64A16401FBA9C80A4DE6FA4EA19DA66D0C0CA5B12876047EF61C2D63C8C20 1AEA3A03F86258A01C8A13255285C31868DA7878BBC41CC6E76B3E40D3C1FB7C 685779741E8518A47B18EEE8349C49319842B2769A8992A0C6CF4EC1396265B3 F0F52AAE6B55DE297523E22FE2719D92EC1A5075963586988BA8899527F48E34 E66BAA5F0DAAC7101DD3D2BC0E703294B6465727C8C1D5B7C302D3E202AE6C7E 1892ECB845878A0298B2AB6EABBAEA0FA0AB9461695528E43F80B05096B76F01 BFBAEFABED9D0279026F9BB6ACB6A0F8B0D527DD36D09769F5D4ECC1695E178F 9A6A3E633B57E9BDEAF6E8D07560F0FD945AD8EEA3468774A30FCF5368D46378 CA34D075B5B15040ABAD06371DF1EA56E135859B6E8B4EDB89811EEF804F6A5D 1FC09167B3E8A82621B8734380BAC3316E01E5A0C43072A61E4D84EFF2F2122A B560FA57184E6BF5535B010CCD8AC020610CCF6D417643DBEC016DB1A9FF1253 0FC58BF5EA8792084898CD86CD9BBA9C5844CC5F12C5B1F21F679A11971C3FC6 2D77961559FC43AB8ABF068B2A9EB6D3B6A11F7C33D2575C34E82F02DD982FE9 6234188CC2DFEFD4A2450F83D011A935F20CFBAC6CF6A0DE27CB1A293270DA53 96C6005B29854CE4307D53D77C76290FCE2162A40914BD20A89C99B42A85D992 1BF50FF81AD82D273A82F41759095C3BE32E2146A7DC1B442E9EAB5FFDFCDB5F 7277705D8238873F93DB7E6BBEAC2A30DFFDD3B269B7DA96D65D4F7F262B0C2F 764B68A94BEEBB18A7F1C314BD4B034659B5FD01FD38E8D41AC5F89A50C71A8E 0423A7CF53E759CE7E32BDB4FFC7F14933F96B0A21BC574D59BEB7D2E73D88A2 E5C31D08846D6986A5E01C389B2C64A9AEAEE0DF0FF0FFD554CDBE867FA730CA D7533EA20877960D88A08535F3705E18B76C3BEB037760A417E1C1B4EC76C512 24F9C4F600D2AE2D6D0D2A47D181C47322C60AA9C42B60C06AA9DDD3B2814712 B27327D1B02B29AF4C90883FAF7551A2DFE69E3D19B0F15355F66B78E9FEDD3D FB57A21E460BE09DFD2714451EA12FE80F3BCD2B3A478EFBF8655BDCF1E755D5 33A601866BEA1ABA2778E6C8E293B536FB49369A0153F2D0AE2786E9A69C04C4 533C9EE011ED31081A0698CF2B8181562013C03D300EB66B99C38F9C402B9A55 5C4FCC3C78BD60557828E815DAD748DAA25B824B087FB60DBEB735820D8E753A 985DADADED8D7641B06B0DB083568E1179479E0CBE5F7AB0668A2D78B4BEA7AF 87EB1B57406818E60012C01802AE529899E5830AC39FBD9E60012337185DDB3E 3069C096779E85C6F55F3CA64D1D74970DC5AB12D06B14B7571782DB802ACDD3 0D0301390CB51217713D182E456BF8DF8AACEED0F57A93B9A2CC44417EFC685A B1240368821EBE67946AB323BC19B7DFB8B6CDED3DE0FC8BDC3976A6A67E3635 8D00B390D1046CFDC00F2BD68C948799C06351EFB5FD3E658BC58DDE7DCA9DE8 EE3EA9FD0EA071513EC26D2C3C0DC2A109AD0858CCADCE1764368096C9D9F085 E5A028463457914982032455B30B8E0F43B7731545652DB1A901ED019168BE71 B063549F74387ED19B1DA837921F14EE777B466635C05B9884D54EDBE2B1BA33 162A228BA4F699957250DBF0AE208D0B789B31409881890B4BA5459F60E1D97D C6E2210497F351C3CA083ECB2CC4210DF2199D77AD7E044FE74E7350E8253C67 DD43B523CA077E60CD8C394B3CC06AD21F1B7B22D670ABE1D3DC4D2E5426BEC9 171EC2E45CFC4C8FE286194CE8F3CE5C733581A1830565D5368260FC4EE674BA 165B7D87DE4E34E724FEB6A0EFFE8E118181021B9948CCF39DC40C6B6807409F F8E638AE60C94B039B0CA15091DBB1B2E2098460E025CDE0117AC4FCEC8834CE CFA4B35F5A8C0CC085503C6C62FEFDA9241A92274D9131B40A1C48CF00DDF63E E84A3133E79378960739B64293F9668C18E8AE582CF1419CA524442522E5C637 74C2D020011110C942B22C3986AC85967AF7E68D159F5444115CBB3B445B1F45 DF23CA7153268496785CA971E6B9EB5CA24720250CE2E722DA5AE3CDC7C5C40B D0D467D7185AA76885896C204B6816F2C0221E1B6A566AB9060B887044639890 09E86B1B13DAB8584EB7D3CB6A552DCF184060FE16308752AF0A30032795AAD4 93B23C073A1BDEA9BB8961B8208E1273F17112CBC481A45110DDF536F76C0C64 DA156D87012BC7ED92F7597E83EFDF75A3BE5153B138AE0943B4606DD8E7B6EA 3168B5D9C36AB8B586EFAEAE2815E9F6A0BE668DCD8C9D0B65FE1502C8E3C95A 74A6EF2FD48587E79DFA1AD44778CE32F5F5DBB7AC9327675B9ACF7EDB5771C0 C186172DFE9F4419347F8241645CE909D0E0464C8A3FC4CB1AD882B2AF688582 58DB217291BD040676BAE8D5BDA74E620FC42DAE0D2C422ACFE6F7A2821FCB32 5E0992B332CB371ECF8FB8DD6F025117B80B43CBD070C05D36C772B76D5A61ED 28A4042D2AF5D1E16C9065E11C38CFE7D76A59EBA28546CB624F296FEA767FF7 45DC8E057A39D72B3961117A11159964B6EBC46B22F9C28A3C63E1C29C6F982F 61340FD9E4B45A2B34B0D9AE2D17246CFD71A33320049D7A87F42A22339FEE22 57D508AC8AC61F59F9CCED65A30201B878E5110BDEC2D77F990F39AC088EDF61 B01C99CD2B68EEDD767833B40622D43DF72D98F699A1309F8EF74D69E311FC6B 0E08D62033C180F121AD8C7DAD0CEC608DE22EAEAD3EA82B8FEF0017D79CC0DD DA7182D0CDE958C3D0B33E3781015BEAF9CAC9F5A6D5C572AD7618D1B3992DB0 AE761939A038771B0004D599B9E01A59330EA1C695F3DD4596965D18C69F264E 76695D47795918440CF56E071577454DFC30693BE5AED4FAF061DAF9822FC7C0 AB2BD1E7C0D4A0CDFE68044669320DA6ECC549B60AB7DB22B2707EADB6A8E131 C6C22C9484C0712D6C7A99CB9E5B10FF2C5B698EF513670C58F73C9A550A7801 35233B6754D7AB60D5CFB0DC1203B0488065A5AECE07A66A6C63FB67261E1306 32DFB5065A9F47B2292E268BE27829C622BC07C2B229B8B91D7AA8A5B01C1AD6 BE2AF11ABA6C5D0D56C74C0DCA2ED0B18542E3BB7917E62DD4F60F9CF1FD4BF5 CF293770C0E7173878D4390BFFA4C761E2D7B063C213B125B19C5BB61925EBDE B1E132EBBD8761596D13B2B5A222D40061163A584CD9EAC7C964EA8255655378 EB40A7D5C40260D65F212DD56AE061FD888934D269B983395525F33E141E0950 6BD5AACCA833B1EC2CD020F25ACA44B6CF6BDC47F05E86CC51764ACB7A23CE2D C128412E144988B1D9B622BE27CC1EAB149652693371298D060B028B88A9055A F630F7A706B733845AE425C6BB37BEC052A62E79E57E6EF7334838F019216ECD EEA009AA50DA6E46CE13A2296B8B27836DCC1DED5C90A562C94D481943211548 83EDA1692457AA32BDCCC7177F3ED45B0407C70560DFBA15946492D35E3BBC34 FBCBC45A3030BCC817FC4D6A870FE506470771B3C2A473B4C9B7C5C687992AB5 020F9E6121E82E2C988B7C2CA9908D491645336C151C49088B39EDB954E5B303 E0251F0864E0C0CF21B51C99E88620B89EB9A5684CBE2A9B2FCDA2476A8477C3 DDEDDAD98DACC947DE8B410646FC4FDA755DFC75A7E7E7C418213929371356EF B55389498BCD5934ABB2769E5B81F9629874189628EEF839A6C4EFE873F4FA4E B75F2894015FE4E935FB43576BE40E792916BDE7ABD487851856088B769E045D 550A0C5A0CE14C6E949BDE88D783C539E1E0F8663D0E47C2D4DA39E0B3B6434B 874D84362CC54C705B1C98ADB8055F6B7F4B4E8E15B62673890285F495B58141 61C8A26D8B0328A7AAAF800005A6440D5ECD22638D32BF5CF6D884F1F8C0EB34 C30B0C3798028E683610D87E600D5E415738BC7F31A317720551CBC0EBAC7168 C63C2E33865732DC9F357FF7DBEA2F6006D02AF26143E7DC1A86054C7B12F91C 3026EBB0EA541A089B625BEDF6F56093E7FA69ADB78ACE7850ECAE51C56EA781 7188B2A815BAF783F01625B35486951FB6CDD3F6CC420EFA85897F162EC06966 A5D63B91836AB7A4C82B256EA56F4E397F2114987094A9DE95BACACD300C7B16 0B0E0AEC273FB222A8DC34C4D08C33508C056769E31345507C7187D26E72922D C2359F053A48152F70722660F84B436C332D2F78CCAC5E237D52BA32B299B266 5B9BE88430503B3C1185275C089F0BB40878166FBC8FC71640E5E271F0850F51 F4CE584889AB53064D1C476384907E2292C3BE49C84A41282BD88241CC082199 96A68A35CC04F19B353CDDE4F095E5DE882BECAE38AD2561240A52A38F4CE61B 2333C321D9B7AFA5D57124F9436DCC4B37091461DF44B96DEE0446B949309CA8 C0AD014F4C8BCD084B5F07B1834F82E79C7F4CFD10883E7DF57D96A6776ADE33 BF0181F1FD0B7243003E60CA48A362266BA57C01E60847E39106626E73F58A45 3304C546390C3C0696FF5DF00A160EB93D6525E91A8B1202D1F0FCE974E99B5D 208EEA37BBD74BC401950C70B188526C41052B07C70FA20EC6B72A61C41A0B3C 1897041561973F55800E99A1E2332D7E54996769312EF3E88899957C562187DC 1C2FAEB1D28D211A530586299DE3EF2403F504FC69867E993F5FCDA77C4E824F 47E660D394D3E7426C6ADA8277EA4D2A3735675AC5873C38BF28E3418B7E5C7B 1749A0FAA1813D8B229A381B5676CDCE819C50DB198B2F56CD8758E5CE92B7DD 68B7E36FBC729927E5162FB7070377894805338209E6E15249AC6CBEB6DD58AC 7020D85919559FCDFD1439432797A544BAD3DDE9840E11CF922E1057C3C1BDB3 21AA45225665F3F386F915CC8BE3397C30A0B75D9CCD5236A28AD844BC568F55 B707C8305B2D913CE113C8BD7EB65C8A94B2AC22AD2F80CDC714831B50BAD3E1 D9811F2ABF007320034793D21BD155C90E6FD597917AF2F5CD56A2A5CEB8AB18 9DAD10994700076E56A177679289F91BE33E1063924CB299D150946012B266A0 35E74F244A2C6C16836C5FE34F4B2843BFE65E0A02C2C12642FCA307C04238CD 4891A6CEE3B15302C41F6DB44103494D966EECBC94B2A76305FCB02CDBE37D91 3A7E5222E627D57B847D778C34428A3A1727829920F5960C3757CD5405C924B0 3C1CE597875DB9D52772C1CFAC4752E1166AE9F6932830ADB4DFD190F9DE5671 82392C93E473B99C43028CF062995D938A4A0524CACCFEA32EA5B29D9BDAB380 B854969E9066C22774E17E178E4FE47F380F8345FB7DB0AC6F2656F5A8325F9C FF61BFB9D56D8EAF29C45FE6A22711715C48F8C73D4F8FD95826C4E717068723 5C0F03B2C930B71F405662684874408E45FC7214027FC0A772795282BD727429 C4F18263F2C5C34B67278008E608050D7E82AA3A37572A78E7909F1C89B33B2C EF8D4AE3646249A8C73D4F3B10CF32E1D62C71E1EA98DC7701EE792296B452C9 A18CC8853629EEB25FAE69DF05A551A7F63B9EB04467A0CC150B8538CB6A8E25 893CB5E8FA0CFC981B1B245AF3D0353B50951AC31E02E015B99149679FAEA697 F67F26C5DB08B2D13354B3A367A8D8112A09F628C429AC9849B83C92085B5702 5D43608E4D6AB53201EB10DCC413294F32B8ACB7E6100521109F9ED6783E74D7 D487BB66AB3E3C7FA5FEE979F613359B3D7F95AB555DA50C49B29EC879227E08 D728C834109F2ECBF2A1C82202E0D5479EB1131FABA75A0EEFCE619269480381 8C394994D9C5D99E58CD62062FEC8A7788E8A8D08BCDA691CC16FB3B1235DCED C1E38011910677C888C32CEEC80B6344220FB3A246EE38210618BDD522CA2147 9D1BAE8148DE0171C269DAE86590586B963B45F45F0FB3A7D6E9E4293619BBD3 662E0A434C0A3E1AA49033C0792DC76E897A2E5B5F1CAA4A9E759747CC44963F 26C9B3D291E636E530D4CB1751C32102F00384B2E96A6EB91C3922363AF65866 9CFCA421102B3D7D2FD4E088821837003C02DDF124C3735CA06045C1431A4021 298EAEE3CF1A1F45C6622000C63016BF19EE47BB23E47FDDC5F312C5C74D5099 5278ECCE99780A8610A0EFB2E8CC71546F98DA673ED2F71F643A8AA9D9E4C853 3301D31355F20C88ADB248CC43E87D0B86BBFB6DECEE9FA3CA81DB0EFCD4F867 9810A1F9E75A129C978E98177F3BCD732A070EB8E35416F416BA4F0570A6BA5F 7B3380CE7EC7088A586F516F2F2DB6E309C8EE33B62CFEDF79946E327895C53F 9B82FD320D0C66E360AFE0A7976E6C93A41F879DB22729A849BD6058C408D373 7740DE2DC4936BD22D0E27A2C344E258524874619D2352946206D07B3FCC8769 B4BD65E03D2E6573BE89EE13F03EEB2ACA9D32EEB0BF92C0BF0F171760F254A2 D0A4BE7EA344BEEAF0AE04AC928CD971E20CA0727045E35A4F3631CA29033306 1043B9EB0D4400402C9191D06ADF4C4ABDAC36C06E33958DD44A98FCEC0208B2 3CA2595EAB6F8B7A89592FDA5CE3B36B9B9D6EEB43387333081E5852456E9585 CE15632C510A430F0914CD150B4985065FAA0B8A4C3FE359DF656BC2D4CF6F8F 2EAC231435DC98202815847B30CC55BFF0658C6AF69A8C74D4262294B95380DF 33C0AF2BCA8FB0AFA5D00849F9ED1E434AFA38893BE06F73A42FAE00A9249629 513A28798BDBB96D9039C3C4E4725B2AC83B3B82F4CDCC18F13D6AAE2B41BDB8 F400A545C977885C06B5BD5AC35D28E086CD17C2D4C5E1FDFE4614008B2383D3 7CE1A77AC8D5D9708E073F9DCC9D29E4B790940DB27F8D4A0A99071CB34D666E 88C753769EA3D59B45FE4699FFDE29275C07F3F2B340D9CE261140C0847D363F D9A078AE00A4F367F9D64CC46FC8FABE9E5F85D735CBE12FAB478CDE8BA5C8DA BD65180AB75BF20E180CD978378E73176BC72C74BD0B5394160FF3D4E4049A24 C2317ACB639F830D82F9405E244F1B470B3B0A05B3B80D5E0410401B179C815F 0601D3D4360648A58AFAEE3E01F6B8F81C9182A94E16AC5D1215DDA744A4173A 0B44C6432701F10B77330F7B3761B5638327488D49DDD85D9CBA41A3059EC174 EA76E2EC4DD8A484118A43B3EFB31E2F09F2E72EECA52E74EB187D93A7EB1B7F B9D2867ED801CCF5B6E93ABA4148AB29D83BA5BA70FC3475170B6587B75CC6BC 669F132F27F27288A784C76D4018B9D19EA5552C2E2E6C02E8297B9CEE8AF613 E04C812B6CC7AE557A1B351733879A5359211D3B245630141F1CEAF68047F09F 0740DD70B68700DCC8607593E0EC24E5DDD551C35DED3CA1B96D7A496C100CE8 CC7B4BDC21BE6284FE26DC3E4E3684B938CC98110BFA472C549A5DD43BBA71FC 22226134A4AFDECB532BC5FD8E81B8A82C360C643023664EB33C5DEFC6297039 391866AB31AEB7A42D6912F56C5FC6A43A27F66ED59038CF0941C96E28129917 D7E682CB0298A279C0AD6AB44F2F2F2F55853BFF7A0336F11A89D753B3ED3970 5B4919327D43BC62B1115C9F607132859B2538289260FCDE24016130D68F5E12 42671812DBBDB2B615D78B5C1C334EB88F99BBE8C8E510ECC51E073FABCE12C5 EC3484E1ED4EE281898867F5A6FC24DEC849445256F66A6D33F4E0F021BD662F A354D944C8E9874FEA07D969C61EB6C684E5D0F064EF1032470F112D9E7F317D 66ED7028BCE77006915BE6369BC25FD5FD6AF56674A6DBAC948A8D25D9BD4279 71C96D35725AFB845FA69189444E8C599E993ECFD2DE5A226BDB8C274639418B B2081D3F283E32197F4011955F42FBE6128A1CAF47F7911017FFD62C91468F0B EC452E486DE4452C5CBC0B228ED80E73F030C9F0661E3CC79642328B9C4B562B F5C55D96B1D2C45B356FF8A1DA4EE3B593FEB64B71F7A5B703F91D98D28CBB56 DD7EB7031292D4A72546DCCFC0323CCE226546B2D958D9D25DD5A11E14B8E094 CE4363A121B8B037ED90187FB257148338DF14DBE24E2BF30B01F67783FCE599 78B930ABBBA4DF1FB387663BB56A9B0D9DD1F189BAAD06389650B969F15663BA D5A7061FC2A30E80999FE4118CA47C053E3672F646258E69870D032C7A27CE88 F35F352247801F8B26D78588CD6FB35E3A7D11AD5B42F05C3DC8BB0F5E6FF98C 5AB9C376E3762E7422564454780F168C1328713BE62D5F18A4E0C1FA2FA1C0A5 324E822D1F3576D9825E8724F6706C9D207EEF990A20240EB7B42C6E0D0FBF53 F7CE1B7A0790A406F04702FD28C221B3275B1D77A1F598DC3FBDF7A6D4C0FA1F D47E69F7EF5E0A9141FBA389E1AC9A4D114F148D5DDD6C1B0E5978ACA64D74FD F88A3628553EAA9897CCE7B4DD539BB23E3EAF0430C7414D6C8D8674F4D12EED 4C928D6D8EFCAB710F7DFE60AAA4CE469F363A8DF31934B5908FD2153FE96D79 FCF09BF1E4EF0354AF8021DDFFA91CC54E2AFCBDD2ECF55CFD778C7190A2FCCA 6E7B4D8379F0E64896A92B3CF91F374F8A6D160F39A60A53E2DB0B5CFB0554D8 F4F2672F4869BC77AD2EEE68F01BB09C283534D13968F987C1F505665493E87C 0AC2EF333A6D3156683610EF33F6E357DE547A318DD97CA2E3E02966F309E90F 6A48CFD13EC7BA1B76319ADC556DC0D0BCB1F31C51BF6E83DB7A4A36AF31C9A1 836447FEE9613D74B4F3767171EF3C2833B2D9AD51C0947114CF7D08507561AA A72B9D2A901C51937958496CDF67C90C8DF039F2334A7CCC6491BB5A3E59C842 5847BAB8E8FD5D4DF16F28DE7BF9E3EDB5D9576FD1C41E41B45BDDE11ECCD181 D3F61A4D96FD289E885F0C71028BABC1DB9B306376873F37190FACF026E40FEA CDE5E5E59B14100B391CFBB13E51EDA8CC89B236AC91CD2FED272BD7DADBEA5D D499F77F702D8B3B9D7C9B68574FB91F8CE5E1597E5AC216B3E89559E3E9081E 17E52C5469F60747829532403A7AC82058FDEC22753301EB52F1CB9AA36E5E19 92F1B93FE4F2BA5CBB74842699DB4BC4A02C908BE46F05BF9C5A2E458BDB90F3 FB08C6F989B6120C1B5F444C11F8D89D3B21A12D31342697AD128ECE77708259 95915E83E18053BE8882F212744A328B21E730F0C4F1D9689C2A0505CCBAAEEC A55A3CCF7CC10B6437831D0409ACA1E345FAE7CC1C835AE039ACA3BC1D4F182D 45BA50BAEAFD36722EB614019F21203A9029B266483B381C9954AB6BF3FBF12E B7342D1106EE7733769BDDF806D6F1A5E6CE738CAC37897C374498E2EB174E1E 4FC9F49998D25D7DD8213D8A5ADBCBFEE4DE3A0703E4E387A86151DEEFBB7E98 BF11FF480BDA1FE2AA2096397218141EC766480A8DED26F6D3994E86452AF214 E41DC926FD31456044F590E6324279D795E49DA459586CC12D04AD547438E1A8 707848067FE8C8FEEF8ECA446D2EA6CF138C91316E01A6E22C10DB8D17B3E7E9 EB1AE0B190573598BC6E88B1132DFEABE334BF5DE95E881A2E62166568BC2EC3 5D1E3C58477B73E62F9A16738CDBDA63ABE6ADB928D59FEB8661CDB924CBFA89 7B1DF88657E2AE3FEA810F3308FCBB94499F3EC92BF39B56E2B38FB875257E31 96D241F19761DCC656986F7E969FFD1F598CCF767B840000 } ; The following conditional evaluation checks to see if a ; database file exists. If not, it creates a file with ; some empty blocks: if not exists? %database.db [write %database.db {[][]}] ; Now the stored data is read into a variable word: database: load %database.db ; Here's the guts of the program. Be sure to read the ; list-view documentation to see how the widget works. view center-face gui: layout [ h3 {To enter data, double-click any row, and type directly into the listview. Click column headers to sort:} theview: list-view 775x200 with [ data-columns: [Student Teacher Day Time Phone Parent Age Payments Reschedule Notes] data: copy database tri-state-sort: false editable?: true ] across button "add row" [theview/insert-row] button "remove row" [ if (to-string request-list "Are you sure?" [yes no]) = "yes" [ theview/remove-row ] ] button "filter data" [ filter-text: request-text/title trim { Filter Text (leave blank to refresh all data):} theview/filter-string: filter-text theview/update ] button "save db" [ backup-file: to-file rejoin ["backup_" now/date] write backup-file read %database.db save %database.db theview/data ] ]