
A log of some sort. Changes and other things. Most recent at the bottom


*  fixed the flipLangs bug that I introduced, although there is still a problem if you choose incorrectly, after you flip the languages. I think this may have happened with your original implementation too, but I don't have an old version to test here. And again I can't really see how to fix it, right now.

* added file: PopupInfo.plist and removed the showInfo method from PopupController. This makes it play nicely with NSWorkspace. The showInfo method could have been left in place. It just becomes unnessesary with the addition of this file. File types and such should be put here in the future. ie. we can open .dat files (or .cstack, or whatever), and they're icon looks like this .. etc 

* added an edit menu with the standard cut, copy, and paste. started using the _() macro to make localization possible in the future. all the user visible strings in the rest of the project will have to be changed later, to make this work. 

* added Add entry, and Delete entry - for editing card stacks - into the edit menu. I imagine these two entries will also have equivalent buttons in the editor window. I thought about moving the 'Flip Languages" and "Parse Selection" menu items to here, but I'm not so sure they belong in the edit menu. They're in the quiz menu now. And, they should provide functionality in the editor as well. Another idea is to just move them to the top level of the menu. or maybe a Tools menu. 

* added addEntry and deleteEntry methods to both the EditorWindowController class and the StackModel class to make the menu items functional. 

*  added the _() macro to all menu entries, as well as the 'Search' button in the editor. Added English.lproj directory, and used make_strings to generate the Localizable.strings file. Added the necessary keys in GNUmakefile. I think that is all the localizable strings in the project at this point. Localization for other languages should be possible now. make_strings greatly simplifies this task.

* moved the file saving logic out of the EditorWindowController class and into the StackModel class. There was an empty writeToFile method there already, but I didn't see it the first time. Unfortunatly it works (it was working before I moved it as well). Which doesn't make any sense to me. In the init method of the StackModel class I set up a 'words' array to operate on (so there wouldn't be endless [cardStack objectForKey: @"Words"] calls throughout the class). When you edit the stack in the editor its the words array that gets modified. In the write to file method, its the cardStack that gets saved (not the words array). I'm not certain how the cardStack is getting modified, but it is. I added [cardStack setObject: words forKey: @"Words"] in the writeToFile: method, just to put my mind at ease. and because whatever is causing the strange behavior should probably be fixed at some point.

Wed Oct  9 10:22:10 EDT 2002
Started to localize the app for Thai.

Wed Oct  9 13:42:00 EDT 2002
replaced the mkstack utility with a convstack utility. Run it from the command line with two filenames (convstack old.dat new.dat) and it will convert old style stacks to new style stacks. There's little to no error checking, and no provision for converting a directory full of files all at once, but it works.  It did choke on the francais2.dat file and the nuntii.dat files though. have to see what thats about.

Sat Oct 12 12:37:28 EDT 2002
removed the words array from the StackModel class. replaced it with a WORDS macro. I'm not too sure this is the right way to go about it, but it makes things more straightforward, not having to juggle two copies of the words. And easier for me to eventually figure out why I can't get the add entry method to work correctly. It also takes care of my confusion about why saving files was working, when it wasn't supposed to. I also finished localizing the app for Thai (with the help of a friend).

Sun Oct 13 13:57:04 EDT 2002
finished mutilating the code to support working with multiple stacks at the same time (yes, mutilated). Everything is more clear now (to me), but its much different than before. You can now open many stacks, take a quiz in one or three or six, and edit another one, all at the same time. There is quite a bit of polish left to do though.

Sun Oct 13 14:03:06 EDT 2002
DONE - TODO: add some sort of simple checking when we open a file to make sure it is actually a card stack. maybe use filtering in the open file dialog as well. Being as we can now open multiple stacks, does it make sense to allow mutliple selection in the open file dialog?

Tue Oct 15 07:28:42 EDT 2002
Fixed the addEntry function. very silly mistake (as per usual) I was using an NSDictionary, when an NSMutableDictionary was necessary. We can now delete entries as well.

Tue Oct 15 07:30:38 EDT 2002
DONE - TODO: need to localize the dialog that shows up after you've finished the quiz. forgot about that one.

Tue Oct 15 12:04:57 EDT 2002
DONE - TODO: need to fix it so the begin quiz menu item is either disabled, or changed to 'restart quiz' when the quiz window is in the foreground.

Wed Oct 16 03:29:30 EDT 2002
polished up the behavior for adding an entry. if there is no table selection then the entry gets added at the end of the stack. If there is a table selection the entry gets added just after the selected entry. and it now handles empty stacks, and last row selected situations nicely. There is a bit of strangeness in usability I think due to selected and edited being different things. I can select a row without editing anything, but I can also edit a cell with no row selected. the latter seems a bit wrong in this instance, but I don't know how to change it just yet.

Wed Oct 16 03:33:13 EDT 2002
changed the new StackWithWords, and initStackWithWords to newStackWithContent, and initStackWithContent, and reimplemented them (they were commented out before). This is to reflect that stacks now contain more than just words. the new stack menu item uses these now. parseSelection still isn't functional just yet.

Wed Oct 16 03:57:04 EDT 2002
TODO: allow deleting multiple entries in editor. For now I've just set the table view to not allow multiple selections, to avoid confusion. There is surely some memory problems somewhere that need fixing too. some combinaions of opening and closing stacks will cause the app to slow down dramatically.

Wed Oct 16 11:21:13 EDT 2002
Implemented the search functionality in the editor window. It beeps if it can't find it, and other wise selects the first occurance in the list. If there is no selection it starts searching at the beginning of the list. If there is a selection it starts searching from that selection. that way its possible to find multiple occurances of a word. It might be better to put some sort of toggle up there by the button to search forward, backward, or all, rather than the existing behavior. have to think about it. And, right now it won't find sub strings. for example if you search for 'she' and you have a key in your card stack 'he or she' it won't turn up a match.

Wed Oct 16 12:50:42 EDT 2002
implemented saving new stacks.

Thu Oct 17 12:02:54 EDT 2002
cleaned up the saving mechanism, and  added a line in EditorWindowController.m to size the table rows to whatever font that they'll be using. This makes editing with strangely sized Thai fonts very usable and with any luck makes other funny fonts usable as well. 

Thu Oct 17 12:42:22 EDT 2002
made the search function in the editor window a bit more clever. It will now find substrings, and is case insensitive.

Thu Oct 17 13:35:28 EDT 2002
implemented validateMenuItem in PopupController so that Begin Quiz will be disabled whenever taking a quiz. Also, removed the NSLog's from BFlashView.m

Thu Oct 17 22:33:37 EDT 2002
implemented tableViewSelectionDidChange in EditorWindowController.m so that a cell can't be edited if it is not selected. You can still select a cell without editing it.

Fri Oct 18 00:23:38 EDT 2002
DONE - TODO: other strings I forgot to localize - the "correct" and "wrong" messages in BFlashView.

Fri Oct 18 03:52:57 EDT 2002
made it so the number of entries in the stack will always be displayed in the title bar of the editor window. I think there will be some sort of status bar later, but for now this will work. Also made the remaining strings in BFlashView that I had forgotten about localizable.

Sat Oct 19 13:11:24 EDT 2002
It now makes some noise. I got some sample wav files off of a windows computer to test with. These will have to be replaced with some free alternatives. but it works. it blips when you get it right and bleeps when you get it wrong.

Sat Oct 19 13:17:45 EDT 2002
Moved pictures, sounds, and lproj's to a Resources directory, and made the appropriate changes in the GNUmakefile. make_strings will have to be run from the Resources dircectory now. And, added PACKAGE_NAME and VERSION to GNUmakefile, in order to support 'make dist' which spits out a clean, well named tar.gz file to pass around.

Thu Oct 24 10:23:08 EDT 2002
Added a popupbutton to handle searching forward, backwards, and all. Altered EditorWindowController to make use of it. This may not be necessary once I get mutiple selection stuff working.

Thu Oct 24 11:59:06 EDT 2002
Updated the English and Thai Localizable.strings files. Made a few more strings from the source localizable in the process. Now I think I've gotten everything.

Thu Oct 24 12:57:50 EDT 2002
setup nextKeyViews in the EditorWindow. Although its only semi-usable. Once you get to the text editor, hitting tab produces a tab in the text editor, instead of moving to the next view, and once you have a selection in the NSTableView, nothing seems to happen when pressing tab (unless you are also editing, in which case you move to the next cell in the table).

Thu Oct 24 13:27:40 EDT 2002
Removed flipLangs from the editor window. It's use in the editor will become unadvisable, with the changes I'm planning to make. Also removed the 'practice' menu item, in PopupController.m. I don't quite see the need for it, since you can practice indefinetly by taking quizes over and over again. And also noticed that there is no flipLangs function in BFlashView. need to fix that. (DONE)

Mon Oct 28 08:47:13 EST 2002
EditorWindowController.m: Removed the NSTable, and NSTextView from the keyView loop. now just the search controls are accessible from the keyboard. I did this only because once you get into the NSTextView by way of the keyboard, you can't get out of it, by way of the keyboard.

Thu Nov  7 10:19:07 EST 2002
implemented application: openFile: in PopupController.m and added NSTypes info to PopupInfo.plist. This means we can now handle files opened from GWorkspace. It appears to be a bit buggy at times. I think it might have to do with issues in GNUstep,but am not sure. In any case, I think we now need some new icons. One for the app, and one for .cstack files. I changed the extension from .dat, because I thought it was too ambiguous.

Sat Nov 16 09:19:05 EST 2002
Changed removeObjectIdenticalTo:  to  removeObject:  in drawAlternatives: excluding:  The former bases its comparison on addresses, and was never removing anything. The latter uses isEqual: and will remove all occurances of the given object.

Sat Nov 16 09:25:03 EST 2002
improved support for non-unique lists of words. I imagine it will require some more work later. But, for the now, given the following list:

one 1
uno one
une 1

and having "1" displayed. 'one', 'uno', and 'une' will all be recognized as correct. This required changing references from "words" to "indexes", at some points in the interface to the StackModel class. I also reimplemented achievementList as an Array, instead of a Dictionary, to account for possible non-unique keys. achievement values for each card are accessed as indexes in that array. In order to make this more convenient, I modified the drawCard class to return an instance of a new class: CardModel. The CardModel class contains the index of the word, the word itself, the 'meaning' of the word, and an array of other possible answers. It may have been smarter to make this a struct as opposed to a class, but the former seemed easier for now. Now that BFlashView can get all this information at once, it may make sense to clean up the way it interfaces with the StackModel class. Also, the drawCard method now looks a bit more like spaghetti than it should. It does work, but it might be a good idea to clean it up a bit later.

Tue Nov 19 09:36:31 EST 2002
Added support for manipulating the close window widget to reflect edited and unedited status in the editor window.

Tue Nov 19 10:08:05 EST 2002
Implemented the "Save As" menu item in EditorWindowController.m

Wed Nov 20 07:40:40 EST 2002
made the quiz window title localizable, and updated the Thai and English Localizable strings files. Still need to do the Thai translation.

Wed Nov 20 08:27:15 EST 2002
implemented windowShouldClose in EditorWindowController, in order to show an alert if closing an edited stack. 

Wed Nov 20 08:52:06 EST 2002
added support for selecting multiples files and filtering by the .cstack extension, in the file open panel.

Thu Nov 21 07:20:31 EST 2002
set a minimum size for the editorWindow. I don't think a maximum size should be necessary.

Sat Nov 23 10:45:08 EST 2002
Implemented support for multiple selections in the editor. This required modifications to addEntry, deleteEntry, and findString in EditorWindowController.m. now if adding an entry with one row selected, it inserts the entry under that row, in all other cases it adds it to the bottom of the stack. deleting multiple selections, behaves as would be expected. The All, forward, back popup button is no longer used, and has been removed from the editor window. But, searching could now use a bit of polish. I have in mind, that if a search returns multiple selections, the 'search' button will change into a 'next' button that will step through the selected rows, relative to what row is visible at the time. until the search field is edited again, or the selection changes, at which time it will change back into a 'search' button. right now it selects all matches and scrolls to the first one.

Tue Nov 26 07:16:40 EST 2002
implemented fliplangs in BFlashview.

Tue Nov 26 08:37:54 EST 2002
temporarily disabled sound support in BFlashView, and removed the non-free sound files. Once I find some "free" sound files, and NSSound works as I think it should (currently it doesn't work, but I may be doing something wrong), I'll uncomment things.

Fri Nov 29 09:22:53 EST 2002
modified the alert panel in nextQuery: in BFlashView.m to give options to quit, quiz again, or edit the stack when finished with a quiz.

Fri Nov 29 10:25:18 EST 2002
added #include <fcntl.h> to BRandom to get rid of a compile error.

Thu Jan 16 06:10:54 EST 2003
removed many NSLogs from StackModel.m

Mon Jan 27 07:35:40 EST 2003
added FIBQuiz.gorm, FIBQuiz.h/m. Fill In the Blank quiz. it works fairly well, but will probably need some clean up later. modified GNUmakefile, and PopupController to make use of new files.

Mon Jan 27 07:36:53 EST 2003
replaced EditorWindow.h with Editor.gorm, and modified EditorWindowController.h/m to make use of it.

Mon Jan 27 07:51:25 EST 2003
regenerated Localizable.strtings files. and edited EditorWindowController.m to localize a string I had forgotten before

Tue Feb 4 09:27:11 EST 2003
renamed the 'Start Quiz' and 'FIB' menu items to 'Multiple Choice' and 'Spelling'. and reworked the validateMenuItem method in PopupController, so that they are disabled when there is no stack open, as well as when a quiz is the key window.

Thu Feb 20 07:54:04 EST 2003
changed the license to the GPL 2.0. modified all source files to reflect this.

Thu Mar  6 06:10:14 EST 2003
replaced BFlashView with FlashController and FlashView.gorm. The code to handle random button placement isn't as nice and flexible as before, and should probably be rewritten at some point. but it does work as advertised.

Sat Mar  8 10:31:06 EST 2003
Implemented Notifications to edit a stack, after taking a quiz. previously it was done using the app delegate, but it generated compile errors. This is probaly better. although, I think I've done something wrong in regards to memory management, as editing a stack after taking a quiz causes everything to slow down.

Sun Mar  9 12:47:20 EST 2003
Added plus and minus images for the add and remove card buttons in the editor. They're a quick solution that should later be replaced with better pictures, same as the app icon and the filetype icon.

Tue Mar 11 06:03:06 EST 2003
Implemented (BOOL) windowShouldClose: (id) sender in FlashController and FIBController, so that closing the quiz windows will cause the editor to be opened again.

Sat Mar 15 00:14:04 EST 2003
added PtableView.h/m a subclass of NSTableView that will be used for drag and drop in the Editor. And modified EditorWindowController.h/m and Editor.gorm to make use of it.

Sat Mar 15 00:15:03 EST 2003
Added cut, copy and paste functions to EditorWindowController.h/m and implemented them. now its possible to cut,copy, and past groups of words between stacks.

Sat Mar 15 00:45:42 EST 2003
Fixed a bug in StackModel.m, drawAlternatives: excluding:.(again)  it was using removeObject, which would remove multiple entries, if they happened to be the same word. it now uses removeObjectAtIndex. which only removes one entry at a time. I noticed this when using a stack that had the months in it. as well as the abbreviations for each month. everytime it would remove say 'June' it would remove both of them, making it impossible to return 3 alternatives, as the array was being reduced by two each time.

Sat Mar 15 08:38:24 EST 2003
removed addEntry and addEntryAtIndex: in StackModel. replaced them with addEntry: atIndex:. modified EditorWindowController to make use of it. 

Sun Mar 16 23:25:54 EST 2003:
Implemented a first pass at drag and drop in the editor. This required modification to EditorWindowController.m and StackModel.m. Currently only copying works. 

Tue Mar 18 04:15:53 EST 2003
StackModel.m and EditorWindowController.m - modified addEntry: atIndex to add the entry at the end of the stack if the index argument is a negative number.

Tue Mar 18 04:21:53 EST 2003
StackModel.m/h EditorWindowController.m - replace deleteEntry: with deleteEntryAtIndex:

Tue Mar 18 04:57:25 EST 2003
EditorController.m - modified to add a cstack extension to saved files, if one is missing.

Tue Mar 18 06:55:26 EST 2003
GNUmakefile FlashController.m/h FIBController.m/h - implemented sound for wrong answers (with a free sound file). only 'wrong' answers, because I found a sound on 'correct' answers to be too repetetive. 

Wed Mar 19 03:07:50 EST 2003
PopupController.m/h FlashController.m FIBController.m - Sound preference in a menu item. and modification of the quizes to make use of it.

Tue Mar 25 11:08:20 EST 2003
Changed all #import to #include, and protected header files against mutiple inclusion

Thu Apr 17 06:57:50 EDT 2003
FlashController.m - It now flips the languages back to normal, before closing.

Sat Apr 19 09:34:26 EDT 2003
EditorWindowController.h/m - implemented broken, but functional editable table header cells. You can now set what languages you are using in the editor. I'll fix this, once I figure out just whats wrong.

Sun Apr 27 12:30:08 EDT 2003
PopupController.m - add [NSApp activateIgnoringOtherApps: YES] to application:openFile.

Thu May  1 05:49:01 EDT 2003
PopupController.m GNUmakefile STScriptingSupport.h/m ScriptingInfo.plist - add initial scripting support.

Thu May  1 06:10:41 EDT 2003
StackModel.m - the init methods are now more thourough. previously, the drawCard method wouldn't work unless, you did some other things, after init.

Fri May  2 12:56:47 EDT 2003
GNUmakefile - removed ScriptingInfo.plist. added ScriptingSupport.plist. replaced STScriptingSupport files with new versions. Added ScriptingSupport.plist file.
