History log of /haiku/src/apps/icon-o-matic/MainWindow.cpp
Revision Date Author Comments
# 4b0dffe5 21-Aug-2023 Zardshard <0azrune6@zard.anonaddy.com>

Icon-O-Matic: Make list items copy/pastable

Also:
* make transformers draggable
* clean up archiving code

Partially addresses #18400

Change-Id: Ibc384a1919e1330113a5e2857da16284181a834e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6869
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# c6c2c042 08-Aug-2023 Zardshard <0azrune6@zard.anonaddy.com>

Icon-O-Matic: Add perspective transformations

As part of adding perspective transformations, agg_trans_perspective.h
was patched to fix a multiple definitions error. This change has been
submitted for review to the "upstream" repositories at [1], [2],
and [3].

Also includes various other improvements such as VertexSource being
split into its own file, code style improvements, and documentation
improvements.

[1] https://sourceforge.net/p/agg/patches/6/
[2] https://github.com/ghaerr/agg-2.6/pull/9
[3] https://github.com/aggeom/agg-2.6/pull/7

Change-Id: I4bffd2f87354bde10155e23145a232a925be6ff3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6801
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# c70aca11 14-Aug-2023 Zardshard <0azrune6@zard.anonaddy.com>

Icon-O-Matic: Make left sidebar lists resizable

Makes the Path, Shape, Transformer, and Properties menu vertically
resizable.

Implements #2745

Change-Id: I322b6ecffbe807694c7f188c5ffa5025cbc5e711
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6815
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 3961af9f 29-Jul-2023 Humdinger <humdingerb@gmail.com>

Use UTF8 multiplication sign "×" instead of "x"

It was suggested for translations in Pootle, and I agree it looks
subtly nicer: a bit smaller and vertically centered.

Also made all strings that include the "x" translatable, in case
there are different local usages.

For icon sizes in Tracker, move menu creation into a loop with an
kIconSizes array holding the pixel dimensions.

Change-Id: I805279d7186d90a13a40b4d4495670cdfac18913
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6765
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# a4e4beaf 18-Jul-2023 Humdinger <humdingerb@gmail.com>

IOM: Localization/String improvements

* Switching mis-used B_TRANSLATE_CONTEXT to B_TRANSLATE_COMMENT
* Use B_TRANSLATE_SYSTEM_NAME for "Icon-O-Matic"
* Remove remnants of old localization system
* Rename "Control Points" to vertex/vertices
* Add a ":" after Undo/Redo
* Sentence casing
* Avoid Yes/No buttons in BAlert

Change-Id: Ibb299925bce1f6ca1cf03216a36df7c44f10bdc6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6704
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 64279352 22-Jun-2023 Zardshard <0azrune6@zard.anonaddy.com>

Icon-O-Matic: Generalize some classes

* Turns PathContainer, ShapeContainer, StyleContainer into Container.
* Makes Shape use Container for storing Tansformers instead of
reinventing the wheel yet again.
* Moves common logic from AddPathsCommand, AddStylesCommand,
AddShapesCommand, and AddTransformersCommand to AddCommand.
* Factors out common logic from two more commands similar to above.
This adds the MoveCommand and RemoveCommand classes.
* Cleans up some code style.

Change-Id: I59eca94a1c45eac608514f269f6e5f8628f93fab
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6640
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 098eaec6 08-Jun-2023 Zardshard <0azrune6@zard.anonaddy.com>

Icon-O-Matic: Add reference images

Fixes #2748

Also fixes a comment misstating a function's name and code style.

Change-Id: I609a1f1e100ded647818e70b428cedc48cf29036
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6604
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 943b5775 23-May-2023 Zardshard <0azrune6@zard.anonaddy.com>

Icon-O-Matic: Fix memory leak

I found leak_analyser.sh and gave it a try. Indeed, it did find many
leaks, including this one.

Change-Id: I7d36274f3f7772aa459c4bf1d30392e7b8cfa171
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6467
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# e48af9e4 22-Mar-2023 Yourself <0azrune6@zard.anonaddy.com>

Icon-O-Matic: cleanup workspace switching code

* Remove comment stating DesktopColor is buggy. The documentation has
since been updated clarifying that this is the expected behavior.
* Refactor code.
* No functional changes.

Change-Id: I03711136eb613afb80ad8c03a7f18ba6d15f641c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6256
Tested-by: Automation <automation@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 27ae691c 02-Aug-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Icon-O-Matic: fix the main menu bar

Mentionned in #8759 as well.

Change-Id: I90bb0529a6bf1dd18316a95f87947e142128d5db
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3123
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# c2151600 02-Aug-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Icon-O-Matic: use BMenuFied for secondary menus

Fixes #8759

Change-Id: Ie1c40e6e9ee21bc616119aaf49b3e46162fb82aa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3122
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# fa19dd44 10-Dec-2015 looncraz <looncraz@looncraz.net>

apps: Convert to using Set*UIColor.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Patches 0045-0075, 0077-0087 from looncraz, unmodified.


# 0cbb6c11 09-May-2015 Stephan Aßmus <superstippi@gmx.de>

Icon-O-Matic: Make GradientTransformable a BReferenceable

* Switch to using support/Referenceable.h instead of using an older copy
of this code.
* Make GradientTransformable a BReferenceable and fix #12033.


# 991dadd6 16-Jun-2014 Humdinger <humdingerb@gmail.com>

Make sure there's a space in front of B_UTF8_ELLIPSIS.

As PulkoMandy said in hrev47388: C++11 safe and reads better.


# f31a2f68 31-Dec-2013 Stephan Aßmus <superstippi@gmx.de>

Icon-O-Matic: Forget fMessageAfterSave when FilePanel was cancelled.

fMessageAfterSave capture what was to be done after a file panel was
used. For example, picking up quitting the app after the user saved
unsaved changes. The bug was that when trying to quit IOM, deciding to
save, but then cancelling the file panel, the quitting stopped (as expected).
But then the next time the document was saved, IOM quit unexpectedly.


# 60128b54 04-May-2013 Jérôme Duval <jerome.duval@gmail.com>

Icon-o-matic: some 64 bit fixes


# 776c58b2 30-Dec-2012 Humdinger <humdingerb@gmail.com>

Unifying the quit/save alerts.

Wherever I found an alert prompting to save changes, I used the
button labeling 'Cancel', 'Don't save', 'Save' with the first button
left aligned, 2nd and 3rd right aligned.

I added the shortcuts 'd' for 'Don't save, and 's' for 'Save' where
not already set.

The topic was discussed at
http://permalink.gmane.org/gmane.os.haiku.devel/23244
The discussion died down, I hope I made changes everyone can live with.


# ef4ed1b7 15-Aug-2012 Humdinger <humdingerb@gmail.com>

Replaced "Preferences"/"Options" with "Settings"

Replaced remaining "Preferences" and "Options" with "Settings" as
that is generally used for app settings instead of the system
preferences found in the preference panels.

Renamed Tracker's "Preferences" to "Tracker preferences" to be
similar to the entries in the Deskbar and e.g. the Media replicant
in the Deskbar tray.


# aed35104 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# e4ef6682 06-May-2012 Stephan Aßmus <superstippi@gmx.de>

Implemented drag&drop of shape items between I-O-M windows.

* The ShapeListView also knows the PathContainer and StyleContainer
* When constructing the drag message, also include a complete archive
of the dragged shapes, bundled with archives for each included path
and the style.
* When handling the drop, and it came from another I-O-M window,
exract the Shape archive bundle from the drag message. For the
Style and the included Paths, try to find an existing Style and
existing Paths and reference those in the added Shape(s) instead
of adding duplicates.


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# fe10dd20 11-Dec-2011 Michael Lotz <mmlr@mlotz.ch>

Fix indirect use of fState after deleting it.

Calling SetIcon(NULL) calls MakeEmpty() that tries to delete all
manipulators on fState. So we may only delete fState after that call.

Also reported as CID 10856.


# 22c7e632 17-Apr-2011 Stephan Aßmus <superstippi@gmx.de>

Implemented loading a new icon into the same window when that
window is empty.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41262 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e6da4edf 10-Apr-2011 Stephan Aßmus <superstippi@gmx.de>

Update window title with file name when it is known.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41213 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61ee19d1 10-Apr-2011 Stephan Aßmus <superstippi@gmx.de>

* A whole buch of refactoring and other changes to make Icon-O-Matic
a multi-document application. This is already more useful than
before, but will be even more useful once it is possible to copy
more types of objects to the system clipboard and paste them into
other open icons.
* Fixed wrong snapping menu item being marked when restoring settings
that enable a different snapping mode from the default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41212 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3587919e 31-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Fixed possible dead-lock. The export thread invokes fDocument->CommandStack()->Save();
which triggers MainWindow::ObjectChanged() and locked the window, this could
happen at a time where the application already has the MainWindow locked in _Open(),
and tries to execute fDocument->MakeEmpty(), which in turn waits for the export
thread to finish.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41152 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cf4224b6 31-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Use layout aware BMenuBars and do not shrink the
left side of the interface below the menu bars
minimum width. Resolves cut off strings with
localization.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41149 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 560ff447 25-Mar-2011 Jonas Sundström <jonas@kirilla.com>

Use resource definition files instead of DoCatalogs rule. Rename B_TRANSLATE_APP_NAME and related macros to the more generic B_TRANSLATE_SYSTEM_NAME, to also fits add-ons, folders, etc, and make 'System name' its standard context. Change CodyCam and PoorMan's app signatures to match the overall x-vnd.Haiku-App pattern. Some clean-up. Make SlideShowSaver build again.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41103 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 066522e8 14-Mar-2011 Jonas Sundström <jonas@kirilla.com>

Localization changes. Use of B_TRANSLATE_APP_NAME(). Small cleanups.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40949 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c16bcdfc 10-Feb-2011 Joachim Seemer <humdingerb@googlemail.com>

Made some more strings localizable, removed some unnecessary localizations from CDPlayer. I hope everything's OK...

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40436 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 518852fc 29-Dec-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Patch by Dziadek: localize IconOMatic


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1812583c 18-Dec-2010 Stephan Aßmus <superstippi@gmx.de>

Fixed spacing in Style group layout. (ticket #6553)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39894 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aed19c75 18-Dec-2010 Stephan Aßmus <superstippi@gmx.de>

* Coding style cleanup.
* Removed R5 versions of the code, since I don't believe
other parts of Icon-O-Matic still compile on R5...
* No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e80276e2 06-Sep-2010 Alex Wilson <yourpalal2@gmail.com>

Fix some more regressions from r38512, Tracker prefs, Icon-O-Matic, Expander & Screenshot. Thanks to diver for finding these.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38538 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fa8101b5 23-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Remember the mouse snapping mode across sessions... fixes #4740.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35252 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7974d3dc 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b24366c6 17-Oct-2009 Stephan Aßmus <superstippi@gmx.de>

Implemented focusing the Name property on pressing Command-E. (Ticket #2742)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a05db2d 27-Jul-2009 Ryan Leavengood <leavengood@gmail.com>

Icon-O-Matic: Snap to Grid, 64 x 64 is now set by default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31837 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5bd358ac 27-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Improved menu item labels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31804 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 991547ef 14-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Artur Wyszynski:
* Implemented BGradient, BGradientLinear, BGradientRadial,
BGradientDiamond, BGradientConic and BGradientRadialFocus
new Interface Kit classes.
* Implemented all the (AGG-based) backend necessary in
the app_server to render gradients (Painter, DrawingEngine)
* app_server/View can convert a BGradient layout to screen
coordinates.
* Added BGradient methods of the Fill* methods in BView.
* Implemented a test app and added it to the image as a
demo.
* Adopted Icon-O-Matic and libs/icon in order to avoid
clashing with the new BGradient class. Re-use some
parts where possible.

Awesome work, Artur! Thanks a lot. Now a more modern
looking GUI has just become much easier to implement! :-)

TODO:
* Remove the need to have gradient type twice in the
app_server protocol.
* Refactor some parts of the patch to remove duplicated
code (Painter, DrawingEngine).
* Adopt the BPicture protocol to know about BGradients.
* Review some parts of the BArchivable implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60a6c9c3 14-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Add short cuts for changing the snapping mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28100 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a1e8ef4 14-Oct-2008 François Revol <revol@free.fr>

- factor out code
- name color drops


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8457f71f 13-Oct-2008 François Revol <revol@free.fr>

- handle color drops as a new style
- handle dropped/pastes text as shapes with path (and style when with text_runs from StyledEdit)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28064 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 133f20b0 27-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* fixed a little GUI layout issue


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23763 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 015a014a 21-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* fixed quite a few selections bugs, most were caused by cyclic notifications,
and the mechanism to prevent them not working...
* could have fixed the "there are still listeners attached" bug (debugger drop)
on exit, I have not seen it again, but I am not sure if it is really fixed
* introduced a way to ask the user, if changes should be saved and then
pick up the line of thought after saving


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22269 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c4ce9e76 21-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* the custom ScrollView supports B_NO_BORDER, B_PLAIN_BORDER and B_FANCY_BORDER
and each side of the border can be turned off or on individually
* -> cosmetic improvements


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22268 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f10474fc 21-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* the main window is now using the min/max size from the layout system
* added Min/MaxSize() implementations to PropertyListView and ScrollView,
which fixes the instable layout (upper list views shrinking towards the top
whenever views are added/removed in the property list)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22267 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5725361f 08-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* some fixes to the GUI on BeOS, avoid an app_server bug when resizing the window
after creating the views, but before Show()
* make the MenuFields in the Style section follow left/right


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22204 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a8745d98 25-May-2007 Stephan Aßmus <superstippi@gmx.de>

* added "NativeSaver" which combines the MessageExporter and AttributeSaver
to save the document also as icon attribute to a native Icon-O-Matic
document file
* added cmd-Y short cut to main window (on a German keyboard, Y and Z
are swapped, but the Undo/Redo shortcuts are still "Z" while Z is much
harder to reach than Y)
* fixed warning in SetColorCommand.cpp
* FlatIconExporter needs to save the attribute using B_VECTOR_ICON_TYPE
(of course)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21235 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84153c7a 21-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* various UI improvements and fixes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19347 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 774831e7 16-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

big clean up of Save and Export stuff:
* implemented SavePanel that let's you chose the Export format
* introduced DocumentSaver class and several implementations
* Document no longer remembers any entry_refs, but a native
and export document saver, for other export formats than
HVIF, it is no longer necessary to go through the file panel,
simply invoking Export will do
* this makes it much easier to have a custom saver that sends
a message with an HVIF icon to another app instead of saving
to a file
* cleaned up File menu
* last used export format is persistent


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19307 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4fac07a0 12-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* started work on saving program settins, window frame is
remembered for now
* fixed some annoying bugs:
- the snapping prevented some of the proximity checks from
working while editing a path or using the transform box,
now the Manipulators themself are responsible for mouse
snapping and can do so at the time it works best for them
- pressing the Esc key while using the transform box did
reset the transformation, but didn't exit the transform
mode (return to path editing)
* improved layout of some views when the window is resized



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19266 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2c1e4c7 05-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* added scroll view around canvas in Haiku version
* used new layout features in StyleView for Haiku version


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19212 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4bd80a2 10-Sep-2006 Stephan Aßmus <superstippi@gmx.de>

* when loading an icon via drag&drop, the file will be remembered
for saving later
* added "Clean Up" feature to "Path" menu
* added "Freeze Transformation" to "Shape" menu (will apply the
current shape transformation onto the path and reset the shape
transformation to identity)
* small cleanup in ShapeListView
* implemented zooming in CanvasView
* added context menu while editing a path
* implemented undo/redo for transforming points
(press T or use context menu)
* added "Split Points" feature (path editing context menu), it will
make two points from one control point
* improved selecting path points with selection rect
* improved SVG import for zuMis BeOS icons (more precise scale)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18800 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e1ba39f 29-Aug-2006 Stephan Aßmus <superstippi@gmx.de>

* merged Icon-O-Matic from Ingos layout branch into trunk (r18134:18685)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18686 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61b0e9e3 12-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* added a little bit of tracing to object destruction, since there
seems to be a problem when quitting the app
* added Undo/Redo commands for numerous operations
- (un)assigning VectorPaths to Shapes
- adding new VectorPaths
- removing VectorPaths
- adding Shapes
- transforming Shapes
- adding Styles
- changing Style color
* there was a mix up in classes inheriting from SimpleListView,
RemoveItemList() gives a list of item pointers, not indices
* GradientControl sent the focus notification to the window instead
of the set BHandler target
* StyleView takes care of transfering the current Style color or
the focused gradient stop color to the CurrentColor object, so
the current color of the SwatchGroup is synced
* small improvement to layout of SwatchGroup
* SwatchGroup no longer knows anything about a Style
* fixed syncing the global Selection to the listview selection
at least for ShapeListView
* implemented cloning Shapes
- added Transformer::Clone(VectorSource& source) to all Transformers
- ShapeListView uses this when dropping shapes with shift pressed
* updated NOTES
* added Transformable::matrix_size, so that "6" isn't hardcoded
everywhere (though it still is at most places)
* added listener interface to TransformBox, this is used by
the new TransformObjectsCommand, as long as the TransformBox still
exists, the command modifies the TransformBox transformation instead
of messing with the objects itself
* fixed hotspot size in TransformBox by using the zoom level of
the CanvasView
* TransformBox rotates/scales correctly around the visible pivot
* fixed TransformCommand toggling to transformation (the diff was bogus)
* Gradient doesn't trigger unnecessary notifications in SetColor()
* CanvasView doesn't eat keyboard events when the GradientControl or
one of the ListViews has focus (is a hack currently...)
* fixed bug in PropertyListView when it calls the PropertyChanged()
hook: because of the notification mechanism, the Properties might
be toast after the hook returns
* moved all GetProperty() implementations from headers into .cpp files



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18122 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e684ccf 11-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* added a framework for affine transformations and manipulating them
- Transformable: the base class with a nice interface to agg::trans_affine
- ChannelTransform: inheriting from Transformable, keeping the affine
parameters separate
- TransformBox: inheriting from ChannelTransform and Manipulator
- TransformShapesBox: transfering the TransformBox transformation onto
multiple selected Shape objects
* Shape inherits from Transformable
* solved an important TODO in IconRenderer: a Gradient is now transformed
along with a Shape
TODO: Undo/Redo for manipulating the transformation


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18099 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2205ee09 10-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* added GradientControl which can edit a Gradient
* filled out StyleView for configuring a Style
* added SetGradientCommand for undo/redo editing a
Gradient
* Style::SetGradient() doesn't assume ownership
of the Gradient passed in anymore


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18092 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 85623bad 09-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* relayout of the GUI, you can start to take it serious :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b97f0dc 09-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* editing the color of a style works now
* added current color swatch view
* clicking current color will open the color picker panel


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4215c452 08-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* implemented MoveTransformersCommand (so Transformers can be
drag sorted now)
* implemented RemoveTransformersCommand
* implemented StyleListView (I promise, this is the last list view :-)
* implemented adding new styles via the Style menu
* implemented selecting the Style of the currently selected Shape


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18072 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e2a31283 05-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

many improvements and bug fixes:
* added VertexSource::SetLast() used by PathSource
to call agg::path_storage::close_polygon(). The
StrokeTransformer avoids this of course. Affine
and PerspectiveTransformer forward this to their source.
* TransformerItems watch their transformers for notifications
* made VectorPath an IconObject
* VectorPath no longer uses close_polygon() when converting
to agg::path_storage to allow open strokes
* added IconObjectListView which inherits from
PropertyListView and allows to edit the properties of the
last selected object from one of the other list views
* fixed a couple bugs when adopting properties:
- removed the Property* in the PropertyEditorView base
class, and made GetProperty() virtual, as the base class
pointer was not maintained and superfluous
- delete the old PropertyObject in PropertyListView::SetTo
when adopting the properties instead of the object whose
properties were adopted...
* added SetPropertiesCommand to allow Undo/Redo on changes
of properties
* Style is also an IconObject now (TODO: yet another list view
for styles... :-)
* Style watches its Gradient for notifications and builds and
caches the color array now
* removed generating the color array for each scanline in
IconRenderer, so the performance is improved a lot
* Shape watches its Transformers for notifications in order
to trigger rerendering
* StrokeTransformers adds a bunch of properties like stroke
width, cap and join mode
* StateView keyboard filter no longer steals keydown events
from BTextViews
* PropertyItemViews resize with the parent
* refined the interface for PropertyListView for easier
tracking of the changed properties in derived classes
* added HasPendingNotifications() to Observable, so that
IconObjects can track changes more easily when adopting
a PropertyObject
* the name is now part of any IconObject


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18045 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bab183a2 04-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* Transformers have Name() now
* added TransformerFactory to instantiate the various types via the GUI
* added Transformer menu to main window
* added TransformerListView that shows the Transformers applied to the
selected Shape
* implemented more powerful listener interface for Shape, used by
TransformerListView


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18027 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9b4fa889 03-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* the path list view shows check boxes now when a shape is selected,
the marked paths are used in the shape
* a new path is auto-selected
* deselecting a shape still sends the selection message
* PathSource does not call agg::path_storage::start_new_path() for
each subpath... a move_to() is sufficient and makes sure the
subpaths are rendered even :-)
* updated NOTES
* moved IconView into gui subfolder


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18021 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8815fed6 02-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* MultipleManipulatorState invalidates the area of an
added or removed Manipulator
* added a menu bar to the MainWindow
* undo/redo work from the menu now
* one can add a new path object
* the selected path will get focus for being manipulated
(will be moved elsewhere later on...)
TODO: allow to connect paths to shapes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18004 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ce8d31d 30-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

* added MoveShapesCommand and RemoveShapesCommand
* ShapeContainerListener also gets the index at which a Shape was added
* ShapeListView allows to drag-sort the shapes
* ShapeListView allows to remove shapes (untested)

* IconRenderer is independent of StyleManager now, the
order of shapes is now correct
* disabled clipping for now, since clear() ignores it (clearing will
be changed for a checker background anyways)
* added copy constructor to Shape (needs to clone the Transformers yet)

* Selectable optionally knows the global Selection, so that one
could use Selectable::SetSelected() and it would add itself to
the selection (not yet used)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17995 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cfda5dd7 30-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

* work in progress on GUI classes
- added IconView which just uses an IconRenderer to display a preview
of the icon at a certain size
- PathListView and ShapeListView (very much work in progress)
* actually had the gamma correction applied in the wrong direction...
now the anti-aliasing looks as smooth as planned
* added SetName() and Name() to Shape and VectorPath... will be in a
common base class later on


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17988 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e5799544 23-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

beginning to check up on gui components:
* added a group of controls to access and manipulate colors (incomplete)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17917 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce181bb0 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

* fixed memory leaks and display bugs
* VectorPath objects were released one two many times
by the Shape PathContainers (they don't acquire when
a path is added, the Shape does that for them) the
PathContainer of the Icon needs to release though, as
it "owns" the paths
* put the Selection class used by PathManipulator into
the PathManipulator namespace, since the compiler seemed
to use the wrong destructor (the one from the generic
Selection class)
* uses a better mechanism to track and render
changed parts of icon


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17903 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f71eec5f 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

added three more Transformer implementations:
* AffineTransformer - affine matrix transformation
* PerspectiveTransformer - perspective transformation
* ContourTransformer - extending the underlying VertexSource by a certain
width (like "false bold" in text rendering)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17898 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0199e126 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

implemented a cool vertex transformation pipeline:
* VertexSource virtualizes the AGG "VertexSource" interface
* Transformer is an interface for building pipelines of
VertexSource objects, each taking the output of the previous
object and transforming it in some way
* StrokeTransformer is currently the only implementation and
converts a path into an outline stroke
* PathSource implements the VertexSource interface on top of
a VectorPath which it converts into an agg::path_storage
and into an agg::conv_curve<agg::path_storage> to get smooth
bezier curves
* added VertexSource() to Shape class, which returns the last
object of the transformation pipeline, it uses a PathSource
for the root object
* changed IconRenderer to use the new polymorphic VertexSource
pipeline


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f50089d 20-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

implemented gradient rendering


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17892 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f67876a0 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

some more "putting things together" for testing:
* add a VectorPath to Document->Icon()->Paths()
* add a Style to the global StyleManager
* actually add a Shape to the Document->Icon()->Shapes()
which uses the style and the path from above

fleshing out of CanvasView:
* use an offscreen bitmap/view to avoid flickering
* use an IconRenderer to render the set Icon
* implement support for zooming

PathManipulator:
* use the conversion from/to Canvas space and View space
in CanvasView (I would have liked to solve this in a
more generic way, so that PathManipulator didn't have to
know CanvasView, but I was not very creative...)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17891 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 128277c9 13-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

the first steps towards Icon-O-Matic
* added a framework with many classes that I think will be useful
* currently, the StateView and Manipulator interface are used to
allow editing a single VectorPath object, nothing more... the
CommandStack framework is also used to support Undo/Redo


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17822 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0cbb6c11eec74201f566920c90ebd2c5546b7aa6 09-May-2015 Stephan Aßmus <superstippi@gmx.de>

Icon-O-Matic: Make GradientTransformable a BReferenceable

* Switch to using support/Referenceable.h instead of using an older copy
of this code.
* Make GradientTransformable a BReferenceable and fix #12033.


# 991dadd6324f7b7a68e94743a39ebae789823228 16-Jun-2014 Humdinger <humdingerb@gmail.com>

Make sure there's a space in front of B_UTF8_ELLIPSIS.

As PulkoMandy said in hrev47388: C++11 safe and reads better.


# f31a2f68cc708c0bca626ae6acb2cdd0086fc241 31-Dec-2013 Stephan Aßmus <superstippi@gmx.de>

Icon-O-Matic: Forget fMessageAfterSave when FilePanel was cancelled.

fMessageAfterSave capture what was to be done after a file panel was
used. For example, picking up quitting the app after the user saved
unsaved changes. The bug was that when trying to quit IOM, deciding to
save, but then cancelling the file panel, the quitting stopped (as expected).
But then the next time the document was saved, IOM quit unexpectedly.


# 60128b54b483dc49e67e08ebbca3f08f5c47edea 04-May-2013 Jérôme Duval <jerome.duval@gmail.com>

Icon-o-matic: some 64 bit fixes


# 776c58b2b56d8bcf33638a2ecb6c697f95a1cbf3 30-Dec-2012 Humdinger <humdingerb@gmail.com>

Unifying the quit/save alerts.

Wherever I found an alert prompting to save changes, I used the
button labeling 'Cancel', 'Don't save', 'Save' with the first button
left aligned, 2nd and 3rd right aligned.

I added the shortcuts 'd' for 'Don't save, and 's' for 'Save' where
not already set.

The topic was discussed at
http://permalink.gmane.org/gmane.os.haiku.devel/23244
The discussion died down, I hope I made changes everyone can live with.


# ef4ed1b76b69c8775d46153501862fd4aa082dc8 15-Aug-2012 Humdinger <humdingerb@gmail.com>

Replaced "Preferences"/"Options" with "Settings"

Replaced remaining "Preferences" and "Options" with "Settings" as
that is generally used for app settings instead of the system
preferences found in the preference panels.

Renamed Tracker's "Preferences" to "Tracker preferences" to be
similar to the entries in the Deskbar and e.g. the Media replicant
in the Deskbar tray.


# aed35104852941f0f6f3d1dcc5338b5f337d0a3c 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# e4ef668253317fde1251f6c3130a71c4ace68600 06-May-2012 Stephan Aßmus <superstippi@gmx.de>

Implemented drag&drop of shape items between I-O-M windows.

* The ShapeListView also knows the PathContainer and StyleContainer
* When constructing the drag message, also include a complete archive
of the dragged shapes, bundled with archives for each included path
and the style.
* When handling the drop, and it came from another I-O-M window,
exract the Shape archive bundle from the drag message. For the
Style and the included Paths, try to find an existing Style and
existing Paths and reference those in the added Shape(s) instead
of adding duplicates.


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# fe10dd20bf40a3c48d10d342197694c5e7a767d3 11-Dec-2011 Michael Lotz <mmlr@mlotz.ch>

Fix indirect use of fState after deleting it.

Calling SetIcon(NULL) calls MakeEmpty() that tries to delete all
manipulators on fState. So we may only delete fState after that call.

Also reported as CID 10856.


# 22c7e6324ceafd33f29a1d4ad0fec14192018c35 17-Apr-2011 Stephan Aßmus <superstippi@gmx.de>

Implemented loading a new icon into the same window when that
window is empty.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41262 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e6da4edf67fc804db7bae8d9dab32b5c3cdf91db 10-Apr-2011 Stephan Aßmus <superstippi@gmx.de>

Update window title with file name when it is known.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41213 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61ee19d10fcc38e93a80a29b90efe6e4e15604df 10-Apr-2011 Stephan Aßmus <superstippi@gmx.de>

* A whole buch of refactoring and other changes to make Icon-O-Matic
a multi-document application. This is already more useful than
before, but will be even more useful once it is possible to copy
more types of objects to the system clipboard and paste them into
other open icons.
* Fixed wrong snapping menu item being marked when restoring settings
that enable a different snapping mode from the default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41212 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3587919e026f5186d3fc9ba091736e7b13d73ce9 31-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Fixed possible dead-lock. The export thread invokes fDocument->CommandStack()->Save();
which triggers MainWindow::ObjectChanged() and locked the window, this could
happen at a time where the application already has the MainWindow locked in _Open(),
and tries to execute fDocument->MakeEmpty(), which in turn waits for the export
thread to finish.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41152 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cf4224b6dac32583861b29b89a5819b863fd008c 31-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Use layout aware BMenuBars and do not shrink the
left side of the interface below the menu bars
minimum width. Resolves cut off strings with
localization.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41149 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 560ff4478d5c85455ea3e5ed5e392ef93132d545 25-Mar-2011 Jonas Sundström <jonas@kirilla.com>

Use resource definition files instead of DoCatalogs rule. Rename B_TRANSLATE_APP_NAME and related macros to the more generic B_TRANSLATE_SYSTEM_NAME, to also fits add-ons, folders, etc, and make 'System name' its standard context. Change CodyCam and PoorMan's app signatures to match the overall x-vnd.Haiku-App pattern. Some clean-up. Make SlideShowSaver build again.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41103 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 066522e87b5aa9f25957e3f419ac3a0565edbb4f 14-Mar-2011 Jonas Sundström <jonas@kirilla.com>

Localization changes. Use of B_TRANSLATE_APP_NAME(). Small cleanups.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40949 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c16bcdfcb779bf4d85a8aceb10602581d3de104f 10-Feb-2011 Joachim Seemer <humdingerb@googlemail.com>

Made some more strings localizable, removed some unnecessary localizations from CDPlayer. I hope everything's OK...

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40436 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 518852fca73d16198413de528219fcdfa6b04647 29-Dec-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Patch by Dziadek: localize IconOMatic


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1812583c059ac55d2be2b15970ccbd5ba0460efb 18-Dec-2010 Stephan Aßmus <superstippi@gmx.de>

Fixed spacing in Style group layout. (ticket #6553)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39894 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aed19c751be5ff477644c4dfb2e3281af0856ef4 18-Dec-2010 Stephan Aßmus <superstippi@gmx.de>

* Coding style cleanup.
* Removed R5 versions of the code, since I don't believe
other parts of Icon-O-Matic still compile on R5...
* No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e80276e2d797269d46da99eecad6b2cc97d15141 06-Sep-2010 Alex Wilson <yourpalal2@gmail.com>

Fix some more regressions from r38512, Tracker prefs, Icon-O-Matic, Expander & Screenshot. Thanks to diver for finding these.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38538 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fa8101b56edf7c44e2bc28fbe2ee66175bbbbde5 23-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Remember the mouse snapping mode across sessions... fixes #4740.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35252 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7974d3dcf39ce78e5885b481eee12e561ad6e096 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b24366c6d8326a768919dde48bb36c0cab131702 17-Oct-2009 Stephan Aßmus <superstippi@gmx.de>

Implemented focusing the Name property on pressing Command-E. (Ticket #2742)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a05db2d0ec52aba8432c80283bb72ddaa6978f7 27-Jul-2009 Ryan Leavengood <leavengood@gmail.com>

Icon-O-Matic: Snap to Grid, 64 x 64 is now set by default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31837 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5bd358ac3d75b196e01c945992a26dd3c78e478f 27-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Improved menu item labels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31804 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 991547ef6c1fca650f0fba855206296ef54bc441 14-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Artur Wyszynski:
* Implemented BGradient, BGradientLinear, BGradientRadial,
BGradientDiamond, BGradientConic and BGradientRadialFocus
new Interface Kit classes.
* Implemented all the (AGG-based) backend necessary in
the app_server to render gradients (Painter, DrawingEngine)
* app_server/View can convert a BGradient layout to screen
coordinates.
* Added BGradient methods of the Fill* methods in BView.
* Implemented a test app and added it to the image as a
demo.
* Adopted Icon-O-Matic and libs/icon in order to avoid
clashing with the new BGradient class. Re-use some
parts where possible.

Awesome work, Artur! Thanks a lot. Now a more modern
looking GUI has just become much easier to implement! :-)

TODO:
* Remove the need to have gradient type twice in the
app_server protocol.
* Refactor some parts of the patch to remove duplicated
code (Painter, DrawingEngine).
* Adopt the BPicture protocol to know about BGradients.
* Review some parts of the BArchivable implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60a6c9c3316dbf6701f0b4bd84e04cd75019f3a8 14-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Add short cuts for changing the snapping mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28100 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a1e8ef4ceb00f6d9a68e0af5c34c63a4ec8b515 14-Oct-2008 François Revol <revol@free.fr>

- factor out code
- name color drops


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8457f71f08cfc413779e81ae21be7f0d28714407 13-Oct-2008 François Revol <revol@free.fr>

- handle color drops as a new style
- handle dropped/pastes text as shapes with path (and style when with text_runs from StyledEdit)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28064 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 133f20b00b1a67ad27403260844f30d9cf79eac9 27-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* fixed a little GUI layout issue


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23763 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 015a014aa74d4366a1c2c14ecef92483ebf3e532 21-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* fixed quite a few selections bugs, most were caused by cyclic notifications,
and the mechanism to prevent them not working...
* could have fixed the "there are still listeners attached" bug (debugger drop)
on exit, I have not seen it again, but I am not sure if it is really fixed
* introduced a way to ask the user, if changes should be saved and then
pick up the line of thought after saving


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22269 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c4ce9e76075d8a9b4a380cedfa790739c7d03585 21-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* the custom ScrollView supports B_NO_BORDER, B_PLAIN_BORDER and B_FANCY_BORDER
and each side of the border can be turned off or on individually
* -> cosmetic improvements


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22268 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f10474fc0b77e23e362e4e6670dfcbbbba4210ea 21-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* the main window is now using the min/max size from the layout system
* added Min/MaxSize() implementations to PropertyListView and ScrollView,
which fixes the instable layout (upper list views shrinking towards the top
whenever views are added/removed in the property list)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22267 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5725361ffe6b7987fcedc7225c3a03081ea5dc86 08-Sep-2007 Stephan Aßmus <superstippi@gmx.de>

* some fixes to the GUI on BeOS, avoid an app_server bug when resizing the window
after creating the views, but before Show()
* make the MenuFields in the Style section follow left/right


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22204 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a8745d98e92b2e25d6a9024cecc951e9a8ed8de4 25-May-2007 Stephan Aßmus <superstippi@gmx.de>

* added "NativeSaver" which combines the MessageExporter and AttributeSaver
to save the document also as icon attribute to a native Icon-O-Matic
document file
* added cmd-Y short cut to main window (on a German keyboard, Y and Z
are swapped, but the Undo/Redo shortcuts are still "Z" while Z is much
harder to reach than Y)
* fixed warning in SetColorCommand.cpp
* FlatIconExporter needs to save the attribute using B_VECTOR_ICON_TYPE
(of course)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21235 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84153c7a0c3a6df07e996ca265884ec5308a1c2a 21-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* various UI improvements and fixes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19347 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 774831e7c242f07168f07e1d804d93fe63687702 16-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

big clean up of Save and Export stuff:
* implemented SavePanel that let's you chose the Export format
* introduced DocumentSaver class and several implementations
* Document no longer remembers any entry_refs, but a native
and export document saver, for other export formats than
HVIF, it is no longer necessary to go through the file panel,
simply invoking Export will do
* this makes it much easier to have a custom saver that sends
a message with an HVIF icon to another app instead of saving
to a file
* cleaned up File menu
* last used export format is persistent


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19307 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4fac07a0887406d944d78403f8a3b01a4e6154be 12-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* started work on saving program settins, window frame is
remembered for now
* fixed some annoying bugs:
- the snapping prevented some of the proximity checks from
working while editing a path or using the transform box,
now the Manipulators themself are responsible for mouse
snapping and can do so at the time it works best for them
- pressing the Esc key while using the transform box did
reset the transformation, but didn't exit the transform
mode (return to path editing)
* improved layout of some views when the window is resized



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19266 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2c1e4c72582ca478af6357bf8ba0febe563418b 05-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* added scroll view around canvas in Haiku version
* used new layout features in StyleView for Haiku version


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19212 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4bd80a2dcc200d939292c877b3fdadb7f3a261e 10-Sep-2006 Stephan Aßmus <superstippi@gmx.de>

* when loading an icon via drag&drop, the file will be remembered
for saving later
* added "Clean Up" feature to "Path" menu
* added "Freeze Transformation" to "Shape" menu (will apply the
current shape transformation onto the path and reset the shape
transformation to identity)
* small cleanup in ShapeListView
* implemented zooming in CanvasView
* added context menu while editing a path
* implemented undo/redo for transforming points
(press T or use context menu)
* added "Split Points" feature (path editing context menu), it will
make two points from one control point
* improved selecting path points with selection rect
* improved SVG import for zuMis BeOS icons (more precise scale)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18800 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e1ba39f0440e200e30b6a648e70c3e8683dc5f7 29-Aug-2006 Stephan Aßmus <superstippi@gmx.de>

* merged Icon-O-Matic from Ingos layout branch into trunk (r18134:18685)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18686 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61b0e9e3149012ccbd48a10dcbc7f83600bb4769 12-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* added a little bit of tracing to object destruction, since there
seems to be a problem when quitting the app
* added Undo/Redo commands for numerous operations
- (un)assigning VectorPaths to Shapes
- adding new VectorPaths
- removing VectorPaths
- adding Shapes
- transforming Shapes
- adding Styles
- changing Style color
* there was a mix up in classes inheriting from SimpleListView,
RemoveItemList() gives a list of item pointers, not indices
* GradientControl sent the focus notification to the window instead
of the set BHandler target
* StyleView takes care of transfering the current Style color or
the focused gradient stop color to the CurrentColor object, so
the current color of the SwatchGroup is synced
* small improvement to layout of SwatchGroup
* SwatchGroup no longer knows anything about a Style
* fixed syncing the global Selection to the listview selection
at least for ShapeListView
* implemented cloning Shapes
- added Transformer::Clone(VectorSource& source) to all Transformers
- ShapeListView uses this when dropping shapes with shift pressed
* updated NOTES
* added Transformable::matrix_size, so that "6" isn't hardcoded
everywhere (though it still is at most places)
* added listener interface to TransformBox, this is used by
the new TransformObjectsCommand, as long as the TransformBox still
exists, the command modifies the TransformBox transformation instead
of messing with the objects itself
* fixed hotspot size in TransformBox by using the zoom level of
the CanvasView
* TransformBox rotates/scales correctly around the visible pivot
* fixed TransformCommand toggling to transformation (the diff was bogus)
* Gradient doesn't trigger unnecessary notifications in SetColor()
* CanvasView doesn't eat keyboard events when the GradientControl or
one of the ListViews has focus (is a hack currently...)
* fixed bug in PropertyListView when it calls the PropertyChanged()
hook: because of the notification mechanism, the Properties might
be toast after the hook returns
* moved all GetProperty() implementations from headers into .cpp files



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18122 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e684ccfed8462d5e8647473765eafcf970899f6 11-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* added a framework for affine transformations and manipulating them
- Transformable: the base class with a nice interface to agg::trans_affine
- ChannelTransform: inheriting from Transformable, keeping the affine
parameters separate
- TransformBox: inheriting from ChannelTransform and Manipulator
- TransformShapesBox: transfering the TransformBox transformation onto
multiple selected Shape objects
* Shape inherits from Transformable
* solved an important TODO in IconRenderer: a Gradient is now transformed
along with a Shape
TODO: Undo/Redo for manipulating the transformation


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18099 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2205ee09148c5472af4cecc2b4cc15a65d643c1d 10-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* added GradientControl which can edit a Gradient
* filled out StyleView for configuring a Style
* added SetGradientCommand for undo/redo editing a
Gradient
* Style::SetGradient() doesn't assume ownership
of the Gradient passed in anymore


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18092 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 85623bad057fb4912f355ac5a4dde05fbd471b10 09-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* relayout of the GUI, you can start to take it serious :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b97f0dcafbbb89ef8f371e5138f2cebcc28304f 09-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* editing the color of a style works now
* added current color swatch view
* clicking current color will open the color picker panel


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4215c452a4a92759e04b8c221016fea48531f1bc 08-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* implemented MoveTransformersCommand (so Transformers can be
drag sorted now)
* implemented RemoveTransformersCommand
* implemented StyleListView (I promise, this is the last list view :-)
* implemented adding new styles via the Style menu
* implemented selecting the Style of the currently selected Shape


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18072 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e2a31283dde5ae5dfc14c3d2075e0d17cf392892 05-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

many improvements and bug fixes:
* added VertexSource::SetLast() used by PathSource
to call agg::path_storage::close_polygon(). The
StrokeTransformer avoids this of course. Affine
and PerspectiveTransformer forward this to their source.
* TransformerItems watch their transformers for notifications
* made VectorPath an IconObject
* VectorPath no longer uses close_polygon() when converting
to agg::path_storage to allow open strokes
* added IconObjectListView which inherits from
PropertyListView and allows to edit the properties of the
last selected object from one of the other list views
* fixed a couple bugs when adopting properties:
- removed the Property* in the PropertyEditorView base
class, and made GetProperty() virtual, as the base class
pointer was not maintained and superfluous
- delete the old PropertyObject in PropertyListView::SetTo
when adopting the properties instead of the object whose
properties were adopted...
* added SetPropertiesCommand to allow Undo/Redo on changes
of properties
* Style is also an IconObject now (TODO: yet another list view
for styles... :-)
* Style watches its Gradient for notifications and builds and
caches the color array now
* removed generating the color array for each scanline in
IconRenderer, so the performance is improved a lot
* Shape watches its Transformers for notifications in order
to trigger rerendering
* StrokeTransformers adds a bunch of properties like stroke
width, cap and join mode
* StateView keyboard filter no longer steals keydown events
from BTextViews
* PropertyItemViews resize with the parent
* refined the interface for PropertyListView for easier
tracking of the changed properties in derived classes
* added HasPendingNotifications() to Observable, so that
IconObjects can track changes more easily when adopting
a PropertyObject
* the name is now part of any IconObject


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18045 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bab183a27305174861a27a136599b863d22318c7 04-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* Transformers have Name() now
* added TransformerFactory to instantiate the various types via the GUI
* added Transformer menu to main window
* added TransformerListView that shows the Transformers applied to the
selected Shape
* implemented more powerful listener interface for Shape, used by
TransformerListView


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18027 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9b4fa889fd63d9f22bffcf743dc22f25eef8ebd6 03-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* the path list view shows check boxes now when a shape is selected,
the marked paths are used in the shape
* a new path is auto-selected
* deselecting a shape still sends the selection message
* PathSource does not call agg::path_storage::start_new_path() for
each subpath... a move_to() is sufficient and makes sure the
subpaths are rendered even :-)
* updated NOTES
* moved IconView into gui subfolder


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18021 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8815fed657af2ded0928525f76d5249c65a936a9 02-Jul-2006 Stephan Aßmus <superstippi@gmx.de>

* MultipleManipulatorState invalidates the area of an
added or removed Manipulator
* added a menu bar to the MainWindow
* undo/redo work from the menu now
* one can add a new path object
* the selected path will get focus for being manipulated
(will be moved elsewhere later on...)
TODO: allow to connect paths to shapes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18004 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ce8d31d0911191d25b034aa0aa4a3091dfa8c56 30-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

* added MoveShapesCommand and RemoveShapesCommand
* ShapeContainerListener also gets the index at which a Shape was added
* ShapeListView allows to drag-sort the shapes
* ShapeListView allows to remove shapes (untested)

* IconRenderer is independent of StyleManager now, the
order of shapes is now correct
* disabled clipping for now, since clear() ignores it (clearing will
be changed for a checker background anyways)
* added copy constructor to Shape (needs to clone the Transformers yet)

* Selectable optionally knows the global Selection, so that one
could use Selectable::SetSelected() and it would add itself to
the selection (not yet used)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17995 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cfda5dd75bf4c1cae5b1aa808f37b59da114be26 30-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

* work in progress on GUI classes
- added IconView which just uses an IconRenderer to display a preview
of the icon at a certain size
- PathListView and ShapeListView (very much work in progress)
* actually had the gamma correction applied in the wrong direction...
now the anti-aliasing looks as smooth as planned
* added SetName() and Name() to Shape and VectorPath... will be in a
common base class later on


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17988 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e57995449d5e5a8ed659229d98274bea0d824cef 23-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

beginning to check up on gui components:
* added a group of controls to access and manipulate colors (incomplete)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17917 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce181bb0cd9855442f7a1db340e7e9d51f231e33 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

* fixed memory leaks and display bugs
* VectorPath objects were released one two many times
by the Shape PathContainers (they don't acquire when
a path is added, the Shape does that for them) the
PathContainer of the Icon needs to release though, as
it "owns" the paths
* put the Selection class used by PathManipulator into
the PathManipulator namespace, since the compiler seemed
to use the wrong destructor (the one from the generic
Selection class)
* uses a better mechanism to track and render
changed parts of icon


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17903 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f71eec5f41e594b7964894aa6e45c7242202738e 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

added three more Transformer implementations:
* AffineTransformer - affine matrix transformation
* PerspectiveTransformer - perspective transformation
* ContourTransformer - extending the underlying VertexSource by a certain
width (like "false bold" in text rendering)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17898 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0199e126e25c794f4a3ec7765a29a49d4bbbabcb 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

implemented a cool vertex transformation pipeline:
* VertexSource virtualizes the AGG "VertexSource" interface
* Transformer is an interface for building pipelines of
VertexSource objects, each taking the output of the previous
object and transforming it in some way
* StrokeTransformer is currently the only implementation and
converts a path into an outline stroke
* PathSource implements the VertexSource interface on top of
a VectorPath which it converts into an agg::path_storage
and into an agg::conv_curve<agg::path_storage> to get smooth
bezier curves
* added VertexSource() to Shape class, which returns the last
object of the transformation pipeline, it uses a PathSource
for the root object
* changed IconRenderer to use the new polymorphic VertexSource
pipeline


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f50089d872ca13b634c2c7f5d9b7200d79c77ea 20-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

implemented gradient rendering


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17892 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f67876a0c5b91684c175f3dc7989537c35c23f55 21-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

some more "putting things together" for testing:
* add a VectorPath to Document->Icon()->Paths()
* add a Style to the global StyleManager
* actually add a Shape to the Document->Icon()->Shapes()
which uses the style and the path from above

fleshing out of CanvasView:
* use an offscreen bitmap/view to avoid flickering
* use an IconRenderer to render the set Icon
* implement support for zooming

PathManipulator:
* use the conversion from/to Canvas space and View space
in CanvasView (I would have liked to solve this in a
more generic way, so that PathManipulator didn't have to
know CanvasView, but I was not very creative...)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17891 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 128277c969aa806add78941cd2972754c37a1572 13-Jun-2006 Stephan Aßmus <superstippi@gmx.de>

the first steps towards Icon-O-Matic
* added a framework with many classes that I think will be useful
* currently, the StateView and Manipulator interface are used to
allow editing a single VectorPath object, nothing more... the
CommandStack framework is also used to support Undo/Redo


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17822 a95241bf-73f2-0310-859d-f6bbb57e9c96