{"id":989,"date":"2022-01-16T20:53:13","date_gmt":"2022-01-17T04:53:13","guid":{"rendered":"http:\/\/www.hdhead.com\/?p=989"},"modified":"2022-03-07T21:05:59","modified_gmt":"2022-03-08T05:05:59","slug":"resolve-joke-message","status":"publish","type":"post","link":"https:\/\/www.hdhead.com\/?p=989","title":{"rendered":"DaVinci Resolve Joke Message"},"content":{"rendered":"<p>This Python script for Blackmagic Resolve and Resolve Studio will create a custom popup message you can use to play a joke on your unsuspecting coworkers.<\/p>\n<p>To install copy and paste this script into a plain text editor and save as April Fools Day.py to one of these locations:<\/p>\n<p>Linux:<br \/>\n<code>\/opt\/resolve\/Fusion\/Scripts\/Edit<\/code><\/p>\n<p>macOS:<br \/>\n<code>\/Library\/Application Support\/Blackmagic Design\/DaVinci Resolve\/Fusion\/Scripts\/Edit<\/code><\/p>\n<p>Windows:<br \/>\n<code>%PROGRAMDATA%\\Blackmagic Design\\DaVinci Resolve\\Support\\Fusion\\Scripts\\Edit<\/code><\/p>\n<p>The script will be accessible from the Workspace -&gt; Scripts -&gt; Edit menu.<\/p>\n<p>Windows requires Python 2.7 or 3.6.<\/p>\n<p>See the <a href=\"https:\/\/www.youtube.com\/watch?v=TxiIfMdirQg\">video tutorial<\/a> for more details.<\/p>\n<p>Visit <a href=\"https:\/\/www.metafide.com\">www.metafide.com<\/a> for DaVinci Resolve productivity apps and custom Resolve coding.<\/p>\n<p>Thanks Adrew Hazelden for demystifying the Blackmagic API built-in Qt bindings.<\/p>\n<div class=\"dm-code-snippet light default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied!<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-python\"><\/p>\n<pre>#! \/usr\/bin\/env python\r\n# -*- coding: utf-8 -*-\r\n\r\n# Joke pop-up messsage for DaVinci Resolve and resolve Studio. Use at your own risk.\r\n# I'm not responsible for any damages or loss of work arising from the use of this script.\r\n# The script itself can't cause any damage, but a colorist freaking out may!\r\n\r\n# Igor Ridanovic, Meta Fide, www.metafide.com\r\n# Thanks Adrew Hazelden for demystifying the BMD API built-in Qt bindings.\r\n\r\n# Save this script as April Fools Day.py to:\r\n# Windows: %PROGRAMDATA%\\Blackmagic Design\\DaVinci Resolve\\Support\\Fusion\\Scripts\\Edit\r\n# macOS: \/Library\/Application Support\/Blackmagic Design\/DaVinci Resolve\/Fusion\/Scripts\/Edit\r\n# Linux: \/opt\/resolve\/Fusion\/Scripts\/Edit\r\n\r\n# The script will be accessible from the Workspace -&gt; Scripts -&gt; Edit menu.\r\n\r\nimport sys\r\nimport time\r\n\r\nbuttonCSS = '''\r\n    QPushButton {\r\n    background-color: #2f2f2f;\r\n    color: #929292;\r\n    width: 98px;\r\n    height: 13px;\r\n    font-size: 12px;\r\n    font-weight: normal;\r\n    border-color: #e64b3d;\r\n    border-style: solid;\r\n    border-width: 1px;\r\n    border-radius: 12px;\r\n    padding: 5px;\r\n    margin-left: 8px;\r\n    margin-top: 20px;\r\n    margin-bottom: 6px;\r\n    outline: 0;\r\n    }\r\n    QPushButton:hover {\r\n    color: #ffffff;\r\n    }\r\n    QPushButton:pressed {\r\n    background-color: #171717;\r\n    }\r\n    }\r\n'''\r\n\r\nlabelCSS = '''\r\n    QLabel {\r\n    color: #fafafa;\r\n    font-size: 16px;\r\n    font-weight: bold;\r\n    margin-left: 8px;\r\n    margin-right: 8px;\r\n    }\r\n'''\r\n\r\njokeMessageCSS = '''\r\n    QLabel {\r\n    margin-left: 8px;\r\n    margin-right: 8px;\r\n    }\r\n'''\r\n\r\n\r\nclass AprilFoolsDay(object):\r\n\r\n    def __init__(self):\r\n        try:\r\n            self.ui   = fusion.UIManager\r\n            self.disp = bmd.UIDispatcher(self.ui)\r\n        # No support for the DVR internal Qt when running as an external script.\r\n        except AttributeError:\r\n            sys.exit()\r\n\r\n    def collect_input(self):\r\n\r\n        win = self.disp.AddWindow({  'ID': 'Message1',\r\n                                     'WindowTitle': 'DaVinci Resolve',\r\n                                     'WindowModality': 'WindowModal'\r\n                            },\r\n\r\n                            [\r\n                                self.ui.VGroup(\r\n                                [\r\n                                    self.ui.VGap(0, .25),\r\n                                    self.ui.Label({  'ID': 'msgHeader',\r\n                                                'WordWrap': True,\r\n                                                'Text': 'Enter a joke message and time delay.',\r\n                                                'StyleSheet': labelCSS\r\n                                            }),\r\n\r\n                                    self.ui.LineEdit({'ID': 'jokeHeader', 'PlaceholderText': 'Message header'}),\r\n                                    self.ui.LineEdit({'ID': 'jokeMsg', 'PlaceholderText': 'Message'}),\r\n                                    self.ui.HGroup(\r\n                                    [\r\n                                        self.ui.LineEdit({'ID': 'secondsDelay', 'PlaceholderText': 'Seconds'}),\r\n                                        self.ui.HGap(0, 7)\r\n                                    ]),\r\n\r\n                                    self.ui.HGroup(\r\n                                    [\r\n                                        self.ui.HGap(0, 4),\r\n                                        self.ui.Button({'ID': 'Accept',\r\n                                                    'Text': 'Done',\r\n                                                    'StyleSheet': buttonCSS\r\n                                                })\r\n                                    ]),\r\n                                ]),\r\n                            ])\r\n\r\n\r\n\r\n        self.itm = win.GetItems()\r\n\r\n        def _closewindow(ev):\r\n            self.disp.ExitLoop()\r\n\r\n        win.On.Accept.Clicked  = _closewindow\r\n\r\n        win.Resize([500,230])\r\n        win.Show()\r\n        self.disp.RunLoop()\r\n        win.Hide()\r\n\r\n        # Return delay for the joke message.\r\n        delay = self.itm['secondsDelay'].Text\r\n        if delay == '' or not delay.isdigit():\r\n            delay = 0\r\n\r\n        return int(delay)\r\n\r\n\r\n\r\n    def display_message(self):\r\n\r\n        jokeHeader  = self.itm['jokeHeader'].Text\r\n        jokeMessage = self.itm['jokeMsg'].Text\r\n\r\n        if jokeHeader.rstrip() == '':\r\n            jokeHeader = 'DaVinci Resolve Joke Message'\r\n\r\n        if jokeMessage.rstrip() == '':\r\n            jokeMessage = 'This joke message was brought to you by Meta Fide. When you are done joking visit www.metafide.com for more serious off-the-shelf and custom apps.'\r\n\r\n        win = self.disp.AddWindow({  'ID': 'Message2',\r\n                                 'WindowTitle': 'DaVinci Resolve',\r\n                                 'WindowModality': 'WindowModal'\r\n                            },\r\n\r\n                            [\r\n                                self.ui.VGroup(\r\n                                [\r\n\r\n                                    self.ui.Label({  'ID': 'msgHeader',\r\n                                                'WordWrap': True,\r\n                                                'Text': jokeHeader,\r\n                                                'StyleSheet': labelCSS\r\n                                            }),\r\n                                    self.ui.Label({  'ID': 'msg-txt',\r\n                                                'WordWrap': True,\r\n                                                'Text': jokeMessage,\r\n                                                'StyleSheet': jokeMessageCSS\r\n                                            }),\r\n\r\n                                    self.ui.HGroup(\r\n                                    [\r\n                                        self.ui.HGap(0, 4),\r\n                                        self.ui.Button({'ID': 'Accept',\r\n                                                    'Text': 'Done',\r\n                                                    'StyleSheet': buttonCSS\r\n                                                })\r\n                                    ]),\r\n                                ]),\r\n                            ])\r\n\r\n\r\n\r\n        itm = win.GetItems()\r\n\r\n        def _closewindow(ev):\r\n            self.disp.ExitLoop()\r\n\r\n        win.On.Accept.Clicked  = _closewindow\r\n\r\n        win.Resize([500,185])\r\n        win.Show()\r\n        self.disp.RunLoop()\r\n        win.Hide()\r\n\r\n\r\nif __name__ == '__main__':\r\n\r\n    afd   = AprilFoolsDay()\r\n    delay = afd.collect_input()\r\n    time.sleep(delay)\r\n    afd.display_message()\r\n\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n","protected":false},"excerpt":{"rendered":"<p>This Python script for Blackmagic Resolve and Resolve Studio will create a custom popup message you can use to play a joke on your unsuspecting coworkers. To install copy and paste this script into a plain text editor and save as April Fools Day.py to one of these locations: Linux: \/opt\/resolve\/Fusion\/Scripts\/Edit macOS: \/Library\/Application Support\/Blackmagic Design\/DaVinci &hellip; <a href=\"https:\/\/www.hdhead.com\/?p=989\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">DaVinci Resolve Joke Message<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-989","post","type-post","status-publish","format-standard","hentry","category-tools"],"_links":{"self":[{"href":"https:\/\/www.hdhead.com\/index.php?rest_route=\/wp\/v2\/posts\/989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hdhead.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hdhead.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hdhead.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hdhead.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=989"}],"version-history":[{"count":9,"href":"https:\/\/www.hdhead.com\/index.php?rest_route=\/wp\/v2\/posts\/989\/revisions"}],"predecessor-version":[{"id":1002,"href":"https:\/\/www.hdhead.com\/index.php?rest_route=\/wp\/v2\/posts\/989\/revisions\/1002"}],"wp:attachment":[{"href":"https:\/\/www.hdhead.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hdhead.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hdhead.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}