diff --git a/krita/CMakeLists.txt b/krita/CMakeLists.txt
index 0ce642ed48..edd2298676 100644
--- a/krita/CMakeLists.txt
+++ b/krita/CMakeLists.txt
@@ -1,104 +1,104 @@
project(krita)
include_directories(SYSTEM
${EIGEN3_INCLUDE_DIR}
${Vc_INCLUDE_DIR}
)
add_subdirectory( dtd )
add_subdirectory( data )
add_subdirectory( integration )
# Install the application icons following the the freedesktop icon theme spec
add_subdirectory( pics/app )
set(krita_SRCS main.cc)
# Set the application icon on the application
if (NOT APPLE)
- file(GLOB ICON_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/*-apps-calligrakrita.png")
+ file(GLOB ICON_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/*-apps-krita.png")
else()
set(ICON_SRCS
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/16-apps-calligrakrita.png"
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/32-apps-calligrakrita.png"
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/48-apps-calligrakrita.png"
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/128-apps-calligrakrita.png"
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/256-apps-calligrakrita.png"
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/512-apps-calligrakrita.png"
- "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/1024-apps-calligrakrita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/16-apps-krita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/32-apps-krita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/48-apps-krita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/128-apps-krita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/256-apps-krita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/512-apps-krita.png"
+ "${CMAKE_CURRENT_SOURCE_DIR}/pics/app/1024-apps-krita.png"
)
endif()
ecm_add_app_icon(krita_SRCS ICONS ${ICON_SRCS})
# Install the mimetype icons
ecm_install_icons(ICONS
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/16-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/22-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/32-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/48-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/64-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/128-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/256-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/512-mimetypes-application-x-krita.png"
"${CMAKE_CURRENT_SOURCE_DIR}/pics/mimetypes/1024-mimetypes-application-x-krita.png"
DESTINATION ${KDE_INSTALL_ICONDIR} THEME hicolor)
# separate listing, both used by Krita and KritaSketch
set(krita_QRCS
${CMAKE_SOURCE_DIR}/krita/krita.qrc
${CMAKE_SOURCE_DIR}/krita/pics/Breeze-dark/breeze-dark-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/Breeze-light/breeze-light-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/layerbox/layerbox-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/layerbox/svg/layerbox-svg-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/layers/layers-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/misc-light/misc-light-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/misc-dark/misc-dark-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/paintops/paintops-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/tools/SVG/16/tools-svg-16-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/tool_transform/tool-transform-icons.qrc
${CMAKE_SOURCE_DIR}/krita/pics/svg/svg-icons.qrc
${CMAKE_SOURCE_DIR}/libs/flake/flake.qrc
${CMAKE_SOURCE_DIR}/libs/widgets/kritawidgets.qrc
${CMAKE_SOURCE_DIR}/pics/icons.qrc
${CMAKE_SOURCE_DIR}/krita/data/aboutdata/aboutdata.qrc
${CMAKE_SOURCE_DIR}/krita/data/shaders/shaders.qrc
${CMAKE_SOURCE_DIR}/krita/data/cursors/cursors.qrc
CACHE INTERNAL "krita_QRCS"
)
qt5_add_resources(krita_SRCS ${krita_QRCS})
add_executable(krita ${krita_SRCS})
target_link_libraries(krita
PRIVATE
kritaui
Qt5::Core
Qt5::Gui
Qt5::Widgets
Qt5::Xml
Qt5::Network
Qt5::PrintSupport
Qt5::Svg
Qt5::Concurrent)
if(HAVE_KCRASH)
target_link_libraries(krita PRIVATE KF5::Crash)
endif()
if (APPLE)
set_target_properties(krita PROPERTIES INSTALL_RPATH "@loader_path/../../../../lib;@loader_path/../lib;@loader_path/../Frameworks;@executable_path/../lib;@executable_path/../Frameworks")
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.krita")
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Krita")
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_ICON_FILE "krita_SRCS.icns")
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_LONG_VERSION_STRING ${KRITA_VERSION_STRING})
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_SHORT_VERSION_STRING ${KRITA_VERSION_STRING})
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_VERSION ${KRITA_VERSION_STRING})
set_target_properties(krita PROPERTIES MACOSX_BUNDLE_COPYRIGHT "GNU Public License, V2 or, at your option, any later version.")
endif ()
install(TARGETS krita ${INSTALL_TARGETS_DEFAULT_ARGS})
install(PROGRAMS org.kde.krita.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
install(FILES krita.action kritamenu.action DESTINATION ${DATA_INSTALL_DIR}/krita/actions)
install(FILES org.kde.krita.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
install(DIRECTORY DESTINATION ${DATA_INSTALL_DIR}/krita/shortcuts)
diff --git a/krita/kritamenu.action b/krita/kritamenu.action
index 90a48251d8..4b650b5395 100644
--- a/krita/kritamenu.action
+++ b/krita/kritamenu.action
@@ -1,1829 +1,1829 @@
File
document-new
&New
Create new document
New
0
0
Ctrl+N
false
document-open
&Open...
Open an existing document
Open
0
0
Ctrl+O
false
document-open-recent
Open &Recent
Open a document which was recently opened
Open Recent
1
0
false
document-save
&Save
Save
Save
1
0
Ctrl+S
false
document-save-as
Save &As...
Save document under a new name
Save As
1
0
Ctrl+Shift+S
false
Sessions...
Open session manager
Sessions
0
0
false
document-import
Open ex&isting Document as Untitled Document...
Open existing Document as Untitled Document
Open existing Document as Untitled Document
0
0
false
document-export
E&xport...
Export
Export
1
0
false
Import animation frames...
Import animation frames
Import animation frames
1
0
false
&Render Animation...
Render Animation to GIF, Image Sequence or Video
Render Animation
1000
0
false
&Render Animation Again
Render Animation Again
Render Animation
1000
0
false
Save Incremental &Version
Save Incremental Version
Save Incremental Version
1
0
Ctrl+Alt+S
false
Save Incremental &Backup
Save Incremental Backup
Save Incremental Backup
1
0
F4
false
&Create Template From Image...
Create Template From Image
Create Template From Image
1
0
false
Create Copy &From Current Image
Create Copy From Current Image
Create Copy From Current Image
1
0
false
document-print
&Print...
Print document
Print
1
0
Ctrl+P
false
document-print-preview
Print Previe&w
Show a print preview of document
Print Preview
1
0
false
configure
&Document Information
Document Information
Document Information
1
0
false
&Close All
Close All
Close All
1
0
Ctrl+Shift+W
false
C&lose
Close
Close
1
0
Ctrl+W
false
&Quit
Quit application
Quit
0
0
Ctrl+Q
false
Edit
edit-undo
Undo
Undo last action
Undo
1
0
Ctrl+Z
false
edit-redo
Redo
Redo last undone action
Redo
1
0
Ctrl+Shift+Z
false
edit-cut
Cu&t
Cut selection to clipboard
Cut
0
0
Ctrl+X
false
edit-copy
&Copy
Copy selection to clipboard
Copy
0
0
Ctrl+C
false
C&opy (sharp)
Copy (sharp)
Copy (sharp)
100000000
0
false
Cut (&sharp)
Cut (sharp)
Cut (sharp)
100000000
0
false
Copy &merged
Copy merged
Copy merged
100000000
0
Ctrl+Shift+C
false
edit-paste
&Paste
Paste clipboard content
Paste
0
0
Ctrl+V
false
Paste at Cursor
Paste at cursor
Paste at cursor
0
0
Ctrl+Alt+V
false
Paste into &New Image
Paste into New Image
Paste into New Image
0
0
Ctrl+Shift+N
false
Paste as R&eference Image
Paste as Reference Image
Paste as Reference Image
1
0
Ctrl+Shift+R
false
edit-clear
C&lear
Clear
Clear
1
0
Del
false
&Fill with Foreground Color
Fill with Foreground Color
Fill with Foreground Color
10000
1
Shift+Backspace
false
Fill &with Background Color
Fill with Background Color
Fill with Background Color
10000
1
Backspace
false
F&ill with Pattern
Fill with Pattern
Fill with Pattern
10000
1
false
Fill Special
Fill with Foreground Color (Opacity)
Fill with Foreground Color (Opacity)
Fill with Foreground Color (Opacity)
10000
1
Ctrl+Shift+Backspace
false
Fill with Background Color (Opacity)
Fill with Background Color (Opacity)
Fill with Background Color (Opacity)
10000
1
Ctrl+Backspace
false
Fill with Pattern (Opacity)
Fill with Pattern (Opacity)
Fill with Pattern (Opacity)
10000
1
false
Stro&ke selected shapes
Stroke selected shapes
Stroke selected shapes
1000000000
0
false
Stroke Selec&tion...
Stroke selection
Stroke selection
10000000000
0
false
Delete keyframe
Delete keyframe
Delete keyframe
100000
0
false
Window
window-new
&New Window
New Window
New Window
0
0
false
N&ext
Next
Next
10
0
false
Previous
Previous
Previous
false
View
document-new
&Show Canvas Only
Show just the canvas or the whole window
Show Canvas Only
0
0
Tab
true
view-fullscreen
F&ull Screen Mode
Display the window in full screen
Full Screen Mode
0
0
Ctrl+Shift+F
true
&Wrap Around Mode
Wrap Around Mode
Wrap Around Mode
1
0
true
&Instant Preview Mode
Instant Preview Mode
Instant Preview Mode
1
0
Shift+L
true
Soft Proofing
Turns on Soft Proofing
Turns on Soft Proofing
Ctrl+Y
true
Out of Gamut Warnings
Turns on warnings for colors out of proofed gamut, needs soft proofing to be turned on.
Turns on warnings for colors out of proofed gamut, needs soft proofing to be turned on.
Ctrl+Shift+Y
true
mirror-view
Mirror View
Mirror View
Mirror View
M
false
zoom-original
&Reset zoom
Reset zoom
Reset zoom
1
0
Ctrl+0
false
zoom-in
Zoom &In
Zoom In
0
0
Ctrl++
false
zoom-out
Zoom &Out
Zoom Out
0
0
Ctrl+-
false
rotate-canvas-right
Rotate &Canvas Right
Rotate Canvas Right
Rotate Canvas Right
1
0
Ctrl+]
false
rotate-canvas-left
Rotate Canvas &Left
Rotate Canvas Left
Rotate Canvas Left
1
0
Ctrl+[
false
rotation-reset
Reset Canvas Rotation
Reset Canvas Rotation
Reset Canvas Rotation
1
0
false
Show &Rulers
The rulers show the horizontal and vertical positions of the mouse on the image and can be used to position your mouse at the right place on the canvas. <p>Uncheck this to hide the rulers.</p>
Show Rulers
Show Rulers
1
0
true
Rulers Track Pointer
The rulers will track current mouse position and show it on screen. It can cause suptle performance slowdown
Rulers Track Pointer
Rulers Track Pointer
1
0
true
Show Guides
Show or hide guides
Show Guides
1
0
true
Lock Guides
Lock or unlock guides
Lock Guides
1
0
true
Snap to Guides
Snap cursor to guides position
Snap to Guides
1
0
true
Show Status &Bar
Show or hide the status bar
Show Status Bar
0
0
true
Show Pixel Grid
Show Pixel Grid
Show Pixel Grid
1000
1000
true
view-grid
Show &Grid
Show Grid
Show Grid
1000
0
Ctrl+Shift+'
true
Snap To Grid
Snap To Grid
Snap To Grid
1000
Ctrl+Shift+;
true
Show Snap Options Popup
Show Snap Options Popup
Show Snap Options Popup
1000
Shift+s
false
Snap Orthogonal
Snap Orthogonal
Snap Orthogonal
1000
true
Snap Node
Snap Node
Snap Node
1000
true
Snap Extension
Snap Extension
Snap Extension
1000
true
Snap Pixel
Snap Pixel
Snap Pixel
1000
true
Snap Intersection
Snap Intersection
Snap Intersection
1000
true
Snap Bounding Box
Snap Bounding Box
Snap Bounding Box
1000
true
Snap Image Bounds
Snap Image Bounds
Snap Image Bounds
1000
true
Snap Image Center
Snap Image Center
Snap Image Center
1000
true
S&how Painting Assistants
Show Painting Assistants
Show Painting Assistants
1000
0
true
Show &Assistant Previews
Show Assistant Previews
Show Assistant Previews
1000
0
true
S&how Reference Images
Show Reference Images
Show Reference Images
1000
0
true
Image
document-properties
&Properties...
Properties
Properties
1000
0
false
format-stroke-color
&Image Background Color and Transparency...
Change the background color of the image
Image Background Color and Transparency
1000
0
false
&Convert Image Color Space...
Convert Image Color Space
Convert Image Color Space
1000
0
false
trim-to-image
&Trim to Image Size
Trim to Image Size
Trim to Image Size
1
0
false
Trim to Current &Layer
Trim to Current Layer
Trim to Current Layer
100000
0
false
Trim to S&election
Trim to Selection
Trim to Selection
100000000
0
false
&Rotate Image...
Rotate Image
Rotate Image
1000
0
false
object-rotate-right
Rotate &Image 90° to the Right
Rotate Image 90° to the Right
Rotate Image 90° to the Right
1000
0
false
object-rotate-left
Rotate Image &90° to the Left
Rotate Image 90° to the Left
Rotate Image 90° to the Left
1000
0
false
Rotate Image &180°
Rotate Image 180°
Rotate Image 180°
1000
0
false
&Shear Image...
Shear Image
Shear Image
1000
0
false
symmetry-horizontal
&Mirror Image Horizontally
Mirror Image Horizontally
Mirror Image Horizontally
1000
0
false
symmetry-vertical
Mirror Image &Vertically
Mirror Image Vertically
Mirror Image Vertically
1000
0
false
Scale Image To &New Size...
Scale Image To New Size
Scale Image To New Size
1000
0
Ctrl+Alt+I
false
&Offset Image...
Offset Image
Offset Image
1000
0
false
R&esize Canvas...
Resize Canvas
Resize Canvas
1000
0
Ctrl+Alt+C
false
Im&age Split
Image Split
Image Split
1000
0
false
Separate Ima&ge...
Separate Image
Separate Image
1000
0
false
Select
edit-select-all
Select &All
Select All
Select All
0
0
Ctrl+A
false
edit-select-none
&Deselect
Deselect
Deselect
1100000000
0
Ctrl+Shift+A
false
&Reselect
Reselect
Reselect
0
0
Ctrl+Shift+D
false
&Convert to Vector Selection
Convert to Vector Selection
Convert to Vector Selection
100000000000000000
0
false
&Convert to Raster Selection
Convert to Raster Selection
Convert to Raster Selection
10000000000000000
0
false
Edit Selection
Edit Selection
Edit Selection
10000000000
100
false
Convert Shapes to &Vector Selection
Convert Shapes to Vector Selection
Convert Shapes to Vector Selection
1000000000
0
false
&Feather Selection...
Feather Selection
Feather Selection
10000000000
100
Shift+F6
false
Dis&play Selection
Display Selection
Display Selection
1000
0
Ctrl+H
true
Sca&le...
Scale
Scale
100000000
100
false
S&elect from Color Range...
Select from Color Range
Select from Color Range
10000
100
false
Select &Opaque (Replace)
Select Opaque
Select Opaque
1
100
false
Select Opaque (&Add)
Select Opaque (Add)
Select Opaque (Add)
1
100
false
Select Opaque (&Subtract)
Select Opaque (Subtract)
Select Opaque (Subtract)
1
100
false
Select Opaque (&Intersect)
Select Opaque (Intersect)
Select Opaque (Intersect)
1
100
false
&Grow Selection...
Grow Selection
Grow Selection
10000000000
100
false
S&hrink Selection...
Shrink Selection
Shrink Selection
10000000000
100
false
&Border Selection...
Border Selection
Border Selection
10000000000
100
false
S&mooth
Smooth
Smooth
10000000000
100
false
Filter
&Apply Filter Again
Apply Filter Again
Apply Filter Again
0
0
Ctrl+F
false
Adjust
Adjust
Adjust
false
Artistic
Artistic
Artistic
false
Blur
Blur
Blur
false
Colors
Colors
Colors
false
Edge Detection
Edge Detection
Edge Detection
false
Enhance
Enhance
Enhance
false
Emboss
Emboss
Emboss
false
Map
Map
Map
false
Other
Other
Other
false
gmic
Start G'MIC-Qt
Start G'Mic-Qt
Start G'Mic-Qt
false
gmic
Re-apply the last G'MIC filter
Apply the last G'Mic-Qt action again
Apply the last G'Mic-Qt action again
false
Settings
configure
&Configure Krita...
Configure Krita
Configure Krita
0
0
false
&Manage Resources...
Manage Resources
Manage Resources
0
0
false
preferences-desktop-locale
Switch Application &Language...
Switch Application Language
Switch Application Language
false
&Show Dockers
Show Dockers
Show Dockers
0
0
true
configure
Configure Tool&bars...
Configure Toolbars
Configure Toolbars
0
0
false
Dockers
Dockers
Dockers
false
&Themes
Themes
Themes
false
im-user
Active Author Profile
Active Author Profile
Active Author Profile
configure-shortcuts
Configure S&hortcuts...
Configure Shortcuts
Configure Shortcuts
0
0
false
&Window
Window
Window
false
Help
help-contents
Krita &Handbook
Krita Handbook
Krita Handbook
F1
false
tools-report-bug
&Report Bug...
Report Bug
Report Bug
false
- calligrakrita
+ krita
&About Krita
About Krita
About Krita
false
kde
About &KDE
About KDE
About KDE
false
Brushes and Stuff
&Gradients
Gradients
Gradients
false
&Patterns
Patterns
Patterns
false
&Color
Color
Color
false
&Painter's Tools
Painter's Tools
Painter's Tools
false
Brush composite
Brush composite
Brush composite
false
Brush option slider 1
Brush option slider 1
Brush option slider 1
false
Brush option slider 2
Brush option slider 2
Brush option slider 2
false
Brush option slider 3
Brush option slider 3
Brush option slider 3
false
Mirror
Mirror
Mirror
false
Layouts
Select layout
false
Workspaces
Workspaces
Workspaces
false
diff --git a/krita/org.kde.krita.desktop b/krita/org.kde.krita.desktop
index 2128ff8654..d2dbd3bdbc 100644
--- a/krita/org.kde.krita.desktop
+++ b/krita/org.kde.krita.desktop
@@ -1,157 +1,157 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
GenericName=Digital Painting
GenericName[ar]=رسم رقميّ
GenericName[bs]=Digitalno Bojenje
GenericName[ca]=Dibuix digital
GenericName[ca@valencia]=Dibuix digital
GenericName[cs]=Digitální malování
GenericName[da]=Digital tegning
GenericName[de]=Digitales Malen
GenericName[el]=Ψηφιακή ζωγραφική
GenericName[en_GB]=Digital Painting
GenericName[es]=Pintura digital
GenericName[et]=Digitaalne joonistamine
GenericName[eu]=Margolan digitala
GenericName[fi]=Digitaalimaalaus
GenericName[fr]=Peinture numérique
GenericName[gl]=Debuxo dixital
GenericName[hu]=Digitális festészet
GenericName[ia]=Pintura Digital
GenericName[it]=Pittura digitale
GenericName[ja]=デジタルペインティング
GenericName[kk]=Цифрлық сурет салу
GenericName[ko]=디지털 페인팅
GenericName[lt]=Skaitmeninis piešimas
GenericName[mr]=डिजिटल पेंटिंग
GenericName[nb]=Digital maling
GenericName[nl]=Digitaal schilderen
GenericName[nn]=Digital teikning
GenericName[pl]=Cyfrowe malowanie
GenericName[pt]=Pintura Digital
GenericName[pt_BR]=Pintura digital
GenericName[ru]=Цифровая живопись
GenericName[sk]=Digitálne maľovanie
GenericName[sl]=Digitalno slikanje
GenericName[sv]=Digital målning
GenericName[tr]=Sayısal Boyama
GenericName[ug]=سىفىرلىق رەسىم سىزغۇ
GenericName[uk]=Цифрове малювання
GenericName[x-test]=xxDigital Paintingxx
GenericName[zh_CN]=数字绘画
GenericName[zh_TW]=數位繪畫
MimeType=application/x-krita;image/openraster;application/x-krita-paintoppreset;
Comment=Digital Painting
Comment[ar]=رسم رقميّ
Comment[bs]=Digitalno Bojenje
Comment[ca]=Dibuix digital
Comment[ca@valencia]=Dibuix digital
Comment[cs]=Digitální malování
Comment[da]=Digital tegning
Comment[de]=Digitales Malen
Comment[el]=Ψηφιακή ζωγραφική
Comment[en_GB]=Digital Painting
Comment[es]=Pintura digital
Comment[et]=Digitaalne joonistamine
Comment[eu]=Margolan digitala
Comment[fi]=Digitaalimaalaus
Comment[fr]=Peinture numérique
Comment[gl]=Debuxo dixital.
Comment[hu]=Digitális festészet
Comment[ia]=Pintura Digital
Comment[it]=Pittura digitale
Comment[ja]=デジタルペインティング
Comment[kk]=Цифрлық сурет салу
Comment[ko]=디지털 페인팅
Comment[lt]=Skaitmeninis piešimas
Comment[mr]=डिजिटल पेंटिंग
Comment[nb]=Digital maling
Comment[nl]=Digitaal schilderen
Comment[nn]=Digital teikning
Comment[pl]=Cyfrowe malowanie
Comment[pt]=Pintura Digital
Comment[pt_BR]=Pintura digital
Comment[ru]=Цифровая живопись
Comment[sk]=Digitálne maľovanie
Comment[sl]=Digitalno slikanje
Comment[sv]=Digitalt målningsverktyg
Comment[tr]=Sayısal Boyama
Comment[ug]=سىفىرلىق رەسىم سىزغۇ
Comment[uk]=Цифрове малювання
Comment[x-test]=xxDigital Paintingxx
Comment[zh_CN]=数字绘画
Comment[zh_TW]=數位繪畫
Type=Application
-Icon=calligrakrita
-Categories=Qt;KDE;Graphics;
+Icon=krita
+Categories=Qt;KDE;Graphics;2DGraphics;RasterGraphics;
X-KDE-NativeMimeType=application/x-krita
X-KDE-ExtraNativeMimeTypes=
StartupNotify=true
X-Krita-Version=28
StartupWMClass=krita
# Always be the preferred handler for .kra files
InitialPreference=99
diff --git a/krita/pics/app/1024-apps-calligrakrita.png b/krita/pics/app/1024-apps-krita.png
similarity index 100%
rename from krita/pics/app/1024-apps-calligrakrita.png
rename to krita/pics/app/1024-apps-krita.png
diff --git a/krita/pics/app/128-apps-calligrakrita.png b/krita/pics/app/128-apps-krita.png
similarity index 100%
rename from krita/pics/app/128-apps-calligrakrita.png
rename to krita/pics/app/128-apps-krita.png
diff --git a/krita/pics/app/16-apps-calligrakrita.png b/krita/pics/app/16-apps-krita.png
similarity index 100%
rename from krita/pics/app/16-apps-calligrakrita.png
rename to krita/pics/app/16-apps-krita.png
diff --git a/krita/pics/app/22-apps-calligrakrita.png b/krita/pics/app/22-apps-krita.png
similarity index 100%
rename from krita/pics/app/22-apps-calligrakrita.png
rename to krita/pics/app/22-apps-krita.png
diff --git a/krita/pics/app/256-apps-calligrakrita.png b/krita/pics/app/256-apps-krita.png
similarity index 100%
rename from krita/pics/app/256-apps-calligrakrita.png
rename to krita/pics/app/256-apps-krita.png
diff --git a/krita/pics/app/32-apps-calligrakrita.png b/krita/pics/app/32-apps-krita.png
similarity index 100%
rename from krita/pics/app/32-apps-calligrakrita.png
rename to krita/pics/app/32-apps-krita.png
diff --git a/krita/pics/app/48-apps-calligrakrita.png b/krita/pics/app/48-apps-krita.png
similarity index 100%
rename from krita/pics/app/48-apps-calligrakrita.png
rename to krita/pics/app/48-apps-krita.png
diff --git a/krita/pics/app/512-apps-calligrakrita.png b/krita/pics/app/512-apps-krita.png
similarity index 100%
rename from krita/pics/app/512-apps-calligrakrita.png
rename to krita/pics/app/512-apps-krita.png
diff --git a/krita/pics/app/64-apps-calligrakrita.png b/krita/pics/app/64-apps-krita.png
similarity index 100%
rename from krita/pics/app/64-apps-calligrakrita.png
rename to krita/pics/app/64-apps-krita.png
diff --git a/krita/pics/app/CMakeLists.txt b/krita/pics/app/CMakeLists.txt
index 7d0de0086e..10d95ebb78 100644
--- a/krita/pics/app/CMakeLists.txt
+++ b/krita/pics/app/CMakeLists.txt
@@ -1,14 +1,14 @@
ecm_install_icons(
ICONS
-1024-apps-calligrakrita.png
-128-apps-calligrakrita.png
-16-apps-calligrakrita.png
-22-apps-calligrakrita.png
-256-apps-calligrakrita.png
-32-apps-calligrakrita.png
-48-apps-calligrakrita.png
-512-apps-calligrakrita.png
-64-apps-calligrakrita.png
-sc-apps-calligrakrita.svgz
+1024-apps-krita.png
+128-apps-krita.png
+16-apps-krita.png
+22-apps-krita.png
+256-apps-krita.png
+32-apps-krita.png
+48-apps-krita.png
+512-apps-krita.png
+64-apps-krita.png
+sc-apps-krita.svgz
DESTINATION
${ICON_INSTALL_DIR} )
diff --git a/krita/pics/app/sc-apps-calligrakrita.svgz b/krita/pics/app/sc-apps-krita.svgz
similarity index 100%
rename from krita/pics/app/sc-apps-calligrakrita.svgz
rename to krita/pics/app/sc-apps-krita.svgz
diff --git a/libs/ui/KisApplication.cpp b/libs/ui/KisApplication.cpp
index cf299dd5e8..eb4aa8d569 100644
--- a/libs/ui/KisApplication.cpp
+++ b/libs/ui/KisApplication.cpp
@@ -1,873 +1,873 @@
/*
* Copyright (C) 1998, 1999 Torben Weis
* Copyright (C) 2012 Boudewijn Rempt
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "KisApplication.h"
#include
#ifdef Q_OS_WIN
#include
#include
#endif
#ifdef Q_OS_MACOS
#include "osx.h"
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "KoConfig.h"
#include
#include
#include
#include "thememanager.h"
#include "KisPrintJob.h"
#include "KisDocument.h"
#include "KisMainWindow.h"
#include "KisAutoSaveRecoveryDialog.h"
#include "KisPart.h"
#include
#include "kis_md5_generator.h"
#include "kis_splash_screen.h"
#include "kis_config.h"
#include "flake/kis_shape_selection.h"
#include
#include
#include
#include
#include
#include
#include
#include "kisexiv2/kis_exiv2.h"
#include "KisApplicationArguments.h"
#include
#include "kis_action_registry.h"
#include
#include
#include
#include "kis_image_barrier_locker.h"
#include "opengl/kis_opengl.h"
#include "kis_spin_box_unit_manager.h"
#include "kis_document_aware_spin_box_unit_manager.h"
#include "KisViewManager.h"
#include "kis_workspace_resource.h"
#include
#include
#include "widgets/KisScreenColorPicker.h"
#include "KisDlgInternalColorSelector.h"
#include
#include
namespace {
const QTime appStartTime(QTime::currentTime());
}
class KisApplication::Private
{
public:
Private() {}
QPointer splashScreen;
KisAutoSaveRecoveryDialog *autosaveDialog {0};
QPointer mainWindow; // The first mainwindow we create on startup
bool batchRun {false};
};
class KisApplication::ResetStarting
{
public:
ResetStarting(KisSplashScreen *splash, int fileCount)
: m_splash(splash)
, m_fileCount(fileCount)
{
}
~ResetStarting() {
if (m_splash) {
m_splash->hide();
}
}
QPointer m_splash;
int m_fileCount;
};
KisApplication::KisApplication(const QString &key, int &argc, char **argv)
: QtSingleApplication(key, argc, argv)
, d(new Private)
{
#ifdef Q_OS_MACOS
setMouseCoalescingEnabled(false);
#endif
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath());
setApplicationDisplayName("Krita");
setApplicationName("krita");
// Note: Qt docs suggest we set this, but if we do, we get resource paths of the form of krita/krita, which is weird.
// setOrganizationName("krita");
setOrganizationDomain("krita.org");
QString version = KritaVersionWrapper::versionString(true);
setApplicationVersion(version);
- setWindowIcon(KisIconUtils::loadIcon("calligrakrita"));
+ setWindowIcon(KisIconUtils::loadIcon("krita"));
if (qgetenv("KRITA_NO_STYLE_OVERRIDE").isEmpty()) {
QStringList styles = QStringList() /*<< "breeze"*/ << "fusion" << "plastique";
if (!styles.contains(style()->objectName().toLower())) {
Q_FOREACH (const QString & style, styles) {
if (!setStyle(style)) {
qDebug() << "No" << style << "available.";
}
else {
qDebug() << "Set style" << style;
break;
}
}
}
}
else {
qDebug() << "Style override disabled, using" << style()->objectName();
}
KisOpenGL::initialize();
}
#if defined(Q_OS_WIN) && defined(ENV32BIT)
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL isWow64()
{
BOOL bIsWow64 = FALSE;
//IsWow64Process is not available on all supported versions of Windows.
//Use GetModuleHandle to get a handle to the DLL that contains the function
//and GetProcAddress to get a pointer to the function if available.
fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
if(0 != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
//handle error
}
}
return bIsWow64;
}
#endif
void KisApplication::initializeGlobals(const KisApplicationArguments &args)
{
int dpiX = args.dpiX();
int dpiY = args.dpiY();
if (dpiX > 0 && dpiY > 0) {
KoDpi::setDPI(dpiX, dpiY);
}
}
void KisApplication::addResourceTypes()
{
// qDebug() << "addResourceTypes();";
// All Krita's resource types
KoResourcePaths::addResourceType("markers", "data", "/styles/");
KoResourcePaths::addResourceType("kis_pics", "data", "/pics/");
KoResourcePaths::addResourceType("kis_images", "data", "/images/");
KoResourcePaths::addResourceType("metadata_schema", "data", "/metadata/schemas/");
KoResourcePaths::addResourceType("kis_brushes", "data", "/brushes/");
KoResourcePaths::addResourceType("kis_taskset", "data", "/taskset/");
KoResourcePaths::addResourceType("kis_taskset", "data", "/taskset/");
KoResourcePaths::addResourceType("gmic_definitions", "data", "/gmic/");
KoResourcePaths::addResourceType("kis_resourcebundles", "data", "/bundles/");
KoResourcePaths::addResourceType("kis_defaultpresets", "data", "/defaultpresets/");
KoResourcePaths::addResourceType("kis_paintoppresets", "data", "/paintoppresets/");
KoResourcePaths::addResourceType("kis_workspaces", "data", "/workspaces/");
KoResourcePaths::addResourceType("kis_windowlayouts", "data", "/windowlayouts/");
KoResourcePaths::addResourceType("kis_sessions", "data", "/sessions/");
KoResourcePaths::addResourceType("psd_layer_style_collections", "data", "/asl");
KoResourcePaths::addResourceType("ko_patterns", "data", "/patterns/", true);
KoResourcePaths::addResourceType("ko_gradients", "data", "/gradients/");
KoResourcePaths::addResourceType("ko_gradients", "data", "/gradients/", true);
KoResourcePaths::addResourceType("ko_palettes", "data", "/palettes/", true);
KoResourcePaths::addResourceType("kis_shortcuts", "data", "/shortcuts/");
KoResourcePaths::addResourceType("kis_actions", "data", "/actions");
KoResourcePaths::addResourceType("icc_profiles", "data", "/color/icc");
KoResourcePaths::addResourceType("icc_profiles", "data", "/profiles/");
KoResourcePaths::addResourceType("ko_effects", "data", "/effects/");
KoResourcePaths::addResourceType("tags", "data", "/tags/");
KoResourcePaths::addResourceType("templates", "data", "/templates");
KoResourcePaths::addResourceType("pythonscripts", "data", "/pykrita");
KoResourcePaths::addResourceType("symbols", "data", "/symbols");
KoResourcePaths::addResourceType("preset_icons", "data", "/preset_icons");
KoResourcePaths::addResourceType("ko_gamutmasks", "data", "/gamutmasks/", true);
// // Extra directories to look for create resources. (Does anyone actually use that anymore?)
// KoResourcePaths::addResourceDir("ko_gradients", "/usr/share/create/gradients/gimp");
// KoResourcePaths::addResourceDir("ko_gradients", QDir::homePath() + QString("/.create/gradients/gimp"));
// KoResourcePaths::addResourceDir("ko_patterns", "/usr/share/create/patterns/gimp");
// KoResourcePaths::addResourceDir("ko_patterns", QDir::homePath() + QString("/.create/patterns/gimp"));
// KoResourcePaths::addResourceDir("kis_brushes", "/usr/share/create/brushes/gimp");
// KoResourcePaths::addResourceDir("kis_brushes", QDir::homePath() + QString("/.create/brushes/gimp"));
// KoResourcePaths::addResourceDir("ko_palettes", "/usr/share/create/swatches");
// KoResourcePaths::addResourceDir("ko_palettes", QDir::homePath() + QString("/.create/swatches"));
// Make directories for all resources we can save, and tags
QDir d;
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/tags/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/asl/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/bundles/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/brushes/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/gradients/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/paintoppresets/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/palettes/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/patterns/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/taskset/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/workspaces/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/input/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/pykrita/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/symbols/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/color-schemes/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/preset_icons/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/preset_icons/tool_icons/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/preset_icons/emblem_icons/");
d.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/gamutmasks/");
}
void KisApplication::loadResources()
{
// qDebug() << "loadResources();";
setSplashScreenLoadingText(i18n("Loading Resources..."));
processEvents();
KoResourceServerProvider::instance();
setSplashScreenLoadingText(i18n("Loading Brush Presets..."));
processEvents();
KisResourceServerProvider::instance();
setSplashScreenLoadingText(i18n("Loading Brushes..."));
processEvents();
KisBrushServer::instance()->brushServer();
setSplashScreenLoadingText(i18n("Loading Bundles..."));
processEvents();
KisResourceBundleServerProvider::instance();
}
void KisApplication::loadResourceTags()
{
// qDebug() << "loadResourceTags()";
KoResourceServerProvider::instance()->patternServer()->loadTags();
KoResourceServerProvider::instance()->gradientServer()->loadTags();
KoResourceServerProvider::instance()->paletteServer()->loadTags();
KoResourceServerProvider::instance()->svgSymbolCollectionServer()->loadTags();
KisBrushServer::instance()->brushServer()->loadTags();
KisResourceServerProvider::instance()->workspaceServer()->loadTags();
KisResourceServerProvider::instance()->layerStyleCollectionServer()->loadTags();
KisResourceBundleServerProvider::instance()->resourceBundleServer()->loadTags();
KisResourceServerProvider::instance()->paintOpPresetServer()->loadTags();
KisResourceServerProvider::instance()->paintOpPresetServer()->clearOldSystemTags();
}
void KisApplication::loadPlugins()
{
// qDebug() << "loadPlugins();";
KoShapeRegistry* r = KoShapeRegistry::instance();
r->add(new KisShapeSelectionFactory());
KisActionRegistry::instance();
KisFilterRegistry::instance();
KisGeneratorRegistry::instance();
KisPaintOpRegistry::instance();
KoColorSpaceRegistry::instance();
}
void KisApplication::loadGuiPlugins()
{
// qDebug() << "loadGuiPlugins();";
// Load the krita-specific tools
setSplashScreenLoadingText(i18n("Loading Plugins for Krita/Tool..."));
processEvents();
// qDebug() << "loading tools";
KoPluginLoader::instance()->load(QString::fromLatin1("Krita/Tool"),
QString::fromLatin1("[X-Krita-Version] == 28"));
// Load dockers
setSplashScreenLoadingText(i18n("Loading Plugins for Krita/Dock..."));
processEvents();
// qDebug() << "loading dockers";
KoPluginLoader::instance()->load(QString::fromLatin1("Krita/Dock"),
QString::fromLatin1("[X-Krita-Version] == 28"));
// XXX_EXIV: make the exiv io backends real plugins
setSplashScreenLoadingText(i18n("Loading Plugins Exiv/IO..."));
processEvents();
// qDebug() << "loading exiv2";
KisExiv2::initialize();
}
bool KisApplication::start(const KisApplicationArguments &args)
{
KisConfig cfg(false);
#if defined(Q_OS_WIN)
#ifdef ENV32BIT
if (isWow64() && !cfg.readEntry("WarnedAbout32Bits", false)) {
QMessageBox::information(0,
i18nc("@title:window", "Krita: Warning"),
i18n("You are running a 32 bits build on a 64 bits Windows.\n"
"This is not recommended.\n"
"Please download and install the x64 build instead."));
cfg.writeEntry("WarnedAbout32Bits", true);
}
#endif
#endif
QString opengl = cfg.canvasState();
if (opengl == "OPENGL_NOT_TRIED" ) {
cfg.setCanvasState("TRY_OPENGL");
}
else if (opengl != "OPENGL_SUCCESS") {
cfg.setCanvasState("OPENGL_FAILED");
}
setSplashScreenLoadingText(i18n("Initializing Globals"));
processEvents();
initializeGlobals(args);
const bool doNewImage = args.doNewImage();
const bool doTemplate = args.doTemplate();
const bool exportAs = args.exportAs();
const bool exportSequence = args.exportSequence();
const QString exportFileName = args.exportFileName();
d->batchRun = (exportAs || exportSequence || !exportFileName.isEmpty());
const bool needsMainWindow = (!exportAs && !exportSequence);
// only show the mainWindow when no command-line mode option is passed
bool showmainWindow = (!exportAs && !exportSequence); // would be !batchRun;
const bool showSplashScreen = !d->batchRun && qEnvironmentVariableIsEmpty("NOSPLASH");
if (showSplashScreen && d->splashScreen) {
d->splashScreen->show();
d->splashScreen->repaint();
processEvents();
}
KoHashGeneratorProvider::instance()->setGenerator("MD5", new KisMD5Generator());
KConfigGroup group(KSharedConfig::openConfig(), "theme");
Digikam::ThemeManager themeManager;
themeManager.setCurrentTheme(group.readEntry("Theme", "Krita dark"));
ResetStarting resetStarting(d->splashScreen, args.filenames().count()); // remove the splash when done
Q_UNUSED(resetStarting);
// Make sure we can save resources and tags
setSplashScreenLoadingText(i18n("Adding resource types"));
processEvents();
addResourceTypes();
// Load the plugins
loadPlugins();
// Load all resources
loadResources();
// Load all the tags
loadResourceTags();
// Load the gui plugins
loadGuiPlugins();
KisPart *kisPart = KisPart::instance();
if (needsMainWindow) {
// show a mainWindow asap, if we want that
setSplashScreenLoadingText(i18n("Loading Main Window..."));
processEvents();
bool sessionNeeded = true;
auto sessionMode = cfg.sessionOnStartup();
if (!args.session().isEmpty()) {
sessionNeeded = !kisPart->restoreSession(args.session());
} else if (sessionMode == KisConfig::SOS_ShowSessionManager) {
showmainWindow = false;
sessionNeeded = false;
kisPart->showSessionManager();
} else if (sessionMode == KisConfig::SOS_PreviousSession) {
KConfigGroup sessionCfg = KSharedConfig::openConfig()->group("session");
const QString &sessionName = sessionCfg.readEntry("previousSession");
sessionNeeded = !kisPart->restoreSession(sessionName);
}
if (sessionNeeded) {
kisPart->startBlankSession();
}
if (!args.windowLayout().isEmpty()) {
KoResourceServer * rserver = KisResourceServerProvider::instance()->windowLayoutServer();
KisWindowLayoutResource* windowLayout = rserver->resourceByName(args.windowLayout());
if (windowLayout) {
windowLayout->applyLayout();
}
}
if (showmainWindow) {
d->mainWindow = kisPart->currentMainwindow();
if (!args.workspace().isEmpty()) {
KoResourceServer * rserver = KisResourceServerProvider::instance()->workspaceServer();
KisWorkspaceResource* workspace = rserver->resourceByName(args.workspace());
if (workspace) {
d->mainWindow->restoreWorkspace(workspace);
}
}
if (args.canvasOnly()) {
d->mainWindow->viewManager()->switchCanvasOnly(true);
}
if (args.fullScreen()) {
d->mainWindow->showFullScreen();
}
} else {
d->mainWindow = kisPart->createMainWindow();
}
}
short int numberOfOpenDocuments = 0; // number of documents open
// Check for autosave files that can be restored, if we're not running a batchrun (test)
if (!d->batchRun) {
checkAutosaveFiles();
}
setSplashScreenLoadingText(QString()); // done loading, so clear out label
processEvents();
//configure the unit manager
KisSpinBoxUnitManagerFactory::setDefaultUnitManagerBuilder(new KisDocumentAwareSpinBoxUnitManagerBuilder());
connect(this, &KisApplication::aboutToQuit, &KisSpinBoxUnitManagerFactory::clearUnitManagerBuilder); //ensure the builder is destroyed when the application leave.
//the new syntax slot syntax allow to connect to a non q_object static method.
// Create a new image, if needed
if (doNewImage) {
KisDocument *doc = args.image();
if (doc) {
kisPart->addDocument(doc);
d->mainWindow->addViewAndNotifyLoadingCompleted(doc);
}
}
// Get the command line arguments which we have to parse
int argsCount = args.filenames().count();
if (argsCount > 0) {
// Loop through arguments
for (int argNumber = 0; argNumber < argsCount; argNumber++) {
QString fileName = args.filenames().at(argNumber);
// are we just trying to open a template?
if (doTemplate) {
// called in mix with batch options? ignore and silently skip
if (d->batchRun) {
continue;
}
if (createNewDocFromTemplate(fileName, d->mainWindow)) {
++numberOfOpenDocuments;
}
// now try to load
}
else {
if (exportAs) {
QString outputMimetype = KisMimeDatabase::mimeTypeForFile(exportFileName, false);
if (outputMimetype == "application/octetstream") {
dbgKrita << i18n("Mimetype not found, try using the -mimetype option") << endl;
return false;
}
KisDocument *doc = kisPart->createDocument();
doc->setFileBatchMode(d->batchRun);
bool result = doc->openUrl(QUrl::fromLocalFile(fileName));
if (!result) {
errKrita << "Could not load " << fileName << ":" << doc->errorMessage();
QTimer::singleShot(0, this, SLOT(quit()));
return false;
}
if (exportFileName.isEmpty()) {
errKrita << "Export destination is not specified for" << fileName << "Please specify export destination with --export-filename option";
QTimer::singleShot(0, this, SLOT(quit()));
return false;
}
qApp->processEvents(); // For vector layers to be updated
doc->setFileBatchMode(true);
if (!doc->exportDocumentSync(QUrl::fromLocalFile(exportFileName), outputMimetype.toLatin1())) {
errKrita << "Could not export " << fileName << "to" << exportFileName << ":" << doc->errorMessage();
}
QTimer::singleShot(0, this, SLOT(quit()));
return true;
}
else if (exportSequence) {
KisDocument *doc = kisPart->createDocument();
doc->setFileBatchMode(d->batchRun);
doc->openUrl(QUrl::fromLocalFile(fileName));
qApp->processEvents(); // For vector layers to be updated
if (!doc->image()->animationInterface()->hasAnimation()) {
errKrita << "This file has no animation." << endl;
QTimer::singleShot(0, this, SLOT(quit()));
return false;
}
doc->setFileBatchMode(true);
int sequenceStart = 0;
KisAsyncAnimationFramesSaveDialog exporter(doc->image(),
doc->image()->animationInterface()->fullClipRange(),
exportFileName,
sequenceStart,
0);
exporter.setBatchMode(d->batchRun);
KisAsyncAnimationFramesSaveDialog::Result result =
exporter.regenerateRange(0);
if (result == KisAsyncAnimationFramesSaveDialog::RenderFailed) {
errKrita << i18n("Failed to render animation frames!") << endl;
}
QTimer::singleShot(0, this, SLOT(quit()));
return true;
}
else if (d->mainWindow) {
if (fileName.endsWith(".bundle")) {
d->mainWindow->installBundle(fileName);
}
else {
KisMainWindow::OpenFlags flags = d->batchRun ? KisMainWindow::BatchMode : KisMainWindow::None;
if (d->mainWindow->openDocument(QUrl::fromLocalFile(fileName), flags)) {
// Normal case, success
numberOfOpenDocuments++;
}
}
}
}
}
}
// fixes BUG:369308 - Krita crashing on splash screen when loading.
// trying to open a file before Krita has loaded can cause it to hang and crash
if (d->splashScreen) {
d->splashScreen->displayLinks(true);
d->splashScreen->displayRecentFiles(true);
}
// not calling this before since the program will quit there.
return true;
}
KisApplication::~KisApplication()
{
}
void KisApplication::setSplashScreen(QWidget *splashScreen)
{
d->splashScreen = qobject_cast(splashScreen);
}
void KisApplication::setSplashScreenLoadingText(QString textToLoad)
{
if (d->splashScreen) {
//d->splashScreen->loadingLabel->setText(textToLoad);
d->splashScreen->setLoadingText(textToLoad);
d->splashScreen->repaint();
}
}
void KisApplication::hideSplashScreen()
{
if (d->splashScreen) {
// hide the splashscreen to see the dialog
d->splashScreen->hide();
}
}
bool KisApplication::notify(QObject *receiver, QEvent *event)
{
try {
return QApplication::notify(receiver, event);
} catch (std::exception &e) {
qWarning("Error %s sending event %i to object %s",
e.what(), event->type(), qPrintable(receiver->objectName()));
} catch (...) {
qWarning("Error sending event %i to object %s",
event->type(), qPrintable(receiver->objectName()));
}
return false;
}
void KisApplication::remoteArguments(QByteArray message, QObject *socket)
{
Q_UNUSED(socket);
// check if we have any mainwindow
KisMainWindow *mw = qobject_cast(qApp->activeWindow());
if (!mw) {
mw = KisPart::instance()->mainWindows().first();
}
if (!mw) {
return;
}
KisApplicationArguments args = KisApplicationArguments::deserialize(message);
const bool doTemplate = args.doTemplate();
const int argsCount = args.filenames().count();
if (argsCount > 0) {
// Loop through arguments
for (int argNumber = 0; argNumber < argsCount; ++argNumber) {
QString filename = args.filenames().at(argNumber);
// are we just trying to open a template?
if (doTemplate) {
createNewDocFromTemplate(filename, mw);
}
else if (QFile(filename).exists()) {
KisMainWindow::OpenFlags flags = d->batchRun ? KisMainWindow::BatchMode : KisMainWindow::None;
mw->openDocument(QUrl::fromLocalFile(filename), flags);
}
}
}
}
void KisApplication::fileOpenRequested(const QString &url)
{
KisMainWindow *mainWindow = KisPart::instance()->mainWindows().first();
if (mainWindow) {
KisMainWindow::OpenFlags flags = d->batchRun ? KisMainWindow::BatchMode : KisMainWindow::None;
mainWindow->openDocument(QUrl::fromLocalFile(url), flags);
}
}
void KisApplication::checkAutosaveFiles()
{
if (d->batchRun) return;
#ifdef Q_OS_WIN
QDir dir = QDir::temp();
#else
QDir dir = QDir::home();
#endif
// Check for autosave files from a previous run. There can be several, and
// we want to offer a restore for every one. Including a nice thumbnail!
// Hidden autosave files
QStringList filters = QStringList() << QString(".krita-*-*-autosave.kra");
// all autosave files for our application
QStringList autosaveFiles = dir.entryList(filters, QDir::Files | QDir::Hidden);
// Visibile autosave files
filters = QStringList() << QString("krita-*-*-autosave.kra");
autosaveFiles += dir.entryList(filters, QDir::Files);
// Allow the user to make their selection
if (autosaveFiles.size() > 0) {
if (d->splashScreen) {
// hide the splashscreen to see the dialog
d->splashScreen->hide();
}
d->autosaveDialog = new KisAutoSaveRecoveryDialog(autosaveFiles, activeWindow());
QDialog::DialogCode result = (QDialog::DialogCode) d->autosaveDialog->exec();
if (result == QDialog::Accepted) {
QStringList filesToRecover = d->autosaveDialog->recoverableFiles();
Q_FOREACH (const QString &autosaveFile, autosaveFiles) {
if (!filesToRecover.contains(autosaveFile)) {
QFile::remove(dir.absolutePath() + "/" + autosaveFile);
}
}
autosaveFiles = filesToRecover;
} else {
autosaveFiles.clear();
}
if (autosaveFiles.size() > 0) {
QList autosaveUrls;
Q_FOREACH (const QString &autoSaveFile, autosaveFiles) {
const QUrl url = QUrl::fromLocalFile(dir.absolutePath() + QLatin1Char('/') + autoSaveFile);
autosaveUrls << url;
}
if (d->mainWindow) {
Q_FOREACH (const QUrl &url, autosaveUrls) {
KisMainWindow::OpenFlags flags = d->batchRun ? KisMainWindow::BatchMode : KisMainWindow::None;
d->mainWindow->openDocument(url, flags | KisMainWindow::RecoveryFile);
}
}
}
// cleanup
delete d->autosaveDialog;
d->autosaveDialog = nullptr;
}
}
bool KisApplication::createNewDocFromTemplate(const QString &fileName, KisMainWindow *mainWindow)
{
QString templatePath;
const QUrl templateUrl = QUrl::fromLocalFile(fileName);
if (QFile::exists(fileName)) {
templatePath = templateUrl.toLocalFile();
dbgUI << "using full path...";
}
else {
QString desktopName(fileName);
const QString templatesResourcePath = QStringLiteral("templates/");
QStringList paths = KoResourcePaths::findAllResources("data", templatesResourcePath + "*/" + desktopName);
if (paths.isEmpty()) {
paths = KoResourcePaths::findAllResources("data", templatesResourcePath + desktopName);
}
if (paths.isEmpty()) {
QMessageBox::critical(0, i18nc("@title:window", "Krita"),
i18n("No template found for: %1", desktopName));
} else if (paths.count() > 1) {
QMessageBox::critical(0, i18nc("@title:window", "Krita"),
i18n("Too many templates found for: %1", desktopName));
} else {
templatePath = paths.at(0);
}
}
if (!templatePath.isEmpty()) {
QUrl templateBase;
templateBase.setPath(templatePath);
KDesktopFile templateInfo(templatePath);
QString templateName = templateInfo.readUrl();
QUrl templateURL;
templateURL.setPath(templateBase.adjusted(QUrl::RemoveFilename|QUrl::StripTrailingSlash).path() + '/' + templateName);
if (templateURL.scheme().isEmpty()) {
templateURL.setScheme("file");
}
KisMainWindow::OpenFlags batchFlags = d->batchRun ? KisMainWindow::BatchMode : KisMainWindow::None;
if (mainWindow->openDocument(templateURL, KisMainWindow::Import | batchFlags)) {
dbgUI << "Template loaded...";
return true;
}
else {
QMessageBox::critical(0, i18nc("@title:window", "Krita"),
i18n("Template %1 failed to load.", templateURL.toDisplayString()));
}
}
return false;
}
void KisApplication::clearConfig()
{
KIS_ASSERT_RECOVER_RETURN(qApp->thread() == QThread::currentThread());
KSharedConfigPtr config = KSharedConfig::openConfig();
// find user settings file
bool createDir = false;
QString kritarcPath = KoResourcePaths::locateLocal("config", "kritarc", createDir);
QFile configFile(kritarcPath);
if (configFile.exists()) {
// clear file
if (configFile.open(QFile::WriteOnly)) {
configFile.close();
}
else {
QMessageBox::warning(0,
i18nc("@title:window", "Krita"),
i18n("Failed to clear %1\n\n"
"Please make sure no other program is using the file and try again.",
kritarcPath),
QMessageBox::Ok, QMessageBox::Ok);
}
}
// reload from disk; with the user file settings cleared,
// this should load any default configuration files shipping with the program
config->reparseConfiguration();
config->sync();
}
void KisApplication::askClearConfig()
{
Qt::KeyboardModifiers mods = QApplication::queryKeyboardModifiers();
bool askClearConfig = (mods & Qt::ControlModifier) && (mods & Qt::ShiftModifier) && (mods & Qt::AltModifier);
if (askClearConfig) {
bool ok = QMessageBox::question(0,
i18nc("@title:window", "Krita"),
i18n("Do you want to clear the settings file?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes;
if (ok) {
clearConfig();
}
}
}
diff --git a/libs/ui/kis_splash_screen.cpp b/libs/ui/kis_splash_screen.cpp
index 3f43388eaa..f6e9bea55b 100644
--- a/libs/ui/kis_splash_screen.cpp
+++ b/libs/ui/kis_splash_screen.cpp
@@ -1,282 +1,282 @@
/*
* Copyright (c) 2014 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_splash_screen.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
KisSplashScreen::KisSplashScreen(const QString &version, const QPixmap &pixmap, const QPixmap &pixmap_x2, bool themed, QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, Qt::SplashScreen | Qt::FramelessWindowHint
#ifdef Q_OS_LINUX
| Qt::WindowStaysOnTopHint
#endif
| f),
m_themed(themed)
{
setupUi(this);
- setWindowIcon(KisIconUtils::loadIcon("calligrakrita"));
+ setWindowIcon(KisIconUtils::loadIcon("krita"));
QImage img = pixmap.toImage();
if (devicePixelRatioF() > 1.01) {
img = pixmap_x2.toImage();
img.setDevicePixelRatio(2);
}
QFont font = this->font();
font.setPointSize(11);
font.setBold(true);
QFontMetrics metrics(font);
QPainter p(&img);
p.setFont(font);
p.setRenderHint(QPainter::Antialiasing);
// positioning of the text over the image (version)
// also see setLoadingText() for positiong (loading progress text)
int leftEdge = 475-metrics.width(version);
int topEdge = 58+metrics.ascent();
//draw shadow
QPen pen(QColor(0, 0, 0, 80));
p.setPen(pen);
p.drawText(leftEdge+1, topEdge+1, version);
//draw main text
p.setPen(QPen(QColor(255, 255, 255, 255)));
p.drawText(leftEdge, topEdge, version);
p.end();
//get this to have the loading text painted on later.
m_splashImage = img;
m_textTop = topEdge+metrics.height();
// Maintain the aspect ratio on high DPI screens when scaling
lblSplash->setPixmap(QPixmap::fromImage(img));
setFixedWidth(pixmap.width());
bnClose->hide();
connect(bnClose, SIGNAL(clicked()), this, SLOT(close()));
chkShowAtStartup->hide();
connect(chkShowAtStartup, SIGNAL(toggled(bool)), this, SLOT(toggleShowAtStartup(bool)));
KConfigGroup cfg( KSharedConfig::openConfig(), "SplashScreen");
bool hideSplash = cfg.readEntry("HideSplashAfterStartup", false);
chkShowAtStartup->setChecked(hideSplash);
connect(lblRecent, SIGNAL(linkActivated(QString)), SLOT(linkClicked(QString)));
connect(&m_timer, SIGNAL(timeout()), SLOT(raise()));
// hide these labels by default
displayLinks(false);
displayRecentFiles(false);
m_timer.setSingleShot(true);
m_timer.start(10);
}
void KisSplashScreen::resizeEvent(QResizeEvent *event)
{
QWidget::resizeEvent(event);
updateText();
}
void KisSplashScreen::updateText()
{
QString color = colorString();
KConfigGroup cfg2( KSharedConfig::openConfig(), "RecentFiles");
int i = 1;
QString recent = i18n(""
""
""
"Recent Files
", color);
QString path;
QStringList recentfiles;
QFontMetrics metrics(lblRecent->font());
do {
path = cfg2.readPathEntry(QString("File%1").arg(i), QString());
if (!path.isEmpty()) {
QString name = cfg2.readPathEntry(QString("Name%1").arg(i), QString());
QUrl url(path);
if (name.isEmpty()) {
name = url.fileName();
}
name = metrics.elidedText(name, Qt::ElideMiddle, lblRecent->width());
if (!url.isLocalFile() || QFile::exists(url.toLocalFile())) {
recentfiles.insert(0, QString("%2
").arg(path).arg(name).arg(color));
}
}
i++;
} while (!path.isEmpty() || i <= 8);
recent += recentfiles.join("\n");
recent += ""
"";
lblRecent->setText(recent);
}
void KisSplashScreen::displayLinks(bool show) {
if (show) {
QString color = colorString();
lblLinks->setTextFormat(Qt::RichText);
lblLinks->setText(i18n(""
""
""
"Links
"
"Support Krita
"
"Getting Started
"
"Manual
"
"Krita Website
"
"User Community
"
"Source Code
"
""
"", color));
filesLayout->setContentsMargins(10,10,10,10);
actionControlsLayout->setContentsMargins(5,5,5,5);
} else {
// eliminating margins here allows for the splash screen image to take the entire area with nothing underneath
filesLayout->setContentsMargins(0,0,0,0);
actionControlsLayout->setContentsMargins(0,0,0,0);
}
lblLinks->setVisible(show);
updateText();
}
void KisSplashScreen::displayRecentFiles(bool show) {
lblRecent->setVisible(show);
line->setVisible(show);
}
void KisSplashScreen::setLoadingText(QString text)
{
QFont font = this->font();
font.setPointSize(10);
font.setItalic(true);
QImage img = m_splashImage;
QPainter p(&img);
QFontMetrics metrics(font);
p.setFont(font);
p.setRenderHint(QPainter::Antialiasing);
// position text for loading text
int leftEdge = 475-metrics.width(text);
int topEdge = m_textTop;
//draw shadow
QPen pen(QColor(0, 0, 0, 80));
p.setPen(pen);
p.drawText(leftEdge+1, topEdge+1, text);
//draw main text
p.setPen(QPen(QColor(255, 255, 255, 255)));
p.drawText(leftEdge, topEdge, text);
p.end();
lblSplash->setPixmap(QPixmap::fromImage(img));
}
QString KisSplashScreen::colorString() const
{
QString color = "#FFFFFF";
if (m_themed && qApp->palette().background().color().value() > 100) {
color = "#000000";
}
return color;
}
void KisSplashScreen::repaint()
{
QWidget::repaint();
qApp->sendPostedEvents();
}
void KisSplashScreen::show()
{
QRect r(QPoint(), sizeHint());
resize(r.size());
if (!this->parentWidget()) {
this->winId(); // Force creation of native window
if (this->windowHandle()) {
// At least on Windows, the window may be created on a non-primary
// screen with a different scale factor. If we don't explicitly
// move it to the primary screen, the position will be scaled with
// the wrong factor and the splash will be offset.
this->windowHandle()->setScreen(QApplication::primaryScreen());
}
}
move(QApplication::primaryScreen()->availableGeometry().center() - r.center());
if (isVisible()) {
repaint();
}
m_timer.setSingleShot(true);
m_timer.start(1);
QWidget::show();
}
void KisSplashScreen::toggleShowAtStartup(bool toggle)
{
KConfigGroup cfg( KSharedConfig::openConfig(), "SplashScreen");
cfg.writeEntry("HideSplashAfterStartup", toggle);
}
void KisSplashScreen::linkClicked(const QString &link)
{
KisPart::instance()->openExistingFile(QUrl::fromLocalFile(link));
if (isTopLevel()) {
close();
}
}
diff --git a/libs/ui/widgets/kis_floating_message.cpp b/libs/ui/widgets/kis_floating_message.cpp
index be98d8be15..86e248c5d5 100644
--- a/libs/ui/widgets/kis_floating_message.cpp
+++ b/libs/ui/widgets/kis_floating_message.cpp
@@ -1,331 +1,331 @@
/*
* This file is part of KimageShop^WKrayon^WKrita
*
* Copyright (c) 2012 Boudewijn Rempt
* Copyright (c) 2004 Christian Muehlhaeuser
* Copyright (c) 2004-2006 Seb Ruiz
* Copyright (c) 2004,2005 Max Howell
* Copyright (c) 2005 Gabor Lehel
* Copyright (c) 2008,2009 Mark Kretschmann
*
* 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_floating_message.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include "kis_global.h"
/* Code copied from kshadowengine.cpp
*
* Copyright (C) 2003 Laur Ivan
*
* Many thanks to:
* - Bernardo Hung for the enhanced shadow
* algorithm (currently used)
* - Tim Jansen for the API updates and fixes.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License version 2 as published by the Free Software Foundation.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
namespace ShadowEngine
{
// Not sure, doesn't work above 10
static const int MULTIPLICATION_FACTOR = 3;
// Multiplication factor for pixels directly above, under, or next to the text
static const double AXIS_FACTOR = 2.0;
// Multiplication factor for pixels diagonal to the text
static const double DIAGONAL_FACTOR = 0.1;
// Self explanatory
static const int MAX_OPACITY = 200;
double decay( QImage&, int, int );
QImage makeShadow( const QPixmap& textPixmap, const QColor &bgColor )
{
const int w = textPixmap.width();
const int h = textPixmap.height();
const int bgr = bgColor.red();
const int bgg = bgColor.green();
const int bgb = bgColor.blue();
int alphaShadow;
// This is the source pixmap
QImage img = textPixmap.toImage();
QImage result( w, h, QImage::Format_ARGB32 );
result.fill( 0 ); // fill with black
static const int M = 5;
for( int i = M; i < w - M; i++) {
for( int j = M; j < h - M; j++ )
{
alphaShadow = (int) decay( img, i, j );
result.setPixel( i,j, qRgba( bgr, bgg , bgb, qMin( MAX_OPACITY, alphaShadow ) ) );
}
}
return result;
}
double decay( QImage& source, int i, int j )
{
double alphaShadow;
alphaShadow =(qGray(source.pixel(i-1,j-1)) * DIAGONAL_FACTOR +
qGray(source.pixel(i-1,j )) * AXIS_FACTOR +
qGray(source.pixel(i-1,j+1)) * DIAGONAL_FACTOR +
qGray(source.pixel(i ,j-1)) * AXIS_FACTOR +
0 +
qGray(source.pixel(i ,j+1)) * AXIS_FACTOR +
qGray(source.pixel(i+1,j-1)) * DIAGONAL_FACTOR +
qGray(source.pixel(i+1,j )) * AXIS_FACTOR +
qGray(source.pixel(i+1,j+1)) * DIAGONAL_FACTOR) / MULTIPLICATION_FACTOR;
return alphaShadow;
}
}
#define OSD_WINDOW_OPACITY 0.74
KisFloatingMessage::KisFloatingMessage(const QString &message, QWidget *parent, bool showOverParent, int timeout, Priority priority, int alignment)
: QWidget(parent)
, m_message(message)
, m_showOverParent(showOverParent)
, m_timeout(timeout)
, m_priority(priority)
, m_alignment(alignment)
{
- m_icon = KisIconUtils::loadIcon("calligrakrita").pixmap(256, 256).toImage();
+ m_icon = KisIconUtils::loadIcon("krita").pixmap(256, 256).toImage();
setWindowFlags(Qt::FramelessWindowHint | Qt::ToolTip);
setFocusPolicy(Qt::NoFocus);
setAttribute(Qt::WA_ShowWithoutActivating);
setFont(QFont("sans-serif"));
m_timer.setSingleShot( true );
connect(&m_timer, SIGNAL(timeout()), SLOT(startFade()));
}
void KisFloatingMessage::tryOverrideMessage(const QString message,
const QIcon& icon,
int timeout,
KisFloatingMessage::Priority priority,
int alignment)
{
if ((int)priority > (int)m_priority) return;
m_message = message;
setIcon(icon);
m_timeout = timeout;
m_priority = priority;
m_alignment = alignment;
showMessage();
update();
}
void KisFloatingMessage::showMessage()
{
setGeometry(determineMetrics(fontMetrics().width('x')));
setWindowOpacity(OSD_WINDOW_OPACITY);
QWidget::setVisible(true);
m_timer.start(m_timeout);
}
void KisFloatingMessage::setShowOverParent(bool show)
{
m_showOverParent = show;
}
void KisFloatingMessage::setIcon(const QIcon& icon)
{
m_icon = icon.pixmap(256, 256).toImage();
}
const int MARGIN = 20;
QRect KisFloatingMessage::determineMetrics( const int M )
{
m_m = M;
const QSize minImageSize = m_icon.size().boundedTo(QSize(100, 100));
// determine a sensible maximum size, don't cover the whole desktop or cross the screen
const QSize margin( (M + MARGIN) * 2, (M + MARGIN) * 2); //margins
const QSize image = m_icon.isNull() ? QSize(0, 0) : minImageSize;
const QSize max = QApplication::desktop()->availableGeometry(parentWidget()).size() - margin;
// If we don't do that, the boundingRect() might not be suitable for drawText() (Qt issue N67674)
m_message.replace(QRegExp( " +\n"), "\n");
// remove consecutive line breaks
m_message.replace(QRegExp( "\n+"), "\n");
// The osd cannot be larger than the screen
QRect rect = fontMetrics().boundingRect(0, 0, max.width() - image.width(), max.height(),
m_alignment, m_message);
if (!m_icon.isNull()) {
const int availableWidth = max.width() - rect.width() - M; //WILL be >= (minImageSize.width() - M)
m_scaledIcon = QPixmap::fromImage(m_icon.scaled(qMin(availableWidth, m_icon.width()),
qMin( rect.height(), m_icon.height()),
Qt::KeepAspectRatio, Qt::SmoothTransformation));
const int widthIncludingImage = rect.width() + m_scaledIcon.width() + M; //margin between text + image
rect.setWidth( widthIncludingImage );
}
// expand in all directions by 2*M
//
// take care with this rect, because it must be *bigger*
// than the rect we paint the message in
rect = kisGrowRect(rect, 2 * M);
const QSize newSize = rect.size();
QRect screen = QApplication::desktop()->screenGeometry(parentWidget());
QPoint newPos(MARGIN, MARGIN);
if (parentWidget() && m_showOverParent) {
screen = parentWidget()->geometry();
screen.setTopLeft(parentWidget()->mapToGlobal(QPoint(MARGIN, MARGIN + 50)));
newPos = screen.topLeft();
}
else {
// move to the right
newPos.rx() = screen.width() - MARGIN - newSize.width();
//ensure we don't dip below the screen
if (newPos.y() + newSize.height() > screen.height() - MARGIN) {
newPos.ry() = screen.height() - MARGIN - newSize.height();
}
// correct for screen position
newPos += screen.topLeft();
if (parentWidget()) {
// Move a bit to the left as there could be a scrollbar
newPos.setX(newPos.x() - MARGIN);
}
}
QRect rc(newPos, rect.size());
return rc;
}
void KisFloatingMessage::paintEvent( QPaintEvent *e )
{
const int& M = m_m;
QPoint point;
QRect rect(point, size());
rect.adjust(0, 0, -1, -1);
QPainter p(this);
p.setRenderHints( QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing );
p.setClipRect(e->rect());
//QPixmap background = The::svgHandler()->renderSvgWithDividers( "service_list_item", width(), height(), "service_list_item" );
//p.drawPixmap( 0, 0, background );
p.setPen(Qt::white);
rect.adjust(M, M, -M, -M);
if (!m_icon.isNull()) {
QRect r(rect);
r.setTop((size().height() - m_scaledIcon.height() ) / 2);
r.setSize(m_scaledIcon.size());
p.drawPixmap(r.topLeft(), m_scaledIcon);
rect.setLeft(rect.left() + m_scaledIcon.width() + M);
}
int graphicsHeight = 0;
rect.setBottom(rect.bottom() - graphicsHeight);
// Draw "shadow" text effect (black outline)
QPixmap pixmap( rect.size() + QSize( 10, 10 ) );
pixmap.fill( Qt::black );
QPainter p2(&pixmap);
p2.setFont(font());
p2.setPen(Qt::white);
p2.setBrush(Qt::white);
p2.drawText(QRect( QPoint( 5, 5 ), rect.size() ), m_alignment, m_message);
p2.end();
QColor shadowColor;
{
int h, s, v;
palette().color( QPalette::Normal, QPalette::Foreground ).getHsv( &h, &s, &v );
shadowColor = v > 128 ? Qt::black : Qt::white;
}
p.drawImage(rect.topLeft() - QPoint(5, 5), ShadowEngine::makeShadow(pixmap, shadowColor));
p.setPen( palette().color(QPalette::Active, QPalette::WindowText ));
p.drawText(rect, m_alignment, m_message);
}
void KisFloatingMessage::startFade()
{
m_fadeTimeLine.setDuration(250);
m_fadeTimeLine.setCurveShape(QTimeLine::EaseInCurve);
m_fadeTimeLine.setLoopCount(1);
m_fadeTimeLine.setFrameRange(0, 0);
m_fadeTimeLine.setFrameRange(0, 10);
connect(&m_fadeTimeLine, SIGNAL(finished()), SLOT(removeMessage()));
connect(&m_fadeTimeLine, SIGNAL(frameChanged(int)), SLOT(updateOpacity(int)));
m_fadeTimeLine.start();
}
void KisFloatingMessage::removeMessage()
{
m_timer.stop();
m_fadeTimeLine.stop();
hide();
deleteLater();
}
void KisFloatingMessage::updateOpacity(int /*value*/)
{
setWindowOpacity(OSD_WINDOW_OPACITY - 0.1);
}
diff --git a/packaging/linux/flatpak/org.kde.krita-nightly.json b/packaging/linux/flatpak/org.kde.krita-nightly.json
index 41ad410c12..304487b6c1 100644
--- a/packaging/linux/flatpak/org.kde.krita-nightly.json
+++ b/packaging/linux/flatpak/org.kde.krita-nightly.json
@@ -1,355 +1,355 @@
{
"app-id": "org.kde.krita",
"branch": "master",
"runtime": "org.kde.Platform",
"runtime-version": "5.9",
"sdk": "org.kde.Sdk",
"command": "krita",
- "rename-icon": "calligrakrita",
+ "rename-icon": "krita",
"tags": [
"nightly"
],
"desktop-file-name-prefix": "(Nightly) ",
"finish-args": [
"--share=ipc",
"--socket=x11",
"--share=network",
"--device=dri",
"--filesystem=home",
"--env=PYTHONPATH=/app/lib/python3/dist-packages"
],
"cleanup": [
"/include",
"/lib/pkgconfig",
"/lib/cmake",
"/share/aclocal",
"/share/pkgconfig",
"*.la",
"*.cmake"
],
"modules": [
{
"name": "boost",
"buildsystem": "simple",
"build-commands": [
"./bootstrap.sh --prefix=/app --with-libraries=system",
"./b2 -j `nproc` install"
],
"cleanup": [
"*.a"
],
"sources": [
{
"type": "archive",
"url": "https://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.bz2",
"sha256": "beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0"
}
]
},
{
"name": "eigen",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release"
],
"cleanup": [
"/share"
],
"sources": [
{
"type": "archive",
"url": "https://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2",
"sha256": "dd254beb0bafc695d0f62ae1a222ff85b52dbaa3a16f76e781dce22d0d20a4a6"
}
]
},
{
"name": "exiv2",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release"
],
"cleanup": [
"/bin",
"*.a",
"/share/man"
],
"sources": [
{
"type": "archive",
"url": "http://www.exiv2.org/builds/exiv2-0.26-trunk.tar.gz",
"sha256": "c75e3c4a0811bf700d92c82319373b7a825a2331c12b8b37d41eb58e4f18eafb"
}
]
},
{
"name": "ilmbase",
"config-opts": [
"--disable-static"
],
"sources": [
{
"type": "archive",
"url": "https://download.savannah.nongnu.org/releases/openexr/ilmbase-2.2.1.tar.gz",
"sha256": "cac206e63be68136ef556c2b555df659f45098c159ce24804e9d5e9e0286609e"
}
]
},
{
"name": "openexr",
"config-opts": [
"--disable-static"
],
"cleanup": [
"/bin",
"/share/doc"
],
"sources": [
{
"type": "archive",
"url": "https://download.savannah.nongnu.org/releases/openexr/openexr-2.2.1.tar.gz",
"sha256": "8f9a5af6131583404261931d9a5c83de0a425cb4b8b25ddab2b169fbf113aecd"
}
]
},
{
"name": "libraw",
"config-opts": [
"--disable-static"
],
"cleanup": [
"/bin",
"/share/doc"
],
"sources": [
{
"type": "archive",
"url": "https://www.libraw.org/data/LibRaw-0.18.6.tar.gz",
"sha256": "e5b8acca558aa457bc9214802004320c5610d1434c2adb1f3ea367f026afa53b"
}
]
},
{
"name": "fftw",
"config-opts": [
"--disable-static",
"--enable-shared",
"--disable-doc",
"--enable-threads"
],
"cleanup": [
"/bin",
"/share/man"
],
"sources": [
{
"type": "archive",
"url": "http://www.fftw.org/fftw-3.3.7.tar.gz",
"sha256": "3b609b7feba5230e8f6dd8d245ddbefac324c5a6ae4186947670d9ac2cd25573"
}
]
},
{
"name": "opencolorio",
"buildsystem": "cmake",
"builddir": true,
"build-options": {
"arch": {
"arm": {
"config-opts": [
"-DOCIO_USE_SSE=OFF"
]
},
"aarch64": {
"config-opts": [
"-DOCIO_USE_SSE=OFF"
]
}
}
},
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release",
"-DOCIO_BUILD_STATIC=OFF"
],
"cleanup": [
"/bin"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/imageworks/OpenColorIO/archive/v1.0.9.tar.gz",
"sha256": "27c81e691c15753cd2b560c2ca4bd5679a60c2350eedd43c99d44ca25d65ea7f"
}
]
},
{
"name": "vc",
"skip-arches": [
"aarch64",
"arm"
],
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release"
],
"cleanup": [
"*.a"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/VcDevel/Vc/releases/download/1.3.3/Vc-1.3.3.tar.gz",
"sha256": "08c629d2e14bfb8e4f1a10f09535e4a3c755292503c971ab46637d2986bdb4fe"
},
{
"type": "shell",
"commands": [
"sed -i 's/x86|/x86|i686|/' CMakeLists.txt"
]
}
]
},
{
"name": "poppler-data",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release"
],
"sources": [
{
"type": "archive",
"url": "https://poppler.freedesktop.org/poppler-data-0.4.8.tar.gz",
"sha256": "1096a18161f263cccdc6d8a2eb5548c41ff8fcf9a3609243f1b6296abdf72872"
}
]
},
{
"name": "poppler",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release",
"-DBUILD_GTK_TESTS=OFF",
"-DBUILD_QT5_TESTS=OFF",
"-DBUILD_CPP_TESTS=OFF",
"-DENABLE_UTILS=OFF",
"-DENABLE_CPP=OFF",
"-DENABLE_GLIB=OFF"
],
"sources": [
{
"type": "archive",
"url": "https://poppler.freedesktop.org/poppler-0.62.0.tar.xz",
"sha256": "5b9a73dfd4d6f61d165ada1e4f0abd2d420494bf9d0b1c15d0db3f7b83a729c6"
}
]
},
{
"name": "gsl",
"config-opts": [
"--disable-static"
],
"cleanup": [
"/bin",
"/share/info",
"/share/man"
],
"sources": [
{
"type": "archive",
"url": "https://ftpmirror.gnu.org/gnu/gsl/gsl-2.4.tar.gz",
"sha256": "4d46d07b946e7b31c19bbf33dda6204d7bedc2f5462a1bae1d4013426cd1ce9b"
}
]
},
{
"name": "gmic-qt",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release",
"-DGMIC_QT_HOST=krita",
"-DGMIC_PATH=./gmic/src"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/c-koi/gmic-qt/archive/v.218.tar.gz",
"sha256": "697861e5a1e024a3ccf9c96e513ec9f60f65d6e3c438ba355afcd10839b06f39"
},
{
"type": "file",
"url": "https://gmic.eu/files/source/gmic_2.1.8.tar.gz",
"sha256": "f22783f14cb202dec4a840733f2028f6e2c464fdd2f0166fc38943702cea6bde",
"dest-filename": "gmic.tar.gz"
},
{
"type": "shell",
"commands": [
"tar xf gmic.tar.gz",
"mv gmic-* gmic"
]
}
],
"post-install": [
"install -Dm755 gmic_krita_qt /app/bin/gmic_krita_qt"
]
},
{
"name": "sip",
"buildsystem": "simple",
"build-commands": [
"python3 configure.py --bindir=/app/bin --destdir=/app/lib/python3/dist-packages --incdir=/app/include/python3 --sipdir=/app/share/sip --stubsdir=/app/lib/python3/dist-packages",
"make -j `nproc`",
"make install"
],
"sources": [
{
"type": "archive",
"url": "https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.6/sip-4.19.6.tar.gz",
"sha256": "9dda27ae181bea782ebc8768d29f22f85ab6e5128ee3ab21f491febad707925a"
}
]
},
{
"name": "pyqt",
"buildsystem": "simple",
"build-commands": [
"python3 configure.py --confirm-license --sip-incdir=/app/include/python3 --bindir=/app/bin --destdir=/app/lib/python3/dist-packages --designer-plugindir=/app/lib/plugins/designer --qml-plugindir=/app/lib/plugins/PyQt5 --sipdir=/app/share/sip --stubsdir=/app/lib/python3/dist-packages/PyQt5",
"make -j `nproc`",
"make install"
],
"sources": [
{
"type": "archive",
"url": "https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.9.2/PyQt5_gpl-5.9.2.tar.gz",
"sha256": "c190dac598c97b0113ca5e7a37c71c623f02d1d713088addfacac4acfa4b8394"
}
]
},
{
"name": "krita",
"buildsystem": "cmake-ninja",
"builddir": true,
"build-options": {
"env": {
"PYTHONPATH": "/app/lib/python3/dist-packages"
}
},
"config-opts": [
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
],
"sources": [
{
"type": "git",
"url": "git://anongit.kde.org/krita.git",
"branch": "master"
}
]
}
]
}
diff --git a/packaging/linux/flatpak/org.kde.krita-nightly.yaml b/packaging/linux/flatpak/org.kde.krita-nightly.yaml
new file mode 100644
index 0000000000..f58e14b2b1
--- /dev/null
+++ b/packaging/linux/flatpak/org.kde.krita-nightly.yaml
@@ -0,0 +1,280 @@
+app-id: org.kde.krita-nightly
+default-branch: master
+runtime: org.kde.Platform
+runtime-version: '5.12'
+sdk: org.kde.Sdk
+command: krita
+rename-icon: krita
+rename-desktop-file: org.kde.krita.desktop
+desktop-file-name-suffix: nightly
+finish-args:
+ - --share=ipc
+ - --socket=x11
+ - --share=network
+ - --device=dri
+ - --socket=pulseaudio
+ - --filesystem=host
+ - --filesystem=xdg-config/kdeglobals:ro
+ - --env=PYTHONPATH=/app/lib/python3/dist-packages
+ - --env=TMPDIR=/var/tmp
+cleanup:
+ - /include
+ - /lib/pkgconfig
+ - /lib/cmake
+ - /share/aclocal
+ - /share/pkgconfig
+ - /share/info
+ - /share/man
+ - /cmake
+ - '*.a'
+ - '*.la'
+ - '*.cmake'
+modules:
+ - name: sip
+ buildsystem: simple
+ build-commands:
+ - python3 configure.py
+ --bindir=/app/bin
+ --destdir=/app/lib/python3/dist-packages
+ --incdir=/app/include/python3
+ --sipdir=/app/share/sip
+ --stubsdir=/app/lib/python3/dist-packages
+ --sip-module=PyQt5.sip
+ - make -j $FLATPAK_BUILDER_N_JOBS
+ - make install
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://www.riverbankcomputing.com/static/Downloads/sip/4.19.17/sip-4.19.17.tar.gz
+ sha256: 12bcd8f4d5feefc105bc075d12c5090ee783f7380728563c91b8b95d0ec45df3
+
+ - name: pyqt
+ buildsystem: simple
+ build-commands:
+ - python3 configure.py
+ --confirm-license
+ --sip-incdir=/app/include/python3
+ --bindir=/app/bin
+ --destdir=/app/lib/python3/dist-packages
+ --designer-plugindir=/app/lib/plugins/designer
+ --qml-plugindir=/app/lib/plugins/PyQt5
+ --sipdir=/app/share/sip
+ --stubsdir=/app/lib/python3/dist-packages/PyQt5
+ - make -j $FLATPAK_BUILDER_N_JOBS
+ - make install
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://www.riverbankcomputing.com/static/Downloads/PyQt5/5.12.2/PyQt5_gpl-5.12.2.tar.gz
+ sha256: c565829e77dc9c281aa1a0cdf2eddaead4e0f844cbaf7a4408441967f03f5f0f
+
+ - name: boost
+ buildsystem: simple
+ build-commands:
+ - ./bootstrap.sh --prefix=/app --with-libraries=system
+ - ./b2 -j $FLATPAK_BUILDER_N_JOBS install
+ sources:
+ - type: archive
+ url: https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.bz2
+ sha256: 8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406
+
+ - name: eigen
+ buildsystem: cmake-ninja
+ builddir: true
+ cleanup:
+ - '*'
+ sources:
+ - type: archive
+ url: https://bitbucket.org/eigen/eigen/get/3.3.7.tar.bz2
+ sha256: 9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce
+
+ - name: quazip
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ sources:
+ - type: archive
+ url: https://github.com/stachenov/quazip/archive/0.7.6.tar.gz
+ sha256: 4118a830a375a81211956611cc34b1b5b4ddc108c126287b91b40c2493046b70
+ - type: shell
+ commands:
+ - sed -i 's|${CMAKE_ROOT}/Modules|share/cmake|' CMakeLists.txt
+
+ - name: exiv2
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://www.exiv2.org/builds/exiv2-0.27.1-Source.tar.gz
+ sha256: f125286980fd1bcb28e188c02a93946951c61e10784720be2301b661a65b3081
+
+ - name: ilmbase
+ config-opts:
+ - --disable-static
+ sources:
+ - type: archive
+ url: https://github.com/openexr/openexr/releases/download/v2.3.0/ilmbase-2.3.0.tar.gz
+ sha256: 456978d1a978a5f823c7c675f3f36b0ae14dba36638aeaa3c4b0e784f12a3862
+
+ - name: openexr
+ config-opts:
+ - --disable-static
+ cleanup:
+ - /bin
+ - /share/doc
+ sources:
+ - type: archive
+ url: https://github.com/openexr/openexr/releases/download/v2.3.0/openexr-2.3.0.tar.gz
+ sha256: fd6cb3a87f8c1a233be17b94c74799e6241d50fc5efd4df75c7a4b9cf4e25ea6
+
+ - name: libraw
+ config-opts:
+ - --disable-static
+ cleanup:
+ - /bin
+ - /share/doc
+ sources:
+ - type: archive
+ url: https://www.libraw.org/data/LibRaw-0.19.2.tar.gz
+ sha256: 400d47969292291d297873a06fb0535ccce70728117463927ddd9452aa849644
+
+ - name: opencolorio
+ buildsystem: cmake # ninja build broken (fixed in 2.0)
+ builddir: true
+ build-options:
+ arch:
+ arm:
+ config-opts:
+ - -DOCIO_USE_SSE=OFF
+ aarch64:
+ config-opts:
+ - -DOCIO_USE_SSE=OFF
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DOCIO_BUILD_STATIC=OFF
+ - -DCMAKE_CXX_FLAGS='-Wno-error=deprecated-declarations -Wno-error=unused-function -Wno-error=cast-function-type'
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://github.com/imageworks/OpenColorIO/archive/v1.1.1.tar.gz
+ sha256: c9b5b9def907e1dafb29e37336b702fff22cc6306d445a13b1621b8a754c14c8
+
+ - name: vc
+ skip-arches:
+ - aarch64
+ - arm
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ cleanup:
+ - '*'
+ sources:
+ - type: archive
+ url: https://github.com/VcDevel/Vc/releases/download/1.3.3/Vc-1.3.3.tar.gz
+ sha256: 08c629d2e14bfb8e4f1a10f09535e4a3c755292503c971ab46637d2986bdb4fe
+ - type: shell
+ commands:
+ - sed -i 's/x86|/x86|i686|/' CMakeLists.txt
+
+ - name: poppler-data
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ sources:
+ - type: archive
+ url: https://poppler.freedesktop.org/poppler-data-0.4.9.tar.gz
+ sha256: 1f9c7e7de9ecd0db6ab287349e31bf815ca108a5a175cf906a90163bdbe32012
+
+ - name: poppler
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DBUILD_GTK_TESTS=OFF
+ - -DBUILD_QT5_TESTS=OFF
+ - -DBUILD_CPP_TESTS=OFF
+ - -DENABLE_UTILS=OFF
+ - -DENABLE_CPP=OFF
+ - -DENABLE_GLIB=OFF
+ - -DENABLE_LIBOPENJPEG=none
+ sources:
+ - type: archive
+ url: https://poppler.freedesktop.org/poppler-0.77.0.tar.xz
+ sha256: 7267eb4cbccd64a58244b8211603c1c1b6bf32c7f6a4ced2642865346102f36b
+
+ - name: gsl
+ config-opts:
+ - --disable-static
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://ftpmirror.gnu.org/gnu/gsl/gsl-2.5.tar.gz
+ sha256: 0460ad7c2542caaddc6729762952d345374784100223995eb14d614861f2258d
+
+ - name: gmic-qt
+ buildsystem: cmake-ninja
+ builddir: true
+ subdir: gmic-qt
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DGMIC_QT_HOST=krita
+ - -DGMIC_PATH=../src
+ - -DCMAKE_CXX_FLAGS=-lfftw3_threads
+ sources:
+ - type: archive
+ url: https://gmic.eu/files/source/gmic_2.6.4.tar.gz
+ sha256: 4cd88b2dca6b9b1a330ab4556d36656bafb98e4e9814bf0448545b27ef18dae3
+
+ - name: x264
+ config-opts:
+ - --disable-cli
+ - --enable-shared
+ sources:
+ - type: archive
+ url: https://download.videolan.org/x264/snapshots/x264-snapshot-20190305-2245-stable.tar.bz2
+ sha256: be52c96ef8bd930fbc1ecff03abac9b94976b444ea7641345e08e20d9e594d16
+
+ - name: ffmpeg
+ config-opts:
+ - --enable-rpath
+ - --enable-gpl
+ - --disable-static
+ - --enable-shared
+ - --disable-doc
+ - --disable-ffplay
+ - --disable-ffprobe
+ - --enable-libopus
+ - --enable-libvpx
+ - --enable-libx264
+ cleanup:
+ - /share/ffmpeg/examples
+ sources:
+ - type: archive
+ url: https://www.ffmpeg.org/releases/ffmpeg-4.1.4.tar.xz
+ sha256: f1f049a82fcfbf156564e73a3935d7e750891fab2abf302e735104fd4050a7e1
+
+ - name: krita
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DBUILD_TESTING=OFF
+ build-options:
+ env:
+ PYTHONPATH: /app/lib/python3/dist-packages
+ post-install:
+ - rm -r /app/share/icons/hicolor/{1024x1024,scalable}
+ sources:
+ - type: git
+ url: https://anongit.kde.org/krita
diff --git a/packaging/linux/flatpak/org.kde.krita-stable.yaml b/packaging/linux/flatpak/org.kde.krita-stable.yaml
new file mode 100644
index 0000000000..574e287dab
--- /dev/null
+++ b/packaging/linux/flatpak/org.kde.krita-stable.yaml
@@ -0,0 +1,280 @@
+app-id: org.kde.krita-stable
+runtime: org.kde.Platform
+runtime-version: '5.12'
+sdk: org.kde.Sdk
+command: krita
+rename-icon: krita
+rename-desktop-file: org.kde.krita.desktop
+desktop-file-name-suffix: stable
+finish-args:
+ - --share=ipc
+ - --socket=x11
+ - --share=network
+ - --device=dri
+ - --socket=pulseaudio
+ - --filesystem=host
+ - --filesystem=xdg-config/kdeglobals:ro
+ - --env=PYTHONPATH=/app/lib/python3/dist-packages
+ - --env=TMPDIR=/var/tmp
+cleanup:
+ - /include
+ - /lib/pkgconfig
+ - /lib/cmake
+ - /share/aclocal
+ - /share/pkgconfig
+ - /share/info
+ - /share/man
+ - /cmake
+ - '*.a'
+ - '*.la'
+ - '*.cmake'
+modules:
+ - name: sip
+ buildsystem: simple
+ build-commands:
+ - python3 configure.py
+ --bindir=/app/bin
+ --destdir=/app/lib/python3/dist-packages
+ --incdir=/app/include/python3
+ --sipdir=/app/share/sip
+ --stubsdir=/app/lib/python3/dist-packages
+ --sip-module=PyQt5.sip
+ - make -j $FLATPAK_BUILDER_N_JOBS
+ - make install
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://www.riverbankcomputing.com/static/Downloads/sip/4.19.17/sip-4.19.17.tar.gz
+ sha256: 12bcd8f4d5feefc105bc075d12c5090ee783f7380728563c91b8b95d0ec45df3
+
+ - name: pyqt
+ buildsystem: simple
+ build-commands:
+ - python3 configure.py
+ --confirm-license
+ --sip-incdir=/app/include/python3
+ --bindir=/app/bin
+ --destdir=/app/lib/python3/dist-packages
+ --designer-plugindir=/app/lib/plugins/designer
+ --qml-plugindir=/app/lib/plugins/PyQt5
+ --sipdir=/app/share/sip
+ --stubsdir=/app/lib/python3/dist-packages/PyQt5
+ - make -j $FLATPAK_BUILDER_N_JOBS
+ - make install
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://www.riverbankcomputing.com/static/Downloads/PyQt5/5.12.2/PyQt5_gpl-5.12.2.tar.gz
+ sha256: c565829e77dc9c281aa1a0cdf2eddaead4e0f844cbaf7a4408441967f03f5f0f
+
+ - name: boost
+ buildsystem: simple
+ build-commands:
+ - ./bootstrap.sh --prefix=/app --with-libraries=system
+ - ./b2 -j $FLATPAK_BUILDER_N_JOBS install
+ sources:
+ - type: archive
+ url: https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.bz2
+ sha256: 8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406
+
+ - name: eigen
+ buildsystem: cmake-ninja
+ builddir: true
+ cleanup:
+ - '*'
+ sources:
+ - type: archive
+ url: https://bitbucket.org/eigen/eigen/get/3.3.7.tar.bz2
+ sha256: 9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce
+
+ - name: quazip
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ sources:
+ - type: archive
+ url: https://github.com/stachenov/quazip/archive/0.7.6.tar.gz
+ sha256: 4118a830a375a81211956611cc34b1b5b4ddc108c126287b91b40c2493046b70
+ - type: shell
+ commands:
+ - sed -i 's|${CMAKE_ROOT}/Modules|share/cmake|' CMakeLists.txt
+
+ - name: exiv2
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://www.exiv2.org/builds/exiv2-0.27.1-Source.tar.gz
+ sha256: f125286980fd1bcb28e188c02a93946951c61e10784720be2301b661a65b3081
+
+ - name: ilmbase
+ config-opts:
+ - --disable-static
+ sources:
+ - type: archive
+ url: https://github.com/openexr/openexr/releases/download/v2.3.0/ilmbase-2.3.0.tar.gz
+ sha256: 456978d1a978a5f823c7c675f3f36b0ae14dba36638aeaa3c4b0e784f12a3862
+
+ - name: openexr
+ config-opts:
+ - --disable-static
+ cleanup:
+ - /bin
+ - /share/doc
+ sources:
+ - type: archive
+ url: https://github.com/openexr/openexr/releases/download/v2.3.0/openexr-2.3.0.tar.gz
+ sha256: fd6cb3a87f8c1a233be17b94c74799e6241d50fc5efd4df75c7a4b9cf4e25ea6
+
+ - name: libraw
+ config-opts:
+ - --disable-static
+ cleanup:
+ - /bin
+ - /share/doc
+ sources:
+ - type: archive
+ url: https://www.libraw.org/data/LibRaw-0.19.2.tar.gz
+ sha256: 400d47969292291d297873a06fb0535ccce70728117463927ddd9452aa849644
+
+ - name: opencolorio
+ buildsystem: cmake # ninja build broken (fixed in 2.0)
+ builddir: true
+ build-options:
+ arch:
+ arm:
+ config-opts:
+ - -DOCIO_USE_SSE=OFF
+ aarch64:
+ config-opts:
+ - -DOCIO_USE_SSE=OFF
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DOCIO_BUILD_STATIC=OFF
+ - -DCMAKE_CXX_FLAGS='-Wno-error=deprecated-declarations -Wno-error=unused-function -Wno-error=cast-function-type'
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://github.com/imageworks/OpenColorIO/archive/v1.1.1.tar.gz
+ sha256: c9b5b9def907e1dafb29e37336b702fff22cc6306d445a13b1621b8a754c14c8
+
+ - name: vc
+ skip-arches:
+ - aarch64
+ - arm
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ cleanup:
+ - '*'
+ sources:
+ - type: archive
+ url: https://github.com/VcDevel/Vc/releases/download/1.3.3/Vc-1.3.3.tar.gz
+ sha256: 08c629d2e14bfb8e4f1a10f09535e4a3c755292503c971ab46637d2986bdb4fe
+ - type: shell
+ commands:
+ - sed -i 's/x86|/x86|i686|/' CMakeLists.txt
+
+ - name: poppler-data
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ sources:
+ - type: archive
+ url: https://poppler.freedesktop.org/poppler-data-0.4.9.tar.gz
+ sha256: 1f9c7e7de9ecd0db6ab287349e31bf815ca108a5a175cf906a90163bdbe32012
+
+ - name: poppler
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DBUILD_GTK_TESTS=OFF
+ - -DBUILD_QT5_TESTS=OFF
+ - -DBUILD_CPP_TESTS=OFF
+ - -DENABLE_UTILS=OFF
+ - -DENABLE_CPP=OFF
+ - -DENABLE_GLIB=OFF
+ - -DENABLE_LIBOPENJPEG=none
+ sources:
+ - type: archive
+ url: https://poppler.freedesktop.org/poppler-0.77.0.tar.xz
+ sha256: 7267eb4cbccd64a58244b8211603c1c1b6bf32c7f6a4ced2642865346102f36b
+
+ - name: gsl
+ config-opts:
+ - --disable-static
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ url: https://ftpmirror.gnu.org/gnu/gsl/gsl-2.5.tar.gz
+ sha256: 0460ad7c2542caaddc6729762952d345374784100223995eb14d614861f2258d
+
+ - name: gmic-qt
+ buildsystem: cmake-ninja
+ builddir: true
+ subdir: gmic-qt
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DGMIC_QT_HOST=krita
+ - -DGMIC_PATH=../src
+ - -DCMAKE_CXX_FLAGS=-lfftw3_threads
+ sources:
+ - type: archive
+ url: https://gmic.eu/files/source/gmic_2.6.4.tar.gz
+ sha256: 4cd88b2dca6b9b1a330ab4556d36656bafb98e4e9814bf0448545b27ef18dae3
+
+ - name: x264
+ config-opts:
+ - --disable-cli
+ - --enable-shared
+ sources:
+ - type: archive
+ url: https://download.videolan.org/x264/snapshots/x264-snapshot-20190305-2245-stable.tar.bz2
+ sha256: be52c96ef8bd930fbc1ecff03abac9b94976b444ea7641345e08e20d9e594d16
+
+ - name: ffmpeg
+ config-opts:
+ - --enable-rpath
+ - --enable-gpl
+ - --disable-static
+ - --enable-shared
+ - --disable-doc
+ - --disable-ffplay
+ - --disable-ffprobe
+ - --enable-libopus
+ - --enable-libvpx
+ - --enable-libx264
+ cleanup:
+ - /share/ffmpeg/examples
+ sources:
+ - type: archive
+ url: https://www.ffmpeg.org/releases/ffmpeg-4.1.4.tar.xz
+ sha256: f1f049a82fcfbf156564e73a3935d7e750891fab2abf302e735104fd4050a7e1
+
+ - name: krita
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DBUILD_TESTING=OFF
+ build-options:
+ env:
+ PYTHONPATH: /app/lib/python3/dist-packages
+ post-install:
+ - rm -r /app/share/icons/hicolor/{1024x1024,scalable}
+ sources:
+ - type: git
+ url: https://anongit.kde.org/krita
+ branch: krita/4.2
diff --git a/packaging/linux/snap/snap/gui/krita.desktop b/packaging/linux/snap/snap/gui/krita.desktop
index 14eb7cae27..dc24963b26 100755
--- a/packaging/linux/snap/snap/gui/krita.desktop
+++ b/packaging/linux/snap/snap/gui/krita.desktop
@@ -1,140 +1,140 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
GenericName=Digital Painting
GenericName[ar]=رسم رقميّ
GenericName[bs]=Digitalno Bojenje
GenericName[ca]=Dibuix digital
GenericName[ca@valencia]=Dibuix digital
GenericName[cs]=Digitální malování
GenericName[da]=Digital tegning
GenericName[de]=Digitales Malen
GenericName[el]=Ψηφιακή ζωγραφική
GenericName[en_GB]=Digital Painting
GenericName[es]=Pintura digital
GenericName[et]=Digitaalne joonistamine
GenericName[eu]=Margolan digitala
GenericName[fi]=Digitaalimaalaus
GenericName[fr]=Peinture numérique
GenericName[gl]=Debuxo dixital
GenericName[hu]=Digitális festészet
GenericName[ia]=Pintura Digital
GenericName[it]=Pittura digitale
GenericName[ja]=デジタルペインティング
GenericName[kk]=Цифрлық сурет салу
GenericName[ko]=디지털 페인팅
GenericName[lt]=Skaitmeninis piešimas
GenericName[mr]=डिजिटल पेंटिंग
GenericName[nb]=Digital maling
GenericName[nl]=Digitaal schilderen
GenericName[nn]=Digital teikning
GenericName[pl]=Cyfrowe malowanie
GenericName[pt]=Pintura Digital
GenericName[pt_BR]=Pintura digital
GenericName[ru]=Цифровая живопись
GenericName[sk]=Digitálne maľovanie
GenericName[sl]=Digitalno slikanje
GenericName[sv]=Digital målning
GenericName[tr]=Sayısal Boyama
GenericName[ug]=سىفىرلىق رەسىم سىزغۇ
GenericName[uk]=Цифрове малювання
GenericName[x-test]=xxDigital Paintingxx
GenericName[zh_CN]=数字绘画
GenericName[zh_TW]=數位繪畫
MimeType=application/x-krita;image/openraster;application/x-krita-paintoppreset;
Comment=Pixel-based image manipulation program for the Calligra Suite
Comment[ar]=برنامج لتعديل الصّور البكسليّة لطقم «كاليغرا»
Comment[ca]=Programa de manipulació d'imatges basades en píxels per a la Suite Calligra
Comment[ca@valencia]=Programa de manipulació d'imatges basades en píxels per a la Suite Calligra
Comment[de]=Pixelbasiertes Bildbearbeitungsprogramm für die Calligra-Suite
Comment[en_GB]=Pixel-based image manipulation program for the Calligra Suite
Comment[es]=Programa de manipulación de imágenes basado en píxeles para la suite Calligra
Comment[et]=Calligra pikslipõhine pilditöötluse rakendus
Comment[eu]=Pixel-oinarridun irudiak manipulatzeko programa Calligra-Suiterako
Comment[fi]=Bittikarttakuvankäsittelyohjelma Calligra-toimisto-ohjelmistoon
Comment[gl]=Programa da colección de Calligra para a manipulación de imaxes baseadas en píxeles.
Comment[it]=Programma di manipolazione delle immagini basato su pixel per Calligra Suite
Comment[ko]=Calligra Suite를 위한 픽셀 기반 이미지 처리 프로그램
Comment[nl]=Afbeeldingsbewerkingsprogramma gebaseerd op pixels voor de Calligra Suite
Comment[nn]=Pikselbasert teikneprogram for Calligra
Comment[pl]=Program do obróbki obrazów na poziomie pikseli dla Pakietu Calligra
Comment[pt]='Plugin' de manipulação de imagens em pixels para o Calligra Stage
Comment[pt_BR]=Programa de manipulação de imagens baseado em pixels para o Calligra Suite
Comment[ru]=Программа редактирования пиксельной анимации для the Calligra Suite
Comment[sk]=Program na manipuláciu s pixelmi pre Calligra Suite
Comment[sv]=Bildpunktsbaserat bildbehandlingsprogram för Calligra-sviten
Comment[tr]=Calligra Suite için Pixel tabanlı görüntü düzenleme programı
Comment[uk]=Програма для роботи із растровими зображеннями для комплексу програм Calligra
Comment[x-test]=xxPixel-based image manipulation program for the Calligra Suitexx
Comment[zh_CN]=Calligra 套件的像素图像处理程序
Comment[zh_TW]=Calligra 套件中基於像素的影像處理程式
Type=Application
-Icon=${SNAP}/meta/gui/calligrakrita.png
-Categories=Qt;KDE;Graphics;
+Icon=${SNAP}/meta/gui/krita.png
+Categories=Qt;KDE;Graphics;2DGraphics;RasterGraphics;
X-KDE-NativeMimeType=application/x-krita
X-KDE-ExtraNativeMimeTypes=
StartupNotify=true
X-Krita-Version=28
diff --git a/pics/createicons/icons.txt b/pics/createicons/icons.txt
index 7b128326bb..c6c8733ea8 100644
--- a/pics/createicons/icons.txt
+++ b/pics/createicons/icons.txt
@@ -1,56 +1,56 @@
align-horizontal-center
align-horizontal-left
align-horizontal-right
align-vertical-bottom
align-vertical-center
align-vertical-top
application-x-krita
application-x-wmf
artistictext-detach-path
artistictext-tool
-calligrakrita
+krita
character-set
draw-arrow-back
draw-arrow-down
draw-arrow-forward
draw-arrow-up
draw-freehand
edit-rename
edit-select-all
format-indent-less
format-indent-more
format-justify-center
format-justify-fill
format-justify-left
format-justify-right
format-list-ordered
format-stroke-color
format-text-bold
format-text-color
format-text-direction-rtl
format-text-italic
format-text-strikethrough
format-text-subscript
format-text-superscript
format-text-underline
insert-text
klipper
list-remove
media-floppy
object-align-horizontal-center-calligra
object-align-horizontal-left-calligra
object-align-vertical-top-calligra
object-group-calligra
shape-choose
snap-extension
snap-guideline
snap-intersection
snap-node
snap-orthogonal
split
tab-close
tab-new
transform-move
trash-empty
zoom-fit-best
media-floppy
diff --git a/pics/icons.qrc b/pics/icons.qrc
index d2286d8893..cc31118256 100644
--- a/pics/icons.qrc
+++ b/pics/icons.qrc
@@ -1,305 +1,305 @@
16_dark_align-horizontal-center.svg
22_dark_align-horizontal-center.svg
24_dark_align-horizontal-center.svg
16_light_align-horizontal-center.svg
22_light_align-horizontal-center.svg
24_light_align-horizontal-center.svg
16_dark_align-horizontal-left.svg
22_dark_align-horizontal-left.svg
24_dark_align-horizontal-left.svg
16_light_align-horizontal-left.svg
22_light_align-horizontal-left.svg
24_light_align-horizontal-left.svg
16_dark_align-horizontal-right.svg
22_dark_align-horizontal-right.svg
24_dark_align-horizontal-right.svg
16_light_align-horizontal-right.svg
22_light_align-horizontal-right.svg
24_light_align-horizontal-right.svg
16_dark_align-vertical-bottom.svg
22_dark_align-vertical-bottom.svg
24_dark_align-vertical-bottom.svg
16_light_align-vertical-bottom.svg
22_light_align-vertical-bottom.svg
24_light_align-vertical-bottom.svg
16_dark_align-vertical-center.svg
22_dark_align-vertical-center.svg
24_dark_align-vertical-center.svg
16_light_align-vertical-center.svg
22_light_align-vertical-center.svg
24_light_align-vertical-center.svg
16_dark_align-vertical-top.svg
22_dark_align-vertical-top.svg
24_dark_align-vertical-top.svg
16_light_align-vertical-top.svg
22_light_align-vertical-top.svg
24_light_align-vertical-top.svg
16_dark_application-x-krita.svg
22_dark_application-x-krita.svg
32_dark_application-x-krita.svg
64_dark_application-x-krita.svg
16_light_application-x-krita.svg
22_light_application-x-krita.svg
32_light_application-x-krita.svg
64_light_application-x-krita.svg
16_dark_application-x-wmf.svg
22_dark_application-x-wmf.svg
32_dark_application-x-wmf.svg
64_dark_application-x-wmf.svg
16_light_application-x-wmf.svg
22_light_application-x-wmf.svg
32_light_application-x-wmf.svg
64_light_application-x-wmf.svg
- calligrakrita.png
+ krita.png
16_dark_character-set.svg
22_dark_character-set.svg
24_dark_character-set.svg
16_light_character-set.svg
22_light_character-set.svg
24_light_character-set.svg
16_dark_draw-arrow-back.svg
22_dark_draw-arrow-back.svg
24_dark_draw-arrow-back.svg
16_light_draw-arrow-back.svg
22_light_draw-arrow-back.svg
24_light_draw-arrow-back.svg
16_dark_draw-arrow-down.svg
22_dark_draw-arrow-down.svg
24_dark_draw-arrow-down.svg
16_light_draw-arrow-down.svg
22_light_draw-arrow-down.svg
24_light_draw-arrow-down.svg
16_dark_draw-arrow-forward.svg
22_dark_draw-arrow-forward.svg
24_dark_draw-arrow-forward.svg
16_light_draw-arrow-forward.svg
22_light_draw-arrow-forward.svg
24_light_draw-arrow-forward.svg
16_dark_draw-arrow-up.svg
22_dark_draw-arrow-up.svg
24_dark_draw-arrow-up.svg
16_light_draw-arrow-up.svg
22_light_draw-arrow-up.svg
24_light_draw-arrow-up.svg
16_dark_draw-freehand.svg
22_dark_draw-freehand.svg
24_dark_draw-freehand.svg
16_light_draw-freehand.svg
22_light_draw-freehand.svg
24_light_draw-freehand.svg
16_dark_edit-rename.svg
22_dark_edit-rename.svg
24_dark_edit-rename.svg
16_light_edit-rename.svg
22_light_edit-rename.svg
24_light_edit-rename.svg
16_dark_edit-select-all.svg
22_dark_edit-select-all.svg
24_dark_edit-select-all.svg
16_light_edit-select-all.svg
22_light_edit-select-all.svg
24_light_edit-select-all.svg
16_dark_format-indent-less.svg
22_dark_format-indent-less.svg
24_dark_format-indent-less.svg
16_light_format-indent-less.svg
22_light_format-indent-less.svg
24_light_format-indent-less.svg
16_dark_format-indent-more.svg
22_dark_format-indent-more.svg
24_dark_format-indent-more.svg
16_light_format-indent-more.svg
22_light_format-indent-more.svg
24_light_format-indent-more.svg
16_dark_format-justify-center.svg
22_dark_format-justify-center.svg
24_dark_format-justify-center.svg
16_light_format-justify-center.svg
22_light_format-justify-center.svg
24_light_format-justify-center.svg
16_dark_format-justify-fill.svg
22_dark_format-justify-fill.svg
24_dark_format-justify-fill.svg
16_light_format-justify-fill.svg
22_light_format-justify-fill.svg
24_light_format-justify-fill.svg
16_dark_format-justify-left.svg
22_dark_format-justify-left.svg
24_dark_format-justify-left.svg
16_light_format-justify-left.svg
22_light_format-justify-left.svg
24_light_format-justify-left.svg
16_dark_format-justify-right.svg
22_dark_format-justify-right.svg
24_dark_format-justify-right.svg
16_light_format-justify-right.svg
22_light_format-justify-right.svg
24_light_format-justify-right.svg
16_dark_format-list-ordered.svg
22_dark_format-list-ordered.svg
24_dark_format-list-ordered.svg
16_light_format-list-ordered.svg
22_light_format-list-ordered.svg
24_light_format-list-ordered.svg
16_dark_format-stroke-color.svg
22_dark_format-stroke-color.svg
24_dark_format-stroke-color.svg
16_light_format-stroke-color.svg
22_light_format-stroke-color.svg
24_light_format-stroke-color.svg
16_dark_format-text-bold.svg
22_dark_format-text-bold.svg
24_dark_format-text-bold.svg
16_light_format-text-bold.svg
22_light_format-text-bold.svg
24_light_format-text-bold.svg
16_dark_format-text-color.svg
22_dark_format-text-color.svg
24_dark_format-text-color.svg
16_light_format-text-color.svg
22_light_format-text-color.svg
24_light_format-text-color.svg
16_dark_format-text-direction-rtl.svg
22_dark_format-text-direction-rtl.svg
24_dark_format-text-direction-rtl.svg
16_light_format-text-direction-rtl.svg
22_light_format-text-direction-rtl.svg
24_light_format-text-direction-rtl.svg
16_dark_format-text-italic.svg
22_dark_format-text-italic.svg
24_dark_format-text-italic.svg
16_light_format-text-italic.svg
22_light_format-text-italic.svg
24_light_format-text-italic.svg
16_dark_format-text-strikethrough.svg
22_dark_format-text-strikethrough.svg
24_dark_format-text-strikethrough.svg
16_light_format-text-strikethrough.svg
22_light_format-text-strikethrough.svg
24_light_format-text-strikethrough.svg
16_dark_format-text-subscript.svg
22_dark_format-text-subscript.svg
24_dark_format-text-subscript.svg
16_light_format-text-subscript.svg
22_light_format-text-subscript.svg
24_light_format-text-subscript.svg
16_dark_format-text-superscript.svg
22_dark_format-text-superscript.svg
24_dark_format-text-superscript.svg
16_light_format-text-superscript.svg
22_light_format-text-superscript.svg
24_light_format-text-superscript.svg
16_dark_format-text-underline.svg
22_dark_format-text-underline.svg
24_dark_format-text-underline.svg
16_light_format-text-underline.svg
22_light_format-text-underline.svg
24_light_format-text-underline.svg
16_dark_insert-text.svg
22_dark_insert-text.svg
24_dark_insert-text.svg
16_light_insert-text.svg
22_light_insert-text.svg
24_light_insert-text.svg
48_dark_klipper.svg
48_light_klipper.svg
16_dark_list-remove.svg
22_dark_list-remove.svg
24_dark_list-remove.svg
16_light_list-remove.svg
22_light_list-remove.svg
24_light_list-remove.svg
16_dark_media-floppy.svg
22_dark_media-floppy.svg
16_light_media-floppy.svg
22_light_media-floppy.svg
16_dark_object-align-horizontal-center-calligra.svg
22_dark_object-align-horizontal-center-calligra.svg
16_light_object-align-horizontal-center-calligra.svg
22_light_object-align-horizontal-center-calligra.svg
16_dark_object-align-horizontal-left-calligra.svg
22_dark_object-align-horizontal-left-calligra.svg
16_light_object-align-horizontal-left-calligra.svg
22_light_object-align-horizontal-left-calligra.svg
16_dark_object-align-vertical-top-calligra.svg
22_dark_object-align-vertical-top-calligra.svg
16_light_object-align-vertical-top-calligra.svg
22_light_object-align-vertical-top-calligra.svg
16_dark_object-group-calligra.svg
22_dark_object-group-calligra.svg
16_light_object-group-calligra.svg
22_light_object-group-calligra.svg
16_dark_shape-choose.svg
22_dark_shape-choose.svg
16_light_shape-choose.svg
22_light_shape-choose.svg
16_dark_snap-extension.svg
22_dark_snap-extension.svg
24_dark_snap-extension.svg
16_light_snap-extension.svg
22_light_snap-extension.svg
24_light_snap-extension.svg
16_dark_snap-guideline.svg
22_dark_snap-guideline.svg
24_dark_snap-guideline.svg
16_light_snap-guideline.svg
22_light_snap-guideline.svg
24_light_snap-guideline.svg
16_dark_snap-intersection.svg
22_dark_snap-intersection.svg
24_dark_snap-intersection.svg
16_light_snap-intersection.svg
22_light_snap-intersection.svg
24_light_snap-intersection.svg
16_dark_snap-node.svg
22_dark_snap-node.svg
24_dark_snap-node.svg
16_light_snap-node.svg
22_light_snap-node.svg
24_light_snap-node.svg
22_dark_snap-orthogonal.svg
24_dark_snap-orthogonal.svg
22_light_snap-orthogonal.svg
24_light_snap-orthogonal.svg
16_dark_split.svg
22_dark_split.svg
24_dark_split.svg
16_light_split.svg
22_light_split.svg
24_light_split.svg
16_dark_tab-close.svg
22_dark_tab-close.svg
24_dark_tab-close.svg
16_light_tab-close.svg
22_light_tab-close.svg
24_light_tab-close.svg
16_dark_tab-new.svg
22_dark_tab-new.svg
24_dark_tab-new.svg
16_light_tab-new.svg
22_light_tab-new.svg
24_light_tab-new.svg
16_dark_transform-move.svg
22_dark_transform-move.svg
24_dark_transform-move.svg
16_light_transform-move.svg
22_light_transform-move.svg
24_light_transform-move.svg
16_dark_trash-empty.svg
22_dark_trash-empty.svg
24_dark_trash-empty.svg
16_light_trash-empty.svg
22_light_trash-empty.svg
24_light_trash-empty.svg
16_dark_zoom-fit-best.svg
22_dark_zoom-fit-best.svg
24_dark_zoom-fit-best.svg
16_light_zoom-fit-best.svg
22_light_zoom-fit-best.svg
24_light_zoom-fit-best.svg
16_dark_warning.svg
16_light_warning.svg
diff --git a/pics/calligrakrita-base.svg b/pics/krita-base.svg
similarity index 100%
rename from pics/calligrakrita-base.svg
rename to pics/krita-base.svg
diff --git a/pics/calligrakrita.png b/pics/krita.png
similarity index 100%
rename from pics/calligrakrita.png
rename to pics/krita.png
diff --git a/plugins/impex/brush/krita_brush.desktop b/plugins/impex/brush/krita_brush.desktop
index 0f48da01e8..6557938577 100644
--- a/plugins/impex/brush/krita_brush.desktop
+++ b/plugins/impex/brush/krita_brush.desktop
@@ -1,74 +1,74 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/x-gimp-brush;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
X-DBUS-StartupType=Multi
X-DBUS-ServiceName=org.krita.krita
NoDisplay=true
diff --git a/plugins/impex/csv/krita_csv.desktop b/plugins/impex/csv/krita_csv.desktop
index b818e5555e..c29e8914a1 100644
--- a/plugins/impex/csv/krita_csv.desktop
+++ b/plugins/impex/csv/krita_csv.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=text/csv;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/exr/krita_exr.desktop b/plugins/impex/exr/krita_exr.desktop
index 076f5d33f0..fcd257a5ad 100644
--- a/plugins/impex/exr/krita_exr.desktop
+++ b/plugins/impex/exr/krita_exr.desktop
@@ -1,126 +1,126 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
GenericName=Application for Drawing and Handling of Images
GenericName[ar]=تطبيق لرسم الصّور والتّعامل معها
GenericName[bg]=Приложение за рисуване и обработка на изображения
GenericName[bs]=Aplikacija za crtanje i upravljanje slikom
GenericName[ca]=Aplicació per a dibuix i modificació d'imatges
GenericName[ca@valencia]=Aplicació per a dibuix i modificació d'imatges
GenericName[da]=Tegne- og billedbehandlingsprogram
GenericName[de]=Programm zum Zeichnen und Bearbeiten von Bildern
GenericName[el]=Εφαρμογή για επεξεργασία και χειρισμό εικόνων
GenericName[en_GB]=Application for Drawing and Handling of Images
GenericName[eo]=Aplikaĵo por Desegnado kaj Mastrumado de Bildoj
GenericName[es]=Aplicación para dibujo y manipulación de imágenes
GenericName[et]=Joonistamise ja pilditöötluse rakendus
GenericName[eu]=Irudiak marrazteko eta manipulatzeko aplikazioa
GenericName[fa]=کاربرد برای ترسیم و به کار بردن تصاویر
GenericName[fi]=Ohjelma kuvien piirtämiseen ja käsittelyyn
GenericName[fr]=Application pour dessiner et manipuler des images
GenericName[fy]=Aplikaasje om ôfbyldings mei te tekenjen en te bewurkjen
GenericName[ga]=Feidhmchlár le haghaidh Líníochta agus Láimhseála Íomhánna
GenericName[gl]=Aplicativo de debuxo e edición de imaxes
GenericName[he]=יישום לצביעה וניהול תמונות
GenericName[hi]=छवियों को ड्रा करने तथा उन्हें प्रबन्धित करने का अनुप्रयोग
GenericName[hne]=फोटू मन ल ड्रा करे अउ ओ मन ल प्रबन्धित करे के अनुपरयोग
GenericName[hu]=Rajzoló és képkezelő
GenericName[is]=Teikni og myndvinnsluforrit
GenericName[it]=Applicazione di disegno e gestione di immagini
GenericName[ja]=描画と画像操作のためのアプリケーション
GenericName[kk]=Кескінді салу және өңдеу бағдарламасы
GenericName[ko]=그림 그리기 및 처리 프로그램
GenericName[lv]=Programma zīmēšanai un attēlu apstrādei
GenericName[nb]=Program for tegning og bildehåndtering
GenericName[nds]=Programm för't Teken un Bildhanteren
GenericName[ne]=रेखाचित्र बनाउन र छविको ह्यान्डल गर्नका लागि अनुप्रयोग
GenericName[nl]=Toepassing om afbeeldingen te tekenen en te bewerken
GenericName[nn]=Program for teikning og handsaming av bilete
GenericName[pl]=Program do rysowania i obróbki obrazów
GenericName[pt]=Aplicação de Desenho e Manipulação de Imagens
GenericName[pt_BR]=Aplicativo de desenho e manipulação de imagens
GenericName[ru]=Приложение для рисования и редактирования изображений
GenericName[sk]=Aplikácia na kresnenie a manilupáciu s obrázkami
GenericName[sl]=Program za risanje in rokovanje s slikami
GenericName[sv]=Program för att rita och hantera bilder
GenericName[ta]=பிம்பங்களை கையாளுதல் மற்றும் வரைதலுக்கான பயன்னாடு
GenericName[tr]=Çizim ve Resim İşleme Uygulaması
GenericName[uk]=Програма для малювання і обробки зображень
GenericName[uz]=Rasm chizish dasturi
GenericName[uz@cyrillic]=Расм чизиш дастури
GenericName[wa]=Programe po dessiner et apougnî des imådjes
GenericName[x-test]=xxApplication for Drawing and Handling of Imagesxx
GenericName[zh_CN]=用于绘制和处理图像的应用程序
GenericName[zh_TW]=繪圖與影像處理的應用程式
-Icon=calligrakrita
+Icon=krita
MimeType=image/exr;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
NoDisplay=true
diff --git a/plugins/impex/gif/krita_gif.desktop b/plugins/impex/gif/krita_gif.desktop
index 970e7e8e7a..61b503b34c 100644
--- a/plugins/impex/gif/krita_gif.desktop
+++ b/plugins/impex/gif/krita_gif.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/gif;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/heif/krita_heif.desktop b/plugins/impex/heif/krita_heif.desktop
index 11e3993b4d..e8f973bfae 100644
--- a/plugins/impex/heif/krita_heif.desktop
+++ b/plugins/impex/heif/krita_heif.desktop
@@ -1,126 +1,126 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
GenericName=Application for Drawing and Handling of Images
GenericName[ar]=تطبيق لرسم الصّور والتّعامل معها
GenericName[bg]=Приложение за рисуване и обработка на изображения
GenericName[bs]=Aplikacija za crtanje i upravljanje slikom
GenericName[ca]=Aplicació per a dibuix i modificació d'imatges
GenericName[ca@valencia]=Aplicació per a dibuix i modificació d'imatges
GenericName[da]=Tegne- og billedbehandlingsprogram
GenericName[de]=Programm zum Zeichnen und Bearbeiten von Bildern
GenericName[el]=Εφαρμογή για επεξεργασία και χειρισμό εικόνων
GenericName[en_GB]=Application for Drawing and Handling of Images
GenericName[eo]=Aplikaĵo por Desegnado kaj Mastrumado de Bildoj
GenericName[es]=Aplicación para dibujo y manipulación de imágenes
GenericName[et]=Joonistamise ja pilditöötluse rakendus
GenericName[eu]=Irudiak marrazteko eta manipulatzeko aplikazioa
GenericName[fa]=کاربرد برای ترسیم و به کار بردن تصاویر
GenericName[fi]=Ohjelma kuvien piirtämiseen ja käsittelyyn
GenericName[fr]=Application pour dessiner et manipuler des images
GenericName[fy]=Aplikaasje om ôfbyldings mei te tekenjen en te bewurkjen
GenericName[ga]=Feidhmchlár le haghaidh Líníochta agus Láimhseála Íomhánna
GenericName[gl]=Aplicativo de debuxo e edición de imaxes
GenericName[he]=יישום לצביעה וניהול תמונות
GenericName[hi]=छवियों को ड्रा करने तथा उन्हें प्रबन्धित करने का अनुप्रयोग
GenericName[hne]=फोटू मन ल ड्रा करे अउ ओ मन ल प्रबन्धित करे के अनुपरयोग
GenericName[hu]=Rajzoló és képkezelő
GenericName[is]=Teikni og myndvinnsluforrit
GenericName[it]=Applicazione di disegno e gestione di immagini
GenericName[ja]=描画と画像操作のためのアプリケーション
GenericName[kk]=Кескінді салу және өңдеу бағдарламасы
GenericName[ko]=그림 그리기 및 처리 프로그램
GenericName[lv]=Programma zīmēšanai un attēlu apstrādei
GenericName[nb]=Program for tegning og bildehåndtering
GenericName[nds]=Programm för't Teken un Bildhanteren
GenericName[ne]=रेखाचित्र बनाउन र छविको ह्यान्डल गर्नका लागि अनुप्रयोग
GenericName[nl]=Toepassing om afbeeldingen te tekenen en te bewerken
GenericName[nn]=Program for teikning og handsaming av bilete
GenericName[pl]=Program do rysowania i obróbki obrazów
GenericName[pt]=Aplicação de Desenho e Manipulação de Imagens
GenericName[pt_BR]=Aplicativo de desenho e manipulação de imagens
GenericName[ru]=Приложение для рисования и редактирования изображений
GenericName[sk]=Aplikácia na kresnenie a manilupáciu s obrázkami
GenericName[sl]=Program za risanje in rokovanje s slikami
GenericName[sv]=Program för att rita och hantera bilder
GenericName[ta]=பிம்பங்களை கையாளுதல் மற்றும் வரைதலுக்கான பயன்னாடு
GenericName[tr]=Çizim ve Resim İşleme Uygulaması
GenericName[uk]=Програма для малювання і обробки зображень
GenericName[uz]=Rasm chizish dasturi
GenericName[uz@cyrillic]=Расм чизиш дастури
GenericName[wa]=Programe po dessiner et apougnî des imådjes
GenericName[x-test]=xxApplication for Drawing and Handling of Imagesxx
GenericName[zh_CN]=用于绘制和处理图像的应用程序
GenericName[zh_TW]=繪圖與影像處理的應用程式
-Icon=calligrakrita
+Icon=krita
MimeType=image/heic;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
NoDisplay=true
diff --git a/plugins/impex/heightmap/krita_heightmap.desktop b/plugins/impex/heightmap/krita_heightmap.desktop
index d35b79d3c6..773de5c0bd 100644
--- a/plugins/impex/heightmap/krita_heightmap.desktop
+++ b/plugins/impex/heightmap/krita_heightmap.desktop
@@ -1,76 +1,76 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
GenericName=
-Icon=calligrakrita
+Icon=krita
MimeType=image/x-r16;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
NoDisplay=true
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
diff --git a/plugins/impex/jpeg/krita_jpeg.desktop b/plugins/impex/jpeg/krita_jpeg.desktop
index cc1202f22f..218780e312 100644
--- a/plugins/impex/jpeg/krita_jpeg.desktop
+++ b/plugins/impex/jpeg/krita_jpeg.desktop
@@ -1,75 +1,75 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=image/jpeg;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
NoDisplay=true
diff --git a/plugins/impex/kra/krita_kra.desktop b/plugins/impex/kra/krita_kra.desktop
index a983c17f8b..5e068ed377 100644
--- a/plugins/impex/kra/krita_kra.desktop
+++ b/plugins/impex/kra/krita_kra.desktop
@@ -1,76 +1,76 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Comment=
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=application/x-krita;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
NoDisplay=true
diff --git a/plugins/impex/ora/krita_ora.desktop b/plugins/impex/ora/krita_ora.desktop
index 52fcee7c36..70b0957ae8 100644
--- a/plugins/impex/ora/krita_ora.desktop
+++ b/plugins/impex/ora/krita_ora.desktop
@@ -1,76 +1,76 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Comment=
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=image/openraster;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
NoDisplay=true
diff --git a/plugins/impex/pdf/krita_pdf.desktop b/plugins/impex/pdf/krita_pdf.desktop
index 0f526234ef..45fc3d699d 100644
--- a/plugins/impex/pdf/krita_pdf.desktop
+++ b/plugins/impex/pdf/krita_pdf.desktop
@@ -1,75 +1,75 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=application/pdf;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
NoDisplay=true
diff --git a/plugins/impex/png/krita_png.desktop b/plugins/impex/png/krita_png.desktop
index a0968bbf75..b04171379f 100644
--- a/plugins/impex/png/krita_png.desktop
+++ b/plugins/impex/png/krita_png.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/png;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/psd/krita_psd.desktop b/plugins/impex/psd/krita_psd.desktop
index 01620121cb..0dcd4878ee 100644
--- a/plugins/impex/psd/krita_psd.desktop
+++ b/plugins/impex/psd/krita_psd.desktop
@@ -1,75 +1,75 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=image/x-psd;image/photoshop;image/x-photoshop;image/vnd.adobe.photoshop;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
NoDisplay=true
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
diff --git a/plugins/impex/qimageio/krita_qimageio.desktop b/plugins/impex/qimageio/krita_qimageio.desktop
index 87f2c9b15a..0c8d2dacf5 100644
--- a/plugins/impex/qimageio/krita_qimageio.desktop
+++ b/plugins/impex/qimageio/krita_qimageio.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/bmp;image/x-xpixmap;image/x-xbitmap;image/webp;image/vnd.microsoft.icon;image/x-portable-pixmap;image/x-portable-graymap;image/x-portable-bitmap;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/raw/krita_raw.desktop b/plugins/impex/raw/krita_raw.desktop
index 57ef9d4626..a9847c3771 100644
--- a/plugins/impex/raw/krita_raw.desktop
+++ b/plugins/impex/raw/krita_raw.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/x-nikon-nef;image/x-canon-cr2;image/x-sony-sr2;image/x-canon-crw;image/x-pentax-pef;image/x-sigma-x3f;image/x-kodak-kdc;image/x-minolta-mrw;image/x-sony-arw;image/x-kodak-k25;image/x-kodak-dcr;image/x-olympus-orf;image/x-panasonic-raw;image/x-panasonic-raw2;image/x-fuji-raf;image/x-sony-srf;image/x-adobe-dng;
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
Type=Application
diff --git a/plugins/impex/spriter/krita_spriter.desktop b/plugins/impex/spriter/krita_spriter.desktop
index c8564c9b83..a2aea09f00 100644
--- a/plugins/impex/spriter/krita_spriter.desktop
+++ b/plugins/impex/spriter/krita_spriter.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/x-scml;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/svg/krita_svg.desktop b/plugins/impex/svg/krita_svg.desktop
index c531f1a056..ac82eedf61 100644
--- a/plugins/impex/svg/krita_svg.desktop
+++ b/plugins/impex/svg/krita_svg.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/svg+xml;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/tga/krita_tga.desktop b/plugins/impex/tga/krita_tga.desktop
index 330ba11c9c..b94d1f0cbe 100644
--- a/plugins/impex/tga/krita_tga.desktop
+++ b/plugins/impex/tga/krita_tga.desktop
@@ -1,72 +1,72 @@
[Desktop Entry]
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Exec=krita %F
MimeType=image/x-tga;
Type=Application
-Icon=calligrakrita
+Icon=krita
Categories=Qt;KDE;Office;Graphics;
StartupNotify=true
NoDisplay=true
diff --git a/plugins/impex/tiff/krita_tiff.desktop b/plugins/impex/tiff/krita_tiff.desktop
index 4353a74312..3018ab809b 100644
--- a/plugins/impex/tiff/krita_tiff.desktop
+++ b/plugins/impex/tiff/krita_tiff.desktop
@@ -1,75 +1,75 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=image/tiff;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
NoDisplay=true
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
diff --git a/plugins/impex/xcf/krita_xcf.desktop b/plugins/impex/xcf/krita_xcf.desktop
index 3801617f88..3c5c043bb6 100644
--- a/plugins/impex/xcf/krita_xcf.desktop
+++ b/plugins/impex/xcf/krita_xcf.desktop
@@ -1,75 +1,75 @@
[Desktop Entry]
Categories=Qt;KDE;Office;Graphics;
Exec=krita %F
-Icon=calligrakrita
+Icon=krita
MimeType=image/x-xcf;
Name=Krita
Name[af]=Krita
Name[ar]=كريتا
Name[bg]=Krita
Name[br]=Krita
Name[bs]=Krita
Name[ca]=Krita
Name[ca@valencia]=Krita
Name[cs]=Krita
Name[cy]=Krita
Name[da]=Krita
Name[de]=Krita
Name[el]=Krita
Name[en_GB]=Krita
Name[eo]=Krita
Name[es]=Krita
Name[et]=Krita
Name[eu]=Krita
Name[fi]=Krita
Name[fr]=Krita
Name[fy]=Krita
Name[ga]=Krita
Name[gl]=Krita
Name[he]=Krita
Name[hi]=केरिता
Name[hne]=केरिता
Name[hr]=Krita
Name[hu]=Krita
Name[ia]=Krita
Name[is]=Krita
Name[it]=Krita
Name[ja]=Krita
Name[kk]=Krita
Name[ko]=Krita
Name[lt]=Krita
Name[lv]=Krita
Name[mr]=क्रिटा
Name[ms]=Krita
Name[nb]=Krita
Name[nds]=Krita
Name[ne]=क्रिता
Name[nl]=Krita
Name[nn]=Krita
Name[pl]=Krita
Name[pt]=Krita
Name[pt_BR]=Krita
Name[ro]=Krita
Name[ru]=Krita
Name[se]=Krita
Name[sk]=Krita
Name[sl]=Krita
Name[sv]=Krita
Name[ta]=கிரிட்டா
Name[tg]=Krita
Name[tr]=Krita
Name[ug]=Krita
Name[uk]=Krita
Name[uz]=Krita
Name[uz@cyrillic]=Krita
Name[wa]=Krita
Name[xh]=Krita
Name[x-test]=xxKritaxx
Name[zh_CN]=Krita
Name[zh_TW]=Krita
Type=Application
NoDisplay=true
StartupNotify=true
Terminal=false
X-KDE-SubstituteUID=false
X-KDE-Username=