ported pywmgeneral to python3

This commit is contained in:
Fredrick W. Warren 2024-09-09 01:24:09 -06:00
parent d4d7fdf761
commit 667724990c

View File

@ -26,14 +26,14 @@ Some changes to handle the additional event handling in pywmgeneral
First workingish version First workingish version
""" """
import os, re, types import os, re
import ConfigParser import configparser
charset_start = None charset_start = None
charset_width = None charset_width = None
pattern_start = None pattern_start = None
import pywmgeneral import wmdocklib.pywmgeneral as pywmgeneral
defaultRGBFileList = [ defaultRGBFileList = [
'/etc/X11/rgb.txt', '/etc/X11/rgb.txt',
'/usr/lib/X11/rgb.txt', '/usr/lib/X11/rgb.txt',
@ -55,10 +55,10 @@ def readConfigFile(fileName, errOut):
errOut.write( errOut.write(
'Configuration file is not readable. Using defaults.\n') 'Configuration file is not readable. Using defaults.\n')
return {} return {}
cp = ConfigParser.ConfigParser() cp = configparser.ConfigParser()
try: try:
cp.read(fileName) cp.read(fileName)
except ConfigParser.Error, e: except configparser.Error as e:
if errOut: if errOut:
errOut.write('Error in configuration file:\n') errOut.write('Error in configuration file:\n')
errOut.write(str(e) + '\nUsing defaults.') errOut.write(str(e) + '\nUsing defaults.')
@ -75,7 +75,7 @@ def getCenterStartPos(s, areaWidth, offset):
"""Get the x starting position if we want to paint s centred.""" """Get the x starting position if we want to paint s centred."""
w = len(s) * char_width w = len(s) * char_width
textArea = areaWidth - offset * 2 - 1 textArea = areaWidth - offset * 2 - 1
return (textArea - w) / 2 return (textArea - w) // 2
def addChar(ch, x, y, xOffset, yOffset, width, height, drawable=None): def addChar(ch, x, y, xOffset, yOffset, width, height, drawable=None):
"""Paint the character ch at position x, y in the window. """Paint the character ch at position x, y in the window.
@ -102,13 +102,13 @@ def addChar(ch, x, y, xOffset, yOffset, width, height, drawable=None):
pos = (ord(ch)-32) * char_width pos = (ord(ch)-32) * char_width
# translate pos into chX, chY, rolling back and down each linelength # translate pos into chX, chY, rolling back and down each linelength
# bits. character definition start at row 64, column 0. # bits. character definition start at row 64, column 0.
chY = (pos / linelength) * char_height + charset_start chY = (pos // linelength) * char_height + charset_start
chX = pos % linelength chX = pos % linelength
targX = x + xOffset targX = x + xOffset
targY = y + yOffset targY = y + yOffset
chW = char_width chW = char_width
if ch in "',.:;": if ch in "',.:;":
chW = char_twidth chW =char_twidth
if drawable is None: if drawable is None:
pywmgeneral.copyXPMArea(chX, chY, chW, char_height, targX, targY) pywmgeneral.copyXPMArea(chX, chY, chW, char_height, targX, targY)
else: else:
@ -131,7 +131,7 @@ def getVertSpacing(numLines, margin, height, yOffset):
margin is the space we want between the first line and the top.""" margin is the space we want between the first line and the top."""
h = height - (numLines * char_height + 1) - yOffset * 2 - margin h = height - (numLines * char_height + 1) - yOffset * 2 - margin
return h / (numLines - 1) return h // (numLines - 1)
def readXPM(fileName): def readXPM(fileName):
@ -145,8 +145,8 @@ def readXPM(fileName):
Raise IOError if we run into trouble when trying to read the file. This Raise IOError if we run into trouble when trying to read the file. This
function has not been tested extensively. do not try to use more than function has not been tested extensively. do not try to use more than
""" """
f = file(fileName, 'r') with open(fileName, 'r') as f:
lines = [l.rstrip('\n') for l in f.readlines()] lines = [l.rstrip('\n') for l in f.readlines()]
s = ''.join(lines) s = ''.join(lines)
res = [] res = []
while 1: while 1:
@ -260,7 +260,7 @@ def initPixmap(background=None,
] + [ ] + [
' '*width for item in range(margin) ' '*width for item in range(margin)
] ]
elif isinstance(background, types.ListType) and not isinstance(background[0], types.StringTypes): elif isinstance(background, list) and not isinstance(background[0], str):
nbackground = [[' ']*width for i in range(height)] nbackground = [[' ']*width for i in range(height)]
for ((left, top),(right, bottom)) in background: for ((left, top),(right, bottom)) in background:
for x in range(left, right+1): for x in range(left, right+1):
@ -329,7 +329,7 @@ def initPixmap(background=None,
origRgb = [int(origColor[i*2:i*2+2],16)/256. for i in range(3)] origRgb = [int(origColor[i*2:i*2+2],16)/256. for i in range(3)]
intensity = sum(origRgb) / 3 intensity = sum(origRgb) / 3
newRgb = [i * intensity + base for i,base in zip(fg_vec, bg_point)] newRgb = [i * intensity + base for i,base in zip(fg_vec, bg_point)]
new_font_palette[k] = '#'+''.join(["%02x"%i for i in newRgb]) new_font_palette[k] = '#'+''.join(["%02x"%int(i) for i in newRgb])
return new_font_palette return new_font_palette
@ -364,10 +364,10 @@ def initPixmap(background=None,
for line in fontdef for line in fontdef
] ]
if debug: if debug:
print '/* XPM */\nstatic char *_x_[] = {' print('/* XPM */\nstatic char *_x_[] = {')
for item in xpm: for item in xpm:
print '"%s",' % item print('"%s",' % item)
print '};' print('};')
pywmgeneral.includePixmap(xpm) pywmgeneral.includePixmap(xpm)
return char_width, char_height return char_width, char_height
@ -436,9 +436,8 @@ def getColorCode(colorName, rgbFileName=None):
if rgbFileName is None: if rgbFileName is None:
raise ValueError('cannot find rgb file') raise ValueError('cannot find rgb file')
f = file(rgbFileName, 'r') with open(rgbFileName, 'r') as f:
lines = f.readlines() lines = f.readlines()
f.close()
for l in lines: for l in lines:
if l[0] != '!': if l[0] != '!':
words = l.split() words = l.split()