File size: 7,355 Bytes
adb87a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
import { MenuItemBase, newMenu } from './base.js';
import { invoke } from '../core.js';
import { transformImage } from '../image.js';

// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
/**
 * A native Icon to be used for the menu item
 *
 * #### Platform-specific:
 *
 * - **Windows / Linux**: Unsupported.
 */
var NativeIcon;
(function (NativeIcon) {
    /** An add item template image. */
    NativeIcon["Add"] = "Add";
    /** Advanced preferences toolbar icon for the preferences window. */
    NativeIcon["Advanced"] = "Advanced";
    /** A Bluetooth template image. */
    NativeIcon["Bluetooth"] = "Bluetooth";
    /** Bookmarks image suitable for a template. */
    NativeIcon["Bookmarks"] = "Bookmarks";
    /** A caution image. */
    NativeIcon["Caution"] = "Caution";
    /** A color panel toolbar icon. */
    NativeIcon["ColorPanel"] = "ColorPanel";
    /** A column view mode template image. */
    NativeIcon["ColumnView"] = "ColumnView";
    /** A computer icon. */
    NativeIcon["Computer"] = "Computer";
    /** An enter full-screen mode template image. */
    NativeIcon["EnterFullScreen"] = "EnterFullScreen";
    /** Permissions for all users. */
    NativeIcon["Everyone"] = "Everyone";
    /** An exit full-screen mode template image. */
    NativeIcon["ExitFullScreen"] = "ExitFullScreen";
    /** A cover flow view mode template image. */
    NativeIcon["FlowView"] = "FlowView";
    /** A folder image. */
    NativeIcon["Folder"] = "Folder";
    /** A burnable folder icon. */
    NativeIcon["FolderBurnable"] = "FolderBurnable";
    /** A smart folder icon. */
    NativeIcon["FolderSmart"] = "FolderSmart";
    /** A link template image. */
    NativeIcon["FollowLinkFreestanding"] = "FollowLinkFreestanding";
    /** A font panel toolbar icon. */
    NativeIcon["FontPanel"] = "FontPanel";
    /** A `go back` template image. */
    NativeIcon["GoLeft"] = "GoLeft";
    /** A `go forward` template image. */
    NativeIcon["GoRight"] = "GoRight";
    /** Home image suitable for a template. */
    NativeIcon["Home"] = "Home";
    /** An iChat Theater template image. */
    NativeIcon["IChatTheater"] = "IChatTheater";
    /** An icon view mode template image. */
    NativeIcon["IconView"] = "IconView";
    /** An information toolbar icon. */
    NativeIcon["Info"] = "Info";
    /** A template image used to denote invalid data. */
    NativeIcon["InvalidDataFreestanding"] = "InvalidDataFreestanding";
    /** A generic left-facing triangle template image. */
    NativeIcon["LeftFacingTriangle"] = "LeftFacingTriangle";
    /** A list view mode template image. */
    NativeIcon["ListView"] = "ListView";
    /** A locked padlock template image. */
    NativeIcon["LockLocked"] = "LockLocked";
    /** An unlocked padlock template image. */
    NativeIcon["LockUnlocked"] = "LockUnlocked";
    /** A horizontal dash, for use in menus. */
    NativeIcon["MenuMixedState"] = "MenuMixedState";
    /** A check mark template image, for use in menus. */
    NativeIcon["MenuOnState"] = "MenuOnState";
    /** A MobileMe icon. */
    NativeIcon["MobileMe"] = "MobileMe";
    /** A drag image for multiple items. */
    NativeIcon["MultipleDocuments"] = "MultipleDocuments";
    /** A network icon. */
    NativeIcon["Network"] = "Network";
    /** A path button template image. */
    NativeIcon["Path"] = "Path";
    /** General preferences toolbar icon for the preferences window. */
    NativeIcon["PreferencesGeneral"] = "PreferencesGeneral";
    /** A Quick Look template image. */
    NativeIcon["QuickLook"] = "QuickLook";
    /** A refresh template image. */
    NativeIcon["RefreshFreestanding"] = "RefreshFreestanding";
    /** A refresh template image. */
    NativeIcon["Refresh"] = "Refresh";
    /** A remove item template image. */
    NativeIcon["Remove"] = "Remove";
    /** A reveal contents template image. */
    NativeIcon["RevealFreestanding"] = "RevealFreestanding";
    /** A generic right-facing triangle template image. */
    NativeIcon["RightFacingTriangle"] = "RightFacingTriangle";
    /** A share view template image. */
    NativeIcon["Share"] = "Share";
    /** A slideshow template image. */
    NativeIcon["Slideshow"] = "Slideshow";
    /** A badge for a `smart` item. */
    NativeIcon["SmartBadge"] = "SmartBadge";
    /** Small green indicator, similar to iChat's available image. */
    NativeIcon["StatusAvailable"] = "StatusAvailable";
    /** Small clear indicator. */
    NativeIcon["StatusNone"] = "StatusNone";
    /** Small yellow indicator, similar to iChat's idle image. */
    NativeIcon["StatusPartiallyAvailable"] = "StatusPartiallyAvailable";
    /** Small red indicator, similar to iChat's unavailable image. */
    NativeIcon["StatusUnavailable"] = "StatusUnavailable";
    /** A stop progress template image. */
    NativeIcon["StopProgressFreestanding"] = "StopProgressFreestanding";
    /** A stop progress button template image. */
    NativeIcon["StopProgress"] = "StopProgress";
    /** An image of the empty trash can. */
    NativeIcon["TrashEmpty"] = "TrashEmpty";
    /** An image of the full trash can. */
    NativeIcon["TrashFull"] = "TrashFull";
    /** Permissions for a single user. */
    NativeIcon["User"] = "User";
    /** User account toolbar icon for the preferences window. */
    NativeIcon["UserAccounts"] = "UserAccounts";
    /** Permissions for a group of users. */
    NativeIcon["UserGroup"] = "UserGroup";
    /** Permissions for guests. */
    NativeIcon["UserGuest"] = "UserGuest";
})(NativeIcon || (NativeIcon = {}));
/**
 * An icon menu item inside a {@linkcode Menu} or {@linkcode Submenu}
 * and usually contains an icon and a text.
 */
class IconMenuItem extends MenuItemBase {
    /** @ignore */
    constructor(rid, id) {
        super(rid, id, 'Icon');
    }
    /** Create a new icon menu item. */
    static async new(opts) {
        return newMenu('Icon', opts).then(([rid, id]) => new IconMenuItem(rid, id));
    }
    /** Returns the text of this icon menu item. */
    async text() {
        return invoke('plugin:menu|text', { rid: this.rid, kind: this.kind });
    }
    /** Sets the text for this icon menu item. */
    async setText(text) {
        return invoke('plugin:menu|set_text', {
            rid: this.rid,
            kind: this.kind,
            text
        });
    }
    /** Returns whether this icon menu item is enabled or not. */
    async isEnabled() {
        return invoke('plugin:menu|is_enabled', { rid: this.rid, kind: this.kind });
    }
    /** Sets whether this icon menu item is enabled or not. */
    async setEnabled(enabled) {
        return invoke('plugin:menu|set_enabled', {
            rid: this.rid,
            kind: this.kind,
            enabled
        });
    }
    /** Sets the accelerator for this icon menu item. */
    async setAccelerator(accelerator) {
        return invoke('plugin:menu|set_accelerator', {
            rid: this.rid,
            kind: this.kind,
            accelerator
        });
    }
    /** Sets an icon for this icon menu item */
    async setIcon(icon) {
        return invoke('plugin:menu|set_icon', {
            rid: this.rid,
            kind: this.kind,
            icon: transformImage(icon)
        });
    }
}

export { IconMenuItem, NativeIcon };