mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-07 02:43:22 +03:00
Merge pull request #570 from A-UNDERSCORE-D/fix/display-var-errors
Fix #568 with ENV var workaround
This commit is contained in:
commit
758b726878
4
EDMC.py
4
EDMC.py
@ -8,6 +8,10 @@ import json
|
|||||||
import requests
|
import requests
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
# workaround for https://github.com/EDCD/EDMarketConnector/issues/568
|
||||||
|
os.environ["EDMC_NO_UI"] = "1"
|
||||||
|
|
||||||
from os.path import dirname, getmtime, join
|
from os.path import dirname, getmtime, join
|
||||||
from time import time, sleep
|
from time import time, sleep
|
||||||
from xml.etree import ElementTree
|
from xml.etree import ElementTree
|
||||||
|
159
theme.py
159
theme.py
@ -5,6 +5,7 @@
|
|||||||
# So can't use ttk's theme support. So have to change colors manually.
|
# So can't use ttk's theme support. So have to change colors manually.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
from sys import platform
|
from sys import platform
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
|
||||||
@ -18,86 +19,94 @@ from config import appname, applongname, config
|
|||||||
if __debug__:
|
if __debug__:
|
||||||
from traceback import print_exc
|
from traceback import print_exc
|
||||||
|
|
||||||
if platform == 'win32':
|
if platform == "linux":
|
||||||
import ctypes
|
|
||||||
from ctypes.wintypes import LPCWSTR, DWORD, LPCVOID
|
|
||||||
AddFontResourceEx = ctypes.windll.gdi32.AddFontResourceExW
|
|
||||||
AddFontResourceEx.restypes = [LPCWSTR, DWORD, LPCVOID]
|
|
||||||
FR_PRIVATE = 0x10
|
|
||||||
FR_NOT_ENUM = 0x20
|
|
||||||
AddFontResourceEx(join(config.respath, u'EUROCAPS.TTF'), FR_PRIVATE, 0)
|
|
||||||
|
|
||||||
elif platform == 'linux':
|
|
||||||
from ctypes import *
|
from ctypes import *
|
||||||
|
|
||||||
XID = c_ulong # from X.h: typedef unsigned long XID
|
|
||||||
Window = XID
|
|
||||||
Atom = c_ulong
|
|
||||||
Display = c_void_p # Opaque
|
|
||||||
|
|
||||||
PropModeReplace = 0
|
def setup_UI__():
|
||||||
PropModePrepend = 1
|
if platform == 'win32':
|
||||||
PropModeAppend = 2
|
import ctypes
|
||||||
|
from ctypes.wintypes import LPCWSTR, DWORD, LPCVOID
|
||||||
|
AddFontResourceEx = ctypes.windll.gdi32.AddFontResourceExW
|
||||||
|
AddFontResourceEx.restypes = [LPCWSTR, DWORD, LPCVOID]
|
||||||
|
FR_PRIVATE = 0x10
|
||||||
|
FR_NOT_ENUM = 0x20
|
||||||
|
AddFontResourceEx(join(config.respath, u'EUROCAPS.TTF'), FR_PRIVATE, 0)
|
||||||
|
|
||||||
# From xprops.h
|
elif platform == 'linux':
|
||||||
MWM_HINTS_FUNCTIONS = 1 << 0
|
XID = c_ulong # from X.h: typedef unsigned long XID
|
||||||
MWM_HINTS_DECORATIONS = 1 << 1
|
Window = XID
|
||||||
MWM_HINTS_INPUT_MODE = 1 << 2
|
Atom = c_ulong
|
||||||
MWM_HINTS_STATUS = 1 << 3
|
Display = c_void_p # Opaque
|
||||||
MWM_FUNC_ALL = 1 << 0
|
|
||||||
MWM_FUNC_RESIZE = 1 << 1
|
|
||||||
MWM_FUNC_MOVE = 1 << 2
|
|
||||||
MWM_FUNC_MINIMIZE = 1 << 3
|
|
||||||
MWM_FUNC_MAXIMIZE = 1 << 4
|
|
||||||
MWM_FUNC_CLOSE = 1 << 5
|
|
||||||
MWM_DECOR_ALL = 1 << 0
|
|
||||||
MWM_DECOR_BORDER = 1 << 1
|
|
||||||
MWM_DECOR_RESIZEH = 1 << 2
|
|
||||||
MWM_DECOR_TITLE = 1 << 3
|
|
||||||
MWM_DECOR_MENU = 1 << 4
|
|
||||||
MWM_DECOR_MINIMIZE = 1 << 5
|
|
||||||
MWM_DECOR_MAXIMIZE = 1 << 6
|
|
||||||
|
|
||||||
class MotifWmHints(Structure):
|
PropModeReplace = 0
|
||||||
_fields_ = [
|
PropModePrepend = 1
|
||||||
('flags', c_ulong),
|
PropModeAppend = 2
|
||||||
('functions', c_ulong),
|
|
||||||
('decorations', c_ulong),
|
|
||||||
('input_mode', c_long),
|
|
||||||
('status', c_ulong),
|
|
||||||
]
|
|
||||||
|
|
||||||
try:
|
# From xprops.h
|
||||||
xlib = cdll.LoadLibrary('libX11.so.6')
|
MWM_HINTS_FUNCTIONS = 1 << 0
|
||||||
XInternAtom = xlib.XInternAtom
|
MWM_HINTS_DECORATIONS = 1 << 1
|
||||||
XInternAtom.argtypes = [POINTER(Display), c_char_p, c_int]
|
MWM_HINTS_INPUT_MODE = 1 << 2
|
||||||
XInternAtom.restype = Atom
|
MWM_HINTS_STATUS = 1 << 3
|
||||||
XChangeProperty = xlib.XChangeProperty
|
MWM_FUNC_ALL = 1 << 0
|
||||||
XChangeProperty.argtypes = [POINTER(Display), Window, Atom, Atom, c_int, c_int, POINTER(MotifWmHints), c_int]
|
MWM_FUNC_RESIZE = 1 << 1
|
||||||
XChangeProperty.restype = c_int
|
MWM_FUNC_MOVE = 1 << 2
|
||||||
XFlush = xlib.XFlush
|
MWM_FUNC_MINIMIZE = 1 << 3
|
||||||
XFlush.argtypes = [POINTER(Display)]
|
MWM_FUNC_MAXIMIZE = 1 << 4
|
||||||
XFlush.restype = c_int
|
MWM_FUNC_CLOSE = 1 << 5
|
||||||
XOpenDisplay = xlib.XOpenDisplay
|
MWM_DECOR_ALL = 1 << 0
|
||||||
XOpenDisplay.argtypes = [c_char_p]
|
MWM_DECOR_BORDER = 1 << 1
|
||||||
XOpenDisplay.restype = POINTER(Display)
|
MWM_DECOR_RESIZEH = 1 << 2
|
||||||
XQueryTree = xlib.XQueryTree
|
MWM_DECOR_TITLE = 1 << 3
|
||||||
XQueryTree.argtypes = [POINTER(Display), Window, POINTER(Window), POINTER(Window), POINTER(Window), POINTER(c_uint)]
|
MWM_DECOR_MENU = 1 << 4
|
||||||
XQueryTree.restype = c_int
|
MWM_DECOR_MINIMIZE = 1 << 5
|
||||||
dpy = xlib.XOpenDisplay(None)
|
MWM_DECOR_MAXIMIZE = 1 << 6
|
||||||
if not dpy:
|
|
||||||
raise Exception("Can't find your display, can't continue")
|
class MotifWmHints(Structure):
|
||||||
motif_wm_hints_property = XInternAtom(dpy, b'_MOTIF_WM_HINTS', False)
|
_fields_ = [
|
||||||
motif_wm_hints_normal = MotifWmHints(MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS,
|
('flags', c_ulong),
|
||||||
MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_CLOSE,
|
('functions', c_ulong),
|
||||||
MWM_DECOR_BORDER | MWM_DECOR_RESIZEH | MWM_DECOR_TITLE | MWM_DECOR_MENU | MWM_DECOR_MINIMIZE,
|
('decorations', c_ulong),
|
||||||
0, 0)
|
('input_mode', c_long),
|
||||||
motif_wm_hints_dark = MotifWmHints(MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS,
|
('status', c_ulong),
|
||||||
MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_CLOSE,
|
]
|
||||||
0, 0, 0)
|
|
||||||
except:
|
# workaround for https://github.com/EDCD/EDMarketConnector/issues/568
|
||||||
if __debug__: print_exc()
|
if os.getenv("EDMC_NO_UI") :
|
||||||
dpy = None
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
xlib = cdll.LoadLibrary('libX11.so.6')
|
||||||
|
XInternAtom = xlib.XInternAtom
|
||||||
|
XInternAtom.argtypes = [POINTER(Display), c_char_p, c_int]
|
||||||
|
XInternAtom.restype = Atom
|
||||||
|
XChangeProperty = xlib.XChangeProperty
|
||||||
|
XChangeProperty.argtypes = [POINTER(Display), Window, Atom, Atom, c_int, c_int, POINTER(MotifWmHints), c_int]
|
||||||
|
XChangeProperty.restype = c_int
|
||||||
|
XFlush = xlib.XFlush
|
||||||
|
XFlush.argtypes = [POINTER(Display)]
|
||||||
|
XFlush.restype = c_int
|
||||||
|
XOpenDisplay = xlib.XOpenDisplay
|
||||||
|
XOpenDisplay.argtypes = [c_char_p]
|
||||||
|
XOpenDisplay.restype = POINTER(Display)
|
||||||
|
XQueryTree = xlib.XQueryTree
|
||||||
|
XQueryTree.argtypes = [POINTER(Display), Window, POINTER(Window), POINTER(Window), POINTER(Window), POINTER(c_uint)]
|
||||||
|
XQueryTree.restype = c_int
|
||||||
|
dpy = xlib.XOpenDisplay(None)
|
||||||
|
if not dpy:
|
||||||
|
raise Exception("Can't find your display, can't continue")
|
||||||
|
|
||||||
|
motif_wm_hints_property = XInternAtom(dpy, b'_MOTIF_WM_HINTS', False)
|
||||||
|
motif_wm_hints_normal = MotifWmHints(MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS,
|
||||||
|
MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_CLOSE,
|
||||||
|
MWM_DECOR_BORDER | MWM_DECOR_RESIZEH | MWM_DECOR_TITLE | MWM_DECOR_MENU | MWM_DECOR_MINIMIZE,
|
||||||
|
0, 0)
|
||||||
|
motif_wm_hints_dark = MotifWmHints(MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS,
|
||||||
|
MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_CLOSE,
|
||||||
|
0, 0, 0)
|
||||||
|
except:
|
||||||
|
if __debug__: print_exc()
|
||||||
|
dpy = None
|
||||||
|
|
||||||
|
|
||||||
class _Theme(object):
|
class _Theme(object):
|
||||||
@ -379,5 +388,7 @@ class _Theme(object):
|
|||||||
self.minwidth = root.winfo_width() # Minimum width = width on first creation
|
self.minwidth = root.winfo_width() # Minimum width = width on first creation
|
||||||
root.minsize(self.minwidth, -1)
|
root.minsize(self.minwidth, -1)
|
||||||
|
|
||||||
|
|
||||||
|
setup_UI__()
|
||||||
# singleton
|
# singleton
|
||||||
theme = _Theme()
|
theme = _Theme()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user