Added history dialog, cannot display all types yet

Added history support for adding objects.

Added history management for cut and paste, copy doesn't alter the object list by itself so it doesn't touch history

Added history handling for quad splitting.

Added history management for auto-bordering (and mass-addition in general)

History handling for list moving

Added history handling for set contents

Allow undo of set color

Allow the user to alter the tool bar icon size

Split some stuff out of the edit tool bar into move and object tool bars. The object tool bar is now located on the left side of the screen as the top one is running out of space.

Added icons for undo and redo

Added undo/redo foundations. Capable of undoing and redoing delete operations

Added move up/down actions.

Added a button to clear a keyboard shortcut.

Touched up the error icon, show the error icon in the set contents dialog if the contents are gibberish.

Added an icon for the exit action - the last one without one! Woo!

Added an icon for the 'about Qt' action. Let's hope Digia doesn't tear me apart for my horrible recreation of the Qt logo. :)

Extracted actions from ForgeWindow into their own files. The ACTION macro now manages meta, instances and callback definitions all in one. Too bad I still need to extern these actions in gui.cpp... maybe someday I'll find a way around it :)

Keyboard shortcuts can now be configured.

Systemized actions and added (for now no-op) key configurations for them

Added a New Part dialog

Don't include non-INVERTNEXT BFC statements in inlined objects.

LDObject::getIndex was bogus which would cause inlining to crash

Added support for BFC types

Added LDConfig.ldr parsing. All colors now available as long as LDConfig.ldr is provided.

Draw main color in the selection dialog based on preferences, take subfiles into account when calculating bbox

Phased out FOREACH macro in favor of C++11-style for iteration.

Simplified configuration code. Use a std::vector object to contain config pointers and have config objects register themselves upon creation instead of relying on a cfgdefs.h. Removed sections, all configurations are just simply written one after another now.

Further fixes to bad color handling. Allow main color be represented with arbitrary transparency.

57181.dat (Philo's model of the XL-motor) showcased a new problem.. there was no handling of unknown colors which led into crashes. Added stdout warnings, also added mid and dark stone colors

Restructured inlining to use a proper caching.. one cache per sub-file reference? What was I thinking? *whacks self with a 55295.dat*

Reverted changes on LDSubfile::getContents, I had a temporary, hackier solution there and forgot to change it back

Considerably improved sub-file inlining. Use a matrix class instead of double[9], educated myself on what matrix multiplication actually is and fixed the algorithm up. Aside from I/O problems, 32551.dat is correctly rendered now.

Implemented the inline action to expose inlining to the user. Also added a `deep inline` action to inline subfile recursively down into polygons and lines only.

Got inlining working. 3002.dat renders properly now! Now just to iron out the bugs and hone the behavior..

If editing contents of a gibberish object, show the reason for the gibberishness in the dialog. Clamp the bounding box scale to at least 1.0 so that polygons are visible in new files.

Parsing stability, finally figured that dumb crash

LDraw still uses inverted y-scale... I always used symmetrical objects for testing so I never noticed I had this wrong.

Scroll the color picker dialog to the selected color if it's off-screen

Added polygon bordering function

Simplify ForgeWindow::slot_splitQuads with the new methods

Added clipboard, added delete action

Done the rendering end of the red/green BFC view

Make line thickness user-configurable, draw conditional lines dashed, use the bounding box to offset the model so that it is centered properly.

Colorized polygons now appear colorized in the list view (unless disabled). GL rendered now draws transparent polygons properly.

Added color selectors for the add object dialog

Turned the test palette action into a set color action for mass object coloring.

Finished with the color selection dialog

Color dialog almost up and running. Need to make it actually selectable now. TODO: make it read LDConfig.ldr

Made the GL renderer actually use the main color configuration

Finally got the renderer to actually draw something! Still needs a lot of work but at least it doesn't show garbage or blank anymore.

Disable the locale when parsing LDraw code or atof's behavior becomes locale-dependant. Who the hell thought that was a great idea?

With removal of vectors, I don't need to keep the bearing class around either

Removed vectors. I realized that subfiles can actually perform their job just as well and that keeping them around would just imply extra work - for nothing.

Added code for parsing vertices

Added insert vertex function and added vertex icons.

Added triangle, quad and condline to the add object dialog

Begin work on dialogs for adding objects. Comments functional!

Implemented insertion of triangles, quads, condlines and comments

er, I said don't limit the amount of decimals

ftoa: don't limit the amount of decimals

Temporarily set the locale to C when using ftoa, or the resulting string is subject to the locale and gets unexpected symbols (e.g. commas for the decimal dots while the function expects periods)

Added main color configuration option, not implemented yet

Added color selection icon

Made the GL renderer background color configurable

Added RC file for the application icon introduced in d2d86021

Licensed LDForge GPL3, added some more icons

Added LDraw path setting dialog

added Save As function

and of course I forget to update ldforge.pro... or to test compile for that matter

Renamed io.cpp to file.cpp, draw.cpp to gldraw.cpp

Deleted scanner.cpp (don't need it), merged model.cpp into io.cpp. Renamed LDForgeWindow to just ForgeWindow since I want the LD* prefix only be given to LDObject derivatives.

added dummy action for future inlining command. Also GCC says that deleting instances of classes with virtual members but no virtual destructors is bad.

begin work on subfile caching

So much for that pointer class, caused more problems than it solved. For instance splitting a second quad after a first one had been split would trigger a peculiar crash...

Added split-quads-to-triangles function

Yay! This thing can save now.

Added pointer serializing so I can keep track of all LDObject* members. This way I can replace them all properly when needed.

Convert the static getCoordinateRep to a common ftoa, use this function to get proper coordinate representation when converting objects to LDraw code

Allow addition of dummy lines..

Added icon for setting contents

oops, forgot the new dialog files out

this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.

Added logf function to write to message log. Write warnings of unparsable files into the message log.

Check whether the numeric arguments of lines really are numeric, and treat lines that don't pass this check as gibberish

Color gibberish red. Check for line code length for gibberish (must be 1 to be valid)

remove leading whitespace from comments when drawing them in the list

Added icons for the comment.

Don't version control moc files... whoops

Set window title dynamically based on filename

Add icon for file open action

rename file-specific icons to file-*

improve opening, don't auto-load 55966.dat (:P)

don't crash if g_CurrentFile is null

Recolored ends of the conditional line graphic purple instead of red for better distinguishment

Added icons for conditional lines

Initial commit

(0) +448 +1000 tip

mercurial