Changelog for CFG Studio 2
2012-01-26: Version 2.0.380
A single, critical bug fix for Windows 7 (and possibly other operating systems).
Interface
- Switching between sections by using tabs, menus or keyboard shortcuts works again. Can’t believe it was broken for 2 months!
2011-11-18: Version 2.0.379
Numerous interface refinements, especially to Edit > Find. Numerous bug fixes, especially to the user preferences code.
Interface
- ‘Zebra tables’ code in
ColourGridRows()
is now robust against re-arranged rows:- Hides the grid whilst colouring it, using
.Visible
. - Shows grid once coloured, using
.Visible
. - Specifically colours both the white and grey cells using Windows system colours.
- Hides the grid whilst colouring it, using
- More streamlining for Edit > Find window.
- Moved command buttons to bottom following advice from Robson (aka icey).
- View > Sort By (risky!) is now turned on and works!
- Massively improved performance and user experience by hiding the grid while it gets sorted.
- It is risky because some files have to stay in the original order.
- Help > About shortcut is now F1 instead of Ctrl+F1.
- Menus with file paths can now be up to 460 pixels wide, instead of 260 pixels.
- Microsoft Sans Serif is now used throughout, instead of MS Sans Serif.
Formats
- Opens and saves
GTA2 nyc.gci
format:- Detects the format by file extension, parses and translates it, then detects it has 21 columns.
- Comments are removed from
GTA2 nyc.gci
format. - Standard comments written by CFG Studio 2 use
GTA2 nyc.gci
comment characters.
2007-07-12: Version 2.0.374
Numerous interface refinements, especially to Edit > Find. Numerous bug fixes, especially to the user preferences code.
Interface
- Tab indent borders is now coloured correctly in Windows XP Silver theme:
- I can’t pin down which theme entry is used to colour tab borders. It might be wrong in other themes now.
- Removed all features for creating and managing backups. Backups are easier to manage using Windows Explorer
- Bookmarks renamed to Favourites to be more consistent with Windows Explorer and Internet Explorer.
- Menus for features which have not been implemented are now hidden.
- XP theming manifest is now compiled into EXE and no longer a separate file.
Windows
- Optimised resize code and integrating with minimum size code.
- Added a size grip in bottom right corner of each resizable window.
- Vertically aligned labels to middles of single-line controls instead of tops.
Find
- Removed old ListBox.
- Simplified the controls by removing Configuration frame.
- Exact match now displays results whose start exactly matches the Find this text.
- Renamed Exact match to Begins with to reflect new behaviour.
- First match is automatically selected when the search changes.
Bugs Fixed
- Switching Named Headers mode did not update scrollbars correctly.
- Favourites menu now uses Alt+A to avoid Alt+F conflict with File menu.
Find
- ListView now resizes to suit window.
- Column numbers are now hidden. It only searches the first column.
- Results are now filtered correctly when Exact match is unticked.
- Listview columns now fill whole width when there is no vertical scrollbar.
Preferences
- Crashed on startup if
cfgstudio.ini
was not present. - Size and position for many windows was being written to wrong section of
cfgstudio.ini
file. - Windows now start up at default size if saved preferences could not be found.
- Windows now start up at minimum size if saved preferences are smaller than minimum sizes.
- Many window sizes and positions were being saved to wrong section of INI file.
2007-01-29: Version 2.0.361
A set of minor tweaks, optimisations, cosmetic updates, small extensions to functionality and bug fixes.
Interface
- Section tabs indented by three pixels from left edge of window.
- Edit > Find upgraded:
- Now displays Row and Column in results.
Editing
Editing a cell applies new value to all selected cells.
- Edit > Paste repeats data into all selected cells as best it can.
- Edit > Delete always said no bytes were deleted, even when data was deleted.
Values Adjuster
- Pressing Apply now keeps form open so you can make more adjustments.
File Lists
File paths are now compacted to fit the control they appear in:
- A maximum width of 300 pixels is enforced for menus.
- Paths in list boxes are adjusted to fit available space.
Formats
- File format of single line data files is now detected more reliably.
- Now generates files using GTA compatible separators for:
GTA3/VC/SA *.ide
GTA3/VC/SA *.ipl
Column Headers
Consolidated header generation code for the following:
GTA3/VC carcols.dat
GTASA carcols.dat
GTASA cardmods.dat
GTASA weapon.dat
Added headers for:
GTASA tracks*.dat
Context Menus
Tabs now display Edit > ections submenu as context menu.
Bugs Fixed
- Edit > Copy:
- Was making file seem unsaved, even though files are not changed by a Copy operation.
- Statusbar was saying 0 bytes copied to clipboard even when some data was copied.
- File list windows were saving compacted file paths instead of full paths.
- File list would get scrambled when resizing after editing.
- New lines were not converted to Windows format when cut or copied out of grid.
- Bookmarks form would crash when selecting an item.
- File > Recent Files list numbers were being removed by path shortening.
- Fixed
GTASA *.ipl
column lettering - Right-clicking on grid would display context menu when no file was loaded.
2007-01-08: Version 2.0.349
Lots and lots of tidying up, optimisations, new implmentations of old features and even some all-new features. Lots more preferences are read and written to the INI file. XP theming support has improved a lot.
Content Sniffing
GTA3/VC *.ipl
and GTA3/VC/SA *.ipl
sniffing improved a lot:
- If the
inst
section of a file is empty, searches for other sections to determine format. - Can find this format even when only one section is populated.
- Can also identify it by sections which are unique to the GTASA version:
enex
cars
grge
auzo
jump
cull
sectioncull.ipl
files.occl
section in.ipl
files:
- Accomodates
occlu.ipl
as used in GTAVC and GTASA. - Also accomodates the three extra columns of zeros in GTASA’s
occlu*.ipl
files.
Column Headers
Added headers as best I can for following formats:
GTA3 timecyc.dat
GTAVC timecyc.dat
GTASA timecyc.da
t
- Adjusted
PopulateHeaders()
which creates the column headers:- Accomodates discontinuous sections in several formats.
- Accomodates some more sections which can vary the number of columns.
- Added
occl
section forGTASA *.ipl
files. - Added
cars
section forGTASA *.ipl
files. - Updated
grge
section forGTASA *.ipl
files.
Consolidated header generation code for the following:
GTA3 *.ipl
andGTAVC *.ipl
folded intoGTA3/VC *.ipl
.GTA3 default.ide
andGTAVC default.ide
folded intoGTA3/VC/SA *.ide
.GTAVC default.ide
folded intoGTA3/VC/SA *.ide
.GTASA peds.ide
folded intoGTA3/VC/SA *.ide
.GTASA txd*.ide
folded intoGTA3/VC/SA *.ide
.GTASA vehicles.ide
folded intoGTA3/VC/SA *.ide
.
Row Labels
Created a system which labels the rows in certain types of file:
- These labels are not written to files.
- Labels can be toggled on or off:
- This is saved as a preference in the INI file.
- Currently labels times of day in these formats:
GTA3 timecyc.dat
GTAVC timecyc.dat
GTASA timecyc.dat
GTASA popcycle.dat
INI Preferences
Saves positions and states for each window:
- Cached in memory for each window.
- Properties of each window are written to INI file when that window closes.
- All preferences are written when application exits.
- Modularised the code for reading and writing these preferences.
Reads positions and state for each window:
- Created
LoadWindowSize()
which reads relevant values from an INI section to memory. - Created
SetWindowSize()
which applies relevant values from memory to the form. - Optimised setting window sizes and position by using
.Move
method. - Checks for invalid or offscreen positions and fixes them.
- Avoids applying sizes to windows which are maximised or minimised.
File Lists
Updates File > Recent Files when:
- A file is loaded.
- A file is reloaded
- A file is saved.
- User presses OK to File > Recent Files > All Recent Files.
Updates Bookmarks when:
- A file is added via Bookmarks > Add to Bookmarks.
- User presses OK to Bookmarks > Manage Bookmarks.
- Now get a warning prompt to confirm or cancel removing items.
- Implemented Bookmark > Add to Bookmarks.
- File > Recent Files list updated with every file open and save.
- Preserves separators.
- File lists are now saved as INI preference:
- Only saved when program exits.
- Lists are not synchronised when multiple instances are running.
Interact with file lists via their respective dialogue windows:
- Load selected item by double-clicking or by pressing Open.
- Move selected items up or down by pressing Move Up or Move Down.
- Remove selected items by pressing Remove.
File Saving
- Now adds a
vbTab
character before each node inpath
data sections. - Enabled File > Save As to work normally for easier compatibility testing with GTA.
Interface
- Updated program Major version number to 2.
- Title bar now displays CFG Studio 2 instead of just CFG Studio.
- Clicking a row header selects whole row same as in CFG Studio 1.
- Many optimisations to window resizing code.
- Suspension Rescaler now uses a simplified interface with one set of values at a time.
- Improved accuracy of horizontal scrollbar display/hide code.
- Grid cells and vertical scrollbar now touch edge of screen when main window is maximised (Fitt’s Law).
- The column of row headers can now be selected by clicking the header above them.
- Column and row readout in statusbar now starts at zero to match GTA formats.
- Added one entry for each GTA file extension to File > Open and File > Save As windows.
Rebuilt standard Edit features to be even more robust:
- Edit > Cut
- Edit > Copy
- Edit > Paste
- Edit > Delete
- Edit > Select All
- Edit > Invert Selection
Tidied up Edit > Goto:
- Better error handling.
- Seperated axes of movement.
- Now enabled in Edit menu.
Tidied up Edit > Find:
- Faster searching in files.
- Exact Match preference now stored in INI file.
- Now enabled in Edit menu.
Adjust Values
First implementation of Tools > Adjust Values:
- Created dialogue window.
- Done all resizing code.
- Loads and saves window preferences using cfgstudio.ini
- Added Tools > Adjust Values menu and enable/disable code.
- Allows adding and subtracting of integer and floating-point decimal values.
- Applied to selected cells in active grid.
Keyboard Shortcuts
Ctrl+A now does Select All for the following in any window:
- All cells in active grid.
- All text in textboxes.
- All items in checklists, as used by flags editing.
- All items in multiple select lists, as used in file list dialogues.
Listboxes
Shift+Ctrl+A now does Invert Selection for:
- All items in checklists, as used by flags editing.
- All items in multiple select lists, as used in file list dialogues.
Tabs
Optimised and modularised code by creating modTabbing
, which includes:
SelectTab()
SelectNextTab()
SelectPreviousTab()
XP Theming
- Grid now uses a flat styling.
- Added a thin divider line between menus and workspace area.
- Updated positioning of scrollbars and cell edit controls to accomodate these and any future changes.
- Switched from Microsoft Common Controls 6.0 to 5.0 so XP theming is inherited fully:
- Tabs are now XP styled.
- Tabs are now at top of window, consistant with options dialogues and tabbed web browsers.
- Status bar is now XP styled, including the resizer handle.
- Buttons for OK, Apply and Cancel are moved to bottom right in all dialogue windows.
Bugs Fixed
- Window state (normal, maximised or minimised) is now applied correctly at startup.
- Resolved accelerator key conflicts between menu items.
- Position of horizontal scrollbar was wrong when there was no vertical scrollbar.
- Height of vertical scrollbar was wrong when there was no horizontal scrollbar.
- File > Save As now uses a complete list of GTA file types.
- Pressing Delete key or using Edit > Delete menu would delete selected cells even when focus was in an edit control.
- When exiting, the Cancel button of the unsaved file message box still made the program exit.
- Created
ResetScrollBars()
to prevent scrollbar position persisting between files. - Focus was not placed in selected grid when switching between tabs.
- Tabs will no longer get focus when clicking on selected tab.
- Horizontal scrollbar sometimes allowed more scrolling that there were columns.
- Shift+Ctrl+O would not open Recent Files dialogue when no file was open.
- End of line comments were not being removed.
- Fixed inaccuracies in Edit > Go To checking for target row and column.
- Clicking Cancel at file save prompt does not cancel File > Close.
- Shift+Ctrl+O and Shift+Ctrl+B would open their respective menu even when that menu was disabled or hidden.
2006-11-13
A little over one month of reprogramming and CFG Studio 2 can be used for basic, reliable editing of handling.cfg
. Some of the other files can also be edited safely but this isn’t recommended yet.
This program is still a beta and is still just for testers to try out.
Organisation
Moved grid stuff to modFlexGrid
.
Saving Files
File > Save and File > Save As now function as they would in a normal editor.
Scrolling
- Fixed a small gap to the right of horizontal scrollbar when there was no vertical scrollbar.
- Improved synchronisation with tiltwheels which use advanced drivers to force scrolling of grid.
- Slight tidying of code which updates scrollbars when switching between tabs.
- Some reorganising of code.
- Slight optimising of code.
- Started a thorough analysis of exactly what will be needed for the next scrollbar implementation.
File Formats
Added headings for:
GTA3 fisfite.dat
GTA3/VC pedstats.dat
GTAVC fistfite.dat
GTAVC/SA surface.dat
GTASA ar_stats.dat
GTASA surfaud.dat
GTASA surfinfo.dat
GTASA peds.ide
Content Sniffing
- Loads more formats are now detected.
- Some formats are now detected more reliably.
- Mapping
.ide
files are now treated asGTA3/VC/SA *.ide
because they are so similar:- MISA
.ide
files are now being recognised thanks to this.
- MISA
- Added detection of:
GTA3/VC ped.dat
GTASA ped.dat
Bugs Fixed
- Comments at ends of lines are now fully removed, even if they container other comment characters.
- If no file was open, File > Open was not starting the Open File window in the correct folder:
- Now checks the most recent file path. If it exists, Open File now starts there.
- The hash symbol (
#
) for comments inhandling.cfg
can crash the game; now uses semicolon (;
).
2006-10-29
Now has basic file saving!
Backups
Suggested filename for File > Create Backup now uses date without time for shortness.Headers
Added column headers forGTASA carmods.dat
format.
File Saving
Figured out how multi-format file saving will be set out and written skeleton code:
- Section labelling prototype is format-aware and surprisingly compact.
- Aware of sections which use labels on seperate lines or prefix the label onto each data line.
- Labelled data lines prototype is working correctly.
- Same story for special file endings prototype.
- Adds basic comment to start of file.
- Adds special file endings for formats I know about.
- Adds special file endings for formats I know about.
Test-friendly Interface
- File > Save As will prompt user to save file to folder CFG Studio is in.
- The file will be saved there only if user clicks Yes.
- This allows testers to compare the saved file against the file which was opened.
- Also means any errors won't screw up testers’ games!
Scrolling
First rewrite of horizontal scrolling:
- Accomodates variability in sizes of columns.
- Scrollbox size reflects an “average” page width rather than an exact page width.
- The alternative would make the scrollbox change size as you scrolled across the page.
- This new approach is still behaving weirdly in some cirumstances.
This needs yet another new implementation to make it synchronise when switching between tabs. At least this time I’ll know everything I need to code against.
Navigating
Optimised the code for tabbed navigation shortcuts.Bugs Fixed
- Cursor now starts at end of cell when you press Backspace to begin editing.
- When opening a file, scrollbars would start in the positions there were at in the previous file.
- Crashed when opening a new file if a section other than the first was being viewed in the current file (found by Picolini).
- After closing an altered file without saving changes, user would be prompted to save the old file while opening a new file (found by Picolini).
- Crashed when switching from a tab with row headers to a tab without row headers when first cell was selected in both.
mods
andwheel
sections ofGTASA carmods.dat
format are now being created properly.
2006-10-25
First implementation of new scrollbar code, more column headers and numerous bug fixes.
Interface
- Reassigned Ctrl+B to operate Bookmarks > Manage Bookmarks for consistancy with web browsers.
- Has meant reassigning File > Create Backup to F11 and File > Backups > All Backups to Ctrl+F11.
- Optimisations to
Form_Resize
code for controls in main window. - Optimisations to column width autosizing.
- Empty files are now loaded and produce a dataless, sectionless interface.
Scrolling
Completely new implementation of scrollbars:
- Not using Windows API because it’s too complicated for a programming novice like me.
- Code is being written in a modularised form from the outset (yay me).
- Hiding and showing of scrollbars is working fairly well.
- Verticall scrolling is working fairly well.
- Horizontal scrolling has not been done yet.
Drag-Drop Support
Now opens files dropped onto grid (only supported dropping onto titlebar or menubar before).
Content Sniffing
Lots of .dat
files are very similar:
- They are all now treated as
GTA3/VC/SA *.dat
. - The variability of sections in these formats is now accomodated properly.
File Formats
GTA3/VC/SA *.dat
GTASA *.ipl
numplate.dat
Parser
- Now accomodates empty sections.
- Now accomodates non-consecutive sections, such as those in
gta*.dat
formats. - Uses sections for determining
FileFormat
string.
Bugs Fixed
- Cursor did not change to hourglass while over grid when “View > Named Headers” was changed.
- Was setting wrong headings for a couple of
GTASA *.ipl
sections. - Prevented scrollbars from flashing at the moment when a file with no data in its first section has finished loaded.
- Loading and rendering progress are now displayed when opening a file from the command line.
2006-10-17
Modularising the file handling code; lots of other stuff you can’t really see, plus more bug fixes.
File Opening
- Modularised the file opening and related interface updating code.
- Creates sections dynamically from section labels or line labels.
- Formalised parsing rules for all the generic files; some super-weird ones are left out for now.
- Seperated parser from file opening code.
- Modularised file handling code into a series of reusable functions and subprocedures.
- Empty files are now discarded with an error message.
- Implemented newly modularised code for opening files via:
- Command line.
- Drag-drop.
- File > Open
- File > Reload
- File > Backups
- Overwrites active file if user selects Yes at the prompt.
- File > Recent Files
- Bookmarks
Interfacing
- File > Close rewritten using newly modularised code (loving it!).
- Tabs are now scrollable when there isn't enough width to display them all at once.
- Added keyboard shortcuts for up to 40 tabs.
Bugs Fixed
- Cursor never changed to the hourglass when mouse was above grid.
- Created
AppearBusy()
for use before long operations. - Created
AppearNormal()
for use after long operations.- Fixed a small flicker when a file has just loaded caused by me doing a premature redraw.
- Created
- Valid section labels which are not 4 characters long were being discarded.
- Corrected column headers for
GTA3 default.ide
andGTAVC default.ide
. - Some menu items were enabled even though they are not safe to use yet.
2006-10-13
Mostly working on the GTA3/VC *.ide
, GTASA *.ide
and GTASA *.ipl
formats and fixing some bugs.
File Formats
GTA3 weapon.dat
GTAVC weapon.dat
GTASA *.ide
GTASA *.ipl
- Now accomodates the variety of sections in mapping IPL files in GTASA:
tunnels.ipl
cull.ipl
path*.ipl
Bugs Fixed
- Used to crash when a section normally had row headers but contained no data.
- Wasn’t creating these sections:
2dfx
Anim
Auzo
Cull
Grge
Enex
Jump
Mult
Path
Pick
Tcyc
Tobj
- Headings now correct for
GTA3/VC *.ide
files with multiple draw distances. - Columns now autosize when a value is edited.
- Edit lists horizontal autosizing now fits very narrow windows properly.
2006-10-11
I started ripping out all the old code on 2006-10-04. Here is what changed since then for the first public beta release.
Recent Files, Backups & Bookmarks
- Made a common function for getting values from INI section.
- Made a common subprocedure to populate the different menu lists.
- These three aspects now share the same code, reducing maintenance headaches and EXE size.
Autosize Columns
- All columns of all grids are autosized after loading a file.
- Current column is autosized after changing a value.
Flags
- Created
HexToBinRev()
function for updating flag lists from cells. - Created
BinRevToHex()
function for updating cell from flag lists. - Validates input.
- Validates output.
- Can accept any size of input and generate correct output.
Bugs Fixed
- Now checks lines with one value against a list of known labels to avoid always creating a section.
- Statusbar would display negative numbers when viewing any empty section.
- Statusbar stopped updating when loading files with over ~20,000 lines.
- Crashed when loading a file with fewer sections than the previous file.
- Crashed when typing into grid when no data is loaded.
- A typo in
FormatString
crashed app when rendering View > ort By menu. - Accomodates discontinuous sections, such as
splash
ingta*.dat
. - Gap between list and cell when displaying above cell.
- Edit lists sometimes displayed on wrong side.
- Edit lists didn’t resize to make best use of available space.
- Crashing when minimised.
Boat
andBike
sections were mixed up.- End-of-line comments now removed properly.
- End-of-file asterisk no longer parsed as a section label.
- Binary files were causing crashes. File opening is now aborted gracefully.
- Crash when double-clicking grid when no data is loaded.
Edit Controls
- Lists will max out their height.
- Lists will max out their widths.
- Very useful for the long checklists needed for GTASA flag values!
Mouse Support
- Mousewheel does vertical scrolling.
- Shift+Mousewheel does horizontal scrolling.
- Microsoft Tiltwheel should works if latest InteliPoint drivers are present.
- Variable-speed for Microsoft "smooth scrolling" mice supported.
- Prevented interfeering with mouse scrolling of edit lists.
X
mouse navigation buttons cycle through available sections.
Headers
- Each repeated named header group is now numbered.
- Added headers for lots more file headers; lots more still to do.
Navigating
- Shift+Ctrl+<number> for sections 10-20 in
mnuViewData_Click
. - Added tabs object and coded it to be (fully?) functional.
File Handling
- Filename now added to window title when loaded.
- Torn out all the old file handling stuff.
- Data is now parsed into grid.