rewrote isNumber using range-for

Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded

Further work on image generation experiment

Added ability to have multiple GLRenderers

Take the aforementioned operator<< into use

Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.

Make LDOpenFile's members PROPERTIES

Use QMutex for the thread locking, remove filename from the progress dialog since it's not known anyway

Added a progress dialog for file loading to respond to desktops while loading files. With large files the no-response policy could be a bad thing. My first real use case of multi-threading...

Replace direct abort() calls with fatal() in String methods

Now that 0.1 is released, version number becomes 0.1.999

Added tag v0.1-alpha for changeset 3125c2a1a9ba

Tag version 0.1 alpha (for real this time)

Changed shortcut of Set Color to C, like MLCAD

Fixed: selecting objects in list view didn't update the GL view properly

Added LICENSE.icons to help clarity on the licensing of the icons

License graphical assets under CC BY-SA 3.0 Unported

Use a C-array for config too for the same reasons as with actions

Use a more Windows-like config dir name under Windows; warn when unable to read it

Added fatal error message box for the.. fatal stuff. Windows isn't really good at conveying error messages, converted actions into a C-style array because I've had a ton of problems with the vector approach (it gets zeroed when it shouldn't be..)

Fixed basename (for real...) and ported ::first and ::last from my previous string class implementation, std::string::find_last_of doesn't do what I thought it did

fix basename

added basename since windows doesn't have it

changed the way config dialog gets key input from user so it works in qt5

Renamed the OpenFile class to LDOpenFile as MinGW doesn't appear to like the former name

update project file to only use no overpainting under Windows and -lGLU under *nix

Added support for overpaint-less mode since I'm having serious trouble with that

Show the version info in the about dialog properly

Added patch version number, kind of late to do this but oh well

Update the part's Name: field when saving

Prompt for unsaved changes before loading or creating a new file

Prompt for unsaved changes in the current file if it's anonymous

Added version moniker

Added PROPERTY macro for easier exposed member variable management

Make zooming more intuitive - use incremental zooming after crossing the 15.0f mark

Add some missing icons

Added auto-coloring, this colors objects with the first found unused color

Added ability to set the depth value to something else than 0.

Always scroll to selection after building the object list. Maybe this is less irritating to deal with...

Fixed: moving objects up/down the object list messed up selection

Hopefully fixed the problem regarding objects not getting drawn at first

Fixed: pasting would add objects in reverse order

Added demote function for making conditional lines normal lines

Look for LDraw files in the part's directory first

Fixed: rotation point dialog didn't accept negative custom coords; objects were rotated by the grid angle's half

Added dialog for rotation points

Better support for dark backgrounds..

Don't do any object offsetting, instead use origin as the rotation point for the free camera.

Allow rectangle drawing by pressing shift when inserting the first vertex.

Made drawing an edit mode, allowing me to add more modes in the future

Added icons for Isecalc and coordinate replacer

Added Isecalc interface

Added icon for drawing

Added Coverer interface

Un-templated CheckBoxGroup, moved it and RadioButton into widgets.cpp/widgets.h; removed license text tab because I think LICENSE is enough.

Added icons for wireframe and inversion

Merged new part and LDraw path dialogs into dialogs.cpp

Made Qt file includes more proper (<QLineEdit> instead of <qlineedit.h>), merged setContentsDialog.cpp into dialogs.cpp

Split some stuff into separate files

Allow changing of existing overlay values

Allow one of the dimensions be filled via aspect ratio

Added image overlays, these are offset and scaled photos drawn on top of the part model to help getting part data from pictures.

Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.

Added wireframe mode

Split inverting into methods into LDObject and its subclasses, fixed a rather severe memory leak issue (GL display lists weren't being removed properly)

Readded BFC red-green view, although determining inversion isn't always correct and it cannot handle CW-certified files...

Added tool for replacing coordinate values

Rewrote the string class with a simpler version. The old one was more than probably leaking water like a boat with an elephant on board...

Further removal of hungarian notation

New gui_colortoolbar default

Make quick color toolbar use QToolButtons, make color selector's process of making color icons a method and use that for generic color icons

Speed up picking - no need to rebuild the object list as its contents do not change while picking. Fixed transparent stuff always being opaque (although it still appears messed up for some reason)

Move external prog actions into gui_actions.cpp because linking order changed

Moved source files to src/, removed zz_ prefix off dialog files.

Viewport no longer offsets stuff based on bbox size, that was stupid. Only use bbox size for initial zoom.

Object editing dialog now can alter the matrix of subfiles and radials

Moved LDraw path setting out of the configuration dialog to the LDraw path dialog, it does the job better.

Added a dialog for inquering the user's LDraw directory, not having it set leads to crashing...

Added icon for intersector

Removed groups.. that was stupid. Intersector input now based on colors.

Removed the message log. I'll find a better way to convey messages at some point..

Added Intersector interface. I'm beginning to think that groups were a bad idea...

Added rectifier interface

Add functionality for setting paths to ext progs in config dialog

Restructured the shortcut configuration tab a little, allowing it to be sorted.

Forgot the icon

Added visibility toggling

Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process

Further work on ext programs, LDObjectType_e integrated into LDObject

Further ytruder support

add missing license headers from new files

Begin work on external program support (Ytruder partially supported)

cleanup

Plane drawing is functional at last!!!11 Also added meta function findAction to find an action by name so I don't have to extern all of them manually in gui.cpp

matrix is now templated with N=int (usually 3)

Further tweaking

Mass renaming and cleanup. GLRenderer's and ForgeWindow's members made private. Names of common identifiers shortened, moved logVA to ForgeWindow since it's a GUI-related function (though logf remains under main.cpp for ubiquitous usage)

Compressed icons - saves 14.2 kb

Compile the icon resources to a QRC file, so that they are embedded in the application

Un-templated ButtonBox and renamed to RadioBox. Much better this way.

Added axes rendering

Added select all

Added context menu and uncolorize action

Adding objects now actually updates the bounding box like it should be.

Camera is now stored to configuration so it is preserved across program shutdown. I don't know how significant this is but eh

Switched the object list from a QTreeWidget to a QListWidget-derivative. Derivative because I'm going to add a context menu.

Added new BFC dialog

Corrected camera icon order (and association), added tool tips

Added icons to the renderer for switching between cameras. It works! Yay!

Further work on constrained cameras

Now capable of calculating coordinates based on mouse x and y and snapping them to the grid

Base work regarding constrained cameras

Fixed view going blank after resize

Added screencapping

Added action from inserting raw LDraw data into the part.

corrections to inserting from file

Added insert from action to import file contents from another file

Insertion point calculations fixed, make pasting objects cause the new objects be selected.

Added new subfile dialog

Fixed additive selection; use a green selection area background instead of blue when selecting additive; selection area borders now appear black on bright backgrounds; single additive picking an already-selected object un-selects it.

Converted combo boxes in add object and new part dialogs to radio buttons. Added a convenience widget which makes it easier for me to add groups of radio buttons. My first widget.. :')

Cleanup and some restructuring

Save the configuration before exiting so that grid choice is preserved.

Area selection! This sure was a *pain* to add.

Added panning to GL view, added action for resetting angles, zoom and pan

Use mouse wheel for zooming instead of pressing the mouse button and detecting vertical movement.

Show an error message box when main file loading fails.

A saving failure is a critical error, not a warning and should be drawn as such

Warn for save failures with the save and save as actions, also provide with a button to save the file under a different name.

Keep track of when the file was last saved and warn if there are unsaved changes when the application is closing.

Grid icons..

Make grid actions regular actions rather than auto-generated, this way they can have keyboard shortcuts

Added three configurable grid layouts, coarse, medium and fine grids, like those of MLCad. The grids are considerably finer by default simply because part editing works at a lower scale than model editing.

Added the about dialog.

Rotate subfiles and radials by their origin and not by their contents' bboxes.

Rotation improvements; allow radials be inlined

Rotation and rounding. Rotation needs work to get proper origin stuff

some GUI tweaks

Added winding reversal, though undoing it isn't quite ready yet.

Generalized SetContentsHistory to an EditHistory

Some renaming

Redrew selection icons to be clearer

Added functionality for getting a primitive name from a radial.

Radial saving and reading from files

Added object list representation for radials

Added the radial type, this one sure has been on my wishlist for a while. :)

Added select by type. Selection is now preserved over operations.

Improved shared selection handling; added select by color

More selection work - selecting from GUI updates the GL renderer now

Picking improvements

Added additive selection blending, with a toggable flash effect. :P

Highlight selected objects with a different color

GL picking stuff

Added the ability to add vertices to object corners

Added basic object moving with MLCAD-like controls.

Remade vertex icons, the old ones sucked.

Added user-configurable quick-coloring toolbar for.. quick coloring.

Recent files are now remembered and displayed in a submenu

Added inlining history management

Fleshed out the history dialog further

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

(0) -192 +192 +1000 tip

mercurial