diff --git a/aegisub/build/Aegisub/Aegisub.vcxproj b/aegisub/build/Aegisub/Aegisub.vcxproj
index 92a653fd8..11f7bb8d2 100644
--- a/aegisub/build/Aegisub/Aegisub.vcxproj
+++ b/aegisub/build/Aegisub/Aegisub.vcxproj
@@ -142,7 +142,6 @@
-
@@ -339,7 +338,6 @@
-
diff --git a/aegisub/build/Aegisub/Aegisub.vcxproj.filters b/aegisub/build/Aegisub/Aegisub.vcxproj.filters
index cb309864e..269bde845 100644
--- a/aegisub/build/Aegisub/Aegisub.vcxproj.filters
+++ b/aegisub/build/Aegisub/Aegisub.vcxproj.filters
@@ -561,9 +561,6 @@
Video\Providers
-
- Utilities
-
Utilities
@@ -1088,9 +1085,6 @@
Main UI
-
- Utilities
-
Main UI
diff --git a/aegisub/src/command/Makefile.inc b/aegisub/src/command/Makefile.inc
index 28e1bccb5..49e77d5b1 100644
--- a/aegisub/src/command/Makefile.inc
+++ b/aegisub/src/command/Makefile.inc
@@ -1,5 +1,3 @@
-command/icon.o: CXXFLAGS += -fno-var-tracking
-
SRC += \
command/app.cpp \
command/audio.cpp \
@@ -17,7 +15,6 @@ SRC += \
command/vis_tool.cpp
SRC += \
- command/icon.cpp \
command/command.cpp
HEADER += *.h
diff --git a/aegisub/src/command/app.cpp b/aegisub/src/command/app.cpp
index 78a931821..988d0efce 100644
--- a/aegisub/src/command/app.cpp
+++ b/aegisub/src/command/app.cpp
@@ -47,6 +47,7 @@
#include "../dialog_version_check.h"
#include "../frame_main.h"
#include "../include/aegisub/context.h"
+#include "../libresrc/libresrc.h"
#include "../main.h"
#include "../options.h"
#include "../preferences.h"
@@ -58,6 +59,7 @@ namespace {
struct app_about : public Command {
CMD_NAME("app/about")
+ CMD_ICON(about_menu)
STR_MENU("&About")
STR_DISP("About")
STR_HELP("About Aegisub")
@@ -156,6 +158,7 @@ struct app_exit : public Command {
struct app_language : public Command {
CMD_NAME("app/language")
+ CMD_ICON(languages_menu)
STR_MENU("&Language...")
STR_DISP("Language")
STR_HELP("Select Aegisub interface language")
@@ -180,6 +183,7 @@ struct app_language : public Command {
struct app_log : public Command {
CMD_NAME("app/log")
+ CMD_ICON(about_menu)
STR_MENU("&Log window")
STR_DISP("Log window")
STR_HELP("View the event log")
@@ -191,6 +195,7 @@ struct app_log : public Command {
struct app_new_window : public Command {
CMD_NAME("app/new_window")
+ CMD_ICON(new_window_menu)
STR_MENU("New &Window")
STR_DISP("New Window")
STR_HELP("Open a new application window")
@@ -202,6 +207,7 @@ struct app_new_window : public Command {
struct app_options : public Command {
CMD_NAME("app/options")
+ CMD_ICON(options_button)
STR_MENU("&Options...")
STR_DISP("Options")
STR_HELP("Configure Aegisub")
@@ -217,6 +223,7 @@ struct app_options : public Command {
struct app_toggle_global_hotkeys : public Command {
CMD_NAME("app/toggle/global_hotkeys")
+ CMD_ICON(toggle_audio_medusa)
STR_MENU("Toggle global hotkey overrides")
STR_DISP("Toggle global hotkey overrides")
STR_HELP("Toggle global hotkey overrides (Medusa Mode)")
diff --git a/aegisub/src/command/audio.cpp b/aegisub/src/command/audio.cpp
index 827b70cc2..9e784444d 100644
--- a/aegisub/src/command/audio.cpp
+++ b/aegisub/src/command/audio.cpp
@@ -40,6 +40,7 @@
#include "../audio_timing.h"
#include "../compat.h"
#include "../include/aegisub/context.h"
+#include "../libresrc/libresrc.h"
#include "../options.h"
#include "../selection_controller.h"
#include "../utils.h"
@@ -61,6 +62,7 @@ namespace {
struct audio_close : public validate_audio_open {
CMD_NAME("audio/close")
+ CMD_ICON(close_audio_menu)
STR_MENU("&Close Audio")
STR_DISP("Close Audio")
STR_HELP("Close the currently open audio file")
@@ -72,6 +74,7 @@ struct audio_close : public validate_audio_open {
struct audio_open : public Command {
CMD_NAME("audio/open")
+ CMD_ICON(open_audio_menu)
STR_MENU("&Open Audio File...")
STR_DISP("Open Audio File")
STR_HELP("Open an audio file")
@@ -127,6 +130,7 @@ struct audio_open_noise : public Command {
struct audio_open_video : public Command {
CMD_NAME("audio/open/video")
+ CMD_ICON(open_audio_from_video_menu)
STR_MENU("Open Audio from &Video")
STR_DISP("Open Audio from Video")
STR_HELP("Open the audio from the current video file")
@@ -220,6 +224,7 @@ struct audio_play_current_selection : public validate_audio_open {
struct audio_play_current_line : public validate_audio_open {
CMD_NAME("audio/play/line")
+ CMD_ICON(button_playline)
STR_MENU("Play current line")
STR_DISP("Play current line")
STR_HELP("Play the audio for the current line")
@@ -234,6 +239,7 @@ struct audio_play_current_line : public validate_audio_open {
struct audio_play_selection : public validate_audio_open {
CMD_NAME("audio/play/selection")
+ CMD_ICON(button_playsel)
STR_MENU("Play audio selection")
STR_DISP("Play audio selection")
STR_HELP("Play audio until the end of the selection is reached")
@@ -262,6 +268,7 @@ struct audio_play_toggle : public validate_audio_open {
struct audio_stop : public Command {
CMD_NAME("audio/stop")
+ CMD_ICON(button_stop)
STR_MENU("Stop playing")
STR_DISP("Stop playing")
STR_HELP("Stop audio and video playback")
@@ -279,6 +286,7 @@ struct audio_stop : public Command {
struct audio_play_before : public validate_audio_open {
CMD_NAME("audio/play/selection/before")
+ CMD_ICON(button_playfivehbefore)
STR_MENU("Play 500 ms before selection")
STR_DISP("Play 500 ms before selection")
STR_HELP("Play 500 ms before selection")
@@ -292,6 +300,7 @@ struct audio_play_before : public validate_audio_open {
struct audio_play_after : public validate_audio_open {
CMD_NAME("audio/play/selection/after")
+ CMD_ICON(button_playfivehafter)
STR_MENU("Play 500 ms after selection")
STR_DISP("Play 500 ms after selection")
STR_HELP("Play 500 ms after selection")
@@ -305,6 +314,7 @@ struct audio_play_after : public validate_audio_open {
struct audio_play_end : public validate_audio_open {
CMD_NAME("audio/play/selection/end")
+ CMD_ICON(button_playlastfiveh)
STR_MENU("Play last 500 ms of selection")
STR_DISP("Play last 500 ms of selection")
STR_HELP("Play last 500 ms of selection")
@@ -318,6 +328,7 @@ struct audio_play_end : public validate_audio_open {
struct audio_play_begin : public validate_audio_open {
CMD_NAME("audio/play/selection/begin")
+ CMD_ICON(button_playfirstfiveh)
STR_MENU("Play first 500 ms of selection")
STR_DISP("Play first 500 ms of selection")
STR_HELP("Play first 500 ms of selection")
@@ -333,6 +344,7 @@ struct audio_play_begin : public validate_audio_open {
struct audio_play_to_end : public validate_audio_open {
CMD_NAME("audio/play/to_end")
+ CMD_ICON(button_playtoend)
STR_MENU("Play from selection start to end of file")
STR_DISP("Play from selection start to end of file")
STR_HELP("Play from selection start to end of file")
@@ -345,6 +357,7 @@ struct audio_play_to_end : public validate_audio_open {
struct audio_commit : public validate_audio_open {
CMD_NAME("audio/commit")
+ CMD_ICON(button_audio_commit)
STR_MENU("Commit")
STR_DISP("Commit")
STR_HELP("Commit any pending audio timing changes")
@@ -403,6 +416,7 @@ struct audio_commit_stay : public validate_audio_open {
struct audio_go_to : public validate_audio_open {
CMD_NAME("audio/go_to")
+ CMD_ICON(button_audio_goto)
STR_MENU("Go to selection")
STR_DISP("Go to selection")
STR_HELP("Scroll the audio display to center on the current audio selection")
@@ -440,6 +454,7 @@ static inline void toggle(const char *opt) {
struct audio_autoscroll : public Command {
CMD_NAME("audio/opt/autoscroll")
+ CMD_ICON(toggle_audio_autoscroll)
STR_MENU("Auto scroll audio display to selected line")
STR_DISP("Auto scroll audio display to selected line")
STR_HELP("Auto scroll audio display to selected line")
@@ -456,6 +471,7 @@ struct audio_autoscroll : public Command {
struct audio_autocommit : public Command {
CMD_NAME("audio/opt/autocommit")
+ CMD_ICON(toggle_audio_autocommit)
STR_MENU("Automatically commit all changes")
STR_DISP("Automatically commit all changes")
STR_HELP("Automatically commit all changes")
@@ -472,6 +488,7 @@ struct audio_autocommit : public Command {
struct audio_autonext : public Command {
CMD_NAME("audio/opt/autonext")
+ CMD_ICON(toggle_audio_nextcommit)
STR_MENU("Auto go to next line on commit")
STR_DISP("Auto go to next line on commit")
STR_HELP("Automatically go to next line on commit")
@@ -488,6 +505,7 @@ struct audio_autonext : public Command {
struct audio_toggle_spectrum : public Command {
CMD_NAME("audio/opt/spectrum")
+ CMD_ICON(toggle_audio_spectrum)
STR_MENU("Spectrum analyzer mode")
STR_DISP("Spectrum analyzer mode")
STR_HELP("Spectrum analyzer mode")
@@ -504,6 +522,7 @@ struct audio_toggle_spectrum : public Command {
struct audio_vertical_link : public Command {
CMD_NAME("audio/opt/vertical_link")
+ CMD_ICON(toggle_audio_link)
STR_MENU("Link vertical zoom and volume sliders")
STR_DISP("Link vertical zoom and volume sliders")
STR_HELP("Link vertical zoom and volume sliders")
@@ -520,6 +539,7 @@ struct audio_vertical_link : public Command {
struct audio_karaoke : public Command {
CMD_NAME("audio/karaoke")
+ CMD_ICON(kara_mode)
STR_MENU("Toggle karaoke mode")
STR_DISP("Toggle karaoke mode")
STR_HELP("Toggle karaoke mode")
diff --git a/aegisub/src/command/automation.cpp b/aegisub/src/command/automation.cpp
index 9055338d1..8ad1ee2f3 100644
--- a/aegisub/src/command/automation.cpp
+++ b/aegisub/src/command/automation.cpp
@@ -38,6 +38,7 @@
#include "../dialog_manager.h"
#include "../frame_main.h"
#include "../include/aegisub/context.h"
+#include "../libresrc/libresrc.h"
#include "../main.h"
#include "../options.h"
#include "../utils.h"
@@ -75,6 +76,7 @@ struct reload_autoload : public Command {
struct open_manager : public Command {
CMD_NAME("am/manager")
+ CMD_ICON(automation_toolbutton)
STR_MENU("&Automation...")
STR_DISP("Automation")
STR_HELP("Open automation manager")
@@ -86,6 +88,7 @@ struct open_manager : public Command {
struct meta : public Command {
CMD_NAME("am/meta")
+ CMD_ICON(automation_toolbutton)
STR_MENU("&Automation...")
STR_DISP("Automation")
STR_HELP("Open automation manager. Ctrl: Rescan autoload folder. Ctrl+Shift: Rescan autoload folder and reload all automation scripts")
diff --git a/aegisub/src/command/command.cpp b/aegisub/src/command/command.cpp
index 41f9987a6..2feaaf60e 100644
--- a/aegisub/src/command/command.cpp
+++ b/aegisub/src/command/command.cpp
@@ -14,7 +14,6 @@
#include "command.h"
-#include "icon.h"
#include "../compat.h"
#include
@@ -50,10 +49,6 @@ namespace cmd {
cmd(c);
}
- wxBitmap const& Command::Icon(int size) const {
- return icon::get(name(), size);
- }
-
std::vector get_registered_commands() {
std::vector ret;
ret.reserve(cmd_map.size());
diff --git a/aegisub/src/command/command.h b/aegisub/src/command/command.h
index a67cade0c..d073bf55c 100644
--- a/aegisub/src/command/command.h
+++ b/aegisub/src/command/command.h
@@ -39,6 +39,12 @@ DEFINE_SIMPLE_EXCEPTION_NOINNER(CommandIconInvalid, CommandError, "command/icon/
#define STR_HELP(a) wxString StrHelp() const { return _(a); }
#define CMD_TYPE(a) int Type() const { using namespace cmd; return a; }
+#define CMD_ICON(icon) wxBitmap Icon(int size) const override { \
+ if (size == 32) return GETIMAGE(icon##_32); \
+ if (size == 24) return GETIMAGE(icon##_24); \
+ return GETIMAGE(icon##_16); \
+}
+
#define COMMAND_GROUP(cname, cmdname, menu, disp, help) \
struct cname : public Command { \
CMD_NAME(cmdname) \
@@ -101,7 +107,7 @@ namespace cmd {
/// Request icon.
/// @param size Icon size.
- wxBitmap const& Icon(int size) const;
+ virtual wxBitmap Icon(int size) const { return wxBitmap{}; }
/// Command function
virtual void operator()(agi::Context *c)=0;
diff --git a/aegisub/src/command/edit.cpp b/aegisub/src/command/edit.cpp
index 204a672d6..cdbd65130 100644
--- a/aegisub/src/command/edit.cpp
+++ b/aegisub/src/command/edit.cpp
@@ -43,6 +43,7 @@
#include "../dialog_search_replace.h"
#include "../include/aegisub/context.h"
#include "../initial_line_state.h"
+#include "../libresrc/libresrc.h"
#include "../options.h"
#include "../search_replace_engine.h"
#include "../selection_controller.h"
@@ -331,6 +332,7 @@ void show_color_picker(const agi::Context *c, agi::Color (AssStyle::*field), con
struct edit_color_primary : public Command {
CMD_NAME("edit/color/primary")
+ CMD_ICON(button_color_one)
STR_MENU("Primary Color...")
STR_DISP("Primary Color")
STR_HELP("Set the primary fill color (\\c) at the cursor position")
@@ -342,6 +344,7 @@ struct edit_color_primary : public Command {
struct edit_color_secondary : public Command {
CMD_NAME("edit/color/secondary")
+ CMD_ICON(button_color_two)
STR_MENU("Secondary Color...")
STR_DISP("Secondary Color")
STR_HELP("Set the secondary (karaoke) fill color (\\2c) at the cursor position")
@@ -353,6 +356,7 @@ struct edit_color_secondary : public Command {
struct edit_color_outline : public Command {
CMD_NAME("edit/color/outline")
+ CMD_ICON(button_color_three)
STR_MENU("Outline Color...")
STR_DISP("Outline Color")
STR_HELP("Set the outline color (\\3c) at the cursor position")
@@ -364,6 +368,7 @@ struct edit_color_outline : public Command {
struct edit_color_shadow : public Command {
CMD_NAME("edit/color/shadow")
+ CMD_ICON(button_color_four)
STR_MENU("Shadow Color...")
STR_DISP("Shadow Color")
STR_HELP("Set the shadow color (\\4c) at the cursor position")
@@ -375,6 +380,7 @@ struct edit_color_shadow : public Command {
struct edit_style_bold : public Command {
CMD_NAME("edit/style/bold")
+ CMD_ICON(button_bold)
STR_MENU("Toggle Bold")
STR_DISP("Toggle Bold")
STR_HELP("Toggle bold (\\b) for the current selection or at the current cursor position")
@@ -386,6 +392,7 @@ struct edit_style_bold : public Command {
struct edit_style_italic : public Command {
CMD_NAME("edit/style/italic")
+ CMD_ICON(button_italics)
STR_MENU("Toggle Italics")
STR_DISP("Toggle Italics")
STR_HELP("Toggle italics (\\i) for the current selection or at the current cursor position")
@@ -397,6 +404,7 @@ struct edit_style_italic : public Command {
struct edit_style_underline : public Command {
CMD_NAME("edit/style/underline")
+ CMD_ICON(button_underline)
STR_MENU("Toggle Underline")
STR_DISP("Toggle Underline")
STR_HELP("Toggle underline (\\u) for the current selection or at the current cursor position")
@@ -408,6 +416,7 @@ struct edit_style_underline : public Command {
struct edit_style_strikeout : public Command {
CMD_NAME("edit/style/strikeout")
+ CMD_ICON(button_strikeout)
STR_MENU("Toggle Strikeout")
STR_DISP("Toggle Strikeout")
STR_HELP("Toggle strikeout (\\s) for the current selection or at the current cursor position")
@@ -419,6 +428,7 @@ struct edit_style_strikeout : public Command {
struct edit_font : public Command {
CMD_NAME("edit/font")
+ CMD_ICON(button_fontname)
STR_MENU("Font Face...")
STR_DISP("Font Face")
STR_HELP("Select a font face and size")
@@ -464,6 +474,7 @@ struct edit_font : public Command {
struct edit_find_replace : public Command {
CMD_NAME("edit/find_replace")
+ CMD_ICON(find_replace_menu)
STR_MENU("Find and R&eplace...")
STR_DISP("Find and Replace")
STR_HELP("Find and replace words in subtitles")
@@ -530,6 +541,7 @@ static void delete_lines(agi::Context *c, wxString const& commit_message) {
struct edit_line_copy : public validate_sel_nonempty {
CMD_NAME("edit/line/copy")
+ CMD_ICON(copy_button)
STR_MENU("&Copy Lines")
STR_DISP("Copy Lines")
STR_HELP("Copy subtitles to the clipboard")
@@ -552,6 +564,7 @@ struct edit_line_copy : public validate_sel_nonempty {
struct edit_line_cut: public validate_sel_nonempty {
CMD_NAME("edit/line/cut")
+ CMD_ICON(cut_button)
STR_MENU("Cu&t Lines")
STR_DISP("Cut Lines")
STR_HELP("Cut subtitles")
@@ -568,6 +581,7 @@ struct edit_line_cut: public validate_sel_nonempty {
struct edit_line_delete : public validate_sel_nonempty {
CMD_NAME("edit/line/delete")
+ CMD_ICON(delete_button)
STR_MENU("De&lete Lines")
STR_DISP("Delete Lines")
STR_HELP("Delete currently selected lines")
@@ -786,6 +800,7 @@ static bool try_paste_lines(agi::Context *c) {
struct edit_line_paste : public Command {
CMD_NAME("edit/line/paste")
+ CMD_ICON(paste_button)
STR_MENU("&Paste Lines")
STR_DISP("Paste Lines")
STR_HELP("Paste subtitles")
@@ -1057,6 +1072,7 @@ struct edit_line_split_video : public validate_video_and_sel_nonempty {
struct edit_redo : public Command {
CMD_NAME("edit/redo")
+ CMD_ICON(redo_button)
STR_HELP("Redo last undone action")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_DYNAMIC_NAME)
@@ -1082,6 +1098,7 @@ struct edit_redo : public Command {
struct edit_undo : public Command {
CMD_NAME("edit/undo")
+ CMD_ICON(undo_button)
STR_HELP("Undo last action")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_DYNAMIC_NAME)
diff --git a/aegisub/src/command/grid.cpp b/aegisub/src/command/grid.cpp
index cd6985e06..2378718c6 100644
--- a/aegisub/src/command/grid.cpp
+++ b/aegisub/src/command/grid.cpp
@@ -38,6 +38,7 @@
#include "../audio_controller.h"
#include "../audio_timing.h"
#include "../include/aegisub/context.h"
+#include "../libresrc/libresrc.h"
#include "../options.h"
#include "../selection_controller.h"
#include "../utils.h"
@@ -60,6 +61,7 @@ struct grid_line_next : public Command {
struct grid_line_next_create : public Command {
CMD_NAME("grid/line/next/create")
+ CMD_ICON(button_audio_commit)
STR_MENU("Next Line")
STR_DISP("Next Line")
STR_HELP("Move to the next subtitle line, creating a new one if needed")
@@ -250,6 +252,7 @@ struct grid_sort_style_selected : public validate_sel_multiple {
struct grid_tag_cycle_hiding : public Command {
CMD_NAME("grid/tag/cycle_hiding")
+ CMD_ICON(toggle_tag_hiding)
STR_MENU("Cycle Tag Hiding Mode")
STR_DISP("Cycle Tag Hiding Mode")
STR_HELP("Cycle through tag hiding modes")
@@ -377,6 +380,7 @@ struct grid_move_down : public Command {
struct grid_swap : public Command {
CMD_NAME("grid/swap")
+ CMD_ICON(arrow_sort)
STR_MENU("Swap Lines")
STR_DISP("Swap Lines")
STR_HELP("Swap the two selected lines")
diff --git a/aegisub/src/command/help.cpp b/aegisub/src/command/help.cpp
index d645225d3..9d5fc33f5 100644
--- a/aegisub/src/command/help.cpp
+++ b/aegisub/src/command/help.cpp
@@ -35,6 +35,7 @@
#include "../help_button.h"
#include "../include/aegisub/context.h"
+#include "../libresrc/libresrc.h"
#include "../options.h"
#include
@@ -46,6 +47,7 @@ namespace {
struct help_bugs : public Command {
CMD_NAME("help/bugs")
+ CMD_ICON(bugtracker_button)
STR_MENU("&Bug Tracker...")
STR_DISP("Bug Tracker")
STR_HELP("Visit Aegisub's bug tracker to report bugs and request new features")
@@ -66,6 +68,7 @@ struct help_bugs : public Command {
struct help_contents : public Command {
CMD_NAME("help/contents")
+ CMD_ICON(contents_button)
STR_MENU("&Contents")
STR_DISP("Contents")
STR_HELP("Help topics")
@@ -77,6 +80,7 @@ struct help_contents : public Command {
struct help_forums : public Command {
CMD_NAME("help/forums")
+ CMD_ICON(forums_button)
STR_MENU("&Forums")
STR_DISP("Forums")
STR_HELP("Visit Aegisub's forums")
@@ -88,6 +92,7 @@ struct help_forums : public Command {
struct help_irc : public Command {
CMD_NAME("help/irc")
+ CMD_ICON(irc_button)
STR_MENU("&IRC Channel")
STR_DISP("IRC Channel")
STR_HELP("Visit Aegisub's official IRC channel")
@@ -99,6 +104,7 @@ struct help_irc : public Command {
struct help_video : public Command {
CMD_NAME("help/video")
+ CMD_ICON(visual_help)
STR_MENU("&Visual Typesetting")
STR_DISP("Visual Typesetting")
STR_HELP("Open the manual page for Visual Typesetting")
@@ -110,6 +116,7 @@ struct help_video : public Command {
struct help_website : public Command {
CMD_NAME("help/website")
+ CMD_ICON(website_button)
STR_MENU("&Website")
STR_DISP("Website")
STR_HELP("Visit Aegisub's official website")
diff --git a/aegisub/src/command/icon.cpp b/aegisub/src/command/icon.cpp
deleted file mode 100644
index 552e5954e..000000000
--- a/aegisub/src/command/icon.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright (c) 2010, Amar Takhar
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-#include "../config.h"
-
-#include "icon.h"
-
-#include