Commit Graph

12209 Commits

Author SHA1 Message Date
Michael Natterer a9b617235f Make the scale dialog transient to the shell's toplevel 2009-09-28 22:55:40 +02:00
Michael Natterer 1bbcd8f7b5 Add "icon" property to GimpDisplayShell
Set it instead of setting the window icon and connect GimpImageWindow
to the notification.
2009-09-28 22:55:40 +02:00
Michael Natterer 660c333b55 Add "title" and "status" properties to GimpSisplayShell
Set the properties when updating title and status. In GimpImageWindow,
connect to notifications of the properties to update window title and
statusbar.
2009-09-28 22:55:39 +02:00
Michael Natterer 5112bc497d Remove gimp_display_shell_title() because it was completely empty 2009-09-28 22:55:39 +02:00
Michael Natterer 3547a25390 Add a GimpDisplayShell::scaled() handler to GimpImageWindow
...which is connected to the window's active display. Remove updating
the window's menubar_manager from GimpDisplayShell's scaled()
impl. Had to hack around a bit with the new API to set the window's
active display because they are still the same widget.
2009-09-28 22:55:39 +02:00
Michael Natterer a82169ee13 Keep around an "active_display" member in GimpImageWindow
And add gimp_image_window_set_active_display(). Call the new function
when creating a shell. Will all be done by the means of a GimpContext
later, but is a step to get rid of FIXME hacks.
2009-09-28 22:55:39 +02:00
Michael Natterer 03fcc99bbf Move the GtkWidget::style_set() handler to GimpImageWindow
...and remove it from GimpDisplayShell completely.
2009-09-28 22:55:38 +02:00
Michael Natterer 10b98034d4 Move the statusbar to GimpImageWindow
As with the menubar, port some code properly, and add some
horrible /* FIXME image window */ hacks to make it work.
2009-09-28 22:55:38 +02:00
Michael Natterer 6793d68769 Move the menubar and the menubar_manager to GimpImageWindow
Also move some of their related code and update other code to
go via gtk_widget_get_toplevel(), but also add some horrid temp
/* FIXME image window */ hacks.
2009-09-28 22:55:38 +02:00
Michael Natterer 44f9fcbf6f Move the rc style string for the fullscreen menubar to GimpImageWindow 2009-09-28 22:55:37 +02:00
Michael Natterer 1823494122 Keep the main_vbox around in the GimpImageWindow struct (temp hack) 2009-09-28 22:55:37 +02:00
Michael Natterer 639c427429 Use gtk_widget_get_toplevel() to get to a display's "iconified" state
Don't assume that shell->window is the toplevel GdkWindow, go thorugh
gtk_widget_get_toplevel() instead.
2009-09-28 22:55:37 +02:00
Michael Natterer 90ef404d98 Move more window managing code to GimpImageWindow
Move the code that (de)iconifies the docks together with an empty
image window from GimpDisplayShell to GimpImageWindow.
2009-09-28 22:55:37 +02:00
Michael Natterer be93e6564a Move the fullscreen API from GimpDisplayShell to GimpImageWindow
Also remove GimpDisplayShell's "window_state" member. Use
gtk_widget_get_toplvel() to get to the GimpImageWindow when we need a
display shell's fullscreen state.
2009-09-28 22:55:37 +02:00
Michael Natterer fb046b097d Add GtkWidget::window_state_event() implementation to GimpImageWindow
Keep an own window_state member around and update it accordingly.
Chain up in GimpDisplayShell's window_state_event() impl.
2009-09-28 22:55:36 +02:00
Michael Natterer 7c66b4c43d Support GimpImageWindow as action callback user_data 2009-09-28 22:55:36 +02:00
Michael Natterer fcf09eea62 Add gimp_image_window_get_active_display()
Should probably be refactored into something involving a GimpContext,
but it's good enough as intermediate step.
2009-09-28 22:55:35 +02:00
Michael Natterer dc436b6f86 Add menubar_manager member and "menu-factory" construct-only property
Create the menubar_manager when the construct property is set, assert
for its presence in constructor(). Pass the newly required construct
property to g_object_new() in gimp_display_shell_new().
2009-09-28 22:55:35 +02:00
Michael Natterer aad8fbad3e Derive GimpDisplayShell from GimpImageWindow
This is just a refactoring step, later the image window will have one
or many display shells.
2009-09-28 22:55:35 +02:00
Michael Natterer b83a58b64e Add new toplevel window class GimpImageWindow
This one will be the toplevel where GimpDisplayShells live in
once they are no toplevels any longer.
2009-09-28 22:55:35 +02:00
Martin Nordholts c39b8758d5 app: Make dock actions like "Show Image Selection" work
Take into account that the toplevel is not a dock any longer but a
dock window.
2009-09-27 17:12:18 +02:00
Martin Nordholts c7b8a67cfd app: Don't kill the toolbox window when removing the last dockbook
Add a "allow-dockbook-absence" property to the GimpDockWindow which is
set to TRUE for the dock window for the toolbox so that it is not
kiled when the last dockbook is removed.
2009-09-27 14:15:03 +02:00
Martin Nordholts f3f19ac35f app: Make tool selection work again
The toolbox toplevel is no longer the dock, do some minor adjustments
to compensate for this, namely sending the toolbox (which is a dock)
as data to callbacks.
2009-09-27 13:54:45 +02:00
Martin Nordholts 9fa51f70f4 Add a Single-window mode
Add a single-window mode that can be toggled from 'Windows ->
Single-window mode'. No code is yet hooked to the mode though.
2009-09-26 18:28:41 +02:00
Martin Nordholts 1f098e5777 app: Add GimpDockColumns
Add a new widget GimpDockColumns inheriting from GtkHBox that will
contain several GimpDocks making it possible to have columns of
dockables.
2009-09-26 16:49:14 +02:00
Martin Nordholts 9106c75b14 app: Remove temporary GimpDockWindow property prefixes
With GimpDock and GimpDockWindow being separate they can share
property names.
2009-09-26 16:25:30 +02:00
Martin Nordholts 4f7693acf0 app: Make GimpDock a GtkVBox
Make GimpDock be a GtkVBox instead of a GimpDockWindow. This means we
can now put a GimpDock anywhere, including inside an image window.

In order to do this we need to:

 * Separate dock and dock window creation in the dialog factory and
   add a couple of new dock window constructors

 * Change gimp_dialog_factory_dock_new() to not only create a dock,
   but also create a dock window and then combine those two

 * Change the dock constructor to take a GimpUIManager since they
   depend on that during their construction. We get the ui manager
   from the dock window, but we can't create the dock *inside* the
   dock window, we have to add the dock later. So we create the dock
   window first and then pass its ui manager to the dock constructors

 * Make some other minor adaptions, mostly with
   gimp_dock_window_from_dock() and gimp_dock_window_get_dock()
2009-09-26 16:21:10 +02:00
Martin Nordholts 5447938d5c app: Fix bogus cast in dock-actions.c 2009-09-26 16:13:42 +02:00
Martin Nordholts b00c9b87f5 app: Minor code formating 2009-09-26 15:39:10 +02:00
Martin Nordholts c47c397332 app: Add and use gimp_dock_window_set_dock()
Add and use gimp_dock_window_set_dock() in preparation for making
GimpDock a non-GimpDockWindow.
2009-09-26 15:38:08 +02:00
Martin Nordholts 12a0ea1063 app: Destory the dock window from the dock window, not the dock 2009-09-26 15:26:05 +02:00
Martin Nordholts 0be33be0dc app: Add missing #include "widgets/gimpdockwindow.h" 2009-09-26 15:18:33 +02:00
Martin Nordholts acc8765e0a app: Update a few GimpDock related comments 2009-09-26 14:38:33 +02:00
Martin Nordholts c9d8aafb68 app: Change a few GIMP_IS_DOCK to GIMP_IS_DOCK_WINDOW
In many places we are interested in wether or not we have a dock
window, not a dock. This is in preparation for making GimpDock a
non-GimpDockWindow.
2009-09-26 14:26:49 +02:00
Martin Nordholts 62dde84e43 app: Change GimpDialogFactory signals to "dock-window-added/removed"
Change the GimpDialogFactory signals "dock-added" and "dock-removed"
to "dock-window-added" and "dock-window-removed". Doing this makes
sense for a couple of reasons. First of all, the dialog factory is
built around top-levels. Second of all, the listeners to the signals
(such as the "recently closed docks" construct) work on a
gtk-window-level, not a dock level.

This change is a preparation for when GimpDock will stop being a
GimpDockWindow.
2009-09-26 13:11:42 +02:00
Martin Nordholts 3cd7c5a6cd app/tests: Do role tests on the dock windows, not the docks 2009-09-26 12:48:44 +02:00
Michael Natterer 01bafc6ea8 Move variables to local scopes and some minor cleanup 2009-09-22 21:41:24 +02:00
Michael Natterer e306df220a Fix typo in comment 2009-09-22 21:39:32 +02:00
Michael Natterer 295f345b2e Guard against g_file_info_get_icon() returning NULL
It can return NULL, but should not for a proper gvfs backend; add a
returning NULL.
2009-09-22 20:25:11 +02:00
Michael Natterer a40f2b9037 Fix and optimize gimp_group_layer_duplicate()
Make sure the duplicated group layer actually has a properly set up
tile manager taken from its projection, and not just a dumb copy of
the original group's tiles. Also optimizes away useless calls to
gimp_group_layer_update_size().
2009-09-21 22:36:26 +02:00
Michael Natterer 43cf8e9259 Make "merge visible layers" work on the right container
(gimp_image_merge_visible_layers): merge the visible layers in the
active layer's group. We can't possibly merge across different groups
anyway because there is no logical place to add the merged layer.
Moreoever, this change makes the group behave more like a sub-image,
which is our metaphor anyway.
2009-09-21 20:30:10 +02:00
Michael Natterer e79c3c9bd7 Allow merging down a group layer
There is no reason to disallow this, the merged-down group layer will
simply disappear from the image just as a normal layer, and its
projection composited with the layer below.
2009-09-21 19:21:03 +02:00
Michael Natterer 90893cea84 Add "layers-merge-group" action, callback and menu items 2009-09-21 19:17:02 +02:00
Michael Natterer 170054a36e Add gimp_image_merge_group_layer()
The new function replaces a group layer by a normal one that looks
exactly the same.
2009-09-21 19:08:04 +02:00
Michael Natterer 13e39d7e2c Fix precondition check when duplicating group layers
(gimp_group_layer_duplicate): change the allowed type of the duplicate
from GIMP_TYPE_GROUP_LAYER to GIMP_TYPE_DRAWABLE. The former was
simply a braino when copying and modifying the GimpLayer code.
2009-09-21 18:41:54 +02:00
Michael Natterer 098a0e4491 Make sure the layer preview's border is correct after removing a mask
(gimp_layer_tree_view_mask_update): call
gimp_layer_tree_view_update_borders() unconditionally; not only when a
mask has been added, but also when it has been removed.
2009-09-21 10:43:26 +02:00
Sven Neumann fa628b580a Revert part of commit c8853243ea
g_str_equal() is a hash function and should not be used instead of
strcmp() as it doesn't provide a proper signature.
2009-09-20 20:34:32 +02:00
Alexander Jones 3af6b2ea3c Bug 593501 - Canvas Size dialog defaults to fixed aspect ratio
Default to non-fixed aspect ratio in Canvas Size dialog. It doesn't
make sense to deault to fixed aspect ratio here.
2009-09-20 20:25:32 +02:00
Martin Nordholts 02c8835e2c app: Make gimp_dock_window_get_dock() public 2009-09-20 20:21:45 +02:00
Martin Nordholts 3ebad746ee app: Add GimpUIManager property to GimpDock
Add GimpUIManager property to GimpDock. We need it later when the
GimpDock stops being a GimpDockWindow.
2009-09-20 19:30:16 +02:00
Martin Nordholts ae39604a64 app: Add more dialog-factory debug output 2009-09-20 19:30:10 +02:00
Martin Nordholts 94d95e4db2 app: Make GimpSessionInfo members private
Make GimpSessionInfo members private but put them in a shared header
file so gimpsessioninfo-dock.c can access them too.
2009-09-20 17:06:36 +02:00
Martin Nordholts 8bfcd14f9a app: Add GimpSessionInfo getters and setters 2009-09-20 14:51:03 +02:00
Martin Nordholts 7cac9dff67 app: gimp_session_info_set/get_geometry -> apply/read_geometry()
Rename gimp_session_info_set_geometry() to
gimp_session_info_apply_geometry() and gimp_session_info_get_geometry
to gimp_session_info_read_geometry(). The old functions were not
getters and setters and thus the names were misleading.
2009-09-20 13:17:27 +02:00
Martin Nordholts 4ab58d2e77 app: Have only one GimpDialogFactoryEntry member in GimpSessionInfo
Simplify the code a bit by replacing the 'toplevel_entry' and
'dockable_entry' members in GimpSessionInfo with a single
'factory_entry'. We compensate for this by adding a 'dockable'
gboolean to GimpDialogFactoryEntry.
2009-09-20 12:24:41 +02:00
Martin Nordholts 44d5728d7b app: Add and use factory entry related getters for GimpSessionInfo
Add GimpSessionInfo getters for a bunch of dialog factory entry
fields. This moves much of the GimpDock special casing to a common
place and also reduces direct access to session info fields.
2009-09-20 11:43:41 +02:00
Martin Nordholts 8d86735f20 app: Increase scope of 'info' in gimp_dialog_factory_add_dialog()
Increase scope of 'info' in gimp_dialog_factory_add_dialog() so we can
use it at the end of the function.
2009-09-20 11:33:22 +02:00
Martin Nordholts 6460385553 app: Add docs to GimpSessionInfo related classes 2009-09-20 10:26:32 +02:00
Martin Nordholts 09b04c62c9 app: Introduce and use gimp_dialog_factory_dialog_sane()
Collect common error checking in a new helper function
gimp_dialog_factory_dialog_sane().
2009-09-20 10:25:13 +02:00
Martin Nordholts c8853243ea app: Clarify session_init() a bit
Clarify session_init() by adding comments and using
gimp_config_deserialize() and g_str_equal() in sessionrc parsing.
2009-09-19 18:37:17 +02:00
Martin Nordholts 93d8b91d49 app: Also allow GIMP_DEBUG as debug environment variable
Also allow GIMP_DEBUG as debug environment variable since that is what
you would guess the name is if you used e.g. the GDK_DEBUG environment
variable before.
2009-09-19 16:03:43 +02:00
Michael Natterer 82c48eeb9e Indentation fix 2009-09-19 15:09:56 +02:00
Michael Natterer b77cbdf3a1 More tool event log output and some minor whitespace cleanup 2009-09-19 15:09:55 +02:00
Martin Nordholts fca590925b app/tests: Add dockrc to session regression testing
Add dockrc to session regression testing and do some general cleanups
and generalizations in the test.
2009-09-19 13:04:18 +02:00
Martin Nordholts 6e0befa6ba app: Add regression testing for sessionrc/docks
Add a regression test for sessionrc parsing, handing and writing. The
test work in the following way: GIMP starts so that sessionrc is
deserialized and stored internally, the UI is shown, and then the
internal data structure about windows is serialized to a new
sessionrc. The test makes sure that a new sessionrc actually has been
created, and then that the content of the new file is identical to the
old one.
2009-09-17 01:56:17 +02:00
Martin Nordholts dc51d81671 app: Don't use the gimpdir for WM tests
The WM tests mess up the GIMP dir, in particular any sessionrc if it
exists, due to the interface never being shown. Make the WM test use a
tmp dir to avoid that.
2009-09-17 01:51:54 +02:00
Martin Nordholts 05eb29b766 app: Don't blindly increment last-tip-shown
Don't blindly increment last-tip-shown so that the sessionrc is not
modified between each GIMP run. The change is to make it easier to
write regression tests for sessionrc. Eventually we might want some
proper fix.
2009-09-17 01:51:54 +02:00
Martin Nordholts 1923280e57 app: Add gimp_test_run_temp_mainloop()
Add gimp_test_run_temp_mainloop() which is a helper function for tests
that wants to run a main loop for a while. Useful when you want GIMP's
state to settle before doing tests.
2009-09-17 01:51:53 +02:00
Martin Nordholts 0601229f9f app: Add show_gui parameter to gimp_init_for_gui_testing()
Add show_gui parameter to gimp_init_for_gui_testing() so that we can
have tests that shows the the actual GIMP interface.
2009-09-17 01:51:53 +02:00
Martin Nordholts c847b56d0e app: Add GIMPDIR for tests
Add GIMPDIR for tests, both to get rid of warning about missing
tags.xml and for future usage.
2009-09-17 01:51:53 +02:00
Martin Nordholts fb549cdabf app: Call gimp_exit() in tests to avoid warnings about broken pipes 2009-09-17 01:51:53 +02:00
Michael Natterer ab6406faa8 gui_sanity_check(): bump GTK+ version here too 2009-09-16 22:08:36 +02:00
Michael Natterer ff3ca8eee3 Don't lose the active item when reordering between containers of a tree
Implement GimpContainerView::insert_item_after() and select the newly
inserted item if it is the active item in the image.
2009-09-16 20:00:48 +02:00
Michael Natterer ebe72148dd Add new vfunc GimpContainerView::insert_item_after()
The new function is called after the item is inserted. This is a much
smaller change than turning all vfuncs into signals just to be able
connect_after to one of them.
2009-09-16 19:53:13 +02:00
Sven Neumann 6700caafb2 Fix error handling in gimp-file-save PDB invoker 2009-09-15 23:01:29 +02:00
Michael Natterer 8734c71150 Build "tests" after "." 2009-09-15 21:05:08 +02:00
Martin Nordholts e87ed66ba7 app: Don't cast GimpDock to GimpDockWindow
In preparation for making GimpDock inherit from a non-window, stop
casting GimpDocks to GimpDockWindows. Instead look up the toplevel
widget for a dock and get the dock window that way.
2009-09-15 07:58:14 +02:00
Martin Nordholts 17f0b1aa1e app: Add and use windows_menu_dock_to_merge_id() 2009-09-15 07:17:00 +02:00
Martin Nordholts 8ffda9d20f app: Add and use windows_actions_dock_to_action_name() 2009-09-14 23:36:22 +02:00
Martin Nordholts 531c3d6253 app: Update default export filename precedences
Update export filename priorities according to changes in spec. Also
consistently use GIMP_FILE_EXPORT_URI_KEY instead of
GIMP_FILE_EXPORT_TO_URI_KEY. They have the same value.
2009-09-14 23:36:22 +02:00
Michael Natterer 61e76b4bff Random doc fixes 2009-09-14 21:40:09 +02:00
Michael Natterer 2c43da09e0 Random doc fixes 2009-09-14 21:39:46 +02:00
Michael Natterer be23b17a17 Add missing boilerplate macro 2009-09-14 21:39:19 +02:00
Michael Natterer b5b8aff42d Make class and instance structs public
There is no need to keep these specific structs hidden and
gtk-doc likes it better that way.
2009-09-14 21:38:30 +02:00
Michael Natterer 17f345fa1a Add missing boilterplate macro 2009-09-14 21:37:53 +02:00
Michael Natterer 892363605c Random doc fix 2009-09-14 21:36:50 +02:00
Michael Natterer fd224caa10 Make sure don't lose the selected item when the tree get collapsed
Collapsing the tree gets rid of any selection in the collapsed branch,
and doesn't restore it upon exapnding. So connect to the
GtkTreeView::row-expanded signal and select the active item manually.

Had to add evil hack that makes sure we don't try this on child items
that are currently being inserted, because our parent class has no
choice but to expand the tree while the item is not completely
inserted in all subclasses yet.
2009-09-13 22:39:01 +02:00
Michael Natterer 717b4e6a07 Fix undoing a group layer type conversion
* app/core/gimpdrawable.[ch]: add "gboolean push_undo" to
  GimpDrawable::convert_type().

* app/core/gimpdrawable-convert.[ch]: same here for the gray and rgb
  conversion functions.

* app/core/gimpchannel.c
* app/core/gimplayer.c: pass FALSE when called from GimpItem::convert()
  because it can be called on unattached items only.

* app/core/gimpimage-convert.c: pass TRUE.

* app/core/core-enums.[ch]
* app/core/gimpgrouplayerundo.[ch]
* app/core/gimpimage-undo-push.[ch]: add GIMP_UNDO_GROUP_LAYER_CONVERT
  which simply calls gimp_drawable_convert_type() with the old type
  when undone/redone.

* app/core/gimpgrouplayer.c: push a group layer convert undo so this
  can be properly undone/redone.
2009-09-13 19:24:19 +02:00
Martin Nordholts 2ac7cedbfc app: Make GimpDockbook instance data private
Make GimpDockbook instance data private and add necessary getters and
setters.
2009-09-13 16:30:09 +02:00
Martin Nordholts 67128d6034 app: Add GimpDock::set_host_geometry_hints()
In order to allow the toolbox dock to set geometry hints on the
GtkWindow it is in, introduce host geometry hint setting through a new
virtual function GimpDock::set_host_geometry_hints() and a new
"geometry-invalidated" signal.

Docks that needs to setup geometry hints on the window they are in
call gimp_dock_invalidate_geometry(). The GimpDockWindow will listen
to this and give the dock a chance to set geometry hints (or any setup
really) on the GimpDockWindow.
2009-09-13 14:14:08 +02:00
Martin Nordholts a23a220d60 app: Add and use GimpDockWindow window title infrastructure
Add a "title-invalidated" signal to GimpDock and a virtual function
GimpDock::get_title(). When GimpDocks have a state change that their
title depends on they call gimp_dock_invalidate_title(). The
GimpDockWindow listens to this signal and update its window title
using GimpDock::get_title() in an idle handler.
2009-09-13 13:14:18 +02:00
Martin Nordholts 0d4e8d0526 app: Move 'Recently Closed Docks' logic to GimpDockWindow
Move 'Recently Closed Docks' logic from GimpDock to
GimpDockWindow. GimpDock is now free of explicit GtkWindow
dependencies.
2009-09-13 12:04:50 +02:00
Martin Nordholts dc3521e074 app: Add and use gimp_dock_get_n_dockables() 2009-09-13 11:51:39 +02:00
Martin Nordholts fb99f99788 Move dock window themeing to GimpDockWindow
Move the dock window related themeing namely default dock heght and
font scale from GimpDock to GimpDockWindow to get rid of yet another
GtkWindow dependency from GimpDock.

Note that this change requires gtkrc updates where "GimpDock::" needs
to be repaced with "GimpDockWindow::".
2009-09-13 11:23:02 +02:00
Martin Nordholts fc3ab53645 app: Get rid of GimpImageDock typedef 2009-09-13 11:08:38 +02:00
Martin Nordholts 12494097b0 app: Explicitly init dialog_factory member in GimpDockWindow::_init() 2009-09-13 10:14:26 +02:00
Martin Nordholts 88e6fe1e62 app: Add GimpDialogFactory property to GimpDockWindow
Add a GimpDialogFactory property to GimpDockWindow so that it can get
rid of its GimpDock dependency. We need to call the property
"gimp-dialog-factory" instead of "dialog-factory" though as long as
GimpDock subclasses GimpDockWindow.
2009-09-13 09:49:56 +02:00
Martin Nordholts 0fc1a32ad0 app: Kill GimpImageDock
Get rid of GimpImageDock and make its subclasses inherit directly from
GimpDock instead.
2009-09-13 09:31:21 +02:00
Martin Nordholts 3532acbec6 app: Move UI manager from GimpImageDock to GimpDockWindow
Move the GimpUIManager from GimpImageDock to GimpDockWindow. This
includes making the ui_manager_name class-member of GimpImageDock a
normal instance member of GimpDockWindow since the UI manager name no
longer can be configured at the class level.
2009-09-13 09:22:59 +02:00
Martin Nordholts f5d1c1ba4d app: Add and use gimp_image_dock_get_ui_manager() 2009-09-12 22:23:10 +02:00
Sven Neumann 65e09758ef Bug 595003 - Error in string "Lower this tool Lower this tool..."
Fix tooltips for raise/lower buttons in the GimpToolEditor widget.
2009-09-12 20:33:25 +02:00
Michael Natterer 2af860e6a6 Add GimpProjectable::get_image_type()
Needed because a group layer's projection can have a different type
than its image, at least at some pathologic moment during image type
conversion. But even if it didn't, it's cleaner this way anyway.

* app/core/gimpprojectable.[ch]: add the new vfunc plus public API.

* app/core/gimpprojection.c: use it instead of using the type of the
  image returned by gimp_projectable_get_image(). The get_image()
  function is now unused in the projection and only needs to stay
  because the projection is also a GimpPickable.

* app/core/gimpgrouplayer.c: implement GimpProjectable::get_image_type().
2009-09-12 19:24:01 +02:00
Martin Nordholts 8794d2481a Bug 594998 - Keyboard shortcuts does not work for first image when dock is focused
The dock needs to listen to image changes in the context and not only
display changes since the introduction of the empty-image-window does
not cause any display changes when creating the first image.
2009-09-12 14:57:46 +02:00
Martin Nordholts e2388ed123 app: Clarify why each dock has its own context 2009-09-12 13:29:34 +02:00
Michael Natterer 0f918e75a4 Implement GimpDrawable::convert_type()
Don't convert the pixels but reallocate the group's projection for the
new type. This breaks badly on undo, don't bother to try yet...
2009-09-11 22:03:55 +02:00
Michael Natterer 53c9eeee82 Use gimp_drawable_convert_type() to convert to gray and rgb 2009-09-11 22:03:55 +02:00
Michael Natterer cd60b9ef5c gimp_channel_convert(): use gimp_drawable_convert_type() 2009-09-11 22:03:54 +02:00
Michael Natterer c6fb6d0ceb Implement GimpDrawable::convert_type()
Move pixel conversion code from gimp_layer_convert() to the new
gimp_layer_convert_type() implementation and call
gimp_drawable_convert_type() from convert(). In convert_type(), simply
chain up to convert to gray and rgb and only implement indexed
conversion ourselves.
2009-09-11 22:03:54 +02:00
Michael Natterer 86a264e9f2 Add new virtual function GimpDrawable::convert_type()
This may look like duplication of GimpItem::convert() but in fact will
fix the longstanding uglyness that GimpItem::convert() both transfers
an item to another image *and* converts the image type of drawables.
When this refactoring is done, GimpItem::convert() will only move an
item to another image, and its implementation in GimpDrawable classes
will call GimpDrawable::convert_type() to convert the pixels to
whatever format.

Takes a "dest_image" parameter anyway because for converting to
indexed we need the destination colormap. The default impl in
GimpDrawable can only convert to gray and rgb however.
2009-09-11 22:03:54 +02:00
Manish Singh f857e70e26 Ignore libapp.a 2009-09-11 12:58:13 -07:00
Martin Nordholts 45a8d1f487 app: Pass dock roles as construction parameters
In order to keep window specific settings as local as possible, also
move the role setting to dock construction instead of having it in
init.
2009-09-10 22:25:00 +02:00
Martin Nordholts 5b74dd27ef app: Move window init code from GimpDock to GimpDockWindow
Move window init code common to all docks from GimpDock to
GimpDockWindow.
2009-09-10 22:13:21 +02:00
Martin Nordholts 26fbeebf02 app: Set the dock-window-hint centrally in GimpDockWindow
Set the dock-window-hint centrally in GimpDockWindow instead of both
in GimpToolbox and GimpMenuDock.
2009-09-10 22:03:39 +02:00
Martin Nordholts 81d961423a app: Add GimpContext property to GimpDockWindow
The GimpDockWindow will need to have a GimpContext so add such a
property but call it "gimp-context" for now to avoid clashing with
"context" of GimpDock.
2009-09-10 22:03:30 +02:00
Manish Singh 3682f7680f Fix syntax error 2009-09-09 17:38:42 -07:00
Martin Nordholts 76a2522a43 app: Cleanup PROP_WEB_BROWSER code 2009-09-09 23:40:44 +02:00
Martin Nordholts e1faf82e7d Get rid of toolbox-window-hint, use dock-window-hint instead
Since the toolbox no longer is the main window with a menu, use the
same hint for the toolbox (which actually is a dock) as for the other
docks.
2009-09-09 23:37:38 +02:00
Martin Nordholts 0110eb0cdf app: Introduce GimpDockWindow
Introduce GimpDockWindow and make GimpDock inherit from it. Right now
it is just a GimpWindow, but window logic from GimpDock and subclasses
will gradually be moved here so that we eventually can make GimpDock a
GtkBin. That in turn will allow us to put several GimpDocks next to
each other in columns, or GimpDocks in an image window.
2009-09-09 18:22:05 +02:00
Michael Natterer 45f05b272c gimp_item_real_duplicate(): don't set lock-content if it can't be set
Also use the proper APIs to set visible, linked and lock-content
instead of accessing the item struct directly.
2009-09-08 22:09:53 +02:00
Michael Natterer a8b0e3c943 gimp_layer_duplicate(): don't set lock-alpha if it can't be set 2009-09-08 22:09:03 +02:00
Michael Natterer 0c57e8c68e gimp_layer_transform_color(): don't assume the dest region has alpha
Don't blindly fill the dest region's alpha channel even if it has
none. Fixes longstanding bug that made things without alpha dropped
to indexed images to arrive broken.
2009-09-08 20:54:51 +02:00
Michael Natterer f2f741a26e Add gimp_drawable_convert_rgb() and gimp_drawable_convert_grayscale()
The new functions reall convert the drawable this time, using the
previously renamed convert_tiles functions. Remove tile manager
fiddling from all callers and leave it there only for converting to
indexed.
2009-09-08 20:36:51 +02:00
Michael Natterer 83c79bad5d Use gboolean instead of gint for boolean value 2009-09-08 19:57:50 +02:00
Michael Natterer f3bae9ac57 Remove "old_base_type" parameters from gimp_drawable_convert_tiles_foo()
I have no idea how ancient these parameters were, but the drawable
knows about its type itself, so no need to pass it in.
2009-09-08 19:46:20 +02:00
Michael Natterer 1ecf6b5bc8 Rename the functions in gimpdrawable-convert.[ch]
Rename them from gimp_drawable_convert_foo() to
gimp_drawable_convert_tiles_foo() because they don't convert the
drawable itself, they convert its tiles into passed-in tiles.
2009-09-08 19:46:19 +02:00
Michael Natterer e77f6b10f4 Use gimp_drawable_type() instead of drawable->type 2009-09-08 19:46:19 +02:00
Michael Natterer 13ac22d800 Add %T which expends to the active drawable's type
This is not really generally useful, but I needed it for debugging and
it doesn't hurt.
2009-09-08 19:46:19 +02:00
Michael Natterer d1f767d9b6 Make gimp_image_get_layer,channel,vectors_by_name,tattoo() more readable
Add local GimpItemStack variables instead of having the functions'
entire code in one line.
2009-09-08 19:46:18 +02:00
Martin Nordholts 810f325a16 app: Add regression test for window roles 2009-09-08 19:32:39 +02:00
Martin Nordholts 86f8e996d7 app: Add gimp_init_for_gui_testing()
In order to allow test cases to test GUI code, add
gimp_init_for_gui_testing() which is like gimp_init_for_testing() but
includes initializations of GUI parts.
2009-09-08 19:28:43 +02:00
Martin Nordholts b61c971f22 app: Add gimp_set/get_show_gui()
For test cases we typically don't want to present any windows, so
allow test cases to turn that off.
2009-09-08 19:26:57 +02:00
Martin Nordholts a8e5dea309 app: Print error message when tag cache parsing fails 2009-09-08 17:48:39 +02:00
Martin Nordholts 3e6f6088ee app: Create libapp.a for convenient test case linking
Create libapp.a for convenient test case linking and link the existing
tests against that.
2009-09-07 23:05:11 +02:00
Michael Natterer 84b02fb978 Refuse to convert layer trees to indexed 2009-09-07 21:09:24 +02:00
Michael Natterer 60ac874cd0 Refuse to add group layers to indexed images 2009-09-07 21:08:25 +02:00
Michael Natterer 1961036f5e Add gimp_item_stack_is_flat() which returns TRUE if it's not a tree 2009-09-07 21:07:44 +02:00
Michael Natterer 5bb149fa9d Add some more checks that come for free to the existing tests 2009-09-07 20:52:10 +02:00
Michael Natterer a0914f8df1 Add test-layers to .gitignore 2009-09-07 19:11:21 +02:00
Michael Natterer a17f7e0d4f Add a layers test
Contains the add-layers test from the "template" test and also a
remove-layers one.
2009-09-07 19:09:48 +02:00
Michael Natterer 6542617751 Initialize some more stuff so real tests are possible
* tests.[ch]: initialize base so we have a tile cache and add
  parameter "gboolean use_cpu_accel" so we can test stuff both with
  and without using CPU features.

* tests/test-layer-grouping.c: changed accordingly. Call g_thread_init()
  so the tile cache works (and to be on the safe side in general).
2009-09-07 19:06:57 +02:00
Michael Natterer 2e2c7aaf34 Minor formatting cleanup 2009-09-07 18:55:18 +02:00
Michael Natterer 4df9b25217 Add facility to compress multiple group layer resizings into one
* app/core/gimpgrouplayer.[ch]: add gimp_group_layer_suspend_resize()
  and gimp_group_layer_resume_resize() and call them around functions
  where all a group's children are transformed (translated, resized
  etc).  This way we go from the worst case of reallocating the
  group's projection tiles once for each child down to exactly one
  reallocation.

* app/core/Makefile.am
* app/core/core-enums.[ch]
* app/core/core-types.h
* app/core/gimpimage-undo-push.[ch]
* app/core/gimpgrouplayerundo.[ch]: add new undo class
  GimpGroupLayerUndo which implements undos for suspend/resume of
  group layers and calls them in reverse order when undoing.
2009-09-07 13:12:54 +02:00
Michael Natterer c552d2f065 (SUBDIRS): gegl and text live on top of core, xcf on top of plug-ins 2009-09-07 11:06:12 +02:00
Michael Natterer 56a17ed118 Forgot one "Group Layer" -> "Layer Group" string change 2009-09-07 10:58:55 +02:00
Martin Nordholts 60b90b817a app: GimpDockPriv -> GimpDockPrivate, priv -> p 2009-09-06 00:15:25 +02:00
Martin Nordholts 04ef83c795 app: Add some comments on classes used for the dock system 2009-09-05 23:52:32 +02:00
Martin Nordholts 6fd1e5d50b app: Compile vectors and paint after core
Compile vectors and paint after core since they need the
core-generated core/gimpmarshal.h
2009-09-05 19:11:39 +02:00
Martin Nordholts 8f999e0842 app: Don't initialize Gimp verbosely in gimp_init_for_testing()
The verbose output of Gimp has little relevance to unit testing,
disable it.
2009-09-05 16:19:52 +02:00
Martin Nordholts d6c8fa9783 app: Update .gitignore 2009-09-05 16:09:57 +02:00
Martin Nordholts 071153124a app: Reverse order of SUBDIRS
The SUBDIRS var should be sorted on build-order, not link-order.
2009-09-05 16:08:23 +02:00