mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-15 02:00:20 +00:00
gtk: centralize icon lookup (new icon-resolver), move mappings out of gtkutil/pixmaps, add sane fallback chain + meson hookup
This commit is contained in:
89
src/fe-gtk/icon-resolver.h
Normal file
89
src/fe-gtk/icon-resolver.h
Normal file
@@ -0,0 +1,89 @@
|
||||
#ifndef ZOITECHAT_ICON_RESOLVER_H
|
||||
#define ZOITECHAT_ICON_RESOLVER_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ICON_RESOLVER_ROLE_MENU_ACTION,
|
||||
ICON_RESOLVER_ROLE_TRAY_STATE,
|
||||
ICON_RESOLVER_ROLE_TREE_TYPE,
|
||||
ICON_RESOLVER_ROLE_USERLIST_RANK
|
||||
} IconResolverRole;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ICON_RESOLVER_THEME_SYSTEM,
|
||||
ICON_RESOLVER_THEME_LIGHT,
|
||||
ICON_RESOLVER_THEME_DARK
|
||||
} IconResolverThemeVariant;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ICON_RESOLVER_MENU_ACTION_NEW,
|
||||
ICON_RESOLVER_MENU_ACTION_NETWORK_LIST,
|
||||
ICON_RESOLVER_MENU_ACTION_LOAD_PLUGIN,
|
||||
ICON_RESOLVER_MENU_ACTION_DETACH,
|
||||
ICON_RESOLVER_MENU_ACTION_CLOSE,
|
||||
ICON_RESOLVER_MENU_ACTION_QUIT,
|
||||
ICON_RESOLVER_MENU_ACTION_DISCONNECT,
|
||||
ICON_RESOLVER_MENU_ACTION_CONNECT,
|
||||
ICON_RESOLVER_MENU_ACTION_JOIN,
|
||||
ICON_RESOLVER_MENU_ACTION_PREFERENCES,
|
||||
ICON_RESOLVER_MENU_ACTION_CLEAR,
|
||||
ICON_RESOLVER_MENU_ACTION_COPY,
|
||||
ICON_RESOLVER_MENU_ACTION_DELETE,
|
||||
ICON_RESOLVER_MENU_ACTION_ADD,
|
||||
ICON_RESOLVER_MENU_ACTION_REMOVE,
|
||||
ICON_RESOLVER_MENU_ACTION_SPELL_CHECK,
|
||||
ICON_RESOLVER_MENU_ACTION_SAVE,
|
||||
ICON_RESOLVER_MENU_ACTION_SAVE_AS,
|
||||
ICON_RESOLVER_MENU_ACTION_REFRESH,
|
||||
ICON_RESOLVER_MENU_ACTION_SEARCH,
|
||||
ICON_RESOLVER_MENU_ACTION_FIND,
|
||||
ICON_RESOLVER_MENU_ACTION_PREVIOUS,
|
||||
ICON_RESOLVER_MENU_ACTION_NEXT,
|
||||
ICON_RESOLVER_MENU_ACTION_HELP,
|
||||
ICON_RESOLVER_MENU_ACTION_ABOUT,
|
||||
ICON_RESOLVER_MENU_ACTION_EMOJI,
|
||||
ICON_RESOLVER_MENU_ACTION_UPDATE,
|
||||
ICON_RESOLVER_MENU_ACTION_CHANLIST
|
||||
} IconResolverMenuAction;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ICON_RESOLVER_TRAY_STATE_NORMAL,
|
||||
ICON_RESOLVER_TRAY_STATE_FILEOFFER,
|
||||
ICON_RESOLVER_TRAY_STATE_HIGHLIGHT,
|
||||
ICON_RESOLVER_TRAY_STATE_MESSAGE
|
||||
} IconResolverTrayState;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ICON_RESOLVER_TREE_TYPE_CHANNEL,
|
||||
ICON_RESOLVER_TREE_TYPE_DIALOG,
|
||||
ICON_RESOLVER_TREE_TYPE_SERVER,
|
||||
ICON_RESOLVER_TREE_TYPE_UTIL
|
||||
} IconResolverTreeType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ICON_RESOLVER_USERLIST_RANK_VOICE,
|
||||
ICON_RESOLVER_USERLIST_RANK_HALFOP,
|
||||
ICON_RESOLVER_USERLIST_RANK_OP,
|
||||
ICON_RESOLVER_USERLIST_RANK_OWNER,
|
||||
ICON_RESOLVER_USERLIST_RANK_FOUNDER,
|
||||
ICON_RESOLVER_USERLIST_RANK_NETOP
|
||||
} IconResolverUserlistRank;
|
||||
|
||||
const char *icon_resolver_icon_name_from_stock (const char *stock_name);
|
||||
const char *icon_resolver_menu_custom_icon_from_stock (const char *stock_name);
|
||||
const char *icon_resolver_menu_custom_icon_from_icon_name (const char *icon_name);
|
||||
const char *icon_resolver_icon_name_for_menu_custom (const char *custom_icon_name);
|
||||
gboolean icon_resolver_menu_action_from_custom (const char *custom_icon_name, int *action_out);
|
||||
IconResolverThemeVariant icon_resolver_detect_theme_variant (void);
|
||||
char *icon_resolver_resolve_path (IconResolverRole role, int item, GtkIconSize size,
|
||||
const char *context, IconResolverThemeVariant variant,
|
||||
const char **system_icon_name);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user