Source code for icons
# -*- coding: utf-8 -*-
# Copyright Martin Manns
# Distributed under the terms of the GNU General Public License
# --------------------------------------------------------------------
# pyspread 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 3 of the License, or
# (at your option) any later version.
#
# pyspread 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 pyspread. If not, see <http://www.gnu.org/licenses/>.
# --------------------------------------------------------------------
"""
**Provides**
* :class:`IconPath`
* :class:`IconConverter`
* :class:`Icon`
"""
from PyQt6.QtGui import QIcon
try:
from pyspread.settings import (ICON_PATH, ACTION_PATH, STATUS_PATH,
CHARTS_PATH)
except ImportError:
from settings import ICON_PATH, ACTION_PATH, STATUS_PATH, CHARTS_PATH
[docs]
class IconPath:
"""Holds icon paths as attributes"""
pyspread = ICON_PATH / 'hicolor' / 'svg' / 'pyspread.svg'
# Status icons
safe_mode = STATUS_PATH / 'status-safe-mode.svg'
selection_mode = STATUS_PATH / 'status-selection-mode.svg'
# File menu icons
new = ACTION_PATH / 'document-new.svg'
open = ACTION_PATH / 'document-open.svg'
save = ACTION_PATH / 'document-save.svg'
save_as = ACTION_PATH / 'document-save-as.svg'
imprt = ACTION_PATH / 'document-import.svg'
export = ACTION_PATH / 'document-export.svg'
approve = ACTION_PATH / 'document-approve.svg'
clear_globals = ACTION_PATH / 'edit-clear.svg'
page_setup = ACTION_PATH / 'document-page-setup.svg'
print_preview = ACTION_PATH / 'document-print-preview.svg'
print = ACTION_PATH / 'document-print.svg'
preferences = ACTION_PATH / 'document-properties.svg'
new_gpg_key = ACTION_PATH / 'document-new-gpg-key.svg'
quit = ACTION_PATH / 'document-log-out.svg'
# Edit menu icons
undo = ACTION_PATH / 'edit-undo.svg'
redo = ACTION_PATH / 'edit-redo.svg'
cut = ACTION_PATH / 'edit-cut.svg'
copy = ACTION_PATH / 'edit-copy.svg'
copy_results = ACTION_PATH / 'edit-copy-results.svg'
paste = ACTION_PATH / 'edit-paste.svg'
paste_as = ACTION_PATH / 'edit-paste-as.svg'
select_all = ACTION_PATH / 'edit-select-all.svg'
find = ACTION_PATH / 'edit-find.svg'
find_next = ACTION_PATH / 'edit-find-next.svg'
replace = ACTION_PATH / 'edit-find-replace.svg'
sort_ascending = ACTION_PATH / 'edit-sort-ascending.svg'
sort_descending = ACTION_PATH / 'edit-sort-descending.svg'
quote = ACTION_PATH / 'edit-quote.svg'
sort_ascending = ACTION_PATH / 'edit-sort-ascending.svg'
sort_descending = ACTION_PATH / 'edit-sort-descending.svg'
insert_row = ACTION_PATH / 'edit-insert-row.svg'
insert_column = ACTION_PATH / 'edit-insert-column.svg'
insert_table = ACTION_PATH / 'edit-insert-table.svg'
delete_row = ACTION_PATH / 'edit-delete-row.svg'
delete_column = ACTION_PATH / 'edit-delete-column.svg'
delete_table = ACTION_PATH / 'edit-delete-table.svg'
resize_grid = ACTION_PATH / 'edit-resize-grid.svg'
# View menu icons
fullscreen = ACTION_PATH / 'view-fullscreen.svg'
goto_cell = ACTION_PATH / 'view-goto-cell.svg'
check_spelling = ACTION_PATH / 'view-check-spelling.svg'
zoom_in = ACTION_PATH / 'view-zoom-in.svg'
zoom_out = ACTION_PATH / 'view-zoom-out.svg'
zoom_1 = ACTION_PATH / 'view-zoom-original.svg'
refresh = ACTION_PATH / 'view-refresh.svg'
toggle_periodic_updates = ACTION_PATH / 'view-timer.svg'
show_frozen = ACTION_PATH / 'view-show-frozen.svg'
# Format menu icons
copy_format = ACTION_PATH / 'format-copy.svg'
paste_format = ACTION_PATH / 'format-paste.svg'
font_dialog = ACTION_PATH / 'format-font.svg'
bold = ACTION_PATH / 'format-text-bold.svg'
italics = ACTION_PATH / 'format-text-italic.svg'
underline = ACTION_PATH / 'format-text-underline.svg'
strikethrough = ACTION_PATH / 'format-text-strikethrough.svg'
markup = ACTION_PATH / 'format-cell-markup.svg'
image = ACTION_PATH / 'format-cell-image.svg'
text = ACTION_PATH / 'format-cell-text.svg'
matplotlib = ACTION_PATH / 'format-cell-chart.svg'
line_color = ACTION_PATH / 'format-line-color.svg'
text_color = ACTION_PATH / 'format-text-color.svg'
background_color = ACTION_PATH / 'format-background-color.svg'
rotate_0 = ACTION_PATH / 'format-cell-rotate-0.svg'
rotate_90 = ACTION_PATH / 'format-cell-rotate-90.svg'
rotate_180 = ACTION_PATH / 'format-cell-rotate-180.svg'
rotate_270 = ACTION_PATH / 'format-cell-rotate-270.svg'
justify_left = ACTION_PATH / 'format-justify-left.svg'
justify_fill = ACTION_PATH / 'format-justify-fill.svg'
justify_center = ACTION_PATH / 'format-justify-center.svg'
justify_right = ACTION_PATH / 'format-justify-right.svg'
align_top = ACTION_PATH / 'format-text-align-top.svg'
align_center = ACTION_PATH / 'format-text-align-center.svg'
align_bottom = ACTION_PATH / 'format-text-align-bottom.svg'
border_menu = ACTION_PATH / 'format-borders-all.svg'
format_borders_all = ACTION_PATH / 'format-borders-all.svg'
format_borders_top = ACTION_PATH / 'format-borders-top.svg'
format_borders_bottom = ACTION_PATH / 'format-borders-bottom.svg'
format_borders_left = ACTION_PATH / 'format-borders-left.svg'
format_borders_right = ACTION_PATH / 'format-borders-right.svg'
format_borders_outer = ACTION_PATH / 'format-borders-outer.svg'
format_borders_inner = ACTION_PATH / 'format-borders-inner.svg'
format_borders_top_bottom = ACTION_PATH / 'format-borders-top-bottom.svg'
format_borders = ACTION_PATH / 'format-borders-4.svg'
format_borders_0 = ACTION_PATH / 'format-borders-0.svg'
format_borders_1 = ACTION_PATH / 'format-borders-1.svg'
format_borders_2 = ACTION_PATH / 'format-borders-2.svg'
format_borders_4 = ACTION_PATH / 'format-borders-4.svg'
format_borders_8 = ACTION_PATH / 'format-borders-8.svg'
format_borders_16 = ACTION_PATH / 'format-borders-16.svg'
format_borders_32 = ACTION_PATH / 'format-borders-32.svg'
format_borders_64 = ACTION_PATH / 'format-borders-64.svg'
freeze = ACTION_PATH / 'format-freeze.svg'
lock = ACTION_PATH / 'format-lock.svg'
button = ACTION_PATH / 'format-button.svg'
merge_cells = ACTION_PATH / 'format-merge-cells.svg'
# Macro menu icons
insert_image = ACTION_PATH / 'macro-insert-image.svg'
link_image = ACTION_PATH / 'macro-link-image.svg'
insert_chart = ACTION_PATH / 'macro-insert-chart.svg'
insert_sum = ACTION_PATH / 'macro-insert-sum.svg'
# Help menu icons
help = ACTION_PATH / 'help-browser.svg'
tutorial = ACTION_PATH / 'help-tutorial.svg'
faq = ACTION_PATH / 'help-faq.svg'
dependencies = ACTION_PATH / 'help-dependencies.svg'
# Toolbar icons
menu_manager = ACTION_PATH / 'menu-manager.svg'
# Chart dialog template icons
chart_pie_1_1 = CHARTS_PATH / 'chart_pie_1_1.svg'
chart_ring_1_1 = CHARTS_PATH / 'chart_ring_1_1.svg'
chart_line_1_1 = CHARTS_PATH / 'chart_line_1_1.svg'
chart_polar_1_1 = CHARTS_PATH / 'chart_polar_1_1.svg'
chart_area_1_1 = CHARTS_PATH / 'chart_area_1_1.svg'
chart_column_1_1 = CHARTS_PATH / 'chart_column_1_1.svg'
chart_column_1_2 = CHARTS_PATH / 'chart_column_1_2.svg'
chart_bar_1_3 = CHARTS_PATH / 'chart_bar_1_3.svg'
chart_scatter_1_1 = CHARTS_PATH / 'chart_scatter_1_1.svg'
chart_bubble_1_1 = CHARTS_PATH / 'chart_bubble_1_1.svg'
chart_boxplot_2_2 = CHARTS_PATH / 'chart_boxplot_2_2.svg'
chart_histogram_1_1 = CHARTS_PATH / 'chart_histogram_1_1.svg'
chart_histogram_1_4 = CHARTS_PATH / 'chart_histogram_1_4.svg'
chart_scatterhist_1_1 = CHARTS_PATH/'chart_scatterhist_1_1.svg'
chart_matrix_1_1 = CHARTS_PATH / 'chart_matrix_1_1.svg'
chart_contour_1_2 = CHARTS_PATH / 'chart_contour_1_2.svg'
chart_surface_2_1 = CHARTS_PATH / 'chart_surface_2_1.svg'
chart_plotnine_geom_bar_1_1 = \
CHARTS_PATH / 'chart_plotnine_geom_bar_1_1.svg'
chart_r_graphics_barplot_1_1 = \
CHARTS_PATH / 'chart_r_graphics_barplot_1_1.svg'
chart_r_ggplot2_geom_boxplot_1_2 = \
CHARTS_PATH / 'chart_r_ggplot2_geom_boxplot_1_2.svg'
chart_r_ggplot2_geom_point_1_1 = \
CHARTS_PATH / 'chart_r_ggplot2_geom_point_1_1.svg'
chart_r_lattice_xyplot_1_1 = \
CHARTS_PATH / 'chart_r_lattice_xyplot_1_1.svg'
chart_r_ggplot2_geom_density2d_1_2 = \
CHARTS_PATH / 'chart_r_ggplot2_geom_density2d_1_2.svg'
chart_r_lattice_wireframe_2_1 =\
CHARTS_PATH / 'chart_r_lattice_wireframe_2_1.svg'
[docs]
class IconConverter(type):
"""Meta class that provides QIcons for IconPaths icons"""
def __getattr__(cls, name: str) -> QIcon:
"""Provides QIcons for icon names
:param name: Icon name
"""
return QIcon(str(getattr(IconPath, name)))
[docs]
class Icon(metaclass=IconConverter):
"""Provides QIcons as attributes for all attributes of IconPaths"""