2004-12-22 Marc Chalain

 src/list.c : become listview.c

 src/list.h : become listview.h

 src/makefile : use listview.c to build

 src/utils.c : UtilMoveObject, UtilResizeObject... become external.

 src/chooser.c : new resize function

 src/listview.c : new resize function

 src/listprop.c : new resize function

 src/edit.c : new resize function

2004-06-22 Marc Chalain

 configure.in: add enable-warning option to manage -Werror compile
        option. The --with-palmos change the compile option -palmosX

 src/Makefile.in: use the configuration substitution PALMOS and
        WARNINGS.

 src/drivers/Makefile.in: use the configuration substitution PALMOS
       and WARNINGS.

 src/grids/Makefile.in: use the configuration substitution PALMOS
       and WARNINGS.

 src/grids/standards.c: comment the "Very large database support"
       dialog box.

2003-11-13 Marc Chalain

 configure, config.h.in: build with autoconf 2.57.

 configure.in: version number 1.1.0, "fiveways" argument support,
        "pilrc" version checking.

 rcp/db.rcp.in: double density icons support if pilrc 3.0 is used.

 rcp/bitmaps/*-c.bmp: icons modifications.

 rcp/bitmaps/*-c2.bmp: new double density icons.

 src/chooser.c: 5ways support.

 src/edit.c: 5ways support. duplicate icon hidding.

 src/grid.c: Bug fix for the High Resolution.

 src/link.c: 5ways support.

 src/list.c: 5ways support.

 src/prefs.c: the 5ways support changes the default configuration.

2003-01-08 Scott Wallace

 script.c(cast_i): cast an ALLOC_STRING to an int too.

 calculated.h: Fixed CV_FreeData and SV_FreeData by changing the type of
       the ALLOC_STRING after it is freed, so it doesn't accidently happen
       twice!

 design.c(Link_FieldProp...): Get rid of the set link.returnType, it crashes
       if no source has been selected, and its this value is not yet used.




2003-01-08 Scott Wallace

 script.c(Script_CompileLiteral): fixed a bug in which a single
          space (interpreted as a string) causes an infinte loop.  As in
          '(cat %0 ' ' %1)'.
         (Script_SpecializeOp): fixed bug with the cat operator's return
         type which caused it to be a string no more than 3 chars long.
         (ScriptCompile): fixed a bug herman found: (sort) must be used
         only once in an inter-record script, and must be the first clause.

 design.c:  Added global ForceRebuild, to force a rebuild when a script
         changes but the schema does not.


2003-01-03 Scott Wallace

 - Fixed a bug in the report mechanism
 - Make the scripts more robust when the database design changes
 - Fixed bug in note dialog box...now scroll bars work.

 list.c(ListViewHandleEvent): Run report for the correct field
              (indexed from the ActiveView, not from the schema). Use
              the note view form instead of a customized report form for
              viewing.

 design.c(Calculated_FieldPropertiesHandleEvent): If compile fails, redraw
              the field containing the Script Text.  It seems to get erased
              by the error message.
 (DesignViewHandleEvent): When the 'done' button is pressed, check once
              again to ensure that the scripts are compatible with the design.
              If not, print an error message telling the field of the first
              broken script.
 note.c(NotePopupForm): Set the form's event handler... since we load this
       form manually, this is needs to be done here.



2002-12-30 Scott Wallace

 db3.c(Store_Feature): When the active filter is modified,
            set the active filter to 'No Filter'... Instead of showing the
            old filter results.


2002-12-20 Scott Wallace

 plugins/*/Makefile.in: Modified make clean so that subdirectories with
            object files (e.g. 'drivers') are removed.  Now clean is
            actually clean!

 rcp/db.rcp.in:  Modified all popup forms (at least those with left edge @ 3)
            to be full width and bottom justified to quiet the warnings of the
            Dbg Rom.


2002-12-17 Scott Wallace

 design.c: When a user modifies a field's type, but the new type is the
            same as the old type, just bring up the field properties dialog,
            don't delete the field data! (as per guido pinkernell)



2002-12-16 Scott Wallace

 DB 1.1 Beta 1

 main.c:  Print message for new users to remind them to install help.prc

 sort.rcp:
 sort.c:  Modified sort dialog so it displays the words 'descending' etc.

 help.def:  Made the help.prc file launchable but hidden, so it can be
               deleted from the Palm system delete menu

 report.c:  Got rid of calls to DoubleDiv, I'm removing these one at a time
               with extensive bi-platform testing, because I think linking
               with -lnfm gets rid of the weird double problems


2002-12-13 Scott Wallace

 script.c: Changed 'now' to 'gct' and 'tody' to 'gcd' to be consistent with
             Marc's 1.0.3 function 'gcd'.

 note.c: Fixed evil blinking cursor artifact when exiting note popup form
         (simply required /not/ focusing on the field...very odd)

 duplicate.c: Fixed bug that crashed rebuild of lists with n/a entries

 mi_search.c: Got rid of this file, moving the mi_search method into io.c
               since search accesses globals it cannot be part of a plugin
               so it must be moved into the main application.

 localsearch.c: Checks if source is capable of filter before calling SetFiltr
 script.c:      Checks if source is capable of filter before calling SetFilter


2002-10-28  Marc Chalain
  - PalmOS 5.0 SDK support.
  - PalmOS Height Resolution Support.
  main.c: () check Hight Resolution feature availablity.
  grid.c: set the CoordinateSystem to Native for the off screen drawing.
  missing new bitmaps for the Hight Resolution.

  - Handera for the new Scott's tools.
  - New configure options to set Sony and Handera SDK.
  configure.in: check --with-sony-incdir and --with-handera-incdir options.

2002-10-14 Scott Wallace <[email protected]>

       Bug fixes.

  - Invalid Index type error when pressing page down in edit screen
       under certain circumstances.  Originated from a incomplete
       understanding of how Seek should be implemented.  See note
       in db3.c

  - Crash when opening db with linked fields (becuase chooser db
       gets closed early due to new dynamic check of link field type)

  - chooser.c: OpenChooserDB now returns a boolean, letting you
       know if the chooser db was already opened. This help ensure
       the chooser won't get closed early if it is being used by
       more than one source...


  - Fixed a problem with 'counting records'.  Now all records matching a
       filter are displayed. All records can be modified by clicking on
       the list view.

  - Global script cancel button implemented. Fixed bug ')' matching bug.

  - Fixed return types of 'filt' and 'sort' removed some whitespace
       dependencies in scripts

  - Fixed problem displaying the field which a simple filter matches against

  - script.c: during compilation a field's meta info was not properly
       filled in, casuing some compilation problems.

  - edit.c: check for PalmOS > 30 before calling TblSetItemFont

  - grid.c: a record counting issue. now seek for last record correctly

  - io.c: PalmOS 2 safe (use TxtGlue instead of Txt)


2002-08-07  Scott Wallace <[email protected]>
  - VLDB Support.  Support for Databases with more than ~3000 records

  - Advanced Filters.  Support for upto 32 different, named filters.
       Filters can be simple string criteria as in earlier version of
       pilot-db, or they can be scripts that test properties of fields
       such as: '(or (seq %1 Red) (eq %2 10))' -- However, this feature
       is only available with drivers that support Script Compilation
       and Execution (i.e. the native format).

  - Global Scripts.  Scripts which sort and filter the database, and can
       be invoked when entering a view.

  - Math Lib Script Support.

  - New Script functions. (see below)

  - Internal Change:  Searching is now performed via a datasource
       operation.  This new function, along with the datasource
       operation SetFilter, allow the main application to search
       and filter without relying on the assumption that filters
       are implemented using the palm's category features.

  - Internal Change:  The datasource SetFilter option now takes
       a UInt16 argument specifying the filter index as opposed
       to an enumerated type representing the category that
       corresponds to the filtered records.

  - Internal Change:  List Views become part of a set of general
       'Feature' structures.  The name DataSourceView becomes
       DataSourceFeature_ListView to indicate this membership.
       Other features include GlobalScripts and Filters.


  Makefile.in:   Added Global Script Objects
  calcvalue.c:   Print invalid date/time as 'N/A'
  chooser.c:     Minor bug fixes introduced in working version
                    when creating a new db
  datasource.h:  New DataSource SetFilter function
                 New DataSource Search function
                 New Compile, ExecuteScript functions
                 Store, Get, Put, DeleteView -> generic Feature functions
                 various other minor changes
  design.c:      New ScriptCompilation usage
                 Blink Cursor when entering a script for parenthesis matching
  double.c:      New Trimmed Printing for nbDigits = kTrimMantissa
  duplicate.c:   Copies all Features
  edit.c:        Check modified record against cached filters.
                 Modify Gridp->numModelRows for fast updating when the Grid
                   is retained when leaving the list view.
  grid.c:        Various changes for VLDB support.
                 A small number of rows are cached, the cache is moved
                   through all data records as needed.
  io.c:          Support for new filtering, global scripts
  list.c:        New filtering support
                 Global Scripts activated when entering a view
                 Potential for Retaining Grid's contents when changing forms
                   (Performance Enhancement)
  main.c:        Check for MathLib
                 Maintain data on the Previous form visited
  note.c:        Set note form title to the title of the note
  script.c:      Got rid of most globals
                 new 'cat' concatenate function
                 new 'ml' function set for using MathLib operations
                 new 'filt' function for executing a filter
                 new 'date' function to cast other types as a date
                 new 'now' function returns current time
                 new 'tody' function returns current date
  sort.c:        Got rid of unused Sort Name field.


2002-02-18  Scott Wallace <[email protected]>

  grid.c(GridScrollVertical):  fixed column seperator drawing

  double.[ch](DoubleIToD):  Takes Int32 instead of int

  design.c(FillLocalSchema):  Makes a copy of calc.bytecode instead of
                               simply copying the handle
  (ClearLocalSchema):  Replaced by calls to ClearDesignSchemaField
  (ClearDesignSchemaField): deallocate mem associated with a field
  (DeleteField):  now calls ClearDesignSchemaField, removing mem leak
  (DesignViewHandleEvent): calls ClearDesignSchemaField


2002-02-11  Scott Wallace <[email protected]>

  duplicate.c(RebuildDatabase): run RecalculateFields on dst not src!

  configure.in:  Added ability to configure the maximum text size of a script

  db.rcp.in: Script Text field in FieldProperties dialog gets MAXCHARS
       from the configure script parameters

  design.c:
  script.c:  Use CONFIG_SCRIPT_TEXT_SIZE instead of SCRIPT_TEXT_SIZE

  grid.c(GridHandleEvent): should solve the "last row unselectable" bug


2002-02-05  Scott Wallace <[email protected]>

  script.c(cast_dur):  set meta info to NUMBER_META_INFO
  (cast_int): change info and meta_info at end of function.
  (ScriptDecompile): LITERAL_TIME is represented using tfColon24h format

  db3.c(ExtractSchema): read the script version number properly

  calcvalue.c(CV_PrintValue): print durations with fixed fixed width
  hh:mm section.

2002-01-30  Scott Wallace <[email protected]>

  Adding support for a calculated value type 'DURATION' &
  minor bug fixes

  calcvalue.c(CV_PrintValue):  string representation of duration

  db3.c(ExtractSchema): fixed loading of scripts to ensure backward
  compatibality & to allow scripts that are self contained
  (e.g. (all 4)) to have the apporprate calc->access restrictions.
  (BuildFieldDataChunk): modified script version number for new
  loading schema

  script.c:  Allows casting from date, time to integer
             Allows casting of an integer to a duration



2001-12-03  Marc Chalain <[email protected]>

   Delete all records in a filter:

   list.c(DoCommand): delete all records.

   enum.h: new menuitemID_DeleteAllRecords define.

   db.rcp.in(menuID_ListViewMenu): new entry.

2001-12-03  Marc Chalain <[email protected]>

   Incrementation of Integer:

   datasource.h: new field in IntegerData structure.

   design.c(FillLocalSchema): assign increment value.
   (FieldPropertiesHandleEvent): manage the increment field.

   edit.c(SaveRecord): change the default value of an integer if
   there is an increment value.
   (EditViewHandleEvent): change the integer value of a duplicated record.

   db3.c(ExtractSchema): extract increment value.
   (BuildFieldDataChunk): store increment value.

   db.rcp.in(formID_FieldProperties): new field for increment.

   enum.h: new ctlID_FieldProperties_IncrementField define.

2001-12-03  Marc Chalain <[email protected]>

   Bug fix:

   util.c: MyErr must not exist if we have not the global access

   main.c(ChooseInitialForm): not set the filter if the driver doesn't
   support them.

2001-12-01  Scott Wallace ([email protected])

   Makefile.in:   added about.o to object list, default build

   chooser.c:(Duplicate_GetCalculated) new form

   configure.in:  default make option (--with-make-default) added
                 --with-fields --> --with-max-fields

   datasource.h:  added Time & Date structs, more info kept about
                  each script.  new form for GetCalculated

   db.h: recognizer for Data & Time, AboutBox event handler

   db.rcp.in:  About box stuff, new script error message form

   db3.c:  Functions to process scripts and pack data

   design.c(Rebuild_GetCalculated): returns CV_FIELD_TYPE_BROKEN
   (Rebuild): calls DB_PackIRCalculations after records have been copied
   (FieldPropertiesHandleEvent): release script text when cancel is pressed

   docs/script.txt: updated

   double.c: kCharDecimal --> LocalInfo.decimalChar
   (DoublePrintValue): minor bug fix for negative numbers

   double.h: removed DoubleInit()  its now util.c:Localize()

   edit.c(EditView_GetCalculated): now runs the script
   (SetupRecordData): uses new GetCalculated forms
   (EditViewHandleEvent): calls EditView_GetCalculated when a calc field
       is pressed

   enum.h:  AboutBox form, message and buttons.  Recalculate menu item

   io.c: new form of GetCalculated used.

   list.c:  Handles recalculate menu item
   main.c:  Localizes application on startup and uses new about box

   script.c:  major changes
   script.h:  major changes

   util.c(IsDate): identifies a string as a date.
   (IsTime): identifies a string as a time.
   (Localize): localizes application on startup fillis in LocalInfo struct



2001-11-30  Frank Schnekenbuehl

   some modifications:

   design.c(Rebuild_GetBoolean): String translation.
   (Rebuild_GetLink): String translation.

   io.c(ConvertFieldToString): Boolean translation.

2001-11-30  Marc Chalain <[email protected]>

   Add default value for String, Integer, Float field types.

   db3.c(BuildFieldDataChunk): new entries.
   (ExtractSchema): new entries.

   design.c(FieldPropertiesHandleEvent): manage new field.
   (FillLocalSchema): new entries.
   (ClearLocalSchema): new entries.

   edit.c(SetupRecordData): set New record value.

   datasource.h: new data for Integer and Float.

   db.rcp.in: new field in properties form.

   enum.h: new ctlID_FieldProperties_DefaultValueField define.

2001-11-24  Scott Wallace <[email protected]>

   Makefile.in:   configurable default build when make is called w/ no args
   configure.in:  added --with-make-default=[<LANG> | all]
   datasource.h:  added scriptInfo and returnType to script structure
                  added structures for time & date
   db.def.in:  made "drvsect" non-dependent on build options
   db.rcp.in:  changed script syntax error message
   db3.c:      single record & inter-record script support
   design.c:   script support
   docs/script.txt:  documented new script stuff
   double.c:   minor print error for negative numbers
   edit.c:  script support
   enum.h:  added a "recalculate" menu item
   script.c:  new operators, validation, inter-record script support


2001-11-19  Marc Chalain <[email protected]>

   Handera, Filter bugs fix.

   chooser.c: Handera support.
   (ChooserHandleEvent): set the filter (none or all) at the opening.

   list.c(ListViewHandleEvent): doesn't set the filter at the OK button press.

   prefs.c: Hadera support.

   sort.c: Hadera support.

2001-11-16  Scott Wallace

   Float alignment.

   grid.c(GridDraw): use UtilWinDrawTruncChars instead WinDrawChars.

2001-11-15  Marc Chalain <[email protected]>

   Bugs fix.

   main.c(ChooseInitialForm): bug fix.

   chooser.c(ChooserResizeForm): replaced by UtilResizeForm.
   (ChooserHandlerEvent): unlock the record every time.
   (DoDuplicate): bug fix.
   (DuplicateDlgHandleEvent): free memory, Handera support, size reduced.
   (RenameDlgHandleEvent): Handera support, size reduced.
   (CreateDlgHandleEvent): Handera support, size reduced.
   (PopupOptionsDialog): Handera support.
   (ChooserInfoDialogHandleEvent): Handera support.

   design.c(DesignViewUpdateForm): replaced by UtilResizeForm.
   (DesignViewHandleEvent): free memory, Handera support.

   edit.c(EditViewResizeForm): replaced by UtilResizeForm.
   (EditViewCustomDraw): store Link string in a handler not in an array.
   (SetupRecordData): store Link string in a handler not in an array.
   (FreeRecordData): free the Link handler.
   (EditViewHandleEvent): little cut in the field management.

   find.c(GFindCallback): bug fix.

   link.c(LinkSelectHandleEvent): store Link string in a handler not in an
   array.
   (LinkUpdate): store Link string in a handler not in an array.

   list.c(ListViewResizeForm): replaced by UtilResizeForm.
   (CmpField): move to util.c
   (FindDialogHandleEvent): bug fix.

   listprop.c(LoadTable): becomes ListViewEditorLoadTable.
   (InitTable): becomes ListViewEditorInitTable.
   (Scroll): becomes ListViewEditorScroll.
   (ListViewEditorLoadTable): accept a biger table.
   (ListViewEditorUpdateForm): new function.
   (ListViewEditor_HandleEvent): becomes ListViewEditorHandleEvent.

   names.c: Handera support.

   popuplist.c: rename global variables names and actions to Names and
   Actions.

   util.c(UtilMoveObject): static function.
   (UtilResizeObject): static function.
   (UtilResizeForm): becomes UtilGetSizeForm.
   (UtilGetSizeForm): static function, bug fix.
   (UtilResizeForm): new function (same name than the old).
   (HandleCommonMenuEvent): bug fix.
   (UtilCenterForm): new function.

   db.h: declaration of new functions.

   db.rcp.in: new icons, form resized.


2001-11-12  Marc Chalain <[email protected]>

   Bugs fix.

   chooser.c(DrawIcon): draw big Icon for Handera device.

   design.c(FieldPropertiesHandleEvent): all static variables must initialized
   during the frmOpenEvent. It's not every time usefull but it's better.

   edit.c(EditViewHandleEvent): a verification before to open a list.

   grid.c(LoadGrid): reload the header if the font are changed.

   main.c(ChooseInitialForm): reset the filter.

   prefs.c(AppPrefsHandleEvent): set the bold font.

   enum-icons.h: new defines for Handera icons.

   db.rcp.in: new handera icons, small modifications in the ListViews.

   bitmaps/*: new icons for grayscale and Handera devices.

   langs/*.rpc: new translation files (sv, ja, fr).

   README_ja: new readme file in japanese.

2001-11-08  Marc Chalain <[email protected]>

   VFS bug fix.

   iovfs.c(FileInfoNew, FileInfoFree, PathCopy): new functions.
   (DS_VFS_CheckTitle, DS_VFS_Enumerate): use new functions.
   (DS_VFS_Close): delete the file on the VFS and delete the database
   after to export it.
   (DS_VFS_GetKey): becomes DS_GetKey and go in io.c

   io.c(DS_PDB_GetKey): delete.
   (DS_GetKey): new getKey VFS compatible.

   db3.c, db2.c, MobileDB.c, JFile3.c: use new DS_GetKey function.

2001-11-08  Marc Chalain <[email protected]>

   move readonly and protectedmode boolean with a UInt16 openMode.
   save the index of the ChooserDB record used in the DataSource

   datasource.h: new dmModeReadEdit define, and UInt16 openMode and index.

   edit.c, list.c, chooser.c, db3.c, db2.c, MobileDB.c, JFile3.c, sort.c,
   viewmodel.c, io.c, design.c: use openMode and save the index.

   main.c(GoToItem): use openMode.
   (ChooseInitialForm, SaveCurrentDataSource): new prefID_LastDataSource
   structure save the ChooserDB record index.


2001-11-07  Marc Chalain <[email protected]>

   Bugs fix on SONY support.

   edit.c(EditViewCustomDraw): change the font with SONY device.
   (EditViewGetFieldHeight): change Height only with Large Font.
   (EditViewSetColumnWidth): change Width only with Large Font.
   (EditViewLoadTable): change Height only with Large Font.
   (EditViewResizeDescription): change Height only with Large Font.

   prefs.c(AppPrefsHandleEvent): give the choice between Small and Large
   Fonts.

   chooser.c(LoadTable): change Height only with Large Font.

   db.rcp.in(alertID_TypeFontSelect): new Alert Box.

   enum.h: new alertID_TypeFontSelect define.

2001-11-07  Marc Chalain <[email protected]>

   Bugs fix.

   design.c(FieldPropertiesHandleEvent): show new item added in a list.

   chooser.c(DoDuplicate): correction of the GetCalculated functions.
   (PopupOptionsDialog): resize the form for Handera device.

   edit.c(EditViewHandleEvent): correct the Scroll Key press on new Item
   error.

   configure.in: Script disable by default.

   db-c.bmp: center the bitmap in a 32x22 format.

   small-*.bmp: little correction.

   db-h.bmp: little correction.

2001-11-06  Marc Chalain <[email protected]>

   Handera complete support.

   db.rc.in: add new icons and Handera resources.

   prefs.c: resize thz database preferences box.

   small-h.bmp: new icon.

   db-h.bmp: new icon.

2001-11-06  Marc Chalain <[email protected]>

   Translation update.

   prefs.c(AppPrefsHandleEvent): no 9006 label.

   db.rcp.in(formID_AppPrefs): no 9006 label.

   langs/sample.rcp: new strings.

2001-11-06  Marc Chalain <[email protected]>

   Global find bug fix.

   find.c(GFindCallback): unuse ConvertFieldToString for numeral fields,
   because some functions (DoublePrintValue, Script...) are in another
   section.

       2001-11-06  Marc Chalain <[email protected]>

   first VFS support.

   configure.in: new --enable-vfs support.

   Makefile.in: new OBJ_VFS support.

   iovfs.c: new file.

   iovfs.h: new file.

   io.c(DS_PDB_CheckTitle, DS_PDB_Delete, DS_PDB_Enumerate, DS_PDB_IsPresent,
   DS_PDB_CompareKey, DS_PDB_GlobalFind): become static.
   (DS_CheckTitle, DS_Delete, DS_Enumerate, DS_IsPresent, DS_CompareKey,
   DS_GlobalFind): new functions.

   io.h: declaration of DS_CheckTitle, DS_Delete, DS_Enumerate, DS_GlobalFind,
   DS_IsPresent, DS_CompareKey. include iovfs.h.

   db3.c(OpenDB): new function, open a database loaded in the RAM.
   (DB_PDB_Open): only set the ops functions and use OpenDB;
   (DB_VFS_Open): new function, set the ops, load the database in RAM,
   use OpenDB.
   (DB_GetDriver, DB_IsPresent, DB_GlobalFind, DB_Enumerate):
   use new function from io.h.

   db.h: new FeatureSetVFS declaration.

   main.c: new FeatureSetVFS definition.
   (StartApplication): check VFS support.

   list.c(DoCommand): open Design Editor only for database not on a VFS.

   datasource.h(DataSource): new onVFS boolean.

   db2.c(OldDB_GlobalFind, OldDB_IsPresent, OldDB_GetDriver): use new io.h function.

   MobileDB.c(MobileDB_GlobalFind, MobileDB_IsPresent, MobileDB_GetDriver): use new io.h function.

   JFile3.c(JFile3_GlobalFind, JFile3_IsPresent, JFile3_GetDriver): use new io.h function.


2001-11-05  Scott Wallace <[email protected]>

   Calculated field type uses a script to calculate a field value
   from other fields in the same record

   Float field type allows double precision floating point numbers

   * util.c(UtilWinDrawTruncChars) now supports right & left justification

   * design.c(Rebuild): while rebuilding each record, the global CurrentRecord
   is set to the index of the record being rebuilt.  This will be useful
   for future script functionality.
   (SchemaFields): this global variable is no longer static.  It is used in
   script.c


2001-11-01  Marc Chalain <[email protected]>

   Global find bug fix on PalmOS 3.2 and prior.

   find.c(GFindCallback): set source->currentfilter to FILTERALL.
   use ConvertFieldToString instead to search on String only.

2001-10-31  Marc Chalain <[email protected]>

   Chooser update.

   chooser.c(ChooserUpdateForm): accept more kinds of updates.
   (ChooserHandleEvent): use less the frmUpdateEvent, use more kinds of
   updates.
   (FillDriverList): not add the drivers which are not able to create a
   database.

2001-10-31  Marc Chalain <[email protected]>

   Non use filters on some database formats.

   * list.c(LocalSearch): if the filter doesn't exist, go out at the first
   occurent foud.
   (FindDialogHandleEvent): hide filters if the database doesn't support
   filters or preferences disable Filters.
   (DoCommand): add the repeat command.
   (ListViewUpdateForm): hide filters if the database doesn't support filters
   or preferences disable Filters.
   (ListViewHandleEvent): add the repeat command.

   * db.rcp.in: new menu Repeat in the ListView menu, new button hiden in the
   ListView.

   * prefs.c(AppPrefsHandleEvent): new check box to use filters or not.
   (InitPrefs): function from main.c.

   * db.h: new define prefFlagUnuseFilers. new function declaration InitPrefs.

   * enum.h: new define ctlID_AppPrefs_UseFilters.

   * main.c(InitPrefs): go to prefs.c

2001-10-27  Marc Chalain <[email protected]>

   Sony support.
   !!The Sony API are very bad and unuser-friendly!!
   The High Resolution API from Handera is more user-friendly.
   Some functions like FntLineHeight give the value for 320x320 screen,
   but the OS calculates the object size for a 160x160 screen. Then for
   sony device you will see a lot of "size" *= 2 or "size" /= 2

   main.c(StartApplication): check sony device feature present.
   Use HRFntSetFont for Sony.
   (InitPrefs): change the defaults fonts for Sony.

   edit.c(EditViewCustomDraw): change the font before WinDrawChars function.

   grid.c: use HR functions on Sony device.

   util.c(UtilWinDrawTruncChars): use HR functions on Sony device.

   chooser.c: use HR functions on Sony device.

2001-10-27  Marc Chalain <[email protected]>

   Bug fix.

   * edit.c(SaveRecord): move the "isDirty" before the ValidateData check.
   (EditViewHandleEvent): correct the fieldnum in the tblEnterEvent section.
   (EditViewCustomDraw): add the link display.
   (EditViewInitTableRow): change link display from label to custom.

   * link.c(LinkUpdate): remove all alerts.

2001-10-17  Marc Chalain <[email protected]>

   A internal view display All fields. it's not use to add a view
   when a database is created.

   * list.c(SelectViewTrigger): add a list item "All Fields" to go in this View.
   (ListViewHandleEvent): verify the View slected.

   * db3.c(DB_Create): doesn't create the default View.
   (DB_DeleteView): accept to delete the last View.
   (DB_Capable): accept to delete the last View.

2001-10-17  Marc Chalain <[email protected]>

   Find feature for every Field Types.

   * list.c(CmpField): use ConvertFieldToString instead its own "switch".

2001-10-17  Marc Chalain <[email protected]>

   No date support.

   * edit.c(EditViewHandleEvent): open ctlID_EditView_DateTimeChoiceList list
   before to select the date or the time.
   (EditViewCustomDraw): display "N/A" for no date or time.
   (SetupRecordData): default value for date and time are none.

   * io.c(ConvertFieldToString): display "N/A" for no date or time.

   * db.rcp.in: new ctlID_EditView_DateTimeChoiceList list in formID_EditView form.

2001-10-12  Marc Chalain <[email protected]>

   Add new Plugin section( only internal use)

   * db.def.in, configure.in: new "plugsect" section.

   * plugin.c: use the new section.

2001-10-12  Marc Chalain <[email protected]>

   Select field to display in a Link Field

   * design.c(PropertiesEventHandler): open the linked database to select the field.

   * io.c(ConvertFieldToString): copy the value of a field in a string if
   it's possible.

   * io.h: declaration of ConvertFieldToString.

   * lin.c(LinkSelect): use ConvertFieldToString to update the link field.

   * ViewModel.c(ViewModel_GetCellString): use ConvertFieldToString.

2001-10-12  Marc Chalain <[email protected]>

   Update the GotoItem functionality and the Jump to Link

   * main.c(PilotMain): replace the "if"s to a "switch" and homoginize
   the treatement of some launch code.
   (GotoItem): use only new driver functions to be not depend of the
   database support (for the future VFS support).

   * io.c(DS_PDB_Info): new function to give informations about the source.
   (DS_GetRecordIndex): new function similar to DS_GetRecordID.

   * io.h: new declaration of DS_PDB_Info, DS_GetRecordIndex.

   * datasource.h: add Info and GetRecordIndex pointer in the
   DataSourceOperations structure.

   * db3.h(DB_Open): assignation to the io functions.

   * link.c(LinkGo): add the tratement of the Jump.

2001-10-xx  Scott Wallace

   Add the Calculated Field Type

2001-10-xx  Scott Wallace

   Add the List Field Type


2001-10-09  Marc Chalain <[email protected]>

   Bug fix on the protectedmode (Read/Edit mode)

   * main.c(SaveCurrentDataSource): save the protectedmode value.
   (ChooseInitialForm): restore the protectedmode value.

   * edit.c(EditViewUpdateForm): better test to use EditViewSetFieldEnabled.

   * chooser.c(ChooserHandleEvent): correct the protectedmode value.

2001-10-09  Marc Chalain <[email protected]>

   Add the Link Field Type

2001-10-09  Marc Chalain <[email protected]>

   Add the List Field Type

2001-10-09  Marc Chalain <[email protected]>

   Add Handera and Sony support. Add Up and Down arrow for keyboard support.

   * edit.c(EditViewHandleEvent): vchrPrevField, vchrJogUp, upArrowChr,
   vchrNextField, displayExtentChangedEvent... control.
   (EditViewUpdateForm): use EditViewResizeForm.
   (EditViewResizeForm): new function to resize the form for Handera
   Slickscreen.

   *listprop.c(DrawFieldName, DrawWidth): no change font.
   (InitTable): Handera support.

   * list.c: Handera & Sonny support.

   * sort.c: Handera support.

   * util.c(UtilResizeForm): new function.
   (UtilMoveObject): new function.
   (UtilResizeObject): new function.

2001-08-21  Marc Chalain <[email protected]>

       Change the beam support to Exchange support for PalmOS 4.0

       *  main.c: new FeatureSet40
       (StartApplication): set FeatureSet40.

       *  io.c(BeamDataSource): became ExchangeDataSource.
       (DS_PDB_Beam): became DS_PDB_Exchange, use the url description
       for the name of the ExgSocketType.

       *  io.h(BeamDataSource): became ExchangeDataSource.
       (DS_PDB_Beam): became DS_PDB_Exchange.

       *  chooser.c(ChooserHandleEvent): BeamDataSource became
       ExchangeDataSource.
       The "Beam" menu item became "Exchange"

       *  enum.h: stringID_Beam became stringID_Exchange.

       *  db.rcp.in: the "Beam" string became "Exchange"

       *  langs/sample.rcp: the "Beam" string became "Exchange"

2001-08-21  Marc Chalain <[email protected]>

       View support in the Edit View

       *  edit.c(EditViewHandleEvent): get and put the View from the
       datasource.
       (EditViewCustomDraw): add View support.
       (EditViewLoadRecord): add View support.
       (EditViewUpdateScrollers): add View support.
       (EditViewGetFieldHeight): add View support.
       (EditViewInitTableRow): add View support.
       (EditViewLoadTable): add View support.
       (EditViewScroll): add View support.

2001-08-21  Marc Chalain <[email protected]>

       filter support

       *  io.c(DS_FilterRecord): add Filter support.
       (DS_SetFilter): add Filter support.
       (DS_GetCurrentFilter): new Function.

       *  list.c(ListViewHandlEvent): add FilterTrigger support
       (FindHandleEvent): add Filter support.
       (LocalSearch): add Filter support.

       *  datasource.h: new Filter enum

       *  db.rcp.in(fomrID_ListView): new Trigger and list for Filters.

2001-08-20  Marc Chalain <[email protected]>

       check of the Read-Only and Beam Prevention bit attribute
       and default value for Integers.

       *  io.c(DS_PDB_Beam): check the dmHdrAttrCopyPrevention attribute.

       *  db3.c(DB_Open): check the dmHdrAttrReadOnlyattribute and check the
       AppInfo Block.
       (GetAppInfoBlock)(PutAppInfoBlock): check the AppInfo Block is present.

       *  chooser.c(ChooserHandleEvent): reduce the code to open a database.

       *  util.c(IsNumber): use Sring2Long to reduce the size of code.
       (String2Long): check errors, an error return 0.

       *  edit.c(ValidateData): a null string for an integer is not yet
       an error.
       (EditView_GetInteger): no modification but a null string return 0.
       (EditViewHandleEvent): rechange the modification of 2001-08-08

2001-08-13  Marc Chalain <[email protected]>

       bugs fix in the note field, and on PalmOS 3.1 and prior.

       * note.c: delete NOTE_MAXCHAR and MAX_NOTES defines.

       * datasource.h: add NOTE_MAXCHAR and MAX_NOTES defines.

       * db3.c(DB_PackRecord): save maximum NOTE_MAXCHAR characters.

       * list.c(ListViewHandleEvent): change the usable attribute of the icons
       for PalmOS 3.1 and prior.

2001-08-10  Marc Chalain <[email protected]>

       bugs fix on the read only mode.

       *  main.c(SaveCurrentDataSource): save the open mode.
       (ChooseInitialForm) read the open mode.
       (PilotMain): delete the lastdatasource preference after an hotsync.

       *  list.c(DoCommand): forbidde sort, DB structure in readonly mode.
       (ListViewHandleEvent): forbide sort in read only mode. hide new button,
       show lock button in readonly mode.

       *  edit.c(EditViewHandleEvent): hide done, delete, duplicate buttons,
       show cancel button in readonly mode.

       *  io.c(DS_SetFilter): reopen the database in readwrite mode just at the
       beginning to filter and rechange the mode at the end.
       (DS_FilterRecord): like DS_SetFilter.

       *  db.rcp.in: add the lock icon in the list view form.

       *  enum-icons.h: add define for the lock icon.

2001-08-08  Marc Chalain <[email protected]>

       use PalmOS feature for Security menu item.

       *  edit.c(EditViewHandleEvent): use FrmSaveAllForms to save the data

       *  chooser.c(ChooserHandleEvent): new menuOpentEvent entry, to add the
       security menu item on PalmOS3.5. The alert of the PalmOS3.5 feature is
       not useful in the security menu entry.

       *  db.rcp.in: delete the Security item in the ChooserMenu, and delete
       the alert of PalmOS 3.5 feature.

2001-08-07  Marc Chalain <[email protected]>

       use the color feature for Grayscale device

       *  main.c(StartApplication): call SetColorDefinition
       (SetColorDefinition): find the depth of the device, fix the color of
       UIOK, and UIFieldTextHighlightBackground for Grayscale device. Set the
       device in Gray mode.

       *  grid.c(GridInit): use UIOK index color for one line on two.

2001-08-07  Marc Chalain <[email protected]>

       autoconf support

       *  config.mak: deleted

       *  configure.in: description file for autoconf

       *  Makefile.in: template of Makefile for configure

       *  config.h.in: template of config.h for configure

       *  db.rcp.in: template of db.rcp for configure

       *  db.def.in: template of db.def for configure

       *  list.c, main.c, edit.c, util.c, io.c, io.h, chooser.c, grid.c:
       change the compilation options to use the config.h

2001-07-21  Marc Chalain <[email protected]>

       find functionelity doesn't use the second button
       + more secure implementation

       *  JFile3.c: add include io.h

       *  MobileDB.c(MobileDB_LockRecord): add the pointer on standard
       functions for the getter.

       *  chooser.c(): add verification.

       *  db2.c(OldDB_LockRecord): add the pointer on standard
       functions for the getter.

       *  edit.c(DoCommand): add preprocessor to not compile "linkaware" support.

       *  grid.c: add preprocessor to not compile color support.

       *  io.c: new standard functions DS_Getter_GetInteger,
       DS_Getter_GetBoolean,
       DS_Getter_GetTime, DS_Getter_GetNote, DS_Getter_GetNoteTitle.
       (DS_Seek): add verification of the driver's capability for the filter.

       *  list.c(ListViewEventHandler): add a global boolean for the find
       button state. Show/hide Find/All button in th frmUpdateEvent.

       *  main.c: add preprocessor to not compile "linkaware" support.

       *  util.c: add preprocessor to not compile color support.

       *  enum.h: add defines for icons.

       *  io.h: add new functions definition.

       *  db.rcp: change some strings ( menu item, help strings...).

       *  plug.rcp: change the form.

       *  Makefile: add support for WITHOUT_LINKAWARE and
       WITHOUT_COLOR support.

       *  config.mak: add WITHOUT_LINKAWARE and WITHOUT_COLOR
       in comment.

       *  db-c.bmp: new color icon.

       *  db.bmp: new icon.

       *  langs/fr.rcp: update with new help strings.

       *  langs/en.rcp: new help strings.

       *  langs/sample.rcp: new strings to translate.

2001-07-14  Marc Chalain <[email protected]>

       filter implementation + find functionality

       *  db3.c(DB_open):: add pointer on DS_FilterRecord and DS_SetFilter

       *  io.c: new define VisibleCategory
       (DS_FilterRecord): new funtion.
       (DS_SetFilter): new function.
       (DS_Seek): change the category.

       *  grid.c(LoadGrid): change the incrementation to use filter.

       *  list.c(LocalSearch): doesn't stop the search and place record in
       the VisibleCategory.
       (FindDialogHandleEvent): different use of LocalSearch.
       (ListViewHandleEvent): change the action of Find button and + button.

       *  datasource.h: new enum DS_CAPABLE_LISTVIEW_FILTER.

       *  io.h: declaration of DS_FilterRecord and DS_SetFilter.

       *  db.rcp: button "+" becomes button "All".

2001-07-09  Marc Chalain <[email protected]>

       Bug fix

       *  chooser.c(Duplicate_GetNote): new function.
       (Duplicate_GetNoteTitle): new function.
       (Duplicate_Get...): add FIELD_TYPE_NOTE switch entry.
       (DoDuplicate): add pointer on GetNote and GetNoteTitle.

       *  util.c(string2long): test the Int32 max value.

       *  edit.c(EditViewLoadRecord): max length of integer.
       (EditViewInitTable): second column width change to view the note icon.

       *  list.c(ListViewHandleEvent): title length verification(bug fix).

       *  plugin.c(PluginListHandleEvent): bug fix to call FreePluginList.
       (FreePluginList): bug fix when list is empty.
       (FillPluginList): bug fix when list is empty.

2001-07-03  Marc Chalain <[email protected]>

       Menu of the Note editor. Bug fix

       *  note.c(NotePopupForm): return UInt16 instead void, size of
       note extended(bug fix).
       (NoteNew): size of note extended(bug fix).
       (NoteHandleEvent): add HandleCommonMenuEvent call.

       *  note.h: NotePopupForm declaration.

       *  list.c(ListViewHandleEvent): title length verification(bug fix).
       fix the view name maximum length to 11(bug fix).
       (ViewModel_IsColumnEditable): checkbox unselectable in protected mode.

       *  design.c(SetColumnWidths): minimum width of oldname_column(bug fix).

       *  db.rcp(formID_Note): add menu resource.
       (menuID_NoteMenu): new menu.

       *  enum.h: new defines.

       *  Makefile: version number modification.

       *  util.c: the include stdarg.h becomes unix_stdarg.h standard of the
       SDK.
       (String2Long): result becames UInt16.

       *  db.rcp(formID_ListView): new coord. for the Gadget (Grid) to display
       10 lines. (update from Brian Foley)

2001-07-02  Marc Chalain <[email protected]>

       Bug fix, and memory verification.

       *  note.c(NoteFree): delete an !

       *  note.h: note.c functions declaration in the edisect section.

       *  edit.c: add controls after MemHandleNaw MemHandleFree ... functions.

       *  list.c(FindDialogHandleEvent): add Memory free at frmCloseEvent.

       *  design.c(DesignViewHandleEvent): add Memory free at frmCloseEvent.

       *  util.c(CopyStringResource): add control after MemPtrNew.

2001-06-28  Marc Chalain <[email protected]>

       MobileDB updated to use io.h. version licence changed

       *  MobileDB.c: add #include "io.h"

       *  db.rcp(alertID_About): changed to display the translater name,
       (and mine).

       *  langs/*.rcp: translater string.

       *  Makefile: the version pass to 0.3.2b1.

       *  util.c(HandleCommonMenuEvent): change the about box's call.

2001-06-28  Marc Chalain <[email protected]>

       Plugin support update. This feature runs but i'm looking for a solution
       to use GCC instead CW for the plugins, then the support should change
       for the next release (0.3.3). Now i'm waiting the prc-tool 2.1.0 is
       completed.

       *  plugin.c

       *  plugin.h

2001-06-28  Marc Chalain <[email protected]>

       Note support added on DB file. The UI can accept 10 note fields per
       record, but the DB file accept only one. A note is a field with a title
       of 32 bytes and a string of 6500 bytes displaied in a popup form.

       *  edit.c(EditViewGetFieldHeight): add FIELD_TYPE_NOTE switch entry.
       (EditViewInitTableRow): add FIELD_TYPE_NOTE switch entry.
       (EditViewScroll): add FIELD_TYPE_NOTE switch entry.
       (EditView_GetNoteTitle) new function.
       (EditView_GetNote): new function.
       (EditViewGetter): pointer on EditView_GetNoteTitle, EditView_GetNote.
       (SaveRecord): add FIELD_TYPE_NOTE switch entry.
       (SetupRecordData): add FIELD_TYPE_NOTE switch entry.
       (FreeRecordData): add FIELD_TYPE_NOTE switch entry.
       (EditViewHandleEvent): add FIELD_TYPE_NOTE switch entry in
       tblEnterEvent, tblSelectEvent.

       *  design.c(types): new FIELD_TYPE_NOTE entry.
       (Rebuild_GetString): add FIELD_TYPE_NOTE switch entry.
       (Rebuild_GetInteger): add FIELD_TYPE_NOTE switch entry.
       (Rebuild_GetBoolean): add FIELD_TYPE_NOTE switch entry.
       (Rebuild_GetNote): new function.
       (Rebuild_GetNoteTitle): new function.
       (rebuild_getter): pointers on Rebuild_GetNoteTitle, Rebuild_GetNote.
       (UpdateNewDesign): management of errors.

       *  db3.c(ExtractSchema): type 5 entry for FIELD_TYPE_NOTE.
       (DB_PackedRecordSize): add FIELD_TYPE_NOTE switch entry.
       (DB_PackRecord): add FIELD_TYPE_NOTE switch entry.
       (DB_Getter_GetNoteTitle): new function.
       (DB_Getter_GetNote): new function.
       (DB_LockRecord): pointers on DB_Getter_GetNoteTitle, DB_Getter_GetNote.
       (DB_Create): test number of Note field. add FIELD_TYPE_NOTE switch
       entry.
       (DB_SupportsFieldType): add FIELD_TYPE_NOTE switch entry.

       *  note.c: new file.

       *  note.h: new file.

       *  db.rcp(alertID_MaxNoteSupport): new alert.
       (formID_Note): new modal form.
       (stringID_Note): new string.

       *  enum.h: new alertID_MaxNoteSupport, stringID_Note, formID_Note,
       ctlID_Note_EditField, ctlID_Note_ScrollBar, ctlID_Note_DoneButton.

       *  db.h: NoteHandleEvent declaration.

       *  main.c(AppHandleEvent): add formID_Note switch entry.

       *  io.c(DS_StandardSortCallback): add FIELD_TYPE_NOTE switch entry.

       *  grid.c(DrawCell): add gridCellTypeNote switch entry (note used).
       (GridHandleEvent): add gridCellTypeNote switch entry (note used).

       *  grid.h: new gridCellTypeNote enum.

       *  datasource.h: new FIELD_TYPE_NOTE enum.

       *  list.c(ViewModel_GetCellType): add gridCellTypeNote switch entry
       (note used).
       (ViewModel_GetCellString): add FIELD_TYPE_NOTE switch entry.
       (CmpField): add FIELD_TYPE_NOTE switch entry.

       *  makefile: note.c compilation.

2001-06-25  Marc Chalain <[email protected]>

       *  langs/fr.rcp: update.

2001-06-25  Marc Chalain <[email protected]>
       with help from Brian Foley <[email protected]>

       Use of keys down/up buttons in the edit view. The use can be setting in
       the Global Prefs popup window: "line" to down/up in the current record,
       "page" to down/up in the records.

       *  prefs.c (PopupAppPrefs):

       *  edit.c (EditViewHandleEvent): keyDownEvent management.

       *  main.c (InitPrefs): new init of preferences.

       *  db.rcp (formID_AppPrefs): new triggers for record scrolling.

       *  db.h : new prefFlagRecordUpPage, prefFlagRecordDownPage defines.

2001-06-14  Marc Chalain <[email protected]>

       Extract Sort Editor: with the constant WITHOUT_SORT in config.mak
       you can extract the Sor Editor and win 5 ko (it's not a lot).

       *  sort.c (DoQuickSort): move to list.c file

       *  list.c (DoQuickSort): move from sort.c.
       (DoCommand): add preprocesor condition.

       *  main.c (AppHandleEvent): add preprocesor condition.

       *  db.rcp: extract formID_SortEditor, menuID_SortEditorMenu,
       stringID_Sort_Label_D, stringID_Sort_Label_CS, stringID_Help_SortEditor

       *  sort.rcp: new file with formID_SortEditor, menuID_SortEditorMenu,
       stringID_Sort_Label_D, stringID_Sort_Label_CS, stringID_Help_SortEditor

       *  Makefile: management of the WITHOUT_SORT constant.

       *  config.mak: new constant in comment WITHOUT_SORT.

2001-06-07  Marc Chalain <[email protected]>

       Views of ListViews form managed like Categories

       *  list.c(SelectListViews): new function.
       (PopupListOptions): deleted.
       (ListViewHandleEvent): frmOpenEvent and frmUpdateEvent entries set up
       the trigger.
       ctlSelectEvent entry new CtlID for the Trigger.

       *  enum.h: new stringID_EditListViews, ctlID_ListView_ViewTrigger,
       ctlID_ListView_ViewList entries.
       formID_ListViewOptionsDlg, menuID_ListViewEditorMenu, ctlID_ListViewOptionsDlg_* entries deleted.

       *  db.rcp: formID_ListViewOptionsDlg deleted, new Trigger and List in formID_ListView.
       new stringID_EditListViews string

2001-06-01  Marc Chalain <[email protected]>

       popuplist on the header of the listview form.

       * list.c(ListViewHandleEvent): change gridHeaderSelectEvent entry.
       popup_menu static global variable.

       * popuplist.c: new file with SetupPopupList, FreePopupList,
       ShowPopupList functions developed from SetupActions... of chooser.c

       * chooser.c(ChooserHandleEvent): use popuplist.c

       * grid.c: new GridGetBounds function.

       * db.rcp(formID_ListView): new ctlID_ListView_ActionList list.
       new stringID_SortAscend and stringID_SortDescend strings defines.

       * enum.h: new defines ctlID_ListView_ActionList, stringID_SortAscend,
       stringID_SortDescend.

2001-05-29  Marc Chalain <[email protected]>

       Break io.c file in three parts.

       * io.c: contains only standard functions for drivers and main application calls.
       functions with same definition in db3 and db2 drivers (and by more drivers) are declared
       once and begin by "DS_*" (DS_CloseDB, DS_PutView...) if a driver should use a specific
       definition this functions should NOT be changed.

       * db3.c: contains "DB_*" functions, driver for db 0.3.x.

       * db2.c: contains "OldDB_*" functions, driver for db 0.2.x.

       * Makefile: add WITH_DB2 constant management.
       !!!
       !! as MobileDB and JFile3 DB0.2.x can be used as plugin or intagrate in the main application
       !! with WITH_DB2 constant declaration in config.mak
       !!!

2001-05-29  Marc Chalain <[email protected]>

       Add plugin mechanism, and 3 plugins.

       * chooser.c (ChooserHandleEvent): add "menuitemID_Plugins", "menuitemID_PluginsAbout"
       menu entries.

       * list.c (ListViewHandleEvent): add "menuitemID_Plugins" menu entry.

       * edit.c (EditViewHandleEvent): add "menuitemID_Plugins" menu entry.

       * enum.h: add "ctlID_PluginListDialog_*", "menuitemID_Plugins*", "formID_PluginListDialog"
       defines.

       * main.c (AppHandleEvent): add "formID_PluginListDialog" entry.
       (EventLoop): add "PlugHandleEvent" call to dispatch frmLoadEvent to the Plugins.
       (StartApplication): add "Plug_Setup" call.
       (StopApplication): add "Plug_Restore" call.

       * io.c (GetDataSources): add "Plug_GetDriver" call,extract "MobileDB_GetDriver",
       "JFile3_GetDriver" calls.

       * datasource.h: extract "MobileDB_GetDriver", "JFile3_GetDriver" declarations.

       * plugin.c: new file with "PlugHandleEvent", "Plug_Setup", "Plug_Restore" and
        "Plug_GetDriver" functions.

       * plug.h: definitions of plugin.c used by the main application.

       * plugin.h: definitions of plugin.c used by the main application and the plugins.

       * db.def.in: new file to generate db.def with m4.

       * db.rcp: add new "menuitemID_Plugins" menu entries. add "plug.rcp" include.

       * plug.rcp: new file with description of "formID_PluginListDialog" to include in db.rcp

       * Makefile: add "db.def" entry, add management of constants of config.mak.

       * config.mak: new file with constants to declare to change the compilation
       !!!
       !! Now normal compilation doesn't include MobileDb and JFile3 support, you can find them
       !! in plugin solution, or declare the constants WITH_MOBILEDB and/or WITH_JFILE3
       !!!

2001-05-29  Marc Chalain <[email protected]>

       Add a protected mode to open a database. Now It's impossible to modify a record
       directly, you need to tape on the "Modify" button in the EditView or select "Open
       Unprotected" in the chooser. Now, "Delete" is in the menu of EditView.

       * edit.c (EditViewHandleEvent): "ctlID_EditView_DeleteButton" becomes
       "ctlID_EditView_ModifyButton". Call to "EditViewSetFieldEnabled" function
       (EditViewSetFieldEnabled): new function all fields swap un/usable.

       * chooser.c (enum): new value "actionID_OpenUnProtected".
       (popup_menu): new data for "Open UnProtected" mode.
       (ChooserHandleEvent): new "actionID_OpenUnProtected" entry. Manage "protectedmode"
       member data of CurrentSource.

       * datasource.h (struct data_source): new member "protectedmode".

       * db.rcp: new string "stringID_OpenUnProtected", Modify button in formID_EditView form.

       * enum.h: change "ctlID_EditView_DeleteButton" to "ctlID_EditView_ModifyButton", new
       "stringID_OpenUnProtected" define.

2001-05-29  Marc Chalain <[email protected]>

       Change the Menu of each form with a "help" popupmenu. it's to normalize all menu bar.

       * db.rcp: all menu entry changed.

       * enum.h: new menu entries defines menuitemID_Duplicate, menuitemID_Delete.

       * edit.c (EditViewHandleEvent): add menuitemID_Duplicate, menuitemID_Delete
       menu entries. Duplicate build a copy of the current record if you tape done at the end

2001-05-29  Marc Chalain <[email protected]>

       Quicksort functionality: tape on the header of the listview to sort.

       * list.c (ListViewHandleEvent): add gridHeaderSelectEvent event entry to
       sort list with DoQuickSort

       * sort.c (DoQuickSort): new function

2001-04-29  Tom Dyas  <[email protected]>

       * grid.c (GridInit): Initialize new color table entries for
       highlighted rows.
       (DrawRow): Use new color table entries for highlighted rows.
       (GridDraw): GridUICellFill renamed to GridUICellBackground. Set
       background color for clearing unused portion of row area.
       (ReplaceTwoColors): New function. Adapted from PalmOS 4.0 source
       code. Swaps two colors on the screen.
       (DoCellColorSwap): New function. Acts as a wrapper around
       ReplaceTwoColors() for SelectCell().
       (SelectCell): Use DoCellColorSwap() to just swap colors on the
       screen instead of redrawing the entire row.
       (DrawHeaderCell): Removed in favor of color swapping.
       (SelectHeaderCell): Use ReplaceTwoColors() to just swap colors on
       the screen instead of redrawing the entire row.
       (GridHandleEvent): Renamed event parameter to just "e".
       (GridGetColor): New public function. Allows callers to retrieve
       color table entries.
       (GridSetColor): New public function. Allows callers to set color
       table entries.

       * grid.h: Prototypes for GridGetColor() and GridSetColor(). Add
       color table entries for highlighted rows instead of using the
       entries for selected rows.

       * docs/building.txt: Mention prc-tools 2.1pre3 (2.0.92).

2001-04-28  Tom Dyas  <[email protected]>

       * docs/building.txt: SDK 4.0 is now required for building.

       * edit.c: Defined min and max as inline functions since SDK 4.0
       does not define them by default anymore.

       * list.c (DoCommand): Use GridSetTopIndex() to access the top
       index instead of direct access to the grid structure.
       (ListViewHandleEvent): Likewise.

       * util.c: Include only <PalmOSGlue.h> to bring in the glue
       includes. <CharAttr.h> is needed for some missing definitions in
       <TxtGlue.h>.
       (MatchString): Call the new and documented form of
       IntlGlueGetRoutineAddress().

       * grid.c: Massive changes to support color.
       * grid.h (GridUIColorTableEntries): New enumeration which defines
       the colors for various aspects of the grid UI.
       (GridScreenRow): Rename some of the variables.
       (GridType): Rename more variables.
       (GridEventsEnum): Rename the grid events to be more descriptive.
       (GridSetHeaderLook): Changed prototype to allow the selectability
       of the header to be changed. Removed invert option.
       (GridGetTopIndex): New function. Returns the topmost index.
       (GridSetTopIndex): New function. Sets the topmost index.

2001-04-05  Tom Dyas  <[email protected]>

       * util.c (ShowModalMessage): Frame type is now a parameter. Reduce
       the vertical size of the popup. Cleanup the handling of PalmOS
       3.5+.
       (HideModalMessage): Call FrmUpdateForm() to trigger a redraw if an
       error was encountered in ShowModalMessage() while saving the
       screen area occupied by the popup.
       (ShowWorkingIndicator): Add boldRoundFrame as the new frame
       parameter to ShowModalMessage().
       * db.h: Update prototype of ShowModalMessage().

       Patch from Marc Chalain <[email protected]>:
       * grid.h: Add new event gridHeaderSelectEvent which is triggered
       when the grid header is tapped.
       * grid.c (GridHandleEvent): Generate gridHeaderSelectEvent when
       the a grid header cell is tapped.

2001-03-31  Tom Dyas  <[email protected]>

       * util.c (ShowModalMessage): New function based on old
       DrawWorkingIndicator(). Displays a single line string in a modal
       window.
       (HideModalMessage): New function based on old
       EraseWorkingIndicator(). Restores the screen to the state before
       ShowModalMessage() was called.
       (ShowWorkingIndicator): Renamed from
       DrawWorkingIndicator(). Retrieve "Working..." string, then call
       ShowModalMessage().
       (EraseWorkingIndicator): Renamed form
       EraseWorkingIndicator(). Just calls HideModalMessage().
       * db.h: Update prototypes to above changes.

       * chooser.c (DoDuplicate): DrawWorkingIndicator() ->
       ShowWorkingIndicator(). EraseWorkingIndicator() ->
       HideWorkingIndicator().
       * design.c (Rebuild): Likewise.
       * sort.c (DoSort): Likewise.

2001-03-31  Tom Dyas  <[email protected]>

       * Version 0.3.1

       * NEWS: Update the release date of 0.3.1.
       * README_fr: French translation of README from Christian Grigis
       <[email protected]>.

2001-03-24  Tom Dyas  <[email protected]>

       * README: Reworked for the new release.
       * build-zip.sh: Build a release for each of the supported
       languages.

2001-03-19  Tom Dyas  <[email protected]>

       * langs/it.rcp: Update Italian translation from Roberto
       A. Foglietta <[email protected]>.
       * langs/fr.rcp: Update French translation from Christian Grigis
       <[email protected]>.

2001-03-12  Tom Dyas  <[email protected]>

       * langs/en.rcp: Spell words correctly.
       * langs/pt.rcp: Portuguese translation update from Pedro Pessoa
       <[email protected]>.
       * langs/fr.rcp: Language tag should be FR and not SAMPLE.

2001-03-10  Tom Dyas  <[email protected]>

       * langs/it.rcp: Italian translation from Roberto A. Foglietta
       <[email protected]>.
       * Makefile: Add targets db-it.prc and ts-bin-it to build the
       Italian version of DB.
       * db.rcp: Include the new it.rcp file.
       * README_it: Italian translation of the README file.
       * README: Minor edits.

2001-03-05  Tom Dyas  <[email protected]>

       * NEWS: Add the new features and changes in 0.3.1.

       * edit.c (EditViewCustomDraw): Use PrefGetPreference() to retrieve
       the system time and date formats.

       * list.c (ViewModel_GetCellString): Use the short date format
       instead of the long format in the list view.

2001-03-02  Tom Dyas  <[email protected]>

       * design.c (HandleContextMenu): Remove the "Properties" choice
       from the popup list since it is not used at this time.
       (UpdateScrollers): Remove old code which handled the Add and Del
       buttons.
       * sort.c (SortEditor_HandleEvent): Hide the name label and name
       field since they are unused at this time.
       * list.c (ListViewHandleEvent): Respond correctly to
       frmUpdateEvent by redrawing the entire display.

2001-03-01  Tom Dyas  <[email protected]>

       * langs/de.rcp: update from Thorsten Tietz
       <[email protected]>.

       * util.c (GetStringResource): Renamed from GetStringPtr().
       (PutStringResource): New function to free resources associated
       with string return from GetStringResource().
       (CopyStringResource): Rewritten to call DmReleaseResource() when
       done with the string resource.
       * db.h: Match prototypes with the actual defintions in util.c

       * JFile3.c (JFile3_GetView): GetStringPtr() ->
       GetStringResource(). Use PutStringResource().
       * MobileDB.c (MobileDB_GetView): Likewise.
       * io.c (DB_Create): Likewise.
       (OldDB_GetView): Likewise.
       * sort.c (DrawTableLabels): Likewise.
       * design.c (InsertField): Likewise.
       (FillLocalSchema): Likewise.
       (DesignViewHandleEvent): Likewise. Plus remove dead code from old
       add/del buttons.
       * list.c (FindDialogHandleEvent): Use CopyStringResource() instead
       of duplicating copy code.
       * prefs.c (PopupAppPrefs): Use CopyStringResource() instead of
       GetStringPtr().
       * chooser.c (SetupActions): Use CopyStringResource() instead of
       duplicating copy code.
       (PopupOptionsDialog): Use CopyStringResource() instead of
       GetStringPtr().

2001-02-25  Tom Dyas  <[email protected]>

       * db.rcp: Add "Help..." item to design view menu. Remove
       stringID_Append and stringID_Remove. Rename stringID_Remove2 to
       stringID_Remove. Add stringID_Help_DesignView.
       Remove formID_FieldSelectDialog since it is no longer used.
       * enum.h: Renumber string ID values with the removals and
       additions. Remove formID_FieldSelectDialog from the formID list
       and rebumber.
       * langs/en.rcp: Add help string for the design view.
       * langs/de.rcp: Some strings that need translation.
       * langs/pt.rcp: Likewise.
       * langs/sample.rcp: Likewise.
       * design.c (HandleContextMenu): stringID_Remove2 -> stringID_Remove
       (DesignViewHandleEvent): Respond to menuitemID_Help by displaying
       the help screen.
       * listprop.c (HandleContextMenu): stringID_Remove2 ->
       stringID_Remove
       * sort.c (HandleContextMenu): Likewise.

2001-02-14  Tom Dyas  <[email protected]>

       * db.def: Rename "foo" section as "ui1sect". Rename "editsect" as
       "ui2sect".
       * db.h: Redo the macros used to place functions in other code
       segments. Put DbgPrintF(), DrawWorkingIndicator(), and
       EraseWorkingIndicator() in section "ui2sect".
       * linkaware.h: Use "ui2sect" section instead of "foo" section.

       * design.c (HandleContextMenu): Size the width of the popup list
       based on the menu choice strings.

       * datasource.h: Add prototype for GetInternalDataSources().
       * find.c (GlobalSearch): Call GetInternalDataSources() instead of
       GetDataSources() due to problems with drivers in other code
       sections.
       * io.c (GetInternalDataSources): Remove "static" keyword.

2001-01-24  Tom Dyas  <[email protected]>

       * io.c (DB_Sort): Avoid crashing by filling in the GetDate() and
       GetTime() methods of the getter.
       * JFile3.c (JFile3_Sort): Likewise.

2001-01-21  Tom Dyas  <[email protected]>

       * grid.c (FillColumnInfo): Bug fix. Detect when the righthand
       column is clipped. Set right arrow based on the detecting
       clipping. Patch from Greg Alt <[email protected]>.

2001-01-11  Tom Dyas  <[email protected]>

       * io.c (DS_StandardSortCallback): Compare FIELD_TYPE_DATE and
       FIELD_TYPE_TIME field types. Assume unknown field types are equal.
       * chooser.c (Duplicate_GetDate): New function. Part of the getter
       used by the duplicate code.
       (Duplicate_GetTime): New function. Part of the getter used by the
       duplicate code.
       (DoDuplicate): Reference Duplicate_GetDate() and
       Duplicate_GetTime().

2001-01-10  Tom Dyas  <[email protected]>

       * docs/format.txt: Document the new date and time fields. Document
       record structure.

       * datasource.h (DataSourceFieldType): Add FIELD_TYPE_DATE and
       FIELD_TYPE_TIME for date and time field types.
       (DataSourceGetter): Add GetDate() and GetTime() methods
       corresponding to FIELD_TYPE_DATE and FIELD_TYPE_TIME.

       * io.c (ExtractSchema): Recognize date and time fields.
       (DB_PackedRecordSize): Likewise.
       (DB_PackRecord): Pack date and time fields into the record.
       (DB_Getter_GetDate): New function. Unpacks date fields.
       (DB_Getter_GetTime): New function. Unpacks time fields.
       (DB_LockRecord): Reference DB_Getter_GetDate() and
       DB_Getter_GetTime() for the getter.
       (DB_Create): Recognize date and time fields.
       (DB_SupportsFieldType): Likewise.
       (OldDB_Getter_GetData): New dummy function for safety.
       (OldDB_Getter_GetTime): Likewise.
       (OldDB_LockRecord): Reference the two dummy getter functions
       above.
       (OldDB_SupportsFieldType): New function. The legacy code needs its
       own list of supported field types now that the new format can
       support more field types.
       (OldDB_GetDriver): Reference OldDB_SupportsFieldType().

       * JFile3.c (JFile3_PackRecord): Add support for date and time
       fields.
       (JFile3_Getter_GetDate): New function. Returns date fields.
       (JFile3_Getter_GetTime): New function. Returns time fields.
       (JFile3_LockRecord): Reference JFile3_Getter_GetDate() and
       JFile3_Getter_GetTime() when setting up the getter.
       (JFile3_SetField): Allow the in-place setting of boolean fields.
       (JFile3_OpenPDB): Decode date and time field types to the generic
       field types.
       (JFile3_SupportsFieldType): List support for date and time fields.

       * list.c (ViewModel_GetCellString): Support FIELD_TYPE_DATE and
       FIELD_TYPE_TIME.

       * listprop.c (LoadTable): Reworked the table code so rows are made
       unusable after the for loop and not in it.
       * sort.c (LoadTable): Likewise.

       * design.c (types): Add entries for FIELD_TYPE_DATE and
       FIELD_TYPE_TIME.
       (DrawPopupIndicator): New functions. Draw the popup indicator
       arrow.
       (LoadTable): Moved the code around so that rows are only made
       usable in the for loop and then unusable after the loop. Plus
       support the popup menu.
       (SetColumnWidths): Setup the new context menu column.
       (Rebuild_GetDate): New function. Implements the GetDate() method
       for the getter used by the rebuild code.
       (Rebuild_GetTime): Likewise for GetTime() method.
       (rebuild_getter): Reference Rebuild_GetDate() and
       Rebuild_GetTime().
       (Rebuild): Use DrawWorkingIndicator() and EraseWorkingIndicator()
       to displays the "Working..." message.
       (PopupFieldSelectDialog): Removed.
       (HandleContextMenu): New function. Displays the context menu and
       then selects the correct action.
       (SetupPopupList): Use CopyStringResource() to get a local copy of
       the string resource.
       (DesignViewHandleEvent:tblSelectEvent): Call HandleContextMenu()
       when the popup column is tapped.
       (DesignViewHandleEvent:ctlSelectEvent): Remove code for
       ctlID_DesignView_AddButton and ctlID_DesignView_DelButton since
       the buttons no longer exist.

       * edit.c (EditViewFieldData): Add "datetime" field to store
       information for date and time fields.
       (EditViewCustomDraw): New function. Custom table drawing function
       used for date and time fields.
       (EditViewGetFieldHeight): Support for FIELD_TYPE_DATE and
       FIELD_TYPE_TIME.
       (EditViewInitTableRow): Likewise.
       (EditViewInitTable): Make EditViewCustomDraw() the custom draw
       procedure for the second column.
       (EditView_GetDate): New function. Implements the GetDate() method
       for the getter used by the edit view to add/update records.
       (EditView_GetTime): Likewise except for the GetTime() method.
       (EditViewGetter): Reference EditView_GetDate() and
       EditView_GetTime().
       (SetupRecordData): Setup date and time fields correctly.
       (EditViewHandleEvent): Taps on date fields display a date
       selector. Taps on time fields display a time selector.

       * chooser.c (LoadTable): Move the table setup calls inside the
       validity check.
       (InitTable): Set the column sizes dyanmically based on the actual
       table width.

       * db.rcp (formID_DesignView): Remove the "Ins" and "Del"
       buttons. Extra column in the table for popup context menu. Extra
       list for the context menu.
       * enum.h: Make constants sync with resource file.

2001-01-07  Tom Dyas  <[email protected]>

       * Makefile: Add -allowEditID option to pilrc invocation so that no
       warning messages complaining about the Edit menu IDs are
       displayed.
       * docs/building.txt: Mention that PilRC 2.7a or higher is now
       required.

2000-12-20  Tom Dyas  <[email protected]>

       * listprop.c (ListViewEditor_HandleEvent): If the field name is
       not editable but the width is editable, then put focus on the
       width if the field name is tapped.
       (DrawWidth): Crash fix. Index cols[] array on colNum and not col
       variable. (should probably use a better naming scheme)
       * db.h: Make ListViewEditor_HandleEvent() be in SECT_UI.

2000-12-19  Tom Dyas  <[email protected]>

       * Makefile: Generate resources into the .res subdirectory so that
       the toplevel directory is not cluttered with lots of resource
       files.
       * docs/building.txt: Update to mention that prc-tools 2.1pre1
       (2.0.90) and SDK 3.5update1 are required.
       * langs/pt.rcp: Update from Pedro Pessoa.
       * db.rcp: Add new alert used when a feature only on PalmOS 3.5 or
       higher has been activated.
       * enum.h: Add constant for the new alert.
       * chooser.c (ChooserHandleEvent): Show the alert if the security
       dialog is activated on PalmOS version below 3.5.
       (LoadTable): Handle changes in secret status while
       maskPrivateRecords is in effect.

2000-12-15  Tom Dyas  <[email protected]>

       * JFile3.c: New file. Implements support for the JFile v3.x
       database format.
       * Makefile (OBJS): Add JFile3.o
       * datasource.h: Add sourceID_JFile3 to DataSourceIDEnum
       enumeration. Prototype for JFile3_GetDriver(). Prototypes for the
       DS_PDB_GetKey(), DS_PDB_GetPDB(), DS_PDB_GetTitle(), and
       DS_PDB_SetTitle() generic data source methods.
       * io.c (GetDataSources): Call JFile3_GetDriver() and add it to the
       drivers list.
       (DS_PDB_GetKey): New function. Generic implementation of GetKey()
       data source method for PDB databases.
       (DS_PDB_GetPDB): Similar for GetPDB() method.
       (DS_PDB_GetTitle): Similar for GetTitle() method.
       (DS_PDB_SetTitle): Similar for SetTitle() method.
       (DB_GetKey): Removed in favor of generic version.
       (DB_GetPDB): Likewise.
       (DB_GetTitle): Likewise.
       (DB_SetTitle): Likewise.
       (DB_Open): Point at generic implementations for the GetKey(),
       KeyPDB(), GetTitle(), and SetTitle() methods.
       (OldDB_Open): Likewise.
       * MobileDB.c (MobileDB_GetKey): Removed in favor of generic
       version.
       (MobileDB_GetPDB): Likewise.
       (MobileDB_GetTitle): Likewise.
       (MobileDB_SetTitle): Likewise.
       (MobileDB_OpenPDB): Point at generic implementations for the
       GetKey(), KeyPDB(), GetTitle(), and SetTitle() methods.

2000-12-14  Tom Dyas  <[email protected]>

       * chooser.c (DoSecurity): New function. Allow the security level
       to be changed on PalmOS 3.5 and higher.
       (ChooserHandleEvent): Respond to menuCmdBarOpenEvent by adding the
       security button to the command bar. Respond to menuitemID_Security
       by calling DoSecurity().
       updateFontChanged -> updateInitTable
       * db.rcp: Add "Security..." item to the "Options" menu.
       * enum.h: Add menuitemID_Security.

2000-12-06  Tom Dyas  <[email protected]>

       * datasource.h (DataSourceCapability): Add
       DS_CAPABLE_LISTVIEW_NAME_EDIT.
       * MobileDB.c (MobileDB_Capable): Respond to
       DS_CAPABLE_LISTVIEW_NAME_EDIT.
       * io.c (DB_Capable): Likewise.
       (OldDB_Capable): Likewise.
       * db.rcp (formID_ListViewEditor): Remove Add button. Modify table
       for popup column. New list for the context menu.
       * enum.h: Add constant for context menu list.
       * listprop.c (DrawPopupIndicator): New functions. Draws the
       context menu arrow.
       (LoadTable): Setup the context menu column.
       (InitTable): Likewise.
       (InsertEntry): Renamed from AddColumn() and extended to insert
       anywhere in the list view.
       (DeleteEntry): Renamed from DeleteColumn().
       (HandleContextMenu): New function. Poppup the context menu and
       then implement the add/delete action if necessary.
       (ListViewEditor_HandleEvent): Do not add "-- REMOVE --" to the
       bottom of the field names list. Respond to tblSelectEvent on the
       popup column by calling HandleContextMenu(). Remove code to handle
       Add button.

2000-10-29  Tom Dyas  <[email protected]>

       * chooser.c (DuplicateData): New structure to hold data for the
       duplicate getter.
       (Duplicate_GetString): New function. Part of a getter object to
       convert between field types during a duplicate operation.
       (Duplicate_GetInteger): Likewise.
       (Duplicate_GetBoolean): Likewise.
       (DoDuplicate): Use DrawWorkingIndicator() and
       EraseWorkingIndicator() to show/hide the "Working..." message
       box. Use the duplicate getter functions to handle the conversion
       between data types if need be.
       * MobileDB.c (SortCallbackData): New structure for passing
       information between the Sort() method and the sort callback.
       (MobileDB_UnpackRecord): Records can have fields missing in which
       case we must fill in the empty string.
       (MobileDB_LockRecord): Allocate MAX_FIELDS space just in case the
       record has an unexpeted overrun.
       (MobileDB_SortCallback): Callback function called by PalmOS to
       compare records during a sort.
       (MobileDB_Sort): Implementation of the Sort() method for MobileDB
       databases.
       (MobileDB_OpenPDB): Use MobileDB_Sort() for the Sort() method.
       * util.c (DrawWorkingIndicator): Draw the "Working..." indicator
       in the center of the screen.
       (EraseWorkingIndicator): Remove the indicator.
       * db.h: Prototypes for DrawWorkingIndicator() and
       EraseWorkingIndicator()
       * db.rcp (formID_SortEditor): Changed the UI to be bit
       better. Added a menu to the form as well. Strings for the UI as
       well.
       * enum.h: Constants for the changed UI, new menu, and strings.
       * langs/en.rcp: English translation for some of the strings.
       * sort.c: Added support for the case sensitive sorting option. New
       popup menu. Removed support for the removal option that was
       embedded in the field popup as well as the "Add" button.

2000-10-26  Tom Dyas  <[email protected]>

       * README: Point at the new Web site.
       * TODO: Removed one TODO about sorting.
       * db.rcp (alertID_About): Point at the new Web site.
       * langs/pt.rcp: Update from Pedro Pessoa <[email protected]>.
       * langs/de.rcp: Update from Thorsten Tietz <[email protected]>.
       * MobileDB.c (struct private_data): Add lfind_case_sensitive and
       lfind_whole_word variables so the local find status can be
       remembered while a database is open.
       (MobileDB_GetAppInfoPtr): New function. Return a locked pointer to
       the app info block.
       (MobileDB_GetOption_Boolean): Handle optionID_DisableGlobalFind by
       looking at the MobileDB dontSearch header setting. Respond to
       local find options by looking in the private data.
       (MobileDB_SetOption_Boolean): Set all of the above stuff.
       (MobileDB_CheckTitle): Removed in favor of common routine.
       (MobileDB_Delete): Likewise.
       (MobileDB_CompareKey): Likewise.
       (MobileDB_IsPresent): Call common routine DS_PDB_IsPresent().
       (MobileDB_GetDriver): CheckTitle() -> DS_PDB_CheckTitle().
       Delete() -> DS_PDB_Delete().
       CompareKey() -> DS_PDB_CompareKey().
       * datasource.h (DataSourceChooserKey): Public version of the
       ChooserKey structure that was in io.c. Prototypes for the data
       source driver support functions.
       * io.c: Moved ChooserKey to datasource.h as DataSourceChooserKey.
       ChooserKey -> DataSourceChooserKey everywhere.
       (DS_PDB_CheckTitle): New function. CheckTitle() for PDB databases.
       (DS_PDB_Delete): New function. Delete() for PDB databases.
       (DS_PDB_IsPresent): New function. IsPresent() for PDB databases.
       (DS_PDB_CompareKey): New function. CompareKey() for PDB databases.
       (DB_CheckTitle): Removed.
       (DB_Delete): Removed.
       (DB_CompareKey): Removed.
       (DB_IsPresent): Call DS_PDB_IsPresent().
       (DB_GetDriver): Moved under the other DB format code. Use
       DS_PDB_CheckTitle(), DS_PDB_Delete(), DS_PDB_CompareKey().
       (OldDB_IsPresent): Call DS_PDB_IsPresent().
       (OldDB_GetDriver): Use DS_PDB_CheckTitle(), DS_PDB_Delete(),
       DS_PDB_CompareKey().

2000-10-25  Tom Dyas  <[email protected]>

       * MobileDB.c: New file. Implements a data source driver which can
       read/write MobileDB databases.
       * Makefile (OBJS): MobileDB.o added to list.
       * io.c (DS_PDB_Enumerate): Renamed from PDB_Enumerate() and static
       linkage removed.
       (DS_PDB_GlobalFind): Renamed from PDB_GlobalFind() and static
       linkage removed.
       (DS_PDB_Beam): Renamed from PDB_Beam() and static linkage removed.
       (DB_Enumerate): Use DS_PDB_Enumerate().
       (DB_GlobalFind): Use DS_PDB_GlobalFind().
       (OldDB_Enumerate): Use DS_PDB_Enumerate().
       (OldDB_GlobalFind): Use DS_PDB_GlobalFind().
       (OldDB_GetDriver): New function. Fills out a DataSourceDriver
       structure for the DB 0.2.x format. Code moved from
       GetInternalDataSources().
       (DB_GetDriver): New function. Fills out a DataSourceDriver
       structure for the native DB format. Code moved from
       GetInternalDataSources().
       (GetInternalDataSources): Code moved to DB_GetDriver() and
       OldDB_GetDriver(). Code just links the two together.
       (GetDataSources): Call MobileDB_GetDriver() and append result to
       drivers list.
       * datasource.h (DataSourceIDEnum): Add sourceID_MobileDB.
       Prototypes for DS_PDB_Enumerate(), DS_PDB_GlobalFind(),
       DS_PDB_Beam, and MobileDB_GetDriver().
       * db.def: New code section "drvsect" for data source drivers other
       than the native drivers.
       * list.c (DoCommand): Send a frmUpdate event to redraw the grid.
       * listprop.c (DrawFieldLabel): Use the correct variable to index
       the column number that is being displayed.

2000-10-21  Tom Dyas  <[email protected]>

       * langs/de.rcp: Updated with new strings.
       * langs/pt.tcp: Likewise.
       * db.rcp: Remove formID_FieldEditDialog.
       Added help strings for list view display options dialog and local
       find dialog.
       * enum.h: Constants for new help strings.

2000-10-20  Tom Dyas  <[email protected]>

       * names.c (NamesEditorHandleEvent): Use CopyStringResource() to
       obtain a localized version of the button label. Free the label
       when the form closes.
       * util.c: New function. CopyStringResource() returns a copy of a
       string resource instead of a pointer like GetStringPtr().
       * db.h: Prototype for CopyStringResource().
       * db.rcp: Added string resources for "Edit" and "View".
       * enum.h: Constants for the new string resources.

2000-10-18  Tom Dyas  <[email protected]>

       * langs/en.rcp: New file. Contains strings to large to place in
       the main resource file.
       * Makefile (db-en.prc): Renamed target from db.prc.
       (ts-res): Add dependencies on the langs/*.rcp files.
       (ts-bin-en): Renamed target from ts-bin.
       (CFLAGS): Add -Wall -Werror to force more warnings.
       * db.rcp: Add help strings for chooser and its dialogs.
       * enum.h: Matching constants for the new strings.
       * chooser.c: Removed unused variables. Handle all enumerations
       values in switch statements. A few possible uninitialized uses.
       * design.c: Likewise.
       * edit.c: Likewise.
       * find.c (GFindCallback): Likewise.
       * grid.c: Likewise plus added include of "db.h" to get
       MyWinDrawTruncChars() prototype.
       * io.c: Likewise plus added include of <TxtGlue.h> to get
       prototypes for TxtGlueCompare() and TxtGlueCaselessCompare().
       * list.c: Likewise.
       * listprop.c: Likewise.
       * main.c: Likewise.
       * prefs.c: Likewise.
       * sort.c: Likewise.
       * util.c: Likewise.

2000-10-17  Tom Dyas  <[email protected]>

       * names.c: New file. Contains the Names Editor which manages list
       the list views.
       * datasource.h (DataSourceCapability): New enumeration. Defines
       various capabilities that a data source is capable of.
       (DataSourceOperations): Added DeleteView() and Capable() methods
       which do what their names suggest.
       * db.h: Prototypes for ListViewEditor_ViewNum and
       NamesEditorHandleEvent.
       * db.rcp (formID_ListViewEditor): Point at menu
       menuID_ListViewEditorMenu. Removed the name selector.
       (formID_SortEditor): Changed title. Changed "Done" button to
       "Sort". Removed unused selector.
       (formID_NamesEditor): New form for the list view global editor.
       (menuID_ListViewMenu): Reordered and renamed some of the items in
       the "Options" menu.
       (menuID_*): Use the system edit menu IDs and not our own ones.
       * enum.h: Matched constants to db.rcp.
       * io.c (DB_InstallAppInfoBlock): Factored the common code from the
       old AddChunk() and ReplaceChunk() which installs a new app info
       block.
       (DB_Chunk_Append): Renamed from AddChunk(). Use
       DB_InstallAppInfoBlock().
       (DB_Chunk_Replace): Renamed from ReplaceChunk(). Fixed so it
       actually works if some chunks follow the replaced chunk. Use
       DB_InstallAppInfoBlock().
       (DB_Chunk_Delete): New function. Deletes a chunk.
       (DB_DeleteView): New function. Implements the DeleteView() method
       for DB databases.
       (DB_Capable): New function. Implements the Capable() method for DB
       databases.
       (DB_Open): Use DB_DeleteView() and DB_Capable().
       (OldDB_Capable): New function. Implements the Capable() method for
       DB 0.2.x databases.
       (OldDB_Open): Use OldDB_Capable().
       * list.c: Renamed view -> ActiveView.
       (PopupListOptions): Displays a dialog to set display options for
       the list view.
       (DoCommand): Trigger the Names Editor when editing list
       views. Trigger Sort Editor when sort option is selected.
       (ListViewHandleEvent,frmUpdateEvent): Handle the new
       updateModelChanged signal.
       * listprop.c (DrawFieldName): New function. Draws the field label
       when it cannot be edited.
       (DrawWidth): New function. Draws the width when it cannot be
       edited.
       (LoadTable): Check editing capabilities when setting up the table.
       (InitTable): Tell the table about DrawFieldName() and DrawWidth().
       (GetDefinition): Allocate the view name handle correctly.
       (ListViewEditor_HandleEvent): Use ListViewEditor_ViewNum. Check
       capabilities when setting up Add button and REMOVE option.
       * main.c (AppHandleEvent): Remove typecasts. Handle
       formID_NamesEditor.
       * util.c (GetFocusedField): Removed. Not needed now that we don't
       handle field menu items ourselves.
       (HandleCommonMenuEvent): Removed all the field menu items.
       * langs/fr.rcp: Updats from some random person.

2000-10-15  Tom Dyas  <[email protected]>

       * edit.c (EditViewHandleEvent): Hide the delete button when a new
       record is being entered. Fixes bug where pressing delete while
       entering a new record removed the first real record.
       * langs/pt.rcp: New file. Portuguese translation from Pedro Pessoa
       <[email protected]>.
       * db.rcp: Add include statement for pt.rcp.
       (formID_SortEditor): Form for the sort definition editor.
       (menuID_ListViewMenu): Add entry for the sort definition editor.
       * enum.h: Add constants for the sort definition editor.
       * sort.c: New file. Contains GUI code for the sort definition
       editor.
       * db.h: Prototype for SortEditor_HandleEvent().

       * io.c (DB_SortCallback): Callback for DmQuickSort() for DB
       databases.
       (DB_Sort): Sort support for DB databases.
       (DB_Open): Use DB_Sort() for the Sort method.
       (OldDB_SortCallback): Callback for DmQuickSort() for DB 0.2.x
       databases.
       (OldDB_Sort): Sort support for DB 0.2.x databases.
       (OldDB_Open): Use OldDB_Sort() for the Sort method.
       (DS_StandardSortCallback): Standard logic for comparing two
       records via the data source "getter" interface.
       (SortCallbackData): Helper structure to contain all data needed to
       invoke a sort callback.
       (sort_callback_data): Pointer to an instance of the
       SortCallbackData structure.
       * main.c (AppHandleEvent): Handle formID_SortEditor
       * datasource.h (DataSourceOperations): Add Sort method.
       (DS_StandardSortCallback): Prototype for the standard sort
       callback which can compare most data source records to each other.
       (DataSourceSortDirection): New enumeration. Defines which way a
       sort will be done.
       (DataSourceSortField): New structure. Defines how to sort on a
       particular field.
       (DataSourceSortInfo): New structure. Defines how to sort an entire
       data source. Uses DataSourceSortField to describe each field.

2000-07-16  Tom Dyas  <[email protected]>

       * db.rcp: Include French translation file.
       Use HEX resource for LinkMaster support resource.
       * Makefile (VERSION): Bump version number to 0.3.1.
       (TOUCH): New macro for "touch" command.
       (RM_RF): Likewise for "rm -rf".
       (RM_F): Likewise for "rm -f".
       (db-fr.prc): New target for French translation.
       (ts-bin-fr): Likewise.
       (ts-res): Use RM_RF and TOUCH macros.
       (ts-bin,ts-bin-sample,ts-bin-de,ts-bin-nl,ts-bin-ja): Use RM_F and
       TOUCH macros. Remove creation of LinkMaster resource since it is
       in db.rcp now.
       (clean,distclean): Use RM_F and RM_RF macros.
       * langs/fr.rcp: French translation from Marco Laverdière
       <[email protected]>
       * docs/building.txt: Change wording of PilRC paragraph.
       * docs/translating.txt: Update for newer build system.

2000-07-15  Tom Dyas  <[email protected]>

       * Version 0.3.0
       * langs/sample.rcp: Update with latest strings.
       * langs/nl.rcp: Likewise.
       * langs/ja.rcp: Likewise.
       * callback.h: Removed. This file is no longer needed since
       prc-tools 2.0 does not need the special callback macros.
       * TODO: Removed entry for read-only mode since it has been
       implemented.
       * NEWS: Updated for the 0.3.0 release.
       * docs/building.txt: Update URL for pilrc.

2000-07-08  Tom Dyas  <[email protected]>

       * util.c (MyWinDrawTruncChars): Always use our implementation
       instead of the PalmOSGlue version.
       * db.h (MyWinDrawTruncChars): Modified prototype to match.
       * listprop.c: Moved all internal routines into SECT_UI code
       section.

2000-07-07  Tom Dyas  <[email protected]>

       * README_de: German version of README from Thorsten Tietz
       <[email protected]>

2000-07-06  Tom Dyas  <[email protected]>

       * chooser.c (DoDuplicate): Use GetStringPtr() to get localized
       version of "Working..." string.
       * design.c (Rebuild): Likewise.
       * enum.h: Define stringID_Working.
       * db.rcp: Add string resource for stringID_Working.
       * langs/de.rcp: Update from Thorsten Tietz <[email protected]>

2000-07-04  Tom Dyas  <[email protected]>

       * langs/de.rcp: Update from Thorsten Tietz <[email protected]>
       * db.rcp: Add stringID_Remove for "-- REMOVE --".
       * enum.h: Define stringID_Remove.
       * io.c (DB_Create): Use GetStringPtr() to get localized version of
       "All Fields".
       (OldDB_GetView): Likewise.
       * listprop.c (ListViewEditor_HandleEvent): Use GetStringPtr() to
       get localized version of "-- REMOVE --". Free field_names array
       when the form closes.

2000-07-03  Tom Dyas  <[email protected]>

       * README: Updated for 0.3.x final release.
       * docs/format.txt: Update with local find options chunk and new
       chunk numbering scheme.
       * langs/de.rcp,langs/ja.rcp,langs/nl.rcp,langs/sample.rcp: Add
       "Create using..." string for translation.

2000-07-02  Tom Dyas  <[email protected]>

       * chooser.c (popup_menu): Add the "Create using" action which
       activates design mode with the schema of a particular database.
       (ChooserHandleEvent:tblSelectEvent): Respond to
       actionID_CreateUsing from popup menu.
       (ChooserHandleEvent:ctlSelectEvent): Set DesignViewInitialSchema
       to 0 before create dialog.
       (ChooserHandleEvent:menuEvent): Don't go directly to design view
       when told to make a new database.
       (CreateDlgHandleEvent:frmCloseEvent): Free the initial schema if
       we did not go to design view.
       (CreateDlgHandleEvent:ctlSelectEvent): Likewise.
       * design.c (UpdateScrollers): Enable ins/del buttons when an
       initial schema is present.
       (UpdateNewDesign): If DesignViewInitialSchema, then just use
       schema directly.
       (FillLocalSchema): Use DesignViewInitialSchema.
       (DesignViewHandleEvent:frmOpenEvent): If initial schema is
       present, then don't hide ins/del buttons.
       (DesignViewHandleEvent:frmCloseEvent): Free the initial schema.
       * db.rcp: Add stringID_CreateUsing.
       * enum.h: Likewise.

2000-06-25  Tom Dyas  <[email protected]>

       * design.c (FillLocalSchema): Base decision of the "mode" on
       CurrentSource and not DesignViewInitialSchema.
       (UpdateScrollers): Likewise. Obey read-only mode. Remove del
       button when 1 field remaining.
       (DesignViewHandleEvent:frmOpenEvent): Likewise.
       (DesignViewHandleEvent:ctlSelectEvent): Likewise. Obey read-only
       mode.
       (DesignViewHandleEvent:frmCloseEvent): Null out SchemaFields and
       SchemaFieldsHandle.
       * config.h: Set MAX_NUM_FIELDS_FOR_NEW_DB to 32. This should
       really be a runtime option.
       * db.rcp: Add string for "Fld %d" for i18n.
       * enum.h: Defined stringID_FldN for "Fld %d" string.
       * list.c (DoCommand): Don't set DesignViewInitialSchema since the
       decision of "mode" is made from CurrentSource.
       * langs/de.rcp,langs/ja.rcp,langs/nl.rcp,langs/sample.rcp: Add
       "Fld %d" string for translation.

2000-06-24  Tom Dyas  <[email protected]>

       * listprop.c (AddColumn): Enable the remove option after a column
       is added unless in read-only mode.
       (DeleteColumn): Disable the remove option if only 1 column is
       remaining.
       (ListViewEditor_HandleEvent:field_names): Move field_names
       variable to file level.
       (ListViewEditor_HandleEvent:frmOpenEvent): Enable remove option if
       more than 1 column.
       (ListViewEditor_HandleEvent:ctlSelectEvent): Discard any edits if
       in read-only mode. Remove debug check for 0 columns. It is now
       impossible since we disable the remove option before we could ever
       get there.

2000-06-18  Tom Dyas  <[email protected]>

       * io.c (DB_GetOption_Boolean): Implement
       optionID_LFind_CaseSensitive and optionID_LFind_WholeWord.
       (DB_SetOption_Boolean): Likewise.

2000-06-15  Tom Dyas  <[email protected]>

       * io.c (DB_SetField): Used wrong variable to point at offset table
       in new record format. Fixes crash.
       * db.def: Add section "gridsect" for grid code.
       * grid.h (GRIDSECT): Use "gridsect" for the section and not "foo".
       (GridModelType): Add IsColumnEditable() method which lets a model
       tell the grid if a column is editable.
       * grid.c (GridHandleEvent): Use IsColumnEditable() method of grid
       model to determine if user can change checkbox.
       * list.c (ViewModel_IsColumnEditable): Implementation of
       IsColumnEditable() method for the ViewModel grid model.
       (ViewModel): Use ViewModel_IsColumnEditable().

2000-06-14  Tom Dyas  <[email protected]>

       * io.c (DB_GetOption_Boolean): Support optionID_DisableGlobalFind.
       (DB_SetOption_Boolean): Likewise.
       (DB_Create): Don't use dbFieldType{String,Boolean,Integer}
       constants.
       Add definitions for ListViewColumn and ListViewDefinition
       structures. Add constant for local find options.
       * db.h: Remove include of dbfmt.h.

2000-06-08  Tom Dyas  <[email protected]>

       * io.c (OldDB_UnpackRecord): Renamed from UnpackRecord() and moved
       into legacy support section.
       (DB_PackedRecordSize): New function. Determines the packed size of
       a record including the new offset table.
       (DB_PackRecord): New function. Pack data into a record and build
       the offset table.
       (DB_Getter_Get{String,Integer,Boolean}): Renamed from
       DB_Get{String,Integer,Boolean}. Use offset table to find where the
       field data is.
       (DB_LockRecord): Don't use UnpackRecord() since we have the offset
       table now. This function is O(1) now.
       (DB_UnlockRecord): Just unlock the record. No more pointers to
       free.
       (DB_UpdateRecord): Call DB_PackedRecordSize() and DB_PackRecord().
       (DB_SetField): Use offset table.
       (OldDB_Getter_Get{String,Integer,Boolean}): Getter functions for
       0.2.x format databases.
       (OldDB_PackedRecordSize): Determine packed size of a 0.2.x-format
       record. Renamed version of PackedRecordSize().
       (OldDB_PackRecord): Pack data into record. Renamed version of
       PackRecord().
       (OldDB_LockRecord,OldDB_UnlockRecord): New function. Lock and
       unlock old-style records.
       (OldDB_UpdateRecord,OldDB_SetField): Update old-style records and
       fields.
       (OldDB_Open): Use OldDB_LockRecord(), OldDB_UnlockRecord(),
       OldDB_UpdateRecord(), and OldDB_SetField() instead of the ones
       previously shared with the new format driver.

2000-06-07  Tom Dyas  <[email protected]>

       * io.c (DB_GetView): When we increment the app info block's ref
       count, it is always a good idea to decrement when done ...

2000-06-06  Tom Dyas  <[email protected]>

       * datasource.h (DataSourceOptionsEnum): Added new option for top
       visible record in list view.
       (DataSourceOperations): Added GetOption_UInt16 and
       SetOption_UInt16 to get/set UInt16-type options.
       * io.c (DB_GetOption_UInt16,DB_SetOption_UInt16): New
       functions. Get/set UInt16 options for new format databases.
       (DB_Open): Point at the new option functions.
       (DB_Create): Create the default CHUNK_LISTVIEW_OPTIONS for the
       database.
       (OldDB_GetOption_UInt16,OldDB_SetOption_UInt16): New
       functions. Get/set UInt16 options for 0.2.x format databases.
       (OldDB_Open): Point at the new option functions.
       * design.c (popup_strings_count): New variable. Number of elements
       in the popup_strings array.
       (UpdateScrollers): Set the width of the field type column and the
       popup list.
       (SetupPopupList): New function. Checks the data source driver to
       see which field types are supported. Only those are enabled.
       (DesignViewHandleEvent): Call SetupPopupList(). Free popup_strings
       on frmCloseEvent.
       * list.c (TopVisibleRecord): Removed.
       (ActiveViewIndex): New variable. Stores currently active view
       definition.
       (ListViewHandleEvent): Fill in ActiveViewIndex and the top record
       index from the associated options. Store the top visible index on
       frmCloseEvent.
       * docs/format.txt: Update for new list view options chunk.

2000-06-03  Tom Dyas  <[email protected]>

       * design.c (types): New array which defines the order of items in
       the field type popup list.
       (LoadTable): The index into the popup list is determined by
       scanning the types array.
       (SetColumnWidths): Only activate field types supported by the data
       source driver. Compute widths of field type strings and set
       columns accordingly.
       (DesignViewHandleEvent): When user selects a field type, scan
       types array using the index to find the actual field type.
       * datasource.h (DataSourceClassOperations): New method
       SupportsFieldType() which allows the design view to figure out
       what field types a driver can handle.
       * io.c (DB_SupportsFieldType): New function. Implements the driver
       class method SupportsFieldType() for DB and DB 0.2.x databases.
       (GetInternalDataSources): Use DB_SupportsFieldType().

2000-06-01  Tom Dyas  <[email protected]>

       * db.rcp: Add grafitti state indicator to duplicate, rename, and
       create dialogs. Redo size of app prefs and database prefs dialogs
       to cover to screen edge.

2000-05-23  Tom Dyas  <[email protected]>

       * util.c (MatchString): Use the glue routines to do the
       search. Could cache the comparison routine somehow. And hardcoding
       len_substr in call to Compare() could be a problem if possible to
       have different encodings for same character.
       * list.c (FindDialogHandleEvent): Don't lock down the "All Fields"
       string and never unlock it. It is copied now and freed when done.
       (CmpField): New function. Handles comparing any field
       type. Factored out of LocalSearch().
       (LocalSearch): Use CmpField().

2000-05-19  Tom Dyas  <[email protected]>

       * chooser.c (SetupActions): Modified so that popup menu is filled
       from the popup_menu[] array.
       (FreeActions): New function. Frees the memory allocated in
       SetupActions().
       (ChooserHandleEvent): Call FreeActions() in frmCloseEvent.
       * db.rcp: Added strings for popup menu items to make translation
       possible.
       * enum.h: Constants for popup menu item strings.

2000-05-17  Tom Dyas  <[email protected]>

       * chooser.c (DrawIcon): New function. Draws icon for a database
       which is currently the same as the program's small icon.
       (DrawLabel): Renamed from DrawChooserItem(). Just draws title of
       the data source.
       (LoadTable): Set item style for icon column.
       (InitTable): Setup the icon column.
       (ChooserHandleEvent): Only allow dragging on label and not
       icon. Respond to click on icon column instead of hardcoding pixel
       position.
       * db.rcp (formID_Chooser): Change table to contain 2 columns.

2000-05-05  Tom Dyas  <[email protected]>

       * chooser.c (RenameDatabase): New function. All functional code
       extracted from Chooser_RenameDatabase except opening/closing the
       chooser database. Plus the title is copied correctly.
       (Chooser_RenameDatabase): Just call RenameDatabase().
       (SetupActions): Add rename action.
       (ChooserHandleEvent): Handle rename action.
       (RenameDlgHandleEvent): New function. Implements the database
       rename dialog.
       * db.h: Added prototype for RenameDlgHandleEvent().
       * datasource.h (DataSourceOperations): Added method SetTitle()
       which sets the datasource's title and returns a new chooser key.
       * io.c (DB_SetTitle): Implementation of SetTitle() method.
       (DB_Open): Hook in DB_SetTitle() for SetTitle() method.
       (OldDB_Open): Hook in DB_SetTitle() for SetTitle() method.
       * design.c (Rebuild): Remove source database, rename destination
       database to the source's name using SetTitle(), and replace source
       with destination.
       * db.rcp: Added rename dialog.
       * enum.h: Constants for rename dialog.
       * main.c (AppHandleEvent): Handle formID_RenameDlg.

2000-05-04  Tom Dyas  <[email protected]>

       * design.c (Rebuild_GetString): If asked for the value of a new
       field, return blank.
       (Rebuild_GetInteger): Likewise. Return 0.
       (Rebuild_GetBoolean): Likewise. Return false.
       (Rebuild): Display "Working..." while doing work.
       Copy views from source to destination.
       Display alert for errors.
       Detect errors from UpdateRecord().
       * chooser.c (DuplicateDlgHandleEvent): Renamed from
       DuplicateDataSource().
       (DoDuplicate): Display "Working..." while doing work.
       Copy views from source to destination.
       Detect errors from UpdateRecord().
       Display alert for any errors.
       * db.h: Added prototype for DuplicateDlgHandleEvent().
       * db.rcp: Added alerts RebuildFailed and DuplicateFailed.
       * enum.h: Added alertID_RebuildFailed and alertID_DuplicateFailed.
       * main.c (AppHandleEvent): Added formID_DuplicateDlg.

2000-05-02  Tom Dyas  <[email protected]>

       * design.c (PopupFieldSelectDialog): Use MemPtrUnlock() instead of
       MemPtrFree() to unlock the name handles. Fixes crash.
       (Rebuild): New function. Rebuilds the active database using the
       specified new schema and field order.
       (Rebuild_GetString,Rebuild_GetInteger,Rebuild_GetBoolean): New
       functions which convert fields of the database.
       (UpdateExistingDesign): Call Rebuild() to rebuild the database.
       * db.rcp (formID_CreateDlg): Rework the position of the name field
       and type list.

2000-05-01  Tom Dyas  <[email protected]>

       * Makefile: Replaced direct calls to build-prc, pilrc, and m4 with
       macros so users can override easily on the command line.
       * docs/building.txt: Updated for recent changes incl. SDK 3.5.

2000-04-30  Tom Dyas  <[email protected]>

       * Makefile: Use m4 to preprocess the resource file so we don't
       need a special patch to pilrc to get normal include
       files. Substitute the version and build date into the resource
       file as macros.

2000-04-29  Tom Dyas  <[email protected]>

       * datasource.h (DataSourceOperations): Changed prototype of
       CheckUpdateSchema() and UpdateSchema() methods to support the new
       rebuild functionality.
       * io.c (DB_CheckUpdateSchema): Conform to new prototype.
       (DB_UpdateSchema): Likewise.
       (OldDB_UpdateSchema): Likewise.
       (OldDB_Open): Use DB_CheckUpdateSchema() for CheckUpdateSchema()
       method.

2000-04-28  Tom Dyas  <[email protected]>

       * io.c (OldDB_Create): New function. Creates databases in the
       legacy format.
       (DB_CheckTitle): Check to see if a title already exists.
       * db.rcp: Added forms for new create and duplicate
       dialogs. Removed name field from design view since it is handled
       by the create dialog now.
       * enum.h: Constant values for new dialogs.
       * chooser.c (ChooserHandleEvent): Add duplicate action.
       (SetupActions): Add duplicate action.
       (DoDuplicate): Copy one data source to another.
       (FillDriverList): Scan the driver list and copy the names into an
       UI list.
       (DuplicateDataSource): Popup the UI for the duplicate feature.
       (CreateDlgHandleEvent): Handle the create dialog.
       * datasource.h (DataSourceClassOperations): New class method
       CheckTitle. Checks to see if a title is already in use. Used by
       create dialog.
       (DataSourceClassOperations): Modified prototype for Create so that
       the key is returned.
       * design.c: Removed every reference to the name field. Added
       variables DesignViewDriver and DesignViewName used for creation.
       * db.h: Prototypes for DesignViewDriver, DesignViewName, and
       CreateDlgHandleEvent().
       * main.c (AppHandleEvent): Handle formID_CreateDlg.

2000-04-26  Tom Dyas  <[email protected]>

       * io.c (PDB_Enumerate): New function. Helper for Enumerate driver
       methods that use Palm databases.
       (PDB_GlobalFind): New function. Helper for GlobalFind driver
       methods that use Palm databases.
       (DB_Enumerate,OldDB_Enumerate): Use PDB_Enumerate().
       (DB_GlobalFind,OldDB_GlobalFind): Use PDB_GlobalFind().
       (DB_GetRecordID): New function. Implements GetRecordID() method
       for DB databases.
       (PDB_Beam): SendDatabase() moved from chooser.c and renamed. Beams
       a database to another device.
       (WriteDBData): Helper function for PDB_Beam(). Moved from
       chooser.c.
       (BeamDataSource): New function. Find the correct driver and call
       Beam() driver method.
       * list.c (ViewModel_GetCellID): Use GetRecordID method.
       * datasource.h (DataSourceOperations): Added GetRecordID() method.
       (DataSourceClassOperations): Added Beam() driver method.
       (BeamDataSouce): Added prototype.
       (DataSource): Added readonly flag. Set to true when data source
       can/should not be modified.
       * chooser.c (SendDatabase,WriteDBData): Moved to io.c.
       (ChooserHandleEvent): Call BeamDataSource() when beam selected.
       * db.h (SeekRecord): Removed obsolete prototype.

2000-04-24  Tom Dyas  <[email protected]>

       * io.c (DB_GlobalFind): Implement global find for native DB
       databases.
       (OldDB_GlobalFind): Implement global find for legacy DB databases.
       (DB_Open,DB_OpenPDB): Added mode argument.
       (OldDB_Open,OldDB_OpenPDB): Added mode argument.
       (OpenDataSource): Added mode argument.
       Changed key_size from UInt32 to UInt16.
       (DB_GetTitle): New function. Returns title of database.
       * datasource.h: Add new class method which implements global find.
       Changed key_size from UInt32 to UInt16.
       (OpenDataSource,OpenDataSourcePDB): Added mode argument.
       * chooser.c (ChooserHandleEvent): Use dmModeReadWrite for new mode
       arugment.
       * main.c (ChooseInitialForm): Use dmModeReadWrite for new mode
       argument.
       * find.c (GlobalSearch): Completely rewritten to support the data
       source layer.
       (GFindCallback): Function used as a callback from the data source
       drivers.
       * list.c (ListViewHandleEvent): Use GetTitle method instead of
       breaking the data source abstraction.

2000-04-21  Tom Dyas  <[email protected]>

       * io.c (DB_SetField): New function. Sets any field in a locked
       down record.
       * list.c (ViewModel_SetCellBoolean): Call SetField data source
       method to restore checkbox feature.
       * main.c (PilotMain): Support sysAppLaunchCmdOpenDB launch code
       which some newer launchers send when a document is clicked.
       (CheckMinVersion): New function. Makes sure the ROM is version 2.0
       or higher.
       * chooser.c: Support masked private records on PalmOS 3.5.
       (ChooserInfoDialogHandleEvent): Fill in the type field with the
       name of the data source driver.
       * listprop.c (SaveFieldWidths): Use numCols instead of the number
       of fields so we don't crash ...
       * db.rcp: Added type field to the chooser info dialog.

2000-04-20  Tom Dyas  <[email protected]>

       * io.c (OpenDataSourcePDB): New function. Calls OpenPDB method of
       each driver.
       (DB_OpenPDB): Opens a specific PDB.
       (DB_CanHandlePDB): Checks if a driver supports a specific PDB.

2000-04-11  Tom Dyas  <[email protected]>

       * *.c,*.h: Ported to SDK 3.5 which required a massive rename.

2000-02-11  Tom Dyas  <[email protected]>

       * docs/building.txt: Point at prc-tools 2.0 home page.

2000-02-10  Tom Dyas  <[email protected]>

       * Makefile: Support prc-tools 2.0 which supports multiple code
       resources.

2000-02-03  Tom Dyas  <[email protected]>

       * grid.c: Row Highlight support.
       * grid.h: Prototypes for the highlighting functions.
       * list.c: Reorganized the local find code so that it uses a normal
       event handler. FrmSetFocus() after FrmDrawForm() so cursor is
       enabled correctly. Use new highlight support in the grid.
       * main.c (AppHandleEvent): Added formID_FindDialog

2000-02-02  Tom Dyas  <[email protected]>

       * docs/building.txt: New file. Details on how to build DB from
       scratch.

2000-01-10  Tom Dyas  <[email protected]>

       * Makefile: Changed to build with new version of
       prc-tools. Removed callback.h from dependencies.
       * chooser.c: Removed callback stuff.
       * design.c: Likewise.
       * edit.c: Likewise.
       * find.c: Likewise.
       * list.c: Likewise.
       * listprop.c: Likewise.
       * main.c: Likewise.
       * util.c: Use PalmOS 3.1 Text Manager for now.

2000-01-05  Tom Dyas  <[email protected]>

       * scripts/escape-strings.pl: Perl script that escapes strings in
       the translation files so pilrc likes the strings.
       * langs/ja.rcp: Update from <[email protected]>.
       * langs/de.rcp: Update from Thorsten Tietz <[email protected]>
       * db.rcp: Enable the Japanese translation.

2000-01-02  Tom Dyas  <[email protected]>

       * Version 0.2.5
       * NEWS: Changed for 0.2.5.
       * langs/de.rcp: Updates from Thorsten Tietz
       <[email protected]>
       * db.rcp (formID_ChooserOptsDialog): Increased width of popup list
       on display options screen.

2000-01-01  Tom Dyas  <[email protected]>

       * chooser.c (SortAlphabetic): New function. Sorts database names.
       (LoadTable): Use unqiue ID to detect when a record moves.
       (InvertMoveIndicator): Invert the little squiggly line used to
       indicate a move.
       (SelectItem): Handle tblEnterEvent to allow dragging of databases.
       (ChooserHandleEvent): Call SelectItem() on tblEnterEvent.

1999-12-30  Tom Dyas  <[email protected]>

       * chooser.c: Added support for categories and secret databases.
       * db.rcp: Updated Chooser form and added new Chooser Info Dialog
       * enum.h: IDs for the new Chooser form elements
       * db.h: (DBPrefsType): Added chooser-specific preferences.
       (Chooser_AddDatabase): Added prototype.
       (Chooser_RenameDatabase): Likewise.
       (ChooserInfoDialogHandleEvent): Likewise.
       * design.c (UpdateExistingDesign): Call Chooser_RenameDatabase().
       * io.c (CreateDatabase): Call Chooser_AddDatabase().
       * main.c (AppHandleEvent): Handle formID_ChooserInfoDialog
       (InitPrefs): New function. Initializes prefs structure.
       (StartApplication): Use InitPrefs(). Set HideSecretRecords from
       system preferences.
       (PilotMain): Respond to sysAppLaunchCmdSyncNotify after HotSync.
       * langs/*.rcp: Added new translation strings.

1999-12-28  Tom Dyas  <[email protected]>

       * main.c (StartApplication): Retrieve saved database name from
       preferences.
       (StopApplication): Store database name in preferences.
       * db.h: Changed preferences to store database name.

1999-12-21  Tom Dyas  <[email protected]>

       * Version 0.2.4
       * find.c (GlobalSearch): Fix crash in global find when user
       disabled find on a database. Caused by unlocking the app info
       block too many times. Bug spotted by Peter Kane
       <[email protected]>

1999-12-20  Tom Dyas  <[email protected]>

       * Version 0.2.3
       * build-zip.sh: New file. Automates the building of the zip
       distributions.
       * langs/de.rcp: Updates from Thorsten Tietz
       <[email protected]>
       * langs/nl.rcp: Fix the page up/down strings.
       * langs/sample.rcp: Likewise.
       * list.c: Fix calls to ListScroll to actually scroll in the right
       direction.

1999-12-19  Tom Dyas  <[email protected]>

       * Version 0.2.2
       * README: Mention SourceForge and the new mailing list.
       * NEWS: Description of latest updates.

1999-12-17  Tom Dyas  <[email protected]>

       * db.rcp: Add new labels and popup triggers for scroll button
       configuration.
       * enum.h: Defines for the new controls.
       * prefs.c (PopupAppPrefs): Hook in new controls.
       * main.c (StartApplication): Make page scrolling the default for
       the page up/down hard keys.
       * langs/*.rcp: New translation strings.
       * list.c: Use the new scrolling preferences to determine line/page
       scrolling.

1999-12-15  Tom Dyas  <[email protected]>

       * listprop.c (ListPropViewHandleEvent): Release table focus when
       form closes so we don't crash.

1999-11-26  Tom Dyas  <[email protected]>

       * Version 0.2.1

1999-10-24  Tom Dyas  <[email protected]>

       * README: Reference new palm-db-tools package where conversion
       utilities are now located.
       * docs/converters.txt: Removed.
       * tools/*: Removed. Use palm-db-tools package.

1999-09-24  Tom Dyas  <[email protected]>

       * docs/translating.txt: Added ISO language code list.
       * langs/de.rcp: Updated translation.
       * Makefile: Modified build rules for Dutch and Japanese to use
       correct language codes.
       * list.c (PopupFindDialog): Set width for field selection list
       dynamically based on field names.

1999-09-22  Tom Dyas  <[email protected]>

       * main.c (PilotMain): Support LinkMaster 0.3.0 and higher.

1999-09-02  Tom Dyas  <[email protected]>

       * Makefile: Added some dependencies for the sources files.

1999-08-16  Tom Dyas  <[email protected]>

       * db.rcp: Added DEFAULTBUTTON entry for all alerts. pilrc 2.4 or
       higher is now required.
       Commented out include of Japanese translation for now.
       (menuID_EditViewMenu): Menu option on Edit screen for publishing a
       link to LinkMaster.
       * linkaware.[ch]: New files that implement LinkMaster
       support. Patch from Mitch Blevin.
       * main.c (PilotMain): Respond to LinkMaster launch codes.

1999-08-03  Tom Dyas  <[email protected]>

       * Makefile: Base targets for languages on ISO country code.
       * langs/de.rcp: Moved German translation here from db.rcp.
       * langs/nl.rcp: Ditto for Dutch translation.
       * langs/sample.rcp: Ditto for sample translation.
       * langs/ja.rcp: Japanese translation.
       * docs/translating.txt: Update to include new way of storing the
       translations.

1999-07-03  Tom Dyas  <[email protected]>

       * list.c (PopupFindDialog): Set database flags to current state of
       LFindCaseSens and LFindWholeWord.
       * util.c (GetFlags): New function. Returns database flags.
       * util.c (SetFlags): New function. Sets database flags.

1999-06-17  Tom Dyas  <[email protected]>

       * util.c (MatchString): Forgot code to match whole word for case
       insensitive searches.

1999-06-15  Tom Dyas  <[email protected]>

       * util.c (MatchString): New function. Does string matching with
       support for caseless and whole word.
       * list.c (LocalSearch): Use MatchString().

1999-06-10  Tom Dyas  <[email protected]>

       * design.c (DesignViewHandleEvent): Fix buffer overrun.

1999-06-08  Tom Dyas  <[email protected]>

       * edit.c (EditViewHandleEvent): Moved form setup code to
       SetupRecordData(). Fixes crash when event handler entered via
       FrmCloseAllForms() in main.c:StopApplication().
       * config.h: New file. Place for manifest constants and macros to
       let user configure certain features out of DB.
       * design.c (DesignViewHandleEvent): Use new manifest constant
       MAX_NUM_FIELDS_FOR_NEW_DB.
       (DesignViewHandleEvent,frmCloseEvent): Release focus when form is
       being closed so all data is written back.
       * TODO: Various updates.
       * docs/translating.txt: New file. Shows how to provide a new
       language translation of DB.

1999-06-06  Tom Dyas  <[email protected]>

       * chooser.c (SendDatabase): New function. Uses Exchange Manager to
       beam a database.
       * db.rcp (formID_Chooser): Added "beam" button and "open" button.

1999-06-05  Tom Dyas  <[email protected]>

       * design.c (InsertField): Use signed integers, not unsigned. Fixes
       crashes when inserting fields.

1999-06-01  Tom Dyas  <[email protected]>

       * db.rcp: Updated German strings from Thorsten Tietz.

1999-05-28  Tom Dyas  <[email protected]>

       * design.c (PopupFieldSelectDialog): Call InitTable() when a field
       is inserted to reset everything.

1999-05-20  Tom Dyas  <[email protected]>

       * db.rcp: Reworked the field selector dialog for the design view.
       * enum.h: Renamed constants for field selector dialog.
       * main.c (AppHandleEvent): Removed formID_DesignView_SelectField
       from the frmLoadEvent handler.
       * db.h: Removed prototype for SelectFieldHandleEvent().
       * design.c: Moved SelectFieldHandleEvent() into InsertField(),
       DeleteField(), and PopupFieldSelectDialog().
       (DesignViewHandleEvent): Call PopupFieldSelectDialog().

1999-05-16  Tom Dyas  <[email protected]>

       * Makefile (db-dutch.prc,ts-bin-dutch): Add targets for Dutch
       version of DB.
       * db.rcp: Added Dutch translation from Tom Van Wint
       ([email protected]).

1999-05-13  Tom Dyas  <[email protected]>

       * list.c (PopupFindDialog): Setup the search field list and
       trigger label.
       (LocalSearch): Obey the search field specified by LFindField.
       Fix bug where we didn't unlock the record when a match was made.
       * db.rcp: Add search field list and trigger.

1999-05-06  Tom Dyas  <[email protected]>

       * list.c (PopupFindDialog): Set the whole word checkbox.
       (LocalSearch): Show alert if string is not found.
       * db.rcp: Added whole word checkbox and not found alert.

1999-04-28  Tom Dyas  <[email protected]>

       * db.rcp: Update German translation. Add small icon.
       * small.bmp: New icon for Palm III list view from Thorsten Tietz.
       * list.c (StrCaselessStr): See if one string is inside another.
       (LocalSearch): Use StrCaselessStr().
       (PopupFindDialog): Set the case-sensitibity checkbox.
       * TODO: Remove small list icon and search entries.

1999-04-27  Tom Dyas  <[email protected]>

       * list.c (LocalSearch): New function. Implements the local find
       functionality.
       (PopupFindDialog): Use LocalSearch().
       (ListViewHandleEvent): Implement the search repeat button.
       * db.rcp: Add search repeat button.

1999-04-26  Tom Dyas  <[email protected]>

       * Makefile: Added db-german.prc and ts-bin-german targets to
       create german version of DB.
       * db.rcp: Added German translation from Thorsten Tietz
       <[email protected]>

1999-04-25  Tom Dyas  <[email protected]>

       * list.c (PopupFindDialog): New function. Displays the local find
       dialog.
       * db.rcp (formID_FindDialog): Added form resource for find dialog.
       (formID_ListView): Add find button and move arrow buttons around.
       Added sample translation.
       * Makefile (db-sample): New target to generate the sample
       translation.

1999-04-24  Tom Dyas  <[email protected]>

       * Release version 0.20
       * list.c (ListInitTable): Set new variable LastColClipped if the
       last column didn't get its full size.
       (UpdateFieldButtons): Show right scroll button if LastColClipped
       is set.

1999-04-18  Tom Dyas  <[email protected]>

       * tools/util.c (strip_newline): New function that removes trailing
       CR/LF characters.
       * tools/util.h: Prototype for strip_newline().
       * tools/csv2pdb.c: Include <time.h> on Win32.
       * tools/pdb2csv.c: Ditto.
       * tools/mdb2csv.c: Ditto.
       * tools/jfile2csv.c: Ditto.
       * NEWS: Final updates before 0.20 release.
       * README: Some minor wording changes.

1999-04-15  Tom Dyas  <[email protected]>

       * docs/converters.txt: Completed documentation on conversion
       utilities.
       * README: Reference docs/converters.txt as the source of info on
       the conversion utilities.
       * tools/win32/makefile.gcc: Add jfile2csv target.

1999-04-10  Tom Dyas  <[email protected]>

       * docs/converters.txt: New document to describe how to use
       conversion utilities. Not complete yet.

1999-04-08  Tom Dyas  <[email protected]>

       * listprop.c (SaveFieldWidths): Use IsNumber() and String2Long()
       from util.c.
       * main.c (StopApplication): Call FrmSaveAllForms().
       * list.c: Set IsNewRecord correctly.
       * edit.c (EditViewHandleEvent): Handle frmSaveEvent so record is
       saved if user switches to another application.
       (EditViewSaveRecord): New function. When a field is exited, mark
       IsDirty if the field changed.
       (SaveRecord): Only save record if it is dirty.

1999-04-07  Tom Dyas  <[email protected]>

       * tools/csv2pdb.c: Use signed integer instead of unsigned
       integer. Allows unknown field types to be detected. (-1 and
       unsigned types don't like each other)
       (field_directive): Return any errors in handle_field_directive()
       (output_records): Increase amount of buffer space. Flag an error
       if fgets() overruns the buffer.
       * util.c (IsNumber): New function.
       (String2Long): New function. Converts string in decimal, octal, or
       hexdecimal to a long integer.
       * edit.c (ValidateData): Use IsNumber().
       (SaveRecord): Use String2Long().

1999-03-28  Tom Dyas  <[email protected]>

       * list.c (UpdateFieldButtons): Cache the state of the scroll
       buttons so we don't show/hide them. Fixes display bug found by
       Damon <[email protected]>.
       * tools/jfile2csv.c: New file. Converts JFile v3 databases into
       CSV text format compatible with csv2pdb.

1999-03-27  Tom Dyas  <[email protected]>

       * tools/csv2pdb.c: Added --help option.
       * tools/pdb2csv.c: Ditto.
       * tools/mdb2csv.c: Ditto.

1999-03-23  Tom Dyas  <[email protected]>

       * tools/util.c (str_to_array): Skip over seperator chars if caller
       wants it.
       * tools/util.h: Updated str_to_array() prototype.
       * tools/csv2pdb.c: Update to new version of str_to_array().

1999-03-22  Tom Dyas  <[email protected]>

       * tools/csv2pdb.c (string2type): New function. Converts a type
       string into a type number.
       (handle_field): Use string2type().
       (usage): Document all the options.
       * tools/util.c (csv_to_array): Rewritten to be accept empty
       trailing fields.
       (str_to_array): Ditto.
       * list.c (ListScroll): Bug fix. Scroll down a page and not up a
       page. Patch from Jonathan Hudson
       <[email protected]>

1999-03-13  Tom Dyas  <[email protected]>

       * tools/popt.[ch]: New files. GPL'ed command line option parser.
       * tools/util.c: New file. Moved CSV parsing routine here.
       * tools/util.h: New file. Prototypes for util.c.

1999-03-08  Tom Dyas  <[email protected]>

       * io.c (CreateDatabase): Use DBCreatorID and not 'TKD3'.
       * tools/mdb2csv.c: New file. Converts MobileDB format databases
       into a CSV text file compatible with csv2pdb.

1999-03-03  Tom Dyas  <[email protected]>

       * edit.c (ValidateData): New function. Lets edit view see if
       entered data is in correct format.

1999-03-01  Tom Dyas  <[email protected]>

       * tools/pdb2csv.c: Rewritten to support output to the new "info"
       file for the metadeta.
       * tools/csv2pdb.c: Rewritten to support taking input from an
       "info" file as well as command line.

1999-02-28  Tom Dyas  <[email protected]>

       * edit.c,list.c,io.c,dbfmt.h,db.rcp: Add support for integer data
       type.

1999-02-26  Tom Dyas  <[email protected]>

       * list.c (AddNewRecord): If DmNewRecord() fails, then display an
       alert. Activate editor form here as well.
       (ListViewHandleEvent): Let AddNewRecord() activate editor.

1999-02-25  Tom Dyas  <[email protected]>

       * edit.c (EditViewHandleEvent): Support the "Cancel" button.
       * db.rcp,enum.h: Add "Cancel" button to Edit View.

1999-02-23  Tom Dyas  <[email protected]>

       * list.c (ListDrawTable): If a field exceeds the width of its
       column, then tack ellipsis ("...") on the end.

1999-02-19  Tom Dyas  <[email protected]>

       * tools/pdb2csv.c (process_appinfo): Output the field types and
       field widths as two additional lines.
       (process_records): Unpack boolean fields correctly.
       * tools/csv2pdb.c (output_records): Support boolean field type.
       (read_header_lines): New function. Read and parse all 3 lines of
       header info.
       (output_appinfo): Just use data parsed by read_header_lines().
       (read_line): Read a single line from the input file.
       * prefs.c (PopupAppPrefs): Reference correct ID for the okay
       button. Fixes bug where prefs were not saved.
       * main.c (StartApplication): Make sure app prefs exist as soon as
       DB is first run. Fixes bug where Global Find wouldn't work until
       user eited DB for the first time.

1999-02-11  Tom Dyas  <[email protected]>

       * find.c (GlobalSearch): Keep pointer to app info block locked
       while db is open. Use new format for UnpackRecord() call.
       * io.c (UnpackRecord): Add extra argument for field type data so
       it is usable from Global Find code.
       * db.h: Update prototype for UnpackRecord.
       * list.c: Use new format for UnpackRecord.

1999-02-10  Tom Dyas  <[email protected]>

       * list.c (ListViewHandleEvent): Set the form title to reflect the
       name of the database.
       * db.rcp: Added string resources for the two titles used in the
       design view.
       * util.c (GetStringPtr): New function. Return locked pointer to a
       string resource.
       * db.h: Prototype for GetStringPtr().
       * design.c (DesignViewHandleEvent): Use GetStringPtr() to get
       strings used for titles.
       * find.c,main.c,prefs.c: Change 'DBOS' to DBCreatorID and 'DB99'
       to DBTypeID.

1999-02-06  Tom Dyas  <[email protected]>

       * edit.c: Support editing boolean fields.
       * io.c: Modify packing routines to support different field types.
       * list.c: Support displaying boolean fields and editing them
       in-place.
       * dbfmt.h: Field type flags.
       * db.h: Change packing routine prototypes to match io.c.
       * db.rcp (formID_DesignView): Add "Bool" to field type list.

1999-01-26  Tom Dyas  <[email protected]>

       * Release version 0.19
       * prefs.c (PopupDBPrefs): Support setting the "disable find"
       database flag.
       * db.rcp,enum.h: Checkbox for "disable find" in DB prefs dialog.
       * dbfmt.h: Add constant for "disable find" flag.
       * list.c (ListDrawTable): Don't allow strings to overrun column
       width.
       * listprop.c (SetColumnWidths): During loop, use width of current
       column and not first column. Fixes bug.
       (SaveFieldWidths): Fix database corruption caused by header being
       rewritten incorrectly.
       * tools/csv2pdb.c: Support double quotes.
       * tools/pdb2csv.c: Output double quotes around all fields.

1999-01-25  Tom Dyas  <[email protected]>

       * tools/csv2pdb.c (csv_to_array): Return number of elements.
       (output_appinfo): Support new file format.
       (output_records): Error if number of fields does not match header.
       * tools/pdb2csv.c (process_appinfo): Support new file format.

1999-01-23  Tom Dyas  <[email protected]>

       * dbfmt.h: New format for app info block.
       * db.h: Defs for new globals numFields and fields. Remove dbInfo.
       * io.c: Declare numFields and fields.
       (OpenDatabase): Set the new globals.
       (CloseDatabase): Write TopVisibleRecord back to database.
       * list.c,edit.c: Use the new globals.
       * design.c: Remove design_info. Make it work with new globals.

1999-01-22  Tom Dyas  <[email protected]>

       * prefs.c (PopupAppPrefs): New function. Implements the
       application preferences dialog.
       * db.h: Prototype for PopupAppPrefs. New flags field in
       preferences structure.
       * db.rcp,enum.h: Support for the new dialog. Menu for the chooser
       view. Add the App Prefs dialog in various menus.
       * chooser.c (ChooserHandleEvent): Handle menuEvent.
       * main.c (PilotMain): Only respond to Find launch code if global
       Finds are enabled in the prefs.
       (StartApplication): Initialize the flags field in prefs.

1999-01-17  Tom Dyas  <[email protected]>

       * find.c: New file. Implements global find.
       * main.c (PilotMain): Respond to Find and GoTo launch codes.
       (GoToItem): New function. Sends frmGoto event to correct form.
       * db.h: Added prototype for GlobalSearch().

1999-01-12  Tom Dyas  <[email protected]>

       * edit.c (EditViewScroll): Make needed call to MemPtrUnlock(). Bug
       found by Yann Dirson <[email protected]>.

1999-01-11  Tom Dyas  <[email protected]>

       * Release version 0.15
       * TODO: Support for going back to an open DB is done. Removed item.
       * README: Warn about incompatible database format changes.

1999-01-10  Tom Dyas  <[email protected]>

       * prefs.c: New file. Code for database preferences dialog.
       * db.rcp,enum.h: Add support for db prefs dialog.
       * db.h: Prototype for PopupDBPrefs(). Define struct for the app
       preferences. Changed prototype of OpenDatabase().
       * main.c: Added StartApplication() and ChooseInitialForm() so DB
       can support going back to an open database.
       * list.c (DoCommand): Call PopupDBPrefs().
       * io.c (OpenDatabase): Do some better error checking.

1999-01-08  Tom Dyas  <[email protected]>

       * db.rcp: Added new commands to list view menu (new record, goto
       top, goto bottom). Added "About..." command to more menus.
       * list.c (DoCommand): Support the above commands.
       (ListScroll): Support scrolling in page increments.
       (ListViewHandleEvent): Bind page up/down keys for scrolling.
       * listprop.c (UpdateScrollers): Corrected scrollDown test.

1999-01-08  Tom Dyas  <[email protected]>

       * db.bmp: New file containing a simple icon.
       * db.rcp: Added ICON entry to pull in the new icon.
       * util.c (SeekRecord): New utility routine.
       * list.c: Use SeekRecord. Export TopVisibleRecord and
       CurrentCategory.
       * io.c (OpenDatabase): Set TopVisibleRecord and CurrentCategory.
       * TODO: Updated with current feature requests.

1999-01-07  Tom Dyas  <[email protected]>

       * README: Added URL of site where copies of DB are released.

1998-12-29  Tom Dyas  <[email protected]>

       * Release version 0.12
       * README: New section mentioning Windows utility.

1998-12-28  Tom Dyas  <[email protected]>

       * tools/csv2pdb.c: Add macro pi_mktag to form the creator ID. Misc
       appearance cleanups.
       * tools/pdb2csv.c: New file. Converts PDB file to CSV format.
       * tools/Makefile: Added pdb2csv target.
       * tools/win32/*: Support for building utility programs under
       Windows. The pi-file.c file comes from pilot-link package with
       mods to make it standalone.

1998-12-23  Tom Dyas  <[email protected]>

       * tools/csv2pdb.c: Fix warnings and some errors.
       Patch from Larry W. Virden <[email protected]>

1998-12-18  Tom Dyas  <[email protected]>

       * Release version 0.11
       * design.c (DesignViewHandleEvent): When a label is tapped, then
       focus the field next to it.
       * listprop.c (ListPropViewHandleEvent): Likewise.

1998-12-16  Tom Dyas  <[email protected]>

       * Release version 0.10
       * listprop.c: New file. Implements a form for editing field
       widths.
       * chooser.c (ChooserHandleEvent): Support for deleting databases.
       * design.c: Cleaned up code for the new look.
       * db.rcp: Add new alerts for the design view. Added alert for
       database deletion. Add form for editing field widths.
       * main.c (AppHandleEvent): Support for the new form.

1998-12-15  Tom Dyas  <[email protected]>

       * design.c,db.rcp: Reworked how the design view works. It looks
       much nicer now.

1998-12-02  Tom Dyas  <[email protected]>

       * db.rcp: Added Edit menu for design view and edit view.
       * edit.c (EditViewHandleEvent): Handle menuEvent.
       * design.c (DesignViewHandleEvent): Handle menuEvent