Removed the List -> QList alias, use QList directly

removed the List class in favor of QList

removed debug prints from the ring finder

ring finder integrated! it lives!

Finally got the ringfinder working! Working on integrating it to ring drawing...

Ring drawing: previewing complete

further cleansing - removed most uses of unsigned ints, removed list reversers

a bit more cleanup

nuked "container_cast"

When drawing circles, draw the radius in the middle

further cleanup

last code reformatting i swear

Added a new editing mode for drawing circles.

it's LDForge's 1st birthday!

Stuff

Further work on VAO rendering

VAO rendering works now! woo!

Merge branch 'master' into gl, reworked stuff

For some reason, of all changesets, 4fb5763 made compiling subfiles extremely slow. WTF? Reverted the change to restore compilation speed.

down with cmake!

made LDFile interfacing a bit clearer

removed unused LabeledWidget

redirect the user to configuration if the download path is not given

err

rework quick color code a tad

rename RadioBox to RadioGroup

bit of a clarification

fixed: couldn't open larger files because of a type mismatch in moc method calling, leading into runtime problems

fixed: front and back camera wouldn't render anything

Apparently CMake requires the moc files to be compiled separately.. qt4_wrap_cpp does nothing if I don't include the results in the executable... why?

add .kdev_include_paths to gitignore

Changed build system from qmake to CMake.

merged aboutDialog.cpp to dialogs.cpp

stuff

Fixed crash with closing: since logoed studs are now loaded, the first file in g_loadedFiles is not explicit anymore. the closing code assumed this

more changes. Spawn the config prompt on first start, on the profile tab. gl_colorbfc and gl_blackedges now default to false.

woo smallification!

Added ListConfig type, using it in recent files now

minor cleanup

removed broken config type check

added profile data auto-filling

ensure that all Configs are polymorphic

bit more cleanup

- added "Go to line" action, renamed the config classes to proper camelcase

Cut the Object-suffix from LDObject types, it doesn't help things at all

Use QFlags for the inlining flags, type-safety++

Rewrote stud logo support, restructuring inlining stuff in the process. Logoed studs must only be used for rendering scenes, otherwise they will for instance get inlined in and that's not desired, or the vertex snapper will catch onto the logo's coordinates.

added support for logoed studs

more cleanup

Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit

ask the user for isecalc's path if adding edges to intersector output and no path is defined

added missing UI file

ask the user for ext prog paths instead of telling to go to configuration if no path is defined

minor change

made config dialog default to the correct tab again

made downloaded files be stored into recent files

Use a busy cursor while compiling all

Use brighter text color with dark backgrounds for the message manager

::getIndex() should never return -1 if ::file() is not null so no check needed there..

fixed: LDObject's various methods still assumed that the current file wouldn't change

Added action "add history line" for adding new history entries

rework

Picking now works with the VAO setup

BIG COMMIT -- Moving from display lists to VAOs.

camera icons now draw real tooltips instead of faking them

fixed crashing with inlining

updates to recent files menu

corrected problems with the version string

Converted configuration code to use QSettings.

Merged PartDownloader into the prompt and renamed the prompt to PartDownloader

now with changelog entry

Moved the alias macro to common.h

finalized downloading

stability to downloading

added config option, refined logic and regexps. This behaves coherently now. :)

More work on downloading

handle errors

now actually downloads parts

added missing files

Begin groundwork on downloading from ldraw.org

Create README.md

Angles need to be reset when changing the current file too

Fixed crash on opening a file

style cleanup - it should be all unified now

chglog

If the vertex snapper finds a vertex closer than 4 pixels, it likely is the vertex being looked for and the algorithm can terminate early, hopefully this will save a few cycles on large parts.

added support for BFC CLIP/NOCLIP

Added an option for listing implicit files

Added an action for creating a new, blank file, improved multi-file stability

No need to test whether it's safe to close all when creating a new part anymore, since it no longer closes anything.

some further little optimization

Don't recompile everything when using quick colors, this speeds things up a little

more cleanup

cleanup

Include the moc files in the source cpp files to reduce compile time

Renamed LDOpenFile to LDFile

- fixed: checking the hi-res option would not allow segment values over 16.

primitive generator: added support for multiple spaces before primitive numbers, add "Hi-Res" to the names of 48/ primitives

Separated LDConfig.ldr-specific stuff to ldconfig.cpp/h

commentary++

cosmetics

Made File::iterator private - it's used only for range-for loops so it should not be used by anything else than File itself.

Renamed vector to List, changed it to wrap around std::deque.

Use repaint() instead of update() when redrawing the scene after a pick so that the new scene is repainted immediately.

Fixed crashing when closing all

stuff

restyle

Apply the proper edge color in the color sector too

restyle colorselectdialog.cpp

Further restructure, removed GUI toolbar icon size slider (always 22x22 now)

fixed: the list view couldn't select multiple items anymore

some rework with closing files, not right there, seems

change camera to top if switching to draw mode in free camera

Finalized multi-file behavior. The future is here! :P

behavior update

Added actions for saving all files, closing and closing all files

Multiple file support works now! woo!

moved ext program action definitions to extprogs.cpp rather than proxying it through gui_editactions.cpp

fixed config dialog crashing

Shortcuts are now properly loaded again

updates on file list

File list is populated now..

Converted ForgeWindow to Designer UI(!)

restructure; removed g_BBox

Moved the bbox class to types

Made the pointer to current file a private member of an anonymous shell class, thus getting accessors

more formatting

Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct

Reformatting..

Bump version to 0.2.999-intern now that 0.2-alpha is out.

Tag 0.2 alpha

Fixed compilation under windows/qt5

added missing openprogress.ui

make aborting work in the new setup

make file loading be done properly as just a QObject rather than multi-threaded..

handle empty lines better

Use system clipboard rather than an internal one

apply the c++11 'override' keyword to overriding virtual functions

fixed: history is supposed to be closed by default

further work on primitive cond-lines. I think I got it now.

Renamed the color class to LDColor for clarity

primitive generator: add conditional lines to cylinders; improved bad color handling

Added history functionality for swapping

fixed: double-clicking an object and editing it that way would not register to history

when inlining (as an action), reinterpret the inlinees so that there's not any pointer mess-ups

more restyle/refactor

restyle..

Removed the two string arrays containing object types and icon names, moved these as LDObjects' virtual functions

Cleaned up the toolbars, removed clutter by removing most of the not-so-often-used items

removed the history dialog, it doesn't fit in with the new history system

Fixed: color selector prompt would crash if no default was given

dded an action to quickly toggle BFC red/green view.

pngout'd

uh, stuff

BFC icon stuff - old icon is now used for bfc red/green view-to-be

rename: msglog.cpp/h -> messagelog.cpp/h

fixed: stuff that was changed during file open was written to history

astyle history.cpp

Converted flip prompt to Designer UI

Converted Ytruder interface to Designer UI

Further verbosity, #ifdef the test axle pic out of release builds

Completed Edger 2 interface

gitignore *.dat files so I won't commit in my test files accidentally

Update gitignore

Added missing src/src.pro file

Also put all generated UI headers on ignore

remove ldforge.kdev4 and put it on ignore

Converted ldraw path prompt

fixed: overlays coudln't be defined for other cameras than the one used currently

Converted overlay prompt

Added missing what's this in edit raw prompt

Removed more obsolete code

Converted rotation point prompt

Converted about dialog

converted the raw edit prompt

Designerified the replace coordinates action

Converted the config dialog to a designer UI file

Largely reworked the color selector. Still not perfect but is better

applied message log to some actions

optimize the common case

fixed: when a new message line was added, the viewport wasn't updated

remove old test messages

Re-added the message log, now draws into the viewport

Apply tr() for possible future translations

rework aborting.. I'm still not sure I'm doing it right, though.

Show values in file opening prompt

simplify a bit

Added ability to load the overlay meta

Made overlay data be contained in the part files, still wip

UI-ified the new part prompt

changelog entry

Turns out I overlooked a slot and didn't need to derive from QSpinBox after all

Nuked the obsolete radial type now

Further work on the primitive generator

Begin converting the radial type into a primitive generator

restyled file.cpp

Added an atof overload to convert from string to float, hopefully without any precision error

Use unique IDs instead of file indices in picking lists, this is much less prone to error

minor improvements to primitive handling

Exported Rectifier interface to .ui file

..

Converted Intersector UI, improved handling of failed ext program launches, fixed launch of non-wine programs

Converted Isecalc front-end dialog to Designer UI

Added an ui file for a to-be edger2 launcher

Added support for launching external programs with Wine

Only write config options to file that actually deviate from the default. Should've done this earlier on... before 0.1 alpha was tagged

Nuked the now-empty string.cpp/.h

Added license header to primitives.cpp

Use a more greenish green rather than yellowish lime, added some constraints to when double-clicking in the viewport should edit the given object to prevent unwanted popups

When editing an existing subfile, select the primitive from the list automatically if found

Better categorized Technic primitives

Added support for regex-based primitive categorization

Moved primitive handling to new code files

Make camera icons a member of GLRenderer so multiple renderers won't conflict about them

Added primitive scanning, replaced parts list in subfile add dialog with it

Nuked parts.lst parsing, that was stupid

Converted from C-style fopen to the new File class

Added a File type that wraps around QFile and provides stuff like a null file and range-for-iterating

Converted to 16-bit strings.. again

Also allow objects to be edited by double-click in the viewport

forgot changelog entry about some key defaults changes

Objects can now be edited by double-clicking on them in the object list view

Minor tweak to drawing rectangle selection (don't draw it if it was to be an additive pick)

Update the rect vertices right after rect draw mode is entered so that the old values don't remain to spook around

And I forgot to rebrand the actual dialog box...

Renamed Set Contents into Edit LDraw Code; made the add object dialog's comment line box wider

changelog update

Clipboard now stores LDraw code rather than object clones, this seems much less prone to problems

Made history work with most things

Color changing is now logged into history

Reworked properties a bit

Restructed recent files handling, the list shouldn't screw the hell up anymore.

Cleansed the string class, moved implementations from header to code file

Laid down the foundations of the new history system

fixed: subfiles and radials couldn't be moved, made add-picking with control work again despite its double-use as range picking, changed 'Name' to 'Title' in new part dialog and widened it a bit

Refactor LDSubfile

Make LDMatrixObject's transform and pos members properties

Make LDRadial's members accessed properties

Make LDObject's color and parent properties with accessors

Purged out the old history code

Made range selection be done with Ctrl+Left rather than Shift+Left, additive is Ctrl+Alt+Left. Shift+Left is now an aliasing for panning alongside Mid.

Make drawn vertices display a label containing coordinate informations, round down calculated coordinates

Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords

Added ability to snap to pre-existing vertices while drawing, added changelog

Fixed: Coordinates weren't drawn properly on a bright background (was always drawn in bright colors..). Note that previous commits were left dangling in their own head, the string class changes broke too many things.

Removed the Configure button from the LDraw path config dialog, it's no longer needed

Fixed text editing not triggering configuration. So simple..

Added Export To File action, moved it + insert from to File menu

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

(0) -384 +384 tip

mercurial