File: xh_filebrowsebutton.py

package info (click to toggle)
displaycal-py3 3.9.16-1
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 29,120 kB
  • sloc: python: 115,777; javascript: 11,540; xml: 598; sh: 257; makefile: 173
file content (61 lines) | stat: -rw-r--r-- 2,168 bytes parent folder | download
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
# -*- coding: utf-8 -*-

import wx
import wx.xrc as xrc
import wx.lib.filebrowsebutton as filebrowse
from DisplayCAL.log import safe_print

try:
    from DisplayCAL.wxwindows import (
        FileBrowseBitmapButtonWithChoiceHistory as FileBrowseButtonWithHistory,
    )
except ImportError:
    FileBrowseButtonWithHistory = filebrowse.FileBrowseButtonWithHistory


class FileBrowseButtonXmlHandler(xrc.XmlResourceHandler):
    def __init__(self):
        xrc.XmlResourceHandler.__init__(self)
        self._class = filebrowse.FileBrowseButton
        # Standard styles
        self.AddWindowStyles()

    def CanHandle(self, node):
        return self.IsOfClass(node, self._class.__name__)

    # Process XML parameters and create the object
    def DoCreateResource(self):
        w = self._class(
            parent=self.GetParentAsWindow(),
            id=self.GetID(),
            pos=self.GetPosition(),
            size=self.GetSize(),
            style=self.GetStyle(),
            labelText=self.GetText("message") or "File Entry:",
            buttonText=self.GetText("buttonText") or "Browse",
            toolTip=self.GetText("toolTip")
            or "Type filename or click browse to choose file",
            dialogTitle=self.GetText("dialogTitle") or "Choose a file",
            startDirectory=self.GetText("startDirectory") or ".",
            initialValue=self.GetText("initialValue") or "",
            fileMask=self.GetText("wildcard") or "*.*",
            fileMode=self.GetLong("fileMode") or wx.FD_OPEN,
            labelWidth=self.GetLong("labelWidth") or 0,
            name=self.GetName(),
        )
        self.SetupWindow(w)
        if self.GetBool("hidden") and w.Shown:
            safe_print(f"{self.Name} should have been hidden")
            w.Hide()
        return w


class FileBrowseButtonWithHistoryXmlHandler(FileBrowseButtonXmlHandler):
    def __init__(self):
        FileBrowseButtonXmlHandler.__init__(self)
        self._class = FileBrowseButtonWithHistory

    def CanHandle(self, node):
        return self.IsOfClass(node, self._class.__name__) or self.IsOfClass(
            node, "FileBrowseButtonWithHistory"
        )