14-0222-1852 ------------ latest rev: 1202 (respin) --- 14-0113-1123 ------------ latest rev: 1202 Export to package should include resource name. Fix "Import from package" to replace names if the option is selected. New import from package replacing selected resources option ("Import->Replace selected"). --- 13-1112-2033 ------------ latest rev: 1196 (respin) --- 13-1106-2244 ------------ latest rev: 1196 (respin) --- 13-1103-1139 ------------ latest rev: 1196 New helper to pass the assembly inside a S3SA resource to a third program. Intended for viewing reflected CIL code. --- 13-0902-2048 ------------ latest rev: 1189 Include new User CASt Preset Resource wrapper. --- 13-0825-1939 ------------ latest rev: 1188 Resource Details was not responding to the Resource Type Combo's "ValueChanged" event. Also includes updated help files. --- 13-0715-2042 ------------ latest rev: 1185 (respin) --- 13-0706-2103 ------------ latest rev: 1185 (At least temporarily) prevent ViewHex from Grid except for BinaryReader fields (as TextReader does not necessarily have a backing Stream). --- 13-0624-1931 latest rev: 1178 (respin) --- 13-0623-1752 ------------ latest rev: 1178 Drop _VID wrapper (as it was useless). Create VP6 to _VID helper project (not yet included in s3pe). Prevent Paste in Search input field getting caught in the PasteRK code. Refactor preview: new "BuiltInValueControl" class provides the control that gets displayed (DDS, Image or any plain text). Change hex and exceptions to be special types of plain text for preview (HexWidget dies!). New settings to allow preview of resources handled by DefaultResource either as hex or (as best possible) plain text. Plain text preview Zoom Factor is now remembered. "Value" is generally called "Preview" where it makes more sense. --- 13-0316-1933 ------------ latest rev: 1122 (respin) --- 13-0226-1754 ------------ latest rev: 1122 (respin) --- 13-0129-1554 ------------ latest rev: 1122 Enable creation of SimCity5 packages through s3pe. (and respin) --- 13-0128-1923 ------------ latest rev: 1121 (respin) --- 13-0126-2145 ------------ latest rev: 1121 (respin) --- 13-0118-1824 ------------ latest rev: 1121 (respin) --- 13-0113-1003 ------------ latest rev: 1121 Import: Resolve DBC duplicate handling issue introduced in 12-0827-2123. --- 13-0105-1939 ------------ latest rev: 1116 ResourceDetails form amended to remove shortcut keys Ctrl+C and Ctrl+V from context menu options and attach context to form rather than input fields. (and respin) --- 12-1225-1206 ------------ latest rev: 1115 (respin) --- 12-1213-2000 ------------ latest rev: 1115 Make selecting all resources run faster, with a splash screen. --- 12-1209-1413 ------------ latest rev: 1108 (respin) --- 12-1129-2009 ------------ latest rev: 1108 Enhanced user support when File->Open issues an error. (And respin once more.) --- 12-1124-1536 ------------ latest rev: 1104 (Seasons re-spin take #3 - further OBJD fixes. Plus various UI tweaks.) --- 12-1117-1417 ------------ latest rev: 1104 (Seasons re-spin take #2 - OBJDs and CFENs work better.) --- 12-1116-1939 ------------ latest rev: 1104 Remove non-functional Close [X] button from grid form title bar. (And Seasons re-spin take #1.) --- 12-1102-1828 ------------ latest rev: 1099 (respin against s3pi-12-1102-1826) --- 12-1021-1454 ------------ latest rev: 1099 (respin against s3pi-12-1021-1454) --- 12-1018-2104 ------------ latest rev: 1099 (respin against s3pi-12-1018-2056) --- 12-1011-1037 ------------ latest rev: 1099 OBJK Helper: Was missed some time back when updating for s3pi changes. Should now work again. Grid: Updates for IGenericAdd changes and removal of ConstructorParametersAttribute and DataGridExpandableAttribute. --- 12-0923-1032 ------------ latest rev: 1096 Update installer "Help" URL. Grid: Search in the assembly where the abstract type is for concrete implementations. --- 12-0827-2123 ------------ latest rev: 1084 Turn on "Use Resource Name" by default. Fix "reject" duplicates handling on import from package(s). Only force focus s3pe once at the end of a batch of imports (from packages) when auto-saving. --- 12-0819-1506 ------------ latest rev: 1081 Do not copy in all those now embedded config files. ResourceDetails: Missing Copy and Paste RK bits added. (Respin for s3pi changes.) --- 12-0530-0825 ------------ latest rev: 1075 (Respin for s3pi fix.) --- 12-0527-1949 ------------ latest rev: 1075 CLIPAsNewName: Preserve the ResourceGroup in the file name of the created CLIP resource. Grid: "Add" no longer uses ConstructorParametersAttribute to create a new element but simply passes the element type. Import: Make importing resources from multiple packages more robust. Import: BrowserWidget has specialised code for adding multiple resources at once (e.g. opening or importing packages; also used when the filter settings change). Import: When adding a single resource to BrowserWidget, you can tell it not to select the resource (together with the above, these nailed #1). Import: There's a progress bar whilst it's all going on. Import: Automatically creating a name map doesn't select it any more. Import: Progress bars get updated up to four times a second rather than every "n" items in the list now (which could speed things up). Import: Import tells BrowserWidget not to select resources when it is importing more than one (#1). Import: Stopped enabling the form in the wrong place (#2) (also affects -import command line option and two control panel checkbox Changed handlers). Import: Creating a new resource doesn't ask the package to find the resource twice. --- 12-0317-0944 ------------ latest rev: 1063 (Respin for DDS fix.) --- 12-0310-0916 ------------ latest rev: 1063 Use splash screen around AutoUpdate check, just in case user's Internet connection is unavailable. (Respin for Showtime) --- 12-0222-2102 ------------ latest rev: 1057 CLIP helper: Use the library FNV64CLIP to get the IID. Add FNV64CLIP calculator to ResourceDetails and FNVHashDialog. Add the wonderful splash screen to s3pe. Improve the feedback on what the application is up to and avoid the UI thread blocking on close. Bring s3oc and s3pe command line handling in line (again). Allow both /import and user package on command line to work (user package first as import slurps everything else). Process command line arguments once the main window is shown (more responsive). Only offer "Open read-only" if the exception appears to be one this would fix. Resource menu/context menu entry enabling rewritten. --- 12-0114-2320 ------------ latest rev: 1035 Grid: Put GetValue() in the same order as PropertyType. Let a ResourceKey turn itself into a string when erroring. --- latest rev: 1033 Migrate sims3tools to .Net4. Add loadFromRemoteSources [http://msdn.microsoft.com/en-us/library/dd409252%28VS.100%29.aspx] to app.config everywhere. (It's a security feature designed to make life difficult for developers.) Adopt PortableSettingsProvider. System.Configuration.PortableSettingsProvider Update assembly properties. AutoUpdate: Change DEBUG version to actually return a value (the current executing versions). AutoUpdate: Return a Library version (same way it does the exe version). AutoUpdate: Delete the 2009 XML UpdateInfo parsing code. Use PortableSettingsProvider.ExecutableName rather than Application.ProductName (which is now sims3tools). Set DDSPanel to enabled by default, remove warnings and don't disable on failure. Move to a single AnyCPU build. Handle renaming of the meshHelper twins. Remove settings deletion from the installer. Do a silent uninstall if called from the installer. Drop ViewDDS and DDSTool. Fix silent uninstall to ... uninstall (un.onGUIInit not called). --- latest rev: 987 Grid: New "Insert" button (like Add, only above selected list item). Grid: Fields should be more responsive to changes above and below them hierarchically. Grid: Pasting numeric values ignores leading/trailing spaces. Grid: The group value of a resource key is now editable. --- 11-1216-1651 ------------ latest rev: 984 (not yet released) Grid: New "Insert" button (like Add, only above selected list item). Grid: Fields should be more responsive to changes above and below them hierarchically. Grid: Pasting numeric values ignores leading/trailing spaces. Grid: The group value of a resource key is now editable. --- 11-1119-1603 ------------ latest rev: 980 Import DBC: Don't remove CAS 0x626F60CD THUM. Add "Copy ResourceKey" to Resource menu and browser widget context menu Add "Paste ResourceKey" to new filter widget context menu, along with a "Paste RK" button, as the context menu can be tricky to use. Always send xxxChanged events after initially loading settings in ControlPanel widget. --- 11-1105-2159 ------------ latest rev: 974 (Respin for s3pi changes) --- 11-1102-1444 ------------ latest rev: 974 Include RigResource. A patch to VSC#Express seems to have make some minor changes to headers. Minor tweaks to .csproj files. (Respin for s3pi changes) --- 11-1001-1447 ------------ latest rev: 968 Remove meshHelper from s3pe distribution. Convert line endings to CRLF when saving preview. --- 11-0926-2213 ------------ latest rev: 946 Pick up changes to ModelResource that resolve s3asc/s3m2b problems for Blender. s3pe: "Edit->Save Preview..." (and preview context menu) for text-based previews allows the preview content to be saved (either to .txt or as .hex). --- 11-0828-0954 ------------ latest rev: 940 s3asc: Fix up warning messages to identify mesh name correctly and make the message a bit clearer (?). s3asc: Do not import SKIN when importing from s3asc. s3asc: Format SKIN export data like Wes's ObjTool. s3asc: Do not update UVScales values. s3asc: Add support for short names (initial naming version); this is because Blender has problems with long names. s3asc: Rename exe to "meshExpImp". s3asc: Amend menu labels and helper descriptions. s3asc: Rename S3Asc..portSN.helper to s3m2b..port.helper and S3Asc..portSN.helper to s3asc..port.helper. s3asc: Change file extensions on s3m2b for blender files. s3asc: Change assembly Title and Product. s3asc: Prompt for and update mesh bounding box. s3pe: Amend project to support s3asc name changes. --- 11-0818-1554 ------------ latest rev: 930 (not yet released) s3asc: Fix up warning messages to identify mesh name correctly and make the message a bit clearer (?). s3asc: Do not import SKIN when importing from s3asc. s3asc: Format SKIN export data like Wes's ObjTool. s3asc: Do not update UVScales values. --- 11-0809-1034 ------------ latest rev: 921 Fairly major refactoring for DdsFile etc - most of the changes are in DdsFile but I've changed the namespaces. DDSPanel now lives in System.Windows.Forms like other controls you place on a form. DdsFile, ColorHSV and HSVShift now live in System.Drawing, like Image, Bitmap and Color classes. (Unless you're using stuff inside DdsFile, the namespace changes may be the only visible effect.) Rename TestDDSPanel folder to DDSTool, to match project (and exe). DdsFile/DDSPanel new "HasAlphaChannel" property, indicating the DDS image format includes an alpha channel. DDSTool uses "HasAlphaChannel" to enable Channel4 on the main DDSPanel. Move DDSPanel from ViewDDS to s3pi solutions and sims3tools to s3pi SVN repositories. Improve error message displayed for invalid magic cookie or major version number when opening a package. Change menu entry text for DBC import prompt. Helpers: Include ".exe" on command name (as non-Windows shells do not necessarily add it). --- 11-0724-2214 ------------ latest rev: 899 OBJK & VPXY Helpers: Pick up s3pi.Controls. (was in previous release) Repair DdsFile.Save(). Fix DDSTool tab order. --- 11-0715-2213 ------------ latest rev: 894 DdsFile: Implement IDisposible (possibly pointless); add (C) notice as it's about time. DdsFile: SetColour(..) renamed CreateImage(..) and now creates a new DdsHeader() as well as just setting the image size. DdsFile: New "CreateImage(...)" methods accepting Image or Bitmap and supportHSV arguments to directly create the bitmap data from an existing image. DdsFile: Add Save support (for squish-supported DDS types - DXT1/3/5). DdsFile: Initialise header pixel format (to DXT1) when creating an image of a single colour. DdsFile: Attempt to keep raw pixel and HSV data in sync. DdsFile: New "MaskedApplyImage" methods to apply DdsFiles, Images and Bitmaps depending on the mask channels. DdsFile: New methods "SetAlphaFromGreyscale(...)" to set the current image alphachannel from another image converted to greyscale. DDSPanel: Add Copyright comment. DDSPanel: Various source clean-ups. DDSPanel: Make sure everywhere checks for loaded or MaskLoaded, correctly. DDSPanel: Clear() (and DDSLoad(null, bool)) clears the current image, freeing resources. DDSPanel: SetColour(..) renamed CreateImage(..). DDSPanel: In CreateImage(...), don't check for a loaded image ... until you've created one. DDSPanel: CreateImage(uint colour, ...) methods changed to take uint?. DDSPanel: New "Import(string filename)" method to read an Image (in GDI+-supported format) from "filename" and use it to create the image. DDSPanel: New "Image" property to return the image currently displayed. DDSPanel: New "CreateMask(MaskChannels, int, int)" method to create multi-channel (but full-size, solid) mask of a given size. DDSPanel: Add Save support. DDSPanel: Initial image size now constrained by MaxSize property. DDSPanel: New "ApplyImage(...)" methods to apply streams containing DDS images, Images and Bitmaps depending on the mask. DDSPanel: Support "Load(DdsFile)" to replace the current DDS Image with another. DDSPanel: New methods "SetAlphaFromGreyscale(...)" to set the current image alphachannel from another image converted to greyscale. DDSPanel: New "ResizeMask()" method to set the mask size to the image size. Add versioning and assembly information to DDSPanel. TestDDSPanel: Update test program for new DDSPanel features. Rename TestDDSPanel to DDSTool (and HSVTest to MainForm). DDSTool: Redesign UI, support import of alpha. DDSTool: Support use as s3pe helper. DdsSquish: Re-create Compress call to squish native dll. s3pe: Pick up ViewDDS directly, same as other helpers; also pick up DDSTool. Overhaul installers to try to prevent "can't install due to previous install breakage" problems. DBC import: Remove "Experimental" on the menu item. DBC import: Autosave between packages by default. DBC import: Allow being asked whether to autosave to be enabled -- the first time in each session you choose to turn on prompting, it displays a reminder that autosaving is recommended. Import: Drag-n-drop of packages now displays the correct dialog. Oops: package up s3pe helper source with s3pe source! --- 11-0705-2214 ------------ latest rev: 861 Use "myName" for application name, not "this.Text". Pick up CreateAssemblyVersion usage. Pick up reorganisation of RCOL chunk handlers distributed with s3pi to split out the specific chunk handlers into their own DLL, away from the generic implementation. Pick up CreateAssemblyVersion. ViewDDS: Doc comments in DDSPanel, DdsFile. DdsFile: Source code reformatting. DdsFile: Added support for HSV processing. When enabled, an array of "struct ColorHSVA { byte h, s, v a; }" exists, as well as the original pixmap data. Either pass "true" as second argument to DdsFile.Load(Stream, bool) or use the DdsFile.SupportsHSV property. DdsFile: More helpful error messages, designed to indicate what actually went wrong with reading the file. DdsFile: Redesigned DDS to pixmap translation to use delegate methods, rather than using multiple if statements buried inside a for loop. I hope the use of the delegate is more efficient. DdsFile: MaskedHSVShift(DdsFile, HSVShift, HSVShift, HSVShift, HSVShift) applies the four HSVShifts to the current image, based on the pixels in each channel of the first argument. Each channel adds to the effect. DdsFile: MaskedHSVShiftNoBlend(DdsFile, HSVShift, HSVShift, HSVShift, HSVShift) applies the four HSVShifts to the current image, based on the pixels in each channel of the first argument. Each channel is applied sequentially, overwriting any earlier effect on a pixel. DdsFile: MaskedSetColour(DdsFile, uint?, uint?, uint?, uint?) applies the four colours to the current image, based on the pixels in each channel of the first argument. DdsFile: ClearMask() reverts to the original pixmap. DdsFile: HSVShift is a new property that applies an HSVShift to the whole of the current image. DdsFile: SetColour(r, g, b, a, w, h, supportsHSV) creates a pixel array of the specified w x h coloured r/g/b/a, with optional HSV support. DdsFile: SetColour(argb, w, h, supportsHSV) calls the above appropriately. DdsFile: Size property returns the image size. DDSPanel: New property SupportsHSV, linked to the loaded DdsFile's SupportsHSV property. I need to check the implementation here (looks like it won't work properly without a DdsFile loaded and it's not handled well). DDSPanel: New HueShift, SaturationShift and ValueShift properties. New method HSVShift to set all three at once. DDSPanel: DDSLoad() method now takes an optional second argument; when true, the image will be loaded with SupportsHSV turned on to start with. DDSPanel: New method "LoadMask(Stream)" to load a mask. DDSPanel: New method "ApplyHSVShift(HSVShift, HSVShift, HSVShift, HSVShift, bool)" uses the current mask to call MaskedSetColour on the current image. DDSPanel: New method "ApplyHSVShift(Stream, HSVShift, HSVShift, HSVShift, HSVShift, bool)" calls LoadMask and the stream-less ApplyHSVShift. DDSPanel: New method "ApplyColours(uint?, uint?, uint?, uint?)" uses the current mask to call MaskedHSVShift or MaskedHSVShiftNoBlend on the current image. DDSPanel: New method "ApplyColours(Stream, uint?, uint?, uint?, uint?)" calls LoadMask and the stream-less ApplyColours. DDSPanel: New method "ClearMask()" clears the mask on the current image. DDSPanel: New SetColour() methods to create an image of a specified colour rather than loading one. DDSPanel: MaskLoaded property (read-only) true when a dds mask is loaded. DDSPanel: ImageSize property (read-only) returns the loaded image size (or empty, if not loaded). DDSPanel: MaskSize property (read-only) returns the applied mask size (or empty, if none applied). ViewDDS: New Test app for DDSPanel. --- 11-0627-1733 ------------ latest rev: 838 Set floating frame clientsize from content size, rather than using autosize. Add built-in hex viewer to Grid. Prevent enum dropdown exceeding available screen dimensions in Grid. Allow sorting in Settings->Manage Wrappers. s3pe s3asc helper: Seeing as we build it here, include the reference to Atavera's ModelResource wrapper as a project reference. Bug fix: don't crash on unsupported DDS files. --- 11-0603-2032 ------------ latest rev: 814 (Respin for OBJD.) --- 11-0602-0833 ------------ latest rev: 814 s3pe s3asc Helper: Add filename to error messages. s3pe s3asc Helper: Don't crash if the SKIN has no Bones but there are BlendIndices references to be found - just return an empty list. s3pe s3asc Helper: Re-instate the warning for unused JointReferences. s3pe s3asc Helper: Update all the MATD ShaderData UVScales entries, rather than just the primary one - but don't add one if not present. Rename "New Grid" folder to "s3peDataGrid". "Expand all" and "Collapse all" buttons in Grid. Prompt for "open readonly" when file can't be opened. Add Organise bookmarks to the File->Bookmark menu. Sundry short-cut fixes, including Ctrl-A to select all resources. --- 11-0522-0904 ------------ latest rev: 803 s3pe s3asc helper: Check a BlendIndex is not filler value before setting maxReference. --- 11-0521-1401 ------------ latest rev: 802 s3pe s3asc helper: Centralise computation of UVScales for MLOD so that there can be only one per MATD. --- 11-0516-0752 ------------ latest rev: 801 BrowserWidget: Fixes to visibility of listView control (handle before created or browserWidget not visible). Get Atavera's Model RCOL Handler from the right folder locally. s3pe s3asc helper: Refactor code. s3pe s3asc helper: Rework uvScales handling. --- 11-0502-1448 ------------ latest rev: 797 DDSPanel: Alpha channel now defaults to not being inverted. DDSPanel: New control to allow alpha to be inverted. DDSPanel: Background image set to checkerboard pattern. s3pe DDS Preview: Support for invert alpha control on DDSPanel. BrowserWidget: Add go-faster stripes by using listView1.Visible rather than .Enabled. Grid: Use ConstructorParameter attribute for IDictionary<> resources. Grid: Use "R" format for Double and Single values for easier editing. Add new NGMP resource wrapper. Include s3asc helper and Atavera's Model RCOL handler. --- 11-0402-0951 ------------ latest rev: 773 Read replacement resource from file correctly. --- 11-0326-1530 ------------ latest rev: 771 Resource Details has a new "Copy TGI" button to put the ResourceKey on the clipboard. Search can be filtered by resource type. Search form lets you paste the Resource Type (from a single, copied TGI in sims3tools format). Search results let you copy a selected (list of) TGIs in the sims3tools format. DoubleClick (or Enter, I think) on a Search result selects the item in s3pe (displaying it in preview). New edit commands (Copy preview text to clipboard, float preview, open preview in text editor). Split up ViewDDS so the Paint.NET code and panel can be reused. Replace DDS preview with Paint.NET version from ViewDDS. --- 11-0312-1736 ------------ latest rev: 763 FNV Hash for Instance in Details. New helper to export an existing CLIP resource but with a new name and correctly hashed instance ID. s3pe: use amended API to pass resource name to helpers. Rebuild s3asc helper and S3SA DLL Export/Import helper projects, plus various tidy-ups. s3asc doesn't replace JointReferences on Import. --- 11-0221-1402 ------------ latest rev: 753 Fix QBE on the ResourceName to ensure the value doesn't contain unintended escape sequences. Include new JAZZ chunk handlers. OBJKEditor: Attach "TGI Blocks..." button to bottom of form. VPXYEditor: Fix for new iterator in SimpleList seems to have been lost. Reapply. Make Resource->Add work (again...). Remove the External buttons panel. Remove dbc popup as Anach has moved support to Simlogical. --- 11-0212-1732 ------------ latest rev: 743 MenuBarWidget: Increment helper number for each helper. --- 11-0202-2132 ------------ latest rev: 739 ManageWrappers: Provide additional information about wrapper DLLs. Add external programs to Resource and Context menus, allowing more than two Helpers. VPXY Editor: Oops, missed moving TGIBlock out from AResource in "#if DEBUG" block. S3SA DLL ExpImp: Always create an export file, don't just reopen an existing one. --- 11-0108-1238 ------------ latest rev: 719 Provide both 64-bit and 32-bit builds (can't do "AnyCPU" as DDSPreview is CPU-specific). AsKVP key and value should use format "X" for TypedValues. Add pretty icon and estimated size to Uninstall key. Remember to remove (our) Helpers when uninstalling. Importing from packages now allows a choice of whether to import or discard resource names. Dictionaries should display count in hex. New "Tag" filter field added. Old "Unknown2" filter field removed. --- 10-1227-1234 ------------ latest rev: 709 Updates for cloning changes. --- 10-1212-1521 ------------ latest rev: 705 Change default FormWindowState to Minimized (causing a form layout reset). Move ForceFocus into separate .cs file. Rewrite restore of window settings to be more reliable. Drop app.config again. Set user defaults to more user-friendly values (as they seem not to cause any serious problems). --- 10-1202-1426 ------------ latest rev: 693 Respin for library fix to OBJD wrapper. --- 10-1128-1527 ------------ latest rev: 693 Rename DemoPlugins to Helpers.cs/sln; move *.helper files to appropriate s3pe helper. Merge wikiUpdatesNovember2010 changes. New S3SA DLL Export/Import helper. (wikiUpdatesNovember2010) latest rev: 682 Doesn't need app.config. Apparently. For now. I'm sure it'll be back again. VPXY Editor updated for BoundingBox -> Bounds. 10-1120-2022 ------------ (wikiUpdatesNovember2010) latest rev: 659 VPXYEditor: Updated for SimpleList changes. DDSPreviewWidget: split into a separate DLL and dynamically loaded, hopefully safely. Grid: Remove Boolset references, allow TGIBlockListContentField attribute on non-IConvertible types (and ignore it for now). BrowserWidget: Fix ResourceName column size getting forgotten when the column is toggled on/off. --- --- 10-1104-1243 ------------ latest rev: 602 VPXY Editor: Update for changed list API. --- 10-1031-1514 ------------ latest rev: 599 Grid: Search more carefully for an ApiVersionedFields generic type argument. --- 10-1027-2303 ------------ latest rev: 597 Grid: Suppress Unicode prefix on TextResources. Oops, there are two DDS resource types for the previewer to preview! --- 10-1024-1953 ------------ latest rev: 596 Control panel: Fix HexEditor button sizing. Grid: Number array entries in Hex in pop out Grid. Make checking for Value property consistently use ContentFields and property Type. Remove DEL as menu shortcut (as it stops it being used to edit text fields). BrowserWidget: Handle KeyUp event and raise new DeletePressed event if DEL pressed. FilterField: Allow substring matching (default remains exact match). Handle DeletePressed event by deleting selected resources. Add resource name to filter and allow substring matches on name. --- 10-1005-0856 ------------ latest rev: 588 BrowserWidget: don't crash if name map isn't an IDictionary<>. Implement wrapper management dialog and settings. Support for previewing DDS resources, based on SlimDX library and WPF. --- 10-0926-1337 ------------ latest rev: 580 Turn off annoying debug autoupdate test. DBC import: ICON 0x2E75C765 is needed by roofing. Remember form start location. Remember Grid size. --- 10-0829-2155 ------------ latest rev: 567 Support .nhd files as packages. --- 10-0817-1048 ------------ latest rev: 565 Find{,All}() never returns IResourceIndexEntrys with IsDeleted==true, so don't need to test for that. Lose some unnecessary "(uint)" casts. Various changes to dbc import for Anach. Handle dropping/-import of a folder by doing a recursive import. Grid windows pop up staggered. Grid has [+] for anything with "complex" content. --- 10-0724-1051 ------------ latest rev: 560 Fix single-file drag'n'drop - it should do fileNew() and handle package files properly. Enhanced Filter: now uses Regex for matching. Work-around VisualStudio2010Express insisting that the context menu items must all be disabled. Use IPackage.FindAll(Predicate Match) with a lambda expression to apply the filter in the browser widget (includes updating progress bar). Yet another attempt at getting the app not to stick behind everything in Windows after running a helper. Use IPackage.FindAll(Predicate Match) to find the name map(s). Bug fix: if NewResource() returns null on resourceAdd(), don't crash. Importing forms now get a dynamic title depending on where they were called from. resourceImportAsDBC(): Rewrite to use IPackage.FindAll(Predicate Match). resourceImportAsDBC(): Run Application.DoEvents() every 100ms to keep the app seeming alive. getDups(): Rewrite to use IPackage.FindAll(Predicate Match). importPackagesCommon(): If importing from multiple packages, allow auto-save after each. importPackagesCommon(): Run Application.DoEvents() every 100ms to keep the app seeming alive. Handle exceptions during import more gracefully. --- 10-0711-1434 ------------ latest rev: 543 Remove update splash-screen and calls to platform-specific force focus code. --- 10-0711-1317 ------------ latest rev: 542 AutoUpdate feature added. New warning dialog when using Import->DBC. Call fileNew() when doing batch import and CurrentPackage is null. When importing a batch of files, import the content of any package files. Allow drop without an open package (automatically open it). --- 1007-03-1910 ------------ latest rev: 518 Grid: Provide drop down selection of TGIBlockList entry for known Index fields. Grid: Prevent crashes when trying to convert a null. Various CAS resource wrappers. Add external text editor setting. Add external editor support to Grid (TextReader and BinaryReader fields). (Respin for s3pi changes.) --- 1006-12-1808 ------------ latest rev: 505 Additional diagnostics when resource value cannot be displayed due to exception. (Respin for s3pi changes.) --- 1006-05-1643 ------------ latest rev: 494 (Respin for Ambitions s3pi changes.) --- 1005-25-1942 ------------ latest rev: 494 Consistency in collection counts in Grid. (Also respin for s3pi change to RSLT.) --- 1005-03-0954 ------------ latest rev: 493 BrowserWidget: Consistently cast IResourceIndexEntry to AResourceIndexEntry to access ResourceIndexEntryChanged event handler. (Also respin for latest s3pi) --- 1004-22-2119 ------------ latest rev: 492 VPXY Editor: TGIBlockList indexes are Int32 not UInt32, so change all the UInt32 indexes to Int32s. (respin includes latest s3pi) --- 1004-05-1621 ------------ latest rev: 489 Display a message and allow Skip/Skip All/Abort if a package cannot be imported. --- 1004-05-1522 ------------ latest rev: 488 Display a message and continue if a package cannot be imported. --- 1004-02-1436 ------------ latest rev: 484 Grid: Use ElementPriority support in AApiVersionedFields Helpers: Remove "ExitCode = 1" from helpers. (Pick up new bits from s3pi.) --- 1003-06-1044 ------------ latest rev: 473 Force reload of selected resource after replacing resource content. --- 1002-24-1519 ------------ latest rev: 471 BrowserWidget.cs: Need to check there is a selected resource before updating it. MainForm.cs: Re-open file, even if it's the same as the current file. MainForm.cs: Oops: don't use ContentCategory when finding a resource. Build script updated for x64 build platform. Project updated to VS2010. Helpers buttons can now have tooltips. Helpers re-write (split Helpers.txt into Helpers\*.helper; maintain list of disabled helpers). ViewDDS: provide *.helper file for s3pe. --- 1002-19-1756 ------------ latest rev: 452 Remove ContentCategoryFlags from everywhere. (pick up latest s3pi) --- 1002-19-1031 ------------ latest rev: 451 VPXY Editor: fix parsing of line numbers (in hex) Rename EPFlags to ContentCategoryFlags (and add SP1). Use ConstructorParameters to add elements of abstract classes. (pick up latest s3pi) --- 1002-14-1246 ------------ latest rev: 447 VPXY Editor: Oops: currentVPXYentry is the wrong number; remove by TGIBlockCombo. Fix updating ResourceIndexEntry details. BrowserWidget now exposes ResourceKey and handles changes to this specially (i.e. doesn't get confused). Fix Tab order on ResourceDetails form. If the ResourceName changes, update the TGIN value. Move UpdateNameMap to BrowserWidget and rename it ResourceName. MainForm.cs: In resourceAdd(), create an empty resource and update the package explicitly, move ResourceName() after this. MainForm.cs: In resourceDetails(), move ResourceName() after updating selected resource. BrowserWidget.cs: Some additional code reorganisation. --- 1002-07-1313 ------------ latest rev: 440 PropertyGrid.cs: Reorder TypedValuePropertyDescriptor.GetValue() to match PropertyType. PropertyGrid.cs: Put common PropertyDescriptor code used where there's a type converter into a public class and use that throughout. PropertyGrid.cs: Remove ctd.field to name unmangling from ArrayAsHexConverter. PropertyGrid.cs: Put the array element type name at the start of the property name (not the end) in ArrayAsHexConverter. PropertyGrid.cs: Move all the classes that aren't CTDs to the end. PropertyGrid.cs: Get the TGIBlockList editor integrated. ResourceDetails.cs: Consistent length for Group value. MainForm.cs: Create new static wrapper around CopyableMessageBox.IssueException(). MainForm.cs: Make getVersion() and getString() static, as used from IssueException(). MainForm.cs: Replace exception messages with calls to IssueException() for consistency. MainForm.cs: Add a Close() after reading in new resource content (and getting the version string). BrowserWidget.cs: Replace exception message with call to MainForm.IssueException(). NewGridForm.cs: Replace exception message with call to MainForm.IssueException(). ReaderEditorPanel.cs: Replace exception messages with calls to MainForm.IssueException(). Program.cs: Replace exception message with call to MainForm.IssueException(). --- 1001-16-1638 ------------ latest rev: 432 Annoying VisualStudio error removed, restoring context menu Add, Import and Export. And pick up latest s3pi with fixed MATD. --- 1001-10-1727 ------------ latest rev: 430 Oops: infinite loop in catch{} code; fix and update to provide stack trace. --- 1001-10-1133 ------------ latest rev: 429 VPXY Resource Editor: Start centred on screen Use s3pi.DemoPlugins.RunHelper.Run() Improve a couple of error messages Don't lose the FTPT TGI Block for modular resources! Only first BoundingBox field had a value changed handler - fixed OK Button disabled until (a) the resource changes, (b) there are some TGI blocks and (c) if it's Modular, there a TGI selected for the FTPT Don't crash if FTPT TGI index is invalid Remove resource change handler whilst saving, as saving updates the resource, causing a call to the change handler, which then corrupts the save Get Linked Part entry IDs correct (they start from 1, not zero) Always add the FTPT TGI to the end of the list, regardless of whether it's in there elsewhere and set the FTPT index to point to it When renumbering the lists of parts, keep the numbers pointing to the right TGI blocks and keep the Tab order correct Provide a means to renumber the list of linked parts Enabled status of move buttons tracks whether they can be used Common Move Up/Down routines to move entries in the lists of parts Adding or deleting a linked part renumbers the list of linked parts Bounding box value changes were handled wrongly (given how the VPXY wrapper is coded) - have to assign an array, rather than indivual elements The input boxes store Decimal rather than Single/float values, so may round - check whether the float value as a Decimal matches the Decimal, rather than vice versa OBJK Resource Editor: Use s3pi.DemoPlugins.RunHelper.Run() Use TGIBlockCombo STBL Resource Editor: Use s3pi.DemoPlugins.RunHelper.Run() ViewDDS Rewrite Program.cs to follow RunHelper.cs model. Grid: NewGridForm.cs: NewGridForm(AApiVersionedFields) constructor to call NewGridForm(AApiVersionedFields, bool). NewGridForm.cs: Only the Add button's visibility is dependent upon being able to add to a list. NewGridForm.cs: new Copy button's Enabled state to track the Delete button's. NewGridForm.cs: new Copy button Click handler (similar to Add button) NewGridForm.cs: Add button click handler: remove unused "count" NewGridForm.cs: Add button click handler: select the newly added resource NewGridForm.cs: Add button click handler: fix display of Exceptions NewGridForm.cs: Correct link to devel forum NewGridForm.Designer.cs: New Copy button S3PIPropertyGrid.cs: Expandable lists should also have [...] button. S3PIPropertyGrid.cs: IDictionaryCTD: IDictionaryEditor: EditValue: call Add(..) with "bare" constructor arguments (do not create an object) S3PIPropertyGrid.cs: AsKVP: tidy up "contentFields" - do not need a static class constructor S3PIPropertyGrid.cs: AsKVP: Standardize AHandlerElement constructor argument lists and add a constructor that accepts an AsKVP S3PIPropertyGrid.cs: AsKVP: amend Clone(..) to call constructor passing "this" S3PIPropertyGrid.cs: AsKVPList: amend Add() to call Add(..) with "bare" constructor arguments (not create an object) MainForm Fix display of Exceptions in the preview pane. Resource->Import->As dbc... feature added. --- 1001-03-1524 ------------ latest rev: 428 VPXY Resource Editor: Start centred on screen Use s3pi.DemoPlugins.RunHelper.Run() Improve a couple of error messages Don't lose the FTPT TGI Block for modular resources! Only first BoundingBox field had a value changed handler - fixed OK Button disabled until (a) the resource changes, (b) there are some TGI blocks and (c) if it's Modular, there a TGI selected for the FTPT Don't crash if FTPT TGI index is invalid Remove resource change handler whilst saving, as saving updates the resource, causing a call to the change handler, which then corrupts the save Get Linked Part entry IDs correct (they start from 1, not zero) Always add the FTPT TGI to the end of the list, regardless of whether it's in there elsewhere and set the FTPT index to point to it When renumbering the lists of parts, keep the numbers pointing to the right TGI blocks and keep the Tab order correct Provide a means to renumber the list of linked parts Enabled status of move buttons tracks whether they can be used Common Move Up/Down routines to move entries in the lists of parts Adding or deleting a linked part renumbers the list of linked parts Bounding box value changes were handled wrongly (given how the VPXY wrapper is coded) - have to assign an array, rather than indivual elements The input boxes store Decimal rather than Single/float values, so may round - check whether the float value as a Decimal matches the Decimal, rather than vice versa OBJK Resource Editor: Use s3pi.DemoPlugins.RunHelper.Run() Use TGIBlockCombo STBL Resource Editor: Use s3pi.DemoPlugins.RunHelper.Run() ViewDDS Rewrite Program.cs to follow RunHelper.cs model. Grid: NewGridForm.cs: NewGridForm(AApiVersionedFields) constructor to call NewGridForm(AApiVersionedFields, bool). NewGridForm.cs: Only the Add button's visibility is dependent upon being able to add to a list. NewGridForm.cs: new Copy button's Enabled state to track the Delete button's. NewGridForm.cs: new Copy button Click handler (similar to Add button) NewGridForm.cs: Add button click handler: remove unused "count" NewGridForm.cs: Add button click handler: select the newly added resource NewGridForm.cs: Add button click handler: fix display of Exceptions NewGridForm.cs: Correct link to devel forum NewGridForm.Designer.cs: New Copy button S3PIPropertyGrid.cs: Expandable lists should also have [...] button. S3PIPropertyGrid.cs: IDictionaryCTD: IDictionaryEditor: EditValue: call Add(..) with "bare" constructor arguments (do not create an object) S3PIPropertyGrid.cs: AsKVP: tidy up "contentFields" - do not need a static class constructor S3PIPropertyGrid.cs: AsKVP: Standardize AHandlerElement constructor argument lists and add a constructor that accepts an AsKVP S3PIPropertyGrid.cs: AsKVP: amend Clone(..) to call constructor passing "this" S3PIPropertyGrid.cs: AsKVPList: amend Add() to call Add(..) with "bare" constructor arguments (not create an object) MainForm Fix display of Exceptions in the preview pane. Resource->Import->As dbc... feature added. --- 0912-13-1729 ------------ latest rev: 411 Pick up TerrainPaintBrushCatalogResource fix. Make EPFlags on Resource Details form work correctly. --- 0912-10-1844 ------------ latest rev: 409 New DataGridExpandableAttribute to indicate a collection should be shown as expandable instead of a popup in the s3pe Grid. --- 0911-25-2019 ------------ latest rev: 402 * Disabled sort on the last column in the BrowserWidget to prevent a crash (bad solution to a worse problem; will be investigated further). * Typo in S3PIPropertyGrid (would be unlikely to cause problems but was wrong). Filter: * Update filter field to handle enums (and be better behaved in general) * Get fields types from AResourceIndexEntry rather than IResourceIndexEntry (so we get 'em all). Import - ResourceDetails form * Implement IResourceKey and provides a constructor that takes IResourceKey to populate the form * Support editing EPFlags * Now convertible to TGIN (rather than having a getter) * Updating the filename updates group and EpFlags correctly Import - Import.cs * Updated to use IResourceName when calling NewResource (and, unnecessarily, elsewhere). MainForm * Get fields types from AResourceIndexEntry once more, rather than hard-coding. * Use ElementPriorityAttribute to sort fields for display order. * Package.AddResource takes IResourceKey rather than t, g, i values (BrowserWidget.SelectedResource will do nicely); however, we need to be creative with AResource.TGIBlock at other times. * ResourceDetails form has a constructor that takes IResourceKey, so use it. * NewResource takes IResourceKey rather than t, g, i values. * NewResource checks uniqueness including EpFlags --- 0911-22-1130 ------------ latest rev: 381 Respin to pick up CommonBlock version 0x0D change. --- 0911-18-2311 ------------ latest rev: 381 Rebuilt against latest s3pi for Patch 1.6 updates. --- 0911-01-1539 ------------ latest rev: 381 Rebuilt against latest s3pi for re-implemented TypeCode01 fix. --- 0911-01-1240 ------------ latest rev: 381 GetContentFields now returns a sorted list, which we don't want for "fields". --- 0910-31-2007 ------------ latest rev: 380 Rebuilt against latest s3pi for TypeCode01 fix. Was breaking textures. --- 0910-24-1419 ------------ latest rev: 380 Redisplay preview window after editing in Grid. Include ViewDDS in non-installer build. Remove separate control over resource context menu - it is tied directly 1:1 to the resource menu now, so BEWARE of changes to one. Also remove some VS stupidity from MenuBarWidget.Designer.cs. --- 0910-10-1449 ------------ latest rev: 373 (respin) Pick up fixed CatalogResource wrapper --- 0909-27-1126 ------------ latest rev: 373 Amend UI to support Labelled Helper1 and Helper2 buttons instead of fixed Viewer and Editor buttons. Fix resource context menu so Import and Export submenu entries are in the same order. New s3pe VPXY Resource Editor. --- 0909-12-1009 ------------ latest rev: 363 New s3pe OBJK Resource Editor. Add Atavera's s3pe icon to s3pi STBL Resource Editor. In Resource->Replace, the filter setting is now remembered and the appropriate default filename displayed. New resource context menu. Make display of resource name column independent of names being present. ResourceDetails form uses CustomForms ResourceTypeCombo. Grid: Catch errors when importing data. Grid: RCOL Chunk import/export in PropertyGrid. Grid: Correctly inform PropertyGrid of EditValue changes. Grid: Sort properties by ElementPriorityAttribute.Priority then alphabetically. Grid: Prevent Windows' form close button closing the form. Grid: TGIBlockList editor called from the Grid. (Still want a nicer TGI display, maybe.) Grid: Tarting up: now opens somewhat bigger. Doesn't display read-only fields (to save confusion). Prompt before overwriting when exporting multiple resources. Also re-introduce use of CopyableMessageBox for the "package needs saving" prompt on application exit by changing Application.Exit() to this.Close(). --- 0908-16-2137 ------------ latest rev: 327 * Save/re-use last export path * Don't use DefaultResource to create resources * Include FTPT RCOL chunk handler * Include ViewDDS * New menu entry: "Resource->Replace..." enabled when a resource is selected. * New dialog to open the file to use to replace the selected resource. * Filter is based on the selected resource - filter can be by resource type or extension (or all files). * Cheerful error message if the chosen file cannot be opened. * Otherwise, the content of the selected resource is replaced with the content of the chosen file. No confirmatory dialog. Resource is committed to package. --- 0908-08-1736 ------------ latest rev: 312 Main window: - Hex panel can now display embedded value ("Preview"). - Swap Package Info and Preview Panel. - Splitter positions remembered. - Replace "AutoHex" with "Preview" options of Off/Hex/Value. - Hex button now launches a separate window. - Lower and upper left panels do not move on form resize. (Code to generate Value control extracted from Value button.) Resource Details form: - Incorporate Delphy's idea for a resource type dropdown. Grid: - Handling for collections of simple values changed quite a lot to take account of the differences between ordered lists and arrays. - Also some other cosmetic changes to the code. General: - Add Settings->Save Settings menu option. - Task bar icons for all the forms. - Add command line processing. - -help to display help - -test to turn on test mode (does nothing right now) - -import to import one or more files into a new package - Also support opening a single package passed in on the command line. - File association and SendTo/Import options in installer. - All places WrapperDealer requests a specific wrapper have error handling. - Generally improved error messaging. --- 0907-30-1123 ------------ latest rev:268 Resource->Copy to include resource name. STBL Resource editor: - Fix GUID validation to ignore empty strings. - Fix tab order - New "Change" button to change the current GUID for the selected string. - "Add" and "Change" will FNV64 any value that doesn't compute as a ulong and use that instead. - Can be run stand alone in debug Include new ModularResource. Add support for localised Help files. Bookmark editor added. --- 0907-26-0906 ------------ latest rev:252 New STBL Resource editor (helper). --- 0907-25-2100 ------------ latest rev:246 Add button for external Hex Editor. Add Settings Menu with external programs menu option. Tidy up settings, add one for external hex editor. Form to capture external program settings. Move GetNumberDialog to Settings folder. More attempts to stop VS putting rubbish in MainForm.resx Remove now-redundant (old) grid components. External Viewer/Editor/Hex editor should not need HexOnly off. --- 0907-24-1213 ------------ latest rev:231 Add custom Enum support to the grid and make some code-consistency changes. Add xanathon's s3pe icon - many thanks! :) (Including changes to a few forms that needn't have had it.) ---