442 lines
10 KiB
Go
442 lines
10 KiB
Go
package theme
|
|
|
|
import "git.tebibyte.media/tomo/tomo"
|
|
import "git.tebibyte.media/tomo/tomo/data"
|
|
import "git.tebibyte.media/tomo/tomo/canvas"
|
|
|
|
// IconSize represents the size of an icon.
|
|
type IconSize int; const (
|
|
IconSizeSmall IconSize = iota;
|
|
IconSizeMedium
|
|
IconSizeLarge
|
|
)
|
|
|
|
// String satisfies the fmt.Stringer interface.
|
|
func (size IconSize) String () string {
|
|
switch size {
|
|
case IconSizeSmall: return "small"
|
|
case IconSizeMedium: return "medium"
|
|
case IconSizeLarge: return "large"
|
|
default: return "unknown"
|
|
}
|
|
}
|
|
|
|
// TODO: the Icon type, along with its String method, needs to be codegen'd.
|
|
|
|
// Icon represents an icon ID.
|
|
type Icon int; const (
|
|
// --- Objects --- //
|
|
|
|
// files
|
|
IconFile Icon = iota
|
|
IconDirectory
|
|
IconDirectoryFull
|
|
|
|
// places
|
|
IconDownloads
|
|
IconPhotos
|
|
IconBooks
|
|
IconDocuments
|
|
IconRepositories
|
|
IconMusic
|
|
IconArchives
|
|
IconFonts
|
|
IconBinaries
|
|
IconVideos
|
|
Icon3DObjects
|
|
IconHistory
|
|
IconPreferences
|
|
|
|
// storage
|
|
IconStorage // generic
|
|
IconMagneticTape
|
|
IconFloppyDisk
|
|
IconHardDisk
|
|
IconSolidStateDrive
|
|
IconFlashDrive
|
|
IconMemoryCard
|
|
IconROMDisk
|
|
IconRAMDisk
|
|
IconCD
|
|
IconDVD
|
|
|
|
// network
|
|
IconNetwork // generic
|
|
IconLocalNetwork
|
|
IconInternet
|
|
IconEthernet
|
|
IconWireless
|
|
IconCell
|
|
IconBluetooth
|
|
IconRadio
|
|
|
|
// devices
|
|
IconDevice // generic
|
|
IconRouter
|
|
IconSwitch
|
|
IconServer
|
|
IconDesktop
|
|
IconLaptop
|
|
IconTablet
|
|
IconPhone
|
|
IconWatch
|
|
IconCamera
|
|
|
|
// peripherals
|
|
IconPeripheral // generic
|
|
IconKeyboard
|
|
IconMouse
|
|
IconMonitor
|
|
IconWebcam
|
|
IconMicrophone
|
|
IconSpeaker
|
|
IconPenTablet
|
|
IconTrackpad
|
|
IconController
|
|
|
|
// i/o
|
|
IconPort // generic
|
|
IconEthernetPort
|
|
IconUSBPort
|
|
IconParallelPort
|
|
IconSerialPort
|
|
IconPS2Port
|
|
IconDisplayConnector
|
|
IconCGAPort
|
|
IconVGAPort
|
|
IconHDMIPort
|
|
IconDisplayPort
|
|
IconInfrared
|
|
|
|
// --- Actions --- //
|
|
|
|
// files
|
|
IconOpen
|
|
IconOpenIn
|
|
IconSave
|
|
IconSaveAs
|
|
IconPrint
|
|
IconNew
|
|
IconNewDirectory
|
|
IconDelete
|
|
IconRename
|
|
IconGetInformation
|
|
IconChangePermissions
|
|
IconRevert
|
|
|
|
// list management
|
|
IconAdd
|
|
IconRemove
|
|
IconAddBookmark
|
|
IconRemoveBookmark
|
|
IconAddFavorite
|
|
IconRemoveFavorite
|
|
|
|
// media
|
|
IconPlay
|
|
IconPause
|
|
IconStop
|
|
IconFastForward
|
|
IconRewind
|
|
IconToBeginning
|
|
IconToEnd
|
|
IconRecord
|
|
IconVolumeUp
|
|
IconVolumeDown
|
|
IconMute
|
|
|
|
// editing
|
|
IconUndo
|
|
IconRedo
|
|
IconCut
|
|
IconCopy
|
|
IconPaste
|
|
IconFind
|
|
IconReplace
|
|
IconSelectAll
|
|
IconSelectNone
|
|
IconIncrement
|
|
IconDecrement
|
|
|
|
// window management
|
|
IconClose
|
|
IconQuit
|
|
IconIconify
|
|
IconShade
|
|
IconMaximize
|
|
IconFullScreen
|
|
IconRestore
|
|
|
|
// view controls
|
|
IconExpand
|
|
IconContract
|
|
IconBack
|
|
IconForward
|
|
IconUp
|
|
IconDown
|
|
IconReload
|
|
IconZoomIn
|
|
IconZoomOut
|
|
IconZoomReset
|
|
IconMove
|
|
IconResize
|
|
IconGoTo
|
|
|
|
// tools
|
|
IconTransform
|
|
IconTranslate
|
|
IconRotate
|
|
IconScale
|
|
IconWarp
|
|
IconCornerPin
|
|
IconSelectRectangle
|
|
IconSelectEllipse
|
|
IconSelectLasso
|
|
IconSelectGeometric
|
|
IconSelectAuto
|
|
IconCrop
|
|
IconFill
|
|
IconGradient
|
|
IconPencil
|
|
IconBrush
|
|
IconEraser
|
|
IconText
|
|
IconEyedropper
|
|
|
|
// --- Status --- //
|
|
|
|
// dialogs
|
|
IconInformation
|
|
IconQuestion
|
|
IconWarning
|
|
IconError
|
|
IconCancel
|
|
IconOkay
|
|
|
|
// network
|
|
IconCellSignal0
|
|
IconCellSignal1
|
|
IconCellSignal2
|
|
IconCellSignal3
|
|
IconWirelessSignal0
|
|
IconWirelessSignal1
|
|
IconWirelessSignal2
|
|
IconWirelessSignal3
|
|
|
|
// power
|
|
IconBattery0
|
|
IconBattery1
|
|
IconBattery2
|
|
IconBattery3
|
|
IconBrightness0
|
|
IconBrightness1
|
|
IconBrightness2
|
|
IconBrightness3
|
|
|
|
// media
|
|
IconVolume0
|
|
IconVolume1
|
|
IconVolume2
|
|
IconVolume3
|
|
)
|
|
|
|
// String satisfies the fmt.Stringer interface.
|
|
func (id Icon) String () string {
|
|
switch id {
|
|
case IconFile: return "File"
|
|
case IconDirectory: return "Directory"
|
|
case IconDirectoryFull: return "DirectoryFull"
|
|
case IconDownloads: return "Downloads"
|
|
case IconPhotos: return "Photos"
|
|
case IconBooks: return "Books"
|
|
case IconDocuments: return "Documents"
|
|
case IconRepositories: return "Repositories"
|
|
case IconMusic: return "Music"
|
|
case IconArchives: return "Archives"
|
|
case IconFonts: return "Fonts"
|
|
case IconBinaries: return "Binaries"
|
|
case IconVideos: return "Videos"
|
|
case Icon3DObjects: return "3DObjects"
|
|
case IconHistory: return "History"
|
|
case IconPreferences: return "Preferences"
|
|
case IconStorage: return "Storage"
|
|
case IconMagneticTape: return "MagneticTape"
|
|
case IconFloppyDisk: return "FloppyDisk"
|
|
case IconHardDisk: return "HardDisk"
|
|
case IconSolidStateDrive: return "SolidStateDrive"
|
|
case IconFlashDrive: return "FlashDrive"
|
|
case IconMemoryCard: return "MemoryCard"
|
|
case IconROMDisk: return "ROMDisk"
|
|
case IconRAMDisk: return "RAMDisk"
|
|
case IconCD: return "CD"
|
|
case IconDVD: return "DVD"
|
|
case IconNetwork: return "Network"
|
|
case IconLocalNetwork: return "LocalNetwork"
|
|
case IconInternet: return "Internet"
|
|
case IconEthernet: return "Ethernet"
|
|
case IconWireless: return "Wireless"
|
|
case IconCell: return "Cell"
|
|
case IconBluetooth: return "Bluetooth"
|
|
case IconRadio: return "Radio"
|
|
case IconDevice: return "Device"
|
|
case IconRouter: return "Router"
|
|
case IconServer: return "Server"
|
|
case IconDesktop: return "Desktop"
|
|
case IconLaptop: return "Laptop"
|
|
case IconTablet: return "Tablet"
|
|
case IconPhone: return "Phone"
|
|
case IconWatch: return "Watch"
|
|
case IconCamera: return "Camera"
|
|
case IconPeripheral: return "Peripheral"
|
|
case IconKeyboard: return "Keyboard"
|
|
case IconMouse: return "Mouse"
|
|
case IconMonitor: return "Monitor"
|
|
case IconWebcam: return "Webcam"
|
|
case IconMicrophone: return "Microphone"
|
|
case IconSpeaker: return "Speaker"
|
|
case IconPenTablet: return "PenTablet"
|
|
case IconTrackpad: return "Trackpad"
|
|
case IconController: return "Controller"
|
|
case IconPort: return "Port"
|
|
case IconEthernetPort: return "EthernetPort"
|
|
case IconUSBPort: return "USBPort"
|
|
case IconParallelPort: return "ParallelPort"
|
|
case IconSerialPort: return "SerialPort"
|
|
case IconPS2Port: return "PS2Port"
|
|
case IconDisplayConnector: return "DisplayConnector"
|
|
case IconCGAPort: return "CGAPort"
|
|
case IconVGAPort: return "VGAPort"
|
|
case IconHDMIPort: return "HDMIPort"
|
|
case IconDisplayPort: return "DisplayPort"
|
|
case IconInfrared: return "Infrared"
|
|
case IconOpen: return "Open"
|
|
case IconOpenIn: return "OpenIn"
|
|
case IconSave: return "Save"
|
|
case IconSaveAs: return "SaveAs"
|
|
case IconPrint: return "Print"
|
|
case IconNew: return "New"
|
|
case IconNewDirectory: return "NewDirectory"
|
|
case IconDelete: return "Delete"
|
|
case IconRename: return "Rename"
|
|
case IconGetInformation: return "GetInformation"
|
|
case IconChangePermissions: return "ChangePermissions"
|
|
case IconRevert: return "Revert"
|
|
case IconAdd: return "Add"
|
|
case IconRemove: return "Remove"
|
|
case IconAddBookmark: return "AddBookmark"
|
|
case IconRemoveBookmark: return "RemoveBookmark"
|
|
case IconAddFavorite: return "AddFavorite"
|
|
case IconRemoveFavorite: return "RemoveFavorite"
|
|
case IconPlay: return "Play"
|
|
case IconPause: return "Pause"
|
|
case IconStop: return "Stop"
|
|
case IconFastForward: return "FastForward"
|
|
case IconRewind: return "Rewind"
|
|
case IconToBeginning: return "ToBeginning"
|
|
case IconToEnd: return "ToEnd"
|
|
case IconRecord: return "Record"
|
|
case IconVolumeUp: return "VolumeUp"
|
|
case IconVolumeDown: return "VolumeDown"
|
|
case IconMute: return "Mute"
|
|
case IconUndo: return "Undo"
|
|
case IconRedo: return "Redo"
|
|
case IconCut: return "Cut"
|
|
case IconCopy: return "Copy"
|
|
case IconPaste: return "Paste"
|
|
case IconFind: return "Find"
|
|
case IconReplace: return "Replace"
|
|
case IconSelectAll: return "SelectAll"
|
|
case IconSelectNone: return "SelectNone"
|
|
case IconIncrement: return "Increment"
|
|
case IconDecrement: return "Decrement"
|
|
case IconClose: return "Close"
|
|
case IconQuit: return "Quit"
|
|
case IconIconify: return "Iconify"
|
|
case IconShade: return "Shade"
|
|
case IconMaximize: return "Maximize"
|
|
case IconFullScreen: return "FullScreen"
|
|
case IconRestore: return "Restore"
|
|
case IconExpand: return "Expand"
|
|
case IconContract: return "Contract"
|
|
case IconBack: return "Back"
|
|
case IconForward: return "Forward"
|
|
case IconUp: return "Up"
|
|
case IconDown: return "Down"
|
|
case IconReload: return "Reload"
|
|
case IconZoomIn: return "ZoomIn"
|
|
case IconZoomOut: return "ZoomOut"
|
|
case IconZoomReset: return "ZoomReset"
|
|
case IconMove: return "Move"
|
|
case IconResize: return "Resize"
|
|
case IconGoTo: return "GoTo"
|
|
case IconTransform: return "Transform"
|
|
case IconTranslate: return "Translate"
|
|
case IconRotate: return "Rotate"
|
|
case IconScale: return "Scale"
|
|
case IconWarp: return "Warp"
|
|
case IconCornerPin: return "CornerPin"
|
|
case IconSelectRectangle: return "SelectRectangle"
|
|
case IconSelectEllipse: return "SelectEllipse"
|
|
case IconSelectLasso: return "SelectLasso"
|
|
case IconSelectGeometric: return "SelectGeometric"
|
|
case IconSelectAuto: return "SelectAuto"
|
|
case IconCrop: return "Crop"
|
|
case IconFill: return "Fill"
|
|
case IconGradient: return "Gradient"
|
|
case IconPencil: return "Pencil"
|
|
case IconBrush: return "Brush"
|
|
case IconEraser: return "Eraser"
|
|
case IconText: return "Text"
|
|
case IconEyedropper: return "Eyedropper"
|
|
case IconInformation: return "Information"
|
|
case IconQuestion: return "Question"
|
|
case IconWarning: return "Warning"
|
|
case IconError: return "Error"
|
|
case IconCancel: return "Cancel"
|
|
case IconOkay: return "Okay"
|
|
case IconCellSignal0: return "CellSignal0"
|
|
case IconCellSignal1: return "CellSignal1"
|
|
case IconCellSignal2: return "CellSignal2"
|
|
case IconCellSignal3: return "CellSignal3"
|
|
case IconWirelessSignal0: return "WirelessSignal0"
|
|
case IconWirelessSignal1: return "WirelessSignal1"
|
|
case IconWirelessSignal2: return "WirelessSignal2"
|
|
case IconWirelessSignal3: return "WirelessSignal3"
|
|
case IconBattery0: return "Battery0"
|
|
case IconBattery1: return "Battery1"
|
|
case IconBattery2: return "Battery2"
|
|
case IconBattery3: return "Battery3"
|
|
case IconBrightness0: return "Brightness0"
|
|
case IconBrightness1: return "Brightness1"
|
|
case IconBrightness2: return "Brightness2"
|
|
case IconBrightness3: return "Brightness3"
|
|
case IconVolume0: return "Volume0"
|
|
case IconVolume1: return "Volume1"
|
|
case IconVolume2: return "Volume2"
|
|
case IconVolume3: return "Volume3"
|
|
|
|
default: return "Unknown"
|
|
}
|
|
}
|
|
|
|
// Texture returns a texture of the corresponding icon ID.
|
|
func (id Icon) Texture (size IconSize) canvas.Texture {
|
|
if current == nil { return nil }
|
|
return current.Icon(id, size)
|
|
}
|
|
|
|
// MimeIcon returns an icon corresponding to a MIME type.
|
|
func MimeIcon (mime data.Mime, size IconSize) canvas.Texture {
|
|
if current == nil { return nil }
|
|
return current.MimeIcon(mime, size)
|
|
}
|
|
|
|
// ApplicationIcon describes the icon of the application.
|
|
type ApplicationIcon tomo.ApplicationDescription
|
|
|
|
// Texture returns a texture of the corresponding icon ID.
|
|
func (icon ApplicationIcon) Texture (size IconSize) canvas.Texture {
|
|
if current == nil { return nil }
|
|
return current.ApplicationIcon(icon, size)
|
|
}
|