def loadWebColors(): F = open(wcFile) cm = {} ff = [line.strip() for line in F.readlines()] for line in ff: S = line.split('\t') C = Color(int(S[1], 0x10)) r, g, b = C.Get(0) cm[S[0]] = Color(b, g, r) return cm
def OnCalChange(*a): ''' Update the Calendar UI to a new date ''' caldate = cal.Date currentyear = caldate.GetYear() currentmonth = caldate.GetMonth() relevantdates = frozenset(date.GetDay() for date in self.dates if date.GetYear() == currentyear and date.GetMonth() == currentmonth and date.GetDay()) SetHoliday, SetAttr = cal.SetHoliday, cal.SetAttr for i in xrange(1, 32): if i in relevantdates: SetHoliday(i) else: SetAttr(i, CalendarDateAttr(Color(160,160,160))) OnDayChange()
def UpdateSkin(self): 'Simply gets a skin and sets it all up.' key = self.skinkey native = not key if native and self.uxthemeable: self.rendernative = True self.destroy_native() self.OpenNativeTheme() skinget = skin.get self.menuicon = skinget('appdefaults.dropdownicon') self.padding = (5, 5) self.margins = Margins([0, 0, 0, 0]) self.Font = default_font() self.fontcolors = [wx.BLACK] * 7 self.backgrounds = NATIVE_BACKGROUNDS self.Cut() elif native: if not self.native: self.native = wx.Button(self, style=wx.BU_EXACTFIT) self.native.SetLabel(self.label) self.Sizer.Add(self.native, 1, wx.EXPAND) self.Layout() self.Cut() else: self.rendernative = False self.destroy_native() skinget = skin.get skinroot = skin.get(key) #s = lambda k, default = sentinel: skinget('%s.%s' % (key, k), default) s = skinroot.get self.menuicon = s('menuicon', skinget('appdefaults.dropdownicon')) self.padding = s('padding', (5, 5)) self.margins = s('margins', Margins([0, 0, 0, 0])) self.Font = s('font', default_font()) fc = skinroot.get('fontcolors', {}) s = fc.get self.fontcolors = [ s('disabled', Color(125, 125, 125)), s('normal', wx.BLACK), s('active', wx.BLACK), s('hover', wx.BLACK), s('activehover', wx.BLACK), s('down', wx.BLACK), s('notify', wx.WHITE) ] bgs = skinroot.get('backgrounds', {}) def s(key, default): try: return bgs[key] except: return default() disabled = s( 'disabled', lambda: SkinGradient( 'vertical', [Color(125, 125, 125), Color(237, 237, 237)])) normal = s( 'normal', lambda: SkinGradient( 'vertical', [Color(200, 255, 200), Color(85, 255, 85)])) active = s( 'active', lambda: SkinGradient( 'vertical', [Color(200, 255, 238), Color(85, 255, 238)])) hover = s('hover', lambda: normal) activehover = s('activehover', lambda: active) down = s( 'down', lambda: SkinGradient('vertical', [ Color(0, 125, 0), Color(00, 204, 00) ])) notify = s( 'notify', lambda: SkinGradient( 'vertical', [Color(255, 255, 200), Color(255, 255, 85)])) self.backgrounds = [ disabled, normal, active, hover, activehover, down, notify ] self.Calcumalate() self.Refresh()
def color_for_total(total): 'Returns a wx color for an update count per hour.' if total > 150: return Color(0xFF, 0, 0) elif total > 125: return Color(0xFF, 0xA5, 0x00) else: return Color(0, 0, 0)
def __init__(self,parent): SimplePanel.__init__(self, parent, wx.FULL_REPAINT_ON_RESIZE) self.BackgroundColour = wx.WHITE self.Sizer = wx.BoxSizer(HORIZONTAL) sz = wx.BoxSizer(HORIZONTAL) self.Sizer.Add(sz,1,EXPAND|ALL,3) leftcol = wx.BoxSizer(VERTICAL) acctcombo = self.acctcombo = UberCombo(self, value='',skinkey='AppDefaults.PrefCombo') acctcont = PrefPanel(self,acctcombo,_('Account')) leftcol.Add(acctcont,0,EXPAND|ALL,3) buddylist = self.buddylist = ListOBuddies(self) self.buddies_panel = buddycont = PrefPanel(self, buddylist, _('Buddy')) leftcol.Add(buddycont, 1, EXPAND | TOPLESS, 3) style = wx.NO_BORDER | CAL_SUNDAY_FIRST | CAL_SEQUENTIAL_MONTH_SELECTION | CAL_SHOW_HOLIDAYS cal = self.cal = CalendarCtrl(self, -1, wx.DateTime.Now(), wx.DefaultPosition, wx.DefaultSize, style) cal.SetForegroundColour(wx.Color(160, 160, 160)) cal.SetHolidayColours(wx.BLACK, wx.WHITE) cal.SetHeaderColours(Color(160, 160, 160), Color(239, 239, 239)) calcont = PrefPanel(self,cal,_('Date')) leftcol.Add(calcont, 0, EXPAND | TOPLESS, 3) sz.Add(leftcol, 0, EXPAND) viewpanel = wx.Panel(self) viewer = self.viewer = PastBrowserWebkitWindow(viewpanel) # viewer.SetMouseWheelZooms(True) finder = self.finder = FindBar(viewpanel,viewer) menu = UMenu(viewer) menu.AddItem(_('Copy'), id = wx.ID_COPY, callback = lambda *a: viewer.Copy()) viewer.BindWheel(self) viewer.BindScrollWin(self) viewer.Bind(wx.EVT_CONTEXT_MENU, lambda e: (menu.GetItemById(wx.ID_COPY).Enable(viewer.CanCopy()), menu.PopupMenu(event = e))) viewer.Bind(wx.EVT_KEY_DOWN,self.OnKeyDown) finder.TextControl.Bind(wx.EVT_KEY_DOWN,self.OnKeyDown) nav = BoxSizer(wx.HORIZONTAL) prev = self.prev = UberButton(viewpanel, label = '<-', skin = BUTTON_SKIN) next = self.next = UberButton(viewpanel, label = '->', skin = BUTTON_SKIN) datelabel = wx.StaticText(viewpanel, -1, style = wx.ALIGN_CENTER| wx.ST_NO_AUTORESIZE) datelabel.SetMinSize((140, -1)) prev.Bind(wx.EVT_BUTTON, lambda e: self.Flip(-1)) next.Bind(wx.EVT_BUTTON, lambda e: self.Flip( 1)) nav.AddStretchSpacer(1) nav.AddMany([(prev, 0, wx.EXPAND | wx.ALIGN_CENTER), (datelabel, 0, wx.EXPAND | wx.ALIGN_CENTER), (next, 0, wx.EXPAND | wx.ALIGN_CENTER)]) nav.AddStretchSpacer(1) viewpanel.Sizer = wx.BoxSizer(wx.VERTICAL) viewpanel.Sizer.AddMany([ (nav, 0, EXPAND), (viewer, 1, EXPAND), (finder, 0, EXPAND) ]) sz.Add(PrefPanel(self, viewpanel, _('Conversation Log')), 1, EXPAND | ALL, 3) Bind = self.Bind Bind(wx.EVT_PAINT, self.OnPaint) def OnAcct(*a): ''' Handle selection of a new account from the Account drop down ''' if self.GroupChatsSelected(): from collections import defaultdict self.groupchats = defaultdict(list) for g in GetGroupChats(): d = g['time'] key = DateTimeFromDMY(d.day, d.month-1, d.year) self.groupchats[key].append(g) #dates = sorted((g['date'], g) for g in self.dates = sorted(self.groupchats.keys()) UpdateCal() self.buddies_panel.SetTitle(_('Chats')) else: buddylist.SetList(GetBuddies(acctcombo.Value.id), BuddyRenderer()) OnBuddy() self.buddies_panel.SetTitle(_('Buddy')) def OnBuddy(*a): ''' Handels selection of a buddy from the buddy pannel ''' if not self.GroupChatsSelected(): self.dates = GetDates(buddylist.SelectedBuddy.dir) UpdateCal() else: ViewLogForFile(buddylist.SelectedItem['file'], do_aliases=False) def UpdateCal(): ''' Switches the date to the last date conversed with the selected budy ''' self.next.Enable(True) self.prev.Enable(True) if self.dates: self.cal.Date = self.dates[-1] self.cal.Enable(True) OnCalChange() def OnCalChange(*a): ''' Update the Calendar UI to a new date ''' caldate = cal.Date currentyear = caldate.GetYear() currentmonth = caldate.GetMonth() relevantdates = frozenset(date.GetDay() for date in self.dates if date.GetYear() == currentyear and date.GetMonth() == currentmonth and date.GetDay()) SetHoliday, SetAttr = cal.SetHoliday, cal.SetAttr for i in xrange(1, 32): if i in relevantdates: SetHoliday(i) else: SetAttr(i, CalendarDateAttr(Color(160,160,160))) OnDayChange() self.OnCalChange = OnCalChange def ViewLogForDay(date): ''' Load the log file for the specified date for the currently selected buddy ''' logpath = logpath_for_date(buddylist.SelectedBuddy, date) ViewLogForFile(logpath) def ViewLogForFile(logpath, do_aliases=True): ''' Update the log viewer with the file specified ''' with viewer.Frozen(): viewer.SetPageSource(logpath.text('utf-8', 'replace'), logpath.url()) viewer.RunScript('window.scroll(0, 0);') if do_aliases: substitue_aliases() import hooks hooks.notify('digsby.statistics.logviewer.log_viewed') def substitue_aliases(): ''' Swap out buddy names with their allies ''' import gui with open(gui.skin.resourcedir() / 'html' / 'jquery-1.3.2.js', 'rb') as f: viewer.RunScript(f.read()) buddy = buddylist.SelectedBuddy aliases = IAliasProvider(profile()) import simplejson as json names = set(json.loads(viewer.RunScript("var foo = []; $('.buddy').each(function(){foo.push($(this).html())}); JSON.stringify(foo);"))) for name in names: alias = aliases.get_alias(name, buddy.service, buddy.protocol) or name viewer.RunScript(SUBHTML % (json.dumps(name), json.dumps(alias))) def OnDayChange(*a): ''' Show the log for the day selected in the clander ''' date = cal.Date self.date = date datelabel.SetLabel(date.FormatDate()) if cal.GetAttr(date.GetDay()).IsHoliday(): if self.GroupChatsSelected(): chats = sorted(self.groupchats[date], key=lambda g: g['time'], reverse=True) buddylist.SetList(chats, GroupChatRenderer()) if chats: ViewLogForFile(chats[0]['file'], do_aliases=False) else: ViewLogForDay(date) else: year = str(date.GetYear()) month = date.GetMonth() month = wx.DateTime.GetMonthName(int(month)) day = str(date.GetDay()) specific_day_string = _('{month}, {day}, {year}').format(month=month, day=day, year=year) if self.GroupChatsSelected(): msg = _("There are no chat logs for {specific_day_string}.").format(specific_day_string=specific_day_string) else: msg = _("There are no chat logs for {specific_day_string} with {name}.").format(specific_day_string=specific_day_string, name=buddylist.SelectedBuddy.name) viewer.SetPageSource(msg, 'file:///C:/') viewer.SetFocus() wx.CallAfter(cal.Refresh) self.OnDayChange = OnDayChange acctcombo.SetCallbacks(value = OnAcct) buddylist.Bind(wx.EVT_LISTBOX, OnBuddy) cBind = cal.Bind cBind(EVT_CALENDAR_YEAR, OnCalChange) cBind(EVT_CALENDAR_MONTH, OnCalChange) cBind(EVT_CALENDAR_SEL_CHANGED, OnDayChange) acctcombo.SetItems(MakeAccountItems(), 0)
# -*- coding: utf-8 -*- ## \package dbr.colors # MIT licensing # See: docs/LICENSE.txt from wx import Colour as Color ## Color used for tooltip backgrounds (yellow) # # FIXME: Unused? COLOR_tooltip = Color(255, 255, 0) ## Color used for warnings (red-orange) COLOR_warn = Color(255, 143, 115) ## Color used for errors (red) COLOR_error = Color(255, 0, 0) ## Text color of executable files (red) COLOR_executable = COLOR_error ## Text color of symbolic links (green) COLOR_link = Color(76, 153, 0) ## Text color of directories (blue) COLOR_dir = Color(0, 0, 255)
def randcolor(): return Color(randint(0, 255), randint(0, 255), randint(0, 255))
def invert(color): return Color(0xFFFFFF - color.GetRGB())
def contrast(color): r, g, b = color.Get(0) r -= 127 b -= 127 g -= 127 return Color(r % 256, g % 256, b % 256)
"LIGHT GREY": 0xc0c0c0, "ORANGE": 0x3232cc, "TURQUOISE": 0xeaeaad, "DARK OLIVE GREEN": 0x2f4f4f, "LIGHT STEEL BLUE": 0xbc8f8f, "ORANGE RED": 0x7f00ff, "VIOLET": 0x4f2f4f, "DARK ORCHID": 0xcc3299, "LIME GREEN": 0x32cc32, "ORCHID": 0xdb70db, "VIOLET RED": 0x9932cc, "DARK SLATE BLUE": 0x8e236b, "MAGENTA": 0xff00ff, "PALE GREEN": 0x8fbc8f, "WHEAT": 0xbfd8d8, "DARK SLATE GREY": 0x4f4f2f, "MAROON": 0x6b238e, "PINK": 0xcbc0ff, "WHITE": 0xffffff, "DARK TURQUOISE": 0xdb9370, "MEDIUM AQUAMARINE": 0x99cc32, "PLUM": 0xeaadea, "YELLOW": 0x00ffff, "DIM GREY": 0x545454, "MEDIUM BLUE": 0xcc3232, "PURPLE": 0xff00b0, "YELLOW GREEN": 0x32cc99 } colorMap = {name: Color(v) for name, v in colorData.items()}