from zope.interface import implementer
from zope.schema.interfaces import IVocabularyFactory
from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary


@implementer(IVocabularyFactory)
class IconsVocabulary:

    available_icons = (
        "star",
        "star-empty",
        "spin",
        "glass",
        "music",
        "search-1",
        "heart",
        "heart-empty",
        "child",
        "video",
        "plus-1",
        "plus-circle",
        "minus-circle",
        "help-circle",
        "home-1",
        "pin",
        "tag",
        "tags",
        "bookmark",
        "bookmark-empty",
        "flag",
        "thumbs-up-alt",
        "download",
        "upload",
        "export",
        "share",
        "edit",
        "comment",
        "chat",
        "bell-alt",
        "attention",
        "location",
        "trash",
        "document",
        "docs",
        "file-archive",
        "folder",
        "box",
        "phone-1",
        "cog",
        "wrench",
        "calendar-empty",
        "clock",
        "lightbulb",
        "history",
        "signal",
        "award",
        "inbox",
        "globe",
        "sun",
        "briefcase",
        "suitcase",
        "book",
        "fork",
        "magic",
        "building",
        "bank",
        "newspaper-1",
        "gwallet",
        "search",
        "mail",
        "user",
        "users",
        "info-circle",
        "home",
        "attach",
        "lock",
        "lock-open",
        "eye",
        "thumbs-up",
        "upload-cloud",
        "pencil",
        "feather",
        "print",
        "vcard",
        "newspaper",
        "archive",
        "rss",
        "phone",
        "back-in-time",
        "network",
        "floppy",
        "megaphone",
        "contacts",
        "menu-outline",
        "menu",
        "brush",
        "bell",
        "money",
        "religious-christian",
        "religious-islam",
        "religious-jewish",
        "star-circled",
        "calendar",
        "resize-vertical",
        "exit",
        "folder-add",
        "trolley",
        "help",
        "info-circled",
        "info",
        "attach-1",
        "lock-1",
        "forward",
        "reply",
        "reply-all",
        "upload-cloud-1",
        "download-cloud",
        "flag-checkered",
        "flag-empty",
        "export-alt",
        "share-squared",
        "pencil-1",
        "pencil-squared",
        "print-1",
        "retweet",
        "keyboard",
        "comment-empty",
        "chat-empty",
        "beer",
    )

    voc = SimpleVocabulary(
        [SimpleTerm(value=name, token=name, title=name) for name in available_icons]
    )

    def __call__(self, context):
        return self.voc


@implementer(IVocabularyFactory)
class ManyIconsVocabulary:

    available_icons = (
        "police",
        "police-hat",
        "glass",
        "music",
        "search-1",
        "heart",
        "heart-empty",
        "star",
        "star-empty",
        "child",
        "video",
        "ok",
        "ok-circle",
        "radio-on",
        "cancel-circle",
        "cancel-circle-open",
        "plus-1",
        "plus-circle",
        "minus-circle",
        "help-circle",
        "home-1",
        "link",
        "unlink",
        "external",
        "pin",
        "tag",
        "tags",
        "bookmark",
        "bookmark-empty",
        "flag",
        "thumbs-up-alt",
        "download",
        "upload",
        "quote-left",
        "export",
        "share",
        "edit",
        "comment",
        "chat",
        "bell-alt",
        "attention",
        "location",
        "trash-empty",
        "document",
        "docs",
        "doc-text",
        "file-pdf",
        "file-word",
        "file-excel",
        "file-powerpoint",
        "file-image",
        "file-archive",
        "file-audio",
        "file-video",
        "file-code",
        "folder",
        "box",
        "phone-1",
        "cog",
        "cog-many",
        "wrench",
        "calendar-empty",
        "clock",
        "lightbulb",
        "resize-full",
        "resize-small",
        "move",
        "down-open",
        "up-open",
        "up-circle",
        "down-circle",
        "angle-double-right",
        "right-hand",
        "cw",
        "ccw",
        "history",
        "signal",
        "award",
        "mobile",
        "inbox",
        "globe",
        "sun",
        "bold",
        "italic",
        "paragraph",
        "align-left",
        "align-center",
        "align-right",
        "align-justify",
        "list-bullet",
        "list-numbered",
        "strike",
        "underline",
        "superscript",
        "subscript",
        "table",
        "cut",
        "paste",
        "briefcase",
        "suitcase",
        "ellipsis-1",
        "psychology",
        "book",
        "toggle-off",
        "toggle-on",
        "check-on",
        "check-off",
        "radio-off",
        "fork",
        "magic",
        "building",
        "bank",
        "newspaper-1",
        "gwallet",
        "search",
        "mail",
        "user",
        "users",
        "user-add",
        "tiles",
        "list",
        "plus",
        "info-circle",
        "home",
        "link-alternative",
        "attach",
        "lock-compact",
        "lock-compact-open",
        "eye",
        "thumbs-up",
        "upload-cloud",
        "pencil",
        "feather",
        "print",
        "vcard",
        "newspaper",
        "archive",
        "rss",
        "phone",
        "down-dir",
        "right-dir",
        "down-bold",
        "left-bold",
        "right-bold",
        "up-bold",
        "back-in-time",
        "network",
        "floppy",
        "megaphone",
        "grid-large",
        "list-large",
        "cancel-circle-open-light",
        "contacts",
        "menu-outline",
        "menu",
        "brush",
        "bell",
        "money",
        "squares",
        "religious-christian",
        "religious-islam",
        "religious-jewish",
        "star-circled",
        "calendar",
        "resize-vertical",
        "picture",
        "left-open",
        "right-open",
        "left-circle",
        "right-circle",
        "updown-circle",
        "marquee",
        "division",
        "right-big",
        "arrows-cw",
        "up-big",
        "follow",
        "follow-empty",
        "eye-off",
        "subscribed",
        "subscribe",
        "app",
        "exit",
        "folder-add",
        "trolley",
        "play-circled",
        "trolley-plus",
        "grid",
        "font-awesome",
        "hourglass-1",
        "sign-language",
        "low-vision",
        "viadeo",
        "snapchat",
        "snapchat-ghost",
        "snapchat-square",
        "asl-interpreting",
        "american-sign-language-interpreting",
        "assistive-listening-systems",
        "braille",
        "volume-control-phone",
        "blind",
        "mail-1",
        "mail-alt",
        "mail-squared",
        "star-half",
        "star-half-alt",
        "user-1",
        "user-plus",
        "user-times",
        "users-1",
        "male",
        "female",
        "user-secret",
        "minus",
        "plus-squared-alt",
        "plus-squared",
        "cancel",
        "ok-squared",
        "th-list",
        "th",
        "th-large",
        "camera-alt",
        "camera",
        "picture-1",
        "videocam",
        "minus-squared",
        "minus-squared-alt",
        "help",
        "info-circled",
        "info",
        "attach-1",
        "lock",
        "lock-open",
        "lock-open-alt",
        "eye-1",
        "eye-off-1",
        "code",
        "quote-right",
        "forward",
        "reply",
        "reply-all",
        "upload-cloud-1",
        "download-cloud",
        "thumbs-down-alt",
        "thumbs-down",
        "thumbs-up-1",
        "flag-checkered",
        "flag-empty",
        "export-alt",
        "share-squared",
        "pencil-1",
        "pencil-squared",
        "print-1",
        "retweet",
        "keyboard",
        "gamepad",
        "comment-empty",
        "chat-empty",
        "bell-1",
        "bell-off",
        "bell-off-empty",
        "attention-alt",
        "attention-circled",
        "direction",
        "compass",
        "trash",
        "doc-inv",
        "doc-text-inv",
        "calendar-1",
        "cart-arrow-down",
        "sliders",
        "menu-1",
        "fax",
        "phone-squared",
        "rss-1",
        "rss-squared",
        "folder-open-empty",
        "folder-open",
        "folder-1",
        "login",
        "mic",
        "mute",
        "volume-off",
        "volume-down",
        "volume-up",
        "headphones",
        "resize-full-alt",
        "block",
        "resize-horizontal",
        "resize-vertical-1",
        "zoom-in",
        "zoom-out",
        "down-circled2",
        "up-circled2",
        "left-circled2",
        "right-circled2",
        "down-dir-1",
        "up-dir",
        "left-dir",
        "right-dir-1",
        "left-open-1",
        "right-open-1",
        "angle-left",
        "angle-up",
        "angle-right",
        "angle-circled-left",
        "angle-down",
        "angle-circled-right",
        "angle-double-left",
        "angle-double-up",
        "angle-double-down",
        "down",
        "left",
        "right",
        "up",
        "down-big",
        "left-big",
        "left-hand",
        "up-hand",
        "down-hand",
        "left-circled",
        "right-circled",
        "up-circled",
        "down-circled",
        "to-start",
        "to-end-alt",
        "to-end",
        "pause",
        "stop",
        "play-circled2",
        "play",
        "collapse-left",
        "expand-right",
        "collapse",
        "expand",
        "exchange",
        "shuffle",
        "level-down",
        "level-up",
        "font",
        "leaf",
        "paper-plane-empty",
        "space-shuttle",
        "paper-plane",
        "fighter-jet",
        "to-start-alt",
        "fast-fw",
        "fast-bw",
        "eject",
        "target",
        "wifi",
        "desktop",
        "laptop",
        "tablet",
        "medium",
        "header",
        "text-height",
        "text-width",
        "cloud",
        "flash",
        "moon",
        "umbrella",
        "flight",
        "indent-right",
        "indent-left",
        "list-1",
        "barcode",
        "qrcode",
        "list-alt",
        "road",
        "'off'",
        "ellipsis-vert",
        "crop",
        "columns",
        "adjust",
        "tint",
        "circle",
        "circle-thin",
        "dot-circled",
        "circle-notch",
        "asterisk",
        "fire",
        "gift",
        "magnet",
        "chart-bar",
        "chart-area",
        "chart-pie",
        "chart-line",
        "ticket",
        "credit-card",
        "floppy-1",
        "megaphone-1",
        "key",
        "hdd",
        "rocket",
        "bug",
        "certificate",
        "tasks",
        "filter",
        "beaker",
        "cab",
        "taxi",
        "truck",
        "bus",
        "bicycle",
        "motorcycle",
        "sort-alt-down",
        "sort-up",
        "sort-alt-up",
        "sort-down",
        "sort",
        "viacoin",
        "bitcoin",
        "try",
        "shekel",
        "rouble",
        "yen",
        "rupee",
        "dollar",
        "pound",
        "euro",
        "money-1",
        "ship",
        "subway",
        "train",
        "sort-name-up",
        "sort-name-down",
        "sort-number-up",
        "sort-number-down",
        "hammer",
        "gauge",
        "sitemap",
        "spinner",
        "coffee",
        "food",
        "beer",
        "user-md",
        "stethoscope",
        "heartbeat",
        "ambulance",
        "medkit",
        "h-sigh",
        "bed",
        "hospital",
        "won",
        "building-filled",
        "smile",
        "frown",
        "meh",
        "anchor",
        "terminal",
        "eraser",
        "puzzle",
        "shield",
        "extinguisher",
        "bullseye",
        "wheelchair",
        "language",
        "graduation-cap",
        "paw",
        "spoon",
        "cube",
        "cubes",
        "recycle",
        "street-view",
        "diamond",
        "birthday",
        "brush-1",
        "eyedropper",
        "at",
        "copyright",
        "calc",
        "plug",
        "binoculars",
        "tty",
        "soccer-ball",
        "bomb",
        "empire",
        "rebel",
        "lifebuoy",
        "server",
        "database",
        "tree",
        "venus",
        "mars",
        "mercury",
        "transgender",
        "transgender-alt",
        "venus-double",
        "mars-double",
        "venus-mars",
        "mars-stroke",
        "mars-stroke-v",
        "mars-stroke-h",
        "neuter",
        "cc-visa",
        "cc-mastercard",
        "cc-discover",
        "cc-amex",
        "cc-paypal",
        "cc-stripe",
        "adn",
        "android",
        "facebook-squared",
        "facebook",
        "drupal",
        "dropbox",
        "dribbble",
        "digg",
        "deviantart",
        "delicious",
        "dashcube",
        "css3",
        "connectdevelop",
        "codeopen",
        "cc",
        "buysellads",
        "bitbucket-squared",
        "bitbucket",
        "behance-squared",
        "behance",
        "apple",
        "angellist",
        "facebook-official",
        "flickr",
        "forumbee",
        "foursquare",
        "git-squared",
        "git",
        "github",
        "github-squared",
        "github-circled",
        "gittip",
        "google",
        "gplus",
        "gplus-squared",
        "hacker-news",
        "html5",
        "instagram",
        "ioxhost",
        "joomla",
        "jsfiddle",
        "renren",
        "reddit-squared",
        "reddit",
        "qq",
        "pinterest-squared",
        "pinterest-circled",
        "pinterest",
        "pied-piper-alt",
        "pied-piper-squared",
        "paypal",
        "pagelines",
        "openid",
        "meanpath",
        "maxcdn",
        "linkedin",
        "linux",
        "linkedin-squared",
        "leanpub",
        "lastfm-squared",
        "lastfm",
        "sellsy",
        "shirtsinbulk",
        "simplybuilt",
        "skyatlas",
        "skype",
        "slideshare",
        "slack",
        "soundcloud",
        "spotify",
        "stackexchange",
        "stackoverflow",
        "steam",
        "steam-squared",
        "stumbleupon",
        "stumbleupon-circled",
        "tencent-weibo",
        "trello",
        "tumblr",
        "tumblr-squared",
        "twitch",
        "twitter-squared",
        "twitter",
        "vimeo-squared",
        "vine",
        "vkontakte",
        "whatsapp",
        "wechat",
        "weibo",
        "wordpress",
        "windows",
        "xing",
        "xing-squared",
        "yelp",
        "youtube",
        "yahoo",
        "youtube-squared",
        "youtube-play",
        "blank",
        "lemon",
        "genderless",
        "y-combinator",
        "expeditedssl",
        "battery-4",
        "battery-3",
        "battery-1",
        "battery-2",
        "battery-0",
        "mouse-pointer",
        "i-cursor",
        "object-group",
        "object-ungroup",
        "sticky-note",
        "sticky-note-o",
        "cc-jcb",
        "cc-diners-club",
        "balance-scale",
        "alarm",
        "hourglass-o",
        "hourglass-2",
        "hourglass-3",
        "hourglass",
        "hand-grab-o",
        "hand-paper-o",
        "hand-scissors-o",
        "hand-lizard-o",
        "hand-spock-o",
        "hand-pointer-o",
        "hand-peace-o",
        "trademark",
        "creative-commons",
        "registered",
        "gg",
        "gg-circle",
        "tripadvisor",
        "odnoklassniki",
        "odnoklassniki-square",
        "get-pocket",
        "wikipedia-w",
        "safari",
        "chrome",
        "firefox",
        "opera",
        "internet-explorer",
        "television",
        "contao",
        "500px",
        "amazon",
        "calendar-plus-o",
        "calendar-times-o",
        "calendar-minus-o",
        "calendar-check-o",
        "industry",
        "map-pin",
        "map-signs",
        "map-o",
        "map",
        "commenting",
        "shopping-bag",
        "stop-circle-o",
        "stop-circle",
        "pause-circle-o",
        "pause-circle",
        "scribd",
        "mixcloud",
        "product-hunt",
        "usb",
        "question-circle-o",
        "wheelchair-alt",
        "fort-awesome",
        "modx",
        "universal-access",
        "envira",
        "codiepie",
        "credit-card-alt",
        "wpforms",
        "edge",
        "reddit-alien",
        "percent",
        "fonticons",
        "black-tie",
        "bluetooth-b",
        "bluetooth",
        "vimeo",
        "houzz",
        "hashtag",
        "shopping-basket",
        "commenting-o",
        "link-ext",
        "checklist",
        "annotation",
        "rename",
        "golf-ball",
        "golf-hole",
        "handshake",
        "title",
        "apple-share",
        "clone",
        "brain",
        "door-open",
        "envelope-open",
        "envelope-open-o",
        "address-card",
        "address-card-o",
        "user-circle",
        "user-circle-o",
        "user-o",
        "id-badge",
        "id-card",
        "id-card-o",
        "address-book-o",
        "address-book",
        "thermometer",
        "thermometer-3",
        "thermometer-2",
        "thermometer-quarter",
        "thermometer-0",
        "shower",
        "bath",
        "podcast",
        "snowflake-o",
        "microchip",
        "meetup",
        "window-minimize",
        "opencart",
        "optin-monster",
        "gitlab",
        "wpbeginner",
        "viadeo-square",
        "glide-g",
        "pied-piper",
        "first-order",
        "themeisle",
        "google-plus-circle",
        "yoast",
        "audio-description",
        "glide",
        "window-maximize",
        "linode",
        "wpexplorer",
        "superpowers",
        "eercast",
        "ravelry",
        "imdb",
        "etsy",
        "grav",
        "bandcamp",
        "window-close-o",
        "window-close",
        "window-restore",
        "free-code-camp",
        "telegram",
    )

    voc = SimpleVocabulary(
        [SimpleTerm(value=name, token=name, title=name) for name in available_icons]
    )

    def __call__(self, context):
        return self.voc


IconsVocabularyFactory = IconsVocabulary()
ManyIconsVocabularyFactory = ManyIconsVocabulary()
