diff --git a/krita/CMakeLists.txt b/krita/CMakeLists.txt
index da2e001e2f7..e9dd75e130b 100644
--- a/krita/CMakeLists.txt
+++ b/krita/CMakeLists.txt
@@ -1,151 +1,152 @@
project(krita)
#
# The reason for this mode is that the Debug mode disable inlining
#
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS_KRITADEVS "-O3 -g" CACHE STRING "" FORCE)
endif(CMAKE_COMPILER_IS_GNUCXX)
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
endif(MSVC)
include(CheckFunctionExists)
macro_optional_find_package(GLEW)
macro_bool_to_01(GLEW_FOUND HAVE_GLEW)
configure_file(config-glew.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-glew.h )
macro_log_feature(HAVE_GLEW "GLEW" "The OpenGL Extension Wrangler Library" "http://glew.sourceforge.net" FALSE "" "Required by the Krita shader filter plugin")
if(HAVE_GLEW)
message(STATUS "GLEW found!")
else(HAVE_GLEW)
message(STATUS "GLEW NOT found - krita will not be able to use OpenGL shaders")
endif(HAVE_GLEW)
if(HAVE_OPENGL)
message(STATUS "OpenGL found -- krita will be able to use OpenGL for hardware accelerated rendering.")
else(HAVE_OPENGL)
message(STATUS "OpenGL NOT found - krita will not be able to use OpenGL for hardware accelerated rendering.")
endif(HAVE_OPENGL)
macro_optional_find_package(OCIO)
macro_log_feature(OCIO_FOUND "OCIO" "The OpenColorIO Library" "http://www.opencolorio.org" FALSE "" "Required by the Krita LUT docker")
macro_bool_to_01(OCIO_FOUND HAVE_OCIO)
configure_file(config-ocio.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ocio.h )
if(UNIX)
set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};m")
endif(UNIX)
check_function_exists(powf HAVE_POWF)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-powf.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-powf.h)
set(LINK_OPENEXR_LIB)
if(OPENEXR_FOUND)
include_directories(${OPENEXR_INCLUDE_DIR})
set(LINK_OPENEXR_LIB ${OPENEXR_LIBRARIES})
add_definitions(${OPENEXR_DEFINITIONS})
endif(OPENEXR_FOUND)
if(WIN32)
if(MSVC)
# C4522: 'class' : multiple assignment operators specified
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4522")
endif(MSVC)
endif(WIN32)
set(KRITA_INCLUDES
# For config-*.h
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_SOURCE_DIR}/krita/image
${CMAKE_SOURCE_DIR}/krita/image/brushengine
${CMAKE_SOURCE_DIR}/krita/image/tiles
${CMAKE_SOURCE_DIR}/krita/ui
${CMAKE_SOURCE_DIR}/krita/ui/canvas
${CMAKE_SOURCE_DIR}/krita/ui/tool
${CMAKE_SOURCE_DIR}/krita/ui/flake
${CMAKE_SOURCE_DIR}/krita/ui/widgets
# For generated files from .ui
${CMAKE_BINARY_DIR}/krita/ui
${PIGMENT_INCLUDES}
${KOTEXT_INCLUDES}
${KOMAIN_INCLUDES}
${CMAKE_SOURCE_DIR}/libs/widgets/resources
${CMAKE_SOURCE_DIR}/libs/widgets/colorwidgets
-
+ ${CMAKE_SOURCE_DIR}/libs/widgetutils
+
${EIGEN2_INCLUDE_DIR}
# 'Export' this for use by filters
CACHE INTERNAL ""
)
include_directories(${KRITA_INCLUDES})
if(HAVE_OPENGL)
include_directories(${OPENGL_INCLUDE_DIR})
if(HAVE_GLEW)
include_directories(${GLEW_INCLUDE_DIR})
endif(HAVE_GLEW)
endif(HAVE_OPENGL)
add_subdirectory( image )
add_subdirectory( ui )
add_subdirectory( dtd )
add_subdirectory( plugins )
add_subdirectory( data )
add_subdirectory( pics )
add_subdirectory( benchmarks )
set(kritapart_PART_SRCS krita_part_init.cc)
kde4_add_plugin(kritapart ${kritapart_PART_SRCS})
target_link_libraries(kritapart kritaui)
install(TARGETS kritapart DESTINATION ${PLUGIN_INSTALL_DIR})
set(krita_KDEINIT_SRCS main.cc)
kde4_add_app_icon(krita_KDEINIT_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/pics/hi*-app-krita.png")
kde4_add_kdeinit_executable(krita ${krita_KDEINIT_SRCS})
if (Q_WS_MAC)
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.template)
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "org.calligra.krita")
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Krita 2")
endif (Q_WS_MAC)
target_link_libraries(kdeinit_krita kritaui)
target_link_libraries(krita ${QT_QTCORE_LIBRARY} kdeinit_krita)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
find_package(OpenCTL)
find_package(OpenShiva)
find_package(QtShiva )
if(NOT ${OPENCTL_VERSION} VERSION_GREATER 0.9.15.1 )
# Workaround for the following issues:
# http://bugs.kde.org/274675 http://bugs.kde.org/248051
# http://redmine.opengtl.org/issues/72
message(status "Found OpenGTL < 0.9.15.1, on a 64 bits system, krita will be forced linked to the libraries to make sure opengtl symbols are available")
if(HAVE_OPENSHIVA AND HAVE_QTSHIVA)
target_link_libraries(krita ${OPENSHIVA_LDFLAGS})
endif()
if(OPENCTL_FOUND AND OPENEXR_FOUND)
target_link_libraries(krita ${OPENCTL_LDFLAGS})
endif()
endif()
endif()
install(TARGETS krita ${INSTALL_TARGETS_DEFAULT_ARGS})
install(TARGETS kdeinit_krita ${INSTALL_TARGETS_DEFAULT_ARGS})
install( PROGRAMS krita.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
install( FILES kritapart.desktop DESTINATION ${SERVICES_INSTALL_DIR})
install( FILES krita.rc DESTINATION ${DATA_INSTALL_DIR}/krita)
diff --git a/krita/ui/CMakeLists.txt b/krita/ui/CMakeLists.txt
index cc2efc8968b..2d8abc47169 100644
--- a/krita/ui/CMakeLists.txt
+++ b/krita/ui/CMakeLists.txt
@@ -1,332 +1,332 @@
include_directories( ${KOTEXT_INCLUDES}
${TEXTLAYOUT_INCLUDES}
${CMAKE_SOURCE_DIR}/libs/pigment/colorprofiles
- ${CMAKE_CURRENT_SOURCE_DIR}/flake
+ ${CMAKE_CURRENT_SOURCE_DIR}/flake
${CMAKE_CURRENT_SOURCE_DIR}/pigment/resources
${CMAKE_CURRENT_SOURCE_DIR}/widgets/resources
${CMAKE_CURRENT_SOURCE_DIR}/openrastertk
${CMAKE_SOURCE_DIR}/krita/image/metadata
${EXIV2_INCLUDE_DIR} )
add_subdirectory( tests )
configure_file(config-processor.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-processor.h )
include(kdefx.cmake)
set(kritaui_LIB_SRCS
canvas/kis_canvas_widget_base.cpp
canvas/kis_canvas2.cpp
canvas/kis_canvas_controller.cpp
canvas/kis_display_filter.cpp
canvas/kis_tool_proxy.cpp
canvas/kis_canvas_decoration.cc
canvas/kis_coordinates_converter.cpp
canvas/kis_grid_manager.cpp
canvas/kis_grid_painter_configuration.cpp
canvas/kis_perspective_grid_manager.cpp
canvas/kis_prescaled_projection.cpp
canvas/kis_qpainter_canvas.cpp
canvas/kis_projection_backend.cpp
canvas/kis_update_info.cpp
canvas/kis_image_patch.cpp
canvas/kis_image_pyramid.cpp
dialogs/kis_dlg_adj_layer_props.cc
dialogs/kis_dlg_adjustment_layer.cc
dialogs/kis_dlg_filter.cpp
dialogs/kis_dlg_generator_layer.cpp
dialogs/kis_dlg_image_properties.cc
dialogs/kis_dlg_layer_properties.cc
dialogs/kis_dlg_preferences.cc
dialogs/kis_dlg_blacklist_cleanup.cpp
flake/kis_node_dummies_graph.cpp
flake/kis_dummies_facade_base.cpp
flake/kis_dummies_facade.cpp
flake/kis_node_shapes_graph.cpp
flake/kis_node_shape.cpp
flake/kis_shape_controller.cpp
flake/kis_shape_layer.cc
flake/kis_shape_layer_canvas.cpp
flake/kis_shape_selection.cpp
flake/kis_shape_selection_canvas.cpp
flake/kis_shape_selection_model.cpp
kis_autogradient.cc
kis_autogradient_resource.cc
kis_bookmarked_configurations_editor.cc
kis_bookmarked_configurations_model.cc
kis_bookmarked_filter_configurations_model.cc
kis_canvas_resource_provider.cpp
kis_categorized_item_delegate.cpp
kis_clipboard.cc
kis_config.cc
kis_config_notifier.cpp
kis_color_data_list.cpp
kis_control_frame.cpp
kis_composite_ops_model.cc
kis_paint_ops_model.cpp
kis_cursor.cc
kis_custom_palette.cc
kis_custom_pattern.cc
kis_doc2.cc
kis_part2.cpp
kis_factory2.cc
kis_filter_handler.cc
kis_filter_manager.cc
kis_filters_model.cc
kis_histogram_view.cc
kis_image_manager.cc
kis_image_view_converter.cpp
kis_import_catcher.cc
kis_layer_manager.cc
kis_mask_manager.cc
kis_mimedata.cpp
kis_node_commands_adapter.cpp
kis_node_manager.cpp
kis_node_model.cpp
kis_model_index_converter_base.cpp
kis_model_index_converter.cpp
kis_model_index_converter_show_all.cpp
kis_painting_assistant.cc
kis_painting_assistants_manager.cc
kis_paintop_box.cc
kis_palette_manager.cpp
kis_popup_palette.cpp
kis_png_converter.cpp
kis_preference_set_registry.cpp
kis_print_job.cpp
kis_resource_server_provider.cpp
kis_selection_decoration.cc
kis_selection_manager.cc
kis_statusbar.cc
kis_view2.cpp
kis_zoom_manager.cc
ko_favorite_resource_manager.cpp
kis_workspace_resource.cpp
kis_mirror_visitor.cpp
kisexiv2/kis_exif_io.cpp
kisexiv2/kis_exiv2.cpp
kisexiv2/kis_iptc_io.cpp
kisexiv2/kis_xmp_io.cpp
kra/kis_kra_utils.cpp
kra/kis_kra_load_visitor.cpp
kra/kis_kra_loader.cpp
kra/kis_kra_save_visitor.cpp
kra/kis_kra_saver.cpp
kra/kis_kra_savexml_visitor.cpp
opengl/kis_opengl.cpp
opengl/kis_opengl_canvas2.cpp
opengl/kis_opengl_image_textures.cpp
opengl/kis_texture_tile.cpp
openrastertk/kis_open_raster_stack_load_visitor.cpp
openrastertk/kis_open_raster_stack_save_visitor.cpp
recorder/kis_node_query_path_editor.cc
recorder/kis_recorded_action_creator.cc
recorder/kis_recorded_action_creator_factory.cc
recorder/kis_recorded_action_creator_factory_registry.cc
recorder/kis_recorded_action_editor_factory.cc
recorder/kis_recorded_action_editor_factory_registry.cc
recorder/kis_recorded_filter_action_editor.cc
recorder/kis_recorded_filter_action_creator.cpp
recorder/kis_recorded_paint_action_editor.cc
tool/kis_selection_tool_helper.cpp
tool/kis_selection_tool_config_widget_helper.cpp
tool/kis_shape_tool_helper.cpp
tool/kis_tool.cc
tool/kis_tool_freehand.cc
tool/kis_painting_information_builder.cpp
tool/kis_tool_freehand_helper.cpp
tool/kis_tool_multihand_helper.cpp
tool/kis_figure_painting_tool_helper.cpp
tool/kis_recording_adapter.cpp
tool/kis_tool_paint.cc
tool/kis_tool_shape.cc
tool/kis_tool_select_base.cpp
tool/kis_tool_ellipse_base.cpp
tool/kis_tool_rectangle_base.cpp
tool/kis_tool_polyline_base.cpp
tool/kis_color_picker_utils.cpp
tool/kis_resources_snapshot.cpp
tool/strokes/freehand_stroke.cpp
tool/strokes/kis_painter_based_stroke_strategy.cpp
widgets/kis_channelflags_widget.cpp
widgets/kis_cmb_composite.cc
widgets/kis_paintop_list_widget.cpp
widgets/kis_cmb_idlist.cc
widgets/kis_color_space_selector.cc
widgets/kis_curve_widget.cpp
widgets/kis_custom_image_widget.cc
widgets/kis_double_widget.cc
widgets/kis_filter_selector_widget.cc
widgets/kis_gradient_chooser.cc
widgets/kis_gradient_slider_widget.cc
widgets/kis_gradient_slider.cpp
widgets/kis_iconwidget.cc
widgets/kis_mask_widgets.cpp
widgets/kis_meta_data_merge_strategy_chooser_widget.cc
widgets/kis_multi_bool_filter_widget.cc
widgets/kis_multi_double_filter_widget.cc
widgets/kis_multi_integer_filter_widget.cc
widgets/kis_multipliers_double_slider_spinbox.cpp
widgets/kis_paintop_presets_popup.cpp
widgets/kis_paintop_presets_chooser_popup.cpp
widgets/kis_pattern_chooser.cc
widgets/kis_popup_button.cc
widgets/kis_preset_chooser.cpp
widgets/kis_progress_widget.cpp
widgets/kis_selection_options.cc
widgets/kis_scratch_pad.cpp
widgets/kis_scratch_pad_event_filter.cpp
widgets/kis_preset_selector_strip.cpp
widgets/kis_tree_view_popup.cc
widgets/kis_slider_spin_box.cpp
widgets/kis_wdg_generator.cpp
widgets/kis_workspace_chooser.cpp
widgets/squeezedcombobox.cpp
widgets/kis_categorized_list_view.cpp
widgets/kis_widget_chooser.cpp
widgets/kis_tool_button.cpp
widgets/kis_floating_message.cpp
# widgets/kis_light_source.cpp
# widgets/kis_light_stage.cpp
input/kis_input_manager.cpp
input/kis_abstract_input_action.cpp
input/kis_tool_invocation_action.cpp
input/kis_pan_action.cpp
input/kis_alternate_invocation_action.cpp
input/kis_rotate_canvas_action.cpp
input/kis_zoom_action.cpp
input/kis_show_palette_action.cpp
input/kis_change_primary_setting_action.cpp
input/kis_abstract_shortcut.cpp
input/kis_single_action_shortcut.cpp
input/kis_stroke_shortcut.cpp
input/kis_shortcut_matcher.cpp
kis_ui_action_factory.cpp
kis_ui_action_factory_registry.cpp
actions/kis_selection_action_factories.cpp
)
if(HAVE_OPENGL)
if(HAVE_GLEW)
set(kritaui_LIB_SRCS
${kritaui_LIB_SRCS}
opengl/kis_opengl_shader.cpp
opengl/kis_opengl_fragment_shader.cpp
opengl/kis_opengl_vertex_shader.cpp
opengl/kis_opengl_program.cpp
opengl/kis_opengl_gradient_program.cpp
)
endif(HAVE_GLEW)
set(kritaui_LIB_SRCS
${kritaui_LIB_SRCS}
kis_3d_object_model.cpp
)
endif(HAVE_OPENGL)
add_definitions(${KDE4_ENABLE_EXCEPTIONS})
kde4_add_ui_files(kritaui_LIB_SRCS
forms/wdgfullscreensettings.ui
forms/wdgautogradient.ui
forms/wdggeneralsettings.ui
forms/wdgperformancesettings.ui
forms/wdggridsettings.ui
forms/wdggenerators.ui
forms/wdgcustompalette.ui
forms/wdgbookmarkedconfigurationseditor.ui
forms/wdgapplyprofile.ui
forms/wdgcustompattern.ui
forms/wdglayerproperties.ui
forms/wdgcolorsettings.ui
forms/wdgtabletsettings.ui
forms/wdgcolorspaceselector.ui
forms/wdgdisplaysettings.ui
forms/kis_previewwidgetbase.ui
forms/kis_matrix_widget.ui
forms/wdgselectionoptions.ui
forms/wdgshapeoptions.ui
forms/wdgnewimage.ui
forms/wdgimageproperties.ui
forms/wdgmaskfromselection.ui
forms/wdgmasksource.ui
forms/wdgfilterdialog.ui
forms/wdgmetadatamergestrategychooser.ui
forms/wdgpaintoppresets.ui
forms/wdgpaintopsettings.ui
forms/wdgdlggeneratorlayer.ui
forms/wdgfilterselector.ui
forms/wdgfilternodecreation.ui
forms/wdgpaintactioneditor.ui
forms/wdgmultipliersdoublesliderspinbox.ui
forms/wdgnodequerypatheditor.ui
forms/wdgpresetselectorstrip.ui
forms/wdgdlgblacklistcleanup.ui
)
kde4_add_library(kritaui SHARED ${kritaui_LIB_SRCS} )
target_link_libraries(kritaui ${X11_X11_LIB})
if(GHNS)
- target_link_libraries(kritaui ${KDE4_THREADWEAVER_LIBRARIES} ${KDE4_KFILE_LIBRARY} kritaimage komain kowidgets ${PNG_LIBRARIES} ${EXIV2_LIBRARIES} ${KDE4_KNEWSTUFF3_LIBS})
+ target_link_libraries(kritaui ${KDE4_THREADWEAVER_LIBRARIES} ${KDE4_KFILE_LIBRARY} kritaimage komain kowidgets kowidgetutils ${PNG_LIBRARIES} ${EXIV2_LIBRARIES} ${KDE4_KNEWSTUFF3_LIBS})
else(GHNS)
- target_link_libraries(kritaui ${KDE4_THREADWEAVER_LIBRARIES} ${KDE4_KFILE_LIBRARY} kritaimage komain kowidgets ${PNG_LIBRARIES} ${EXIV2_LIBRARIES})
+ target_link_libraries(kritaui ${KDE4_THREADWEAVER_LIBRARIES} ${KDE4_KFILE_LIBRARY} kritaimage komain kowidgets kowidgetutils ${PNG_LIBRARIES} ${EXIV2_LIBRARIES})
endif (GHNS)
if(HAVE_OPENGL)
target_link_libraries(kritaui ${OPENGL_LIBRARIES} ${QT_QTOPENGL_LIBRARY} ${OPENEXR_LIBRARIES})
set (GL_INTERFACE_LIBRARIES ";${OPENGL_LIBRARIES};${QT_QTOPENGL_LIBRARY}")
if(HAVE_GLEW)
target_link_libraries(kritaui ${GLEW_LIBRARIES})
endif(HAVE_GLEW)
endif(HAVE_OPENGL)
target_link_libraries(kritaui LINK_INTERFACE_LIBRARIES kritaimage komain ${GL_INTERFACE_LIBRARIES} )
set_target_properties(kritaui
PROPERTIES VERSION ${GENERIC_CALLIGRA_LIB_VERSION} SOVERSION ${GENERIC_CALLIGRA_LIB_SOVERSION}
)
install(TARGETS kritaui ${INSTALL_TARGETS_DEFAULT_ARGS})
########### install files ###############
install( FILES
canvas/kis_canvas2.h
canvas/kis_canvas_decoration.h
canvas/kis_coordinates_converter.h
tool/kis_tool.h
kis_cursor.h
kis_view2.h
kis_ui_types.h
# kis_cmb_composite.h
# kis_cmb_idlist.h
# kis_color_cup.h
# kis_config.h
# kis_double_click_event.h
# kis_double_widget.h
# kis_filter_manager.h
# kis_gradient_chooser.h
# kis_gradient_slider_widget.h
# kis_histogram_view.h
# kis_icon_item.h
# kis_iconwidget.h
# kis_itemchooser.h
# kis_label_zoom.h
# kis_move_event.h
widgets/kis_multi_bool_filter_widget.h
widgets/kis_multi_double_filter_widget.h
widgets/kis_multi_integer_filter_widget.h
# kis_paintop_box.h
# kis_previewwidget.h
# kis_tool_non_paint.h
# kis_tool_paint.h
# kis_tool_freehand.h
# kis_tool_dummy.h
# kis_tool_manager.h
# kis_tool_types.h
# KoInputDevice.h
# canvas/kis_perspective_grid_manager.h
DESTINATION ${INCLUDE_INSTALL_DIR})
diff --git a/krita/ui/forms/wdgselectionoptions.ui b/krita/ui/forms/wdgselectionoptions.ui
index ff09883e00f..19fc539a2c7 100644
--- a/krita/ui/forms/wdgselectionoptions.ui
+++ b/krita/ui/forms/wdgselectionoptions.ui
@@ -1,249 +1,184 @@
WdgSelectionOptions
0
0
- 139
- 73
+ 271
+ 106
0
0
-
0
-
-
-
-
- CrossCursor
-
-
- Mode:
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 24
- 16777215
-
-
+
-
+
- Pixel
+ Intersect (Shortcut T)
-
+ ...
true
-
- true
-
-
+
true
- -
-
-
-
- 0
- 0
-
-
-
-
- 24
- 16777215
-
-
+
-
+
- Shape
+ Vector Selection
-
+ ...
true
-
+
true
- -
-
-
- Action:
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 24
- 16777215
-
-
+
Replace (Shortcut R)
-
+ ...
true
true
-
+
true
- -
-
-
-
- 0
- 0
-
-
-
-
- 24
- 16777215
-
-
+
-
+
- Intersect (Shortcut T)
+ Add (Shortcut A)
-
+ ...
true
-
+
true
- -
-
-
-
- 0
- 0
-
-
-
-
- 24
- 16777215
-
+
-
+
+
+ CrossCursor
+
+ Mode:
+
+
+
+ -
+
+
+ Action:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
- Add (Shortcut A)
+ Pixel Selection
-
+ ...
true
-
+
+ true
+
+
true
- -
-
-
-
- 0
- 0
-
-
-
-
- 24
- 16777215
-
-
+
-
+
Subtract (Shortcut S)
-
+ ...
true
-
+
true
- -
+
-
Qt::Horizontal
0
10
-
Anti-aliasing
true
+
+
+ KoGroupButton
+ QToolButton
+
+
+
diff --git a/krita/ui/widgets/kis_selection_options.cc b/krita/ui/widgets/kis_selection_options.cc
index beb6f2e87d7..0738cc04e6d 100644
--- a/krita/ui/widgets/kis_selection_options.cc
+++ b/krita/ui/widgets/kis_selection_options.cc
@@ -1,117 +1,123 @@
/*
* Copyright (c) 2005 Boudewijn Rempt
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "kis_selection_options.h"
#include
#include
#include
#include
#include
#include
#include "kis_types.h"
#include "kis_layer.h"
#include "kis_image.h"
#include "kis_selection.h"
#include "kis_paint_device.h"
#include "canvas/kis_canvas2.h"
#include "kis_view2.h"
KisSelectionOptions::KisSelectionOptions(KisCanvas2 * canvas)
: m_canvas(canvas)
{
m_page = new WdgSelectionOptions(this);
Q_CHECK_PTR(m_page);
QVBoxLayout * l = new QVBoxLayout(this);
l->addWidget(m_page);
l->addSpacerItem(new QSpacerItem(0,0, QSizePolicy::Preferred, QSizePolicy::Expanding));
l->setContentsMargins(0,0,0,0);
m_mode = new QButtonGroup(this);
m_mode->addButton(m_page->pixel, PIXEL_SELECTION);
m_mode->addButton(m_page->shape, SHAPE_PROTECTION);
m_action = new QButtonGroup(this);
m_action->addButton(m_page->add, SELECTION_ADD);
m_action->addButton(m_page->subtract, SELECTION_SUBTRACT);
m_action->addButton(m_page->replace, SELECTION_REPLACE);
m_action->addButton(m_page->intersect, SELECTION_INTERSECT);
+ m_page->pixel->setGroupPosition(KoGroupButton::GroupLeft);
+ m_page->shape->setGroupPosition(KoGroupButton::GroupRight);
m_page->pixel->setIcon(koIcon("select_pixel"));
m_page->shape->setIcon(koIcon("select_shape"));
+ m_page->add->setGroupPosition(KoGroupButton::GroupCenter);
+ m_page->subtract->setGroupPosition(KoGroupButton::GroupRight);
+ m_page->replace->setGroupPosition(KoGroupButton::GroupLeft);
+ m_page->intersect->setGroupPosition(KoGroupButton::GroupCenter);
m_page->add->setIcon(koIcon("selection_add"));
m_page->subtract->setIcon(koIcon("selection_subtract"));
m_page->replace->setIcon(koIcon("selection_replace"));
m_page->intersect->setIcon(koIcon("selection_intersect"));
connect(m_mode, SIGNAL(buttonClicked(int)), this, SIGNAL(modeChanged(int)));
connect(m_action, SIGNAL(buttonClicked(int)), this, SIGNAL(actionChanged(int)));
//hide action buttons and antialiasing, if shape selection is active (actions currently don't work on shape selection)
connect(m_page->shape, SIGNAL(clicked()), m_page->lblAction, SLOT(hide()));
connect(m_page->shape, SIGNAL(clicked()), m_page->add, SLOT(hide()));
connect(m_page->shape, SIGNAL(clicked()), m_page->subtract, SLOT(hide()));
connect(m_page->shape, SIGNAL(clicked()), m_page->replace, SLOT(hide()));
connect(m_page->shape, SIGNAL(clicked()), m_page->intersect, SLOT(hide()));
connect(m_page->shape, SIGNAL(clicked()), m_page->chkAntiAliasing, SLOT(hide()));
connect(m_page->pixel, SIGNAL(clicked()), m_page->lblAction, SLOT(show()));
connect(m_page->pixel, SIGNAL(clicked()), m_page->add, SLOT(show()));
connect(m_page->pixel, SIGNAL(clicked()), m_page->subtract, SLOT(show()));
connect(m_page->pixel, SIGNAL(clicked()), m_page->replace, SLOT(show()));
connect(m_page->pixel, SIGNAL(clicked()), m_page->intersect, SLOT(show()));
connect(m_page->pixel, SIGNAL(clicked()), m_page->chkAntiAliasing, SLOT(show()));
}
KisSelectionOptions::~KisSelectionOptions()
{
}
int KisSelectionOptions::action()
{
return m_action->checkedId();
}
void KisSelectionOptions::setAction(int action) {
QAbstractButton* button = m_action->button(action);
Q_ASSERT(button);
if(button) button->setChecked(true);
}
bool KisSelectionOptions::antiAliasSelection()
{
return m_page->chkAntiAliasing->isChecked();
}
void KisSelectionOptions::disableAntiAliasSelectionOption()
{
m_page->chkAntiAliasing->hide();
disconnect(m_page->pixel, SIGNAL(clicked()), m_page->chkAntiAliasing, SLOT(show()));
}
void KisSelectionOptions::disableSelectionModeOption()
{
m_page->lblMode->hide();
m_page->pixel->hide();
m_page->shape->hide();
}
#include "kis_selection_options.moc"