Make a better attempt to keep up with color scheme changes in python wmiirc without extra roundtrips.

This commit is contained in:
Kris Maglione 2009-10-21 00:03:59 -04:00
parent e156d03e09
commit 4b51770266
3 changed files with 26 additions and 24 deletions

View File

@ -36,7 +36,7 @@ class Ctl(object):
ctl_hasid = False
def __init__(self):
pass
self.cache = {}
def ctl(self, *args):
"""
@ -56,6 +56,7 @@ class Ctl(object):
return key in self.keys()
def __setitem__(self, key, val):
assert '\n' not in key
self.cache[key] = val
if key in self.ctl_types:
val = self.ctl_types[key][1](val)
self.ctl(key, val)
@ -610,8 +611,8 @@ class Tags(object):
self.ignore = set()
self.tags = {}
self.sel = None
self.normcol = normcol or wmii['normcolors']
self.focuscol = focuscol or wmii['focuscolors']
self.normcol = normcol
self.focuscol = focuscol
self.lastselect = datetime.now()
for t in wmii.tags:
self.add(t.id)
@ -626,15 +627,15 @@ class Tags(object):
def add(self, tag):
self.tags[tag] = Tag(tag)
self.tags[tag].button = Button('left', tag, self.normcol, tag)
self.tags[tag].button = Button('left', tag, self.normcol or wmii.cache['normcolors'], tag)
def delete(self, tag):
self.tags.pop(tag).button.remove()
def focus(self, tag):
self.sel = self.tags[tag]
self.sel.button.colors = self.focuscol
self.sel.button.colors = self.focuscol or wmii.cache['focuscolors']
def unfocus(self, tag):
self.tags[tag].button.colors = self.normcol
self.tags[tag].button.colors = self.normcol or wmii.cache['normcolors']
def set_urgent(self, tag, urgent=True):
self.tags[tag].button.label = urgent and '*' + tag or tag

View File

@ -57,8 +57,8 @@ class Monitor(object):
Initializes the new monitor. For parameter values, see the
corresponding property values in the class's docstring.
Param color: The initial colors for the monitor.
Param label: The initial label for the monitor.
Param colors: The initial colors for the monitor.
Param label: The initial label for the monitor.
"""
if side:
self.side = side

View File

@ -4,7 +4,7 @@ import os
import re
import sys
import traceback
from threading import Thread
from threading import Thread, Timer
import pygmi
from pygmi import *
@ -50,10 +50,10 @@ pygmi.shell = os.environ.get('SHELL', 'sh')
@defmonitor
def load(self):
return re.sub(r'^.*: ', '', call('uptime')).replace(', ', ' ')
return wmii.cache['normcolors'], re.sub(r'^.*: ', '', call('uptime')).replace(', ', ' ')
@defmonitor
def time(self):
return datetime.datetime.now().strftime('%c')
return wmii.cache['focuscolors'], datetime.datetime.now().strftime('%c')
wmii.colrules = (
('gimp', '17+83+41'),
@ -143,11 +143,12 @@ def clickmenu(choices, args):
class Notice(Button):
def __init__(self):
super(Notice, self).__init__(*noticebar, colors=wmii['normcolors'])
super(Notice, self).__init__(*noticebar, colors=wmii.cache['normcolors'])
self.timer = None
self.show(' ')
def tick(self):
self.label = ' '
self.create(wmii.cache['normcolors'], ' ')
def write(self, notice):
client.awrite('/event', 'Notice %s' % notice.replace('\n', ' '))
@ -155,8 +156,7 @@ class Notice(Button):
def show(self, notice):
if self.timer:
self.timer.cancel()
self.label = notice
from threading import Timer
self.create(wmii.cache['normcolors'], notice)
self.timer = Timer(noticetimeout, self.tick)
self.timer.start()
notice = Notice()
@ -294,14 +294,15 @@ addresize('Shift-', 'Nudge', 'nudge')
Actions.rehash()
dirs = filter(curry(os.access, _, os.R_OK),
('%s/plugins' % dir for dir in confpath))
files = filter(re.compile(r'\.py$').match,
reduce(operator.add, map(os.listdir, dirs), []))
for f in ['wmiirc_local'] + ['plugins.%s' % file[:-3] for file in files]:
try:
exec 'import %s' % f
except Exception, e:
traceback.print_exc(sys.stdout)
if not os.environ.get('WMII_NOPLUGINS', ''):
dirs = filter(curry(os.access, _, os.R_OK),
('%s/plugins' % dir for dir in confpath))
files = filter(re.compile(r'\.py$').match,
reduce(operator.add, map(os.listdir, dirs), []))
for f in ['wmiirc_local'] + ['plugins.%s' % file[:-3] for file in files]:
try:
exec 'import %s' % f
except Exception, e:
traceback.print_exc(sys.stdout)
# vim:se sts=4 sw=4 et: