themes are back (TODO: manage themes)
This commit is contained in:
parent
5514387db7
commit
e7ff7da1da
20
src/chat.py
20
src/chat.py
|
@ -810,12 +810,22 @@ class Chat:
|
|||
self.sent_history_pos[jid] = self.sent_history_pos[jid] + 1
|
||||
conv_buf.set_text(self.sent_history[jid][self.sent_history_pos[jid]])
|
||||
|
||||
def paint_banner(self, jid):
|
||||
theme = gajim.config.get('roster_theme')
|
||||
bgcolor = gajim.config.get_per('themes', theme, 'bannerbgcolor')
|
||||
textcolor = gajim.config.get_per('themes', theme, 'bannertextcolor')
|
||||
# the backgrounds are colored by using eventboxes and
|
||||
# setting the bg color of the eventboxes. There is a
|
||||
# separate event box for each component (name label and
|
||||
# status icon). The avatar has one too in the glade file.
|
||||
self.xmls[jid].get_widget('banner_eventbox').modify_bg(
|
||||
gtk.STATE_NORMAL, gtk.gdk.color_parse(bgcolor))
|
||||
banner_name_label = self.xmls[jid].get_widget('banner_name_label')
|
||||
banner_name_label.modify_fg(gtk.STATE_NORMAL,
|
||||
gtk.gdk.color_parse(textcolor))
|
||||
|
||||
def repaint_colored_widgets(self):
|
||||
"""Repaint widgets (banner) in the window/tab with theme color"""
|
||||
# get the bg color of the bar from the current theme colors
|
||||
bgcolor = gajim.config.get('accountbgcolor') #FIXME: use uniq color
|
||||
|
||||
# iterate through tabs/windows and repaint
|
||||
for jid in self.xmls:
|
||||
self.xmls[jid].get_widget('banner_eventbox').modify_bg(
|
||||
gtk.STATE_NORMAL, gtk.gdk.color_parse(bgcolor))
|
||||
self.paint_banner(jid)
|
||||
|
|
|
@ -61,15 +61,6 @@ class Config:
|
|||
'statusmsgcolor': [ opt_color, '#1eaa1e' ],
|
||||
'collapsed_rows': [ opt_str, '' ],
|
||||
'roster_theme': [ opt_str, 'green' ],
|
||||
'accounttextcolor': [ opt_color, '#ffffff' ],
|
||||
'accountbgcolor': [ opt_color, '#94aa8c' ],
|
||||
'accountfont': [ opt_str, 'Sans Bold 10' ],
|
||||
'grouptextcolor': [ opt_color, '#0000ff' ],
|
||||
'groupbgcolor': [ opt_color, '#eff3e7' ],
|
||||
'groupfont': [ opt_str, 'Sans Italic 10' ],
|
||||
'contacttextcolor': [ opt_color, '#000000' ],
|
||||
'contactbgcolor': [ opt_color, '#ffffff' ],
|
||||
'userfont': [ opt_str, 'Sans 10' ],
|
||||
'saveposition': [ opt_bool, True ],
|
||||
'mergeaccounts': [ opt_bool, False ],
|
||||
'sort_by_show': [ opt_bool, True ],
|
||||
|
@ -152,6 +143,19 @@ class Config:
|
|||
'user': [ opt_str, '' ],
|
||||
'pass': [ opt_str, '' ],
|
||||
}, {}),
|
||||
'themes': ({
|
||||
'accounttextcolor': [ opt_color, '' ],
|
||||
'accountbgcolor': [ opt_color, '' ],
|
||||
'accountfont': [ opt_str, '' ],
|
||||
'grouptextcolor': [ opt_color, '' ],
|
||||
'groupbgcolor': [ opt_color, '' ],
|
||||
'groupfont': [ opt_str, '' ],
|
||||
'contacttextcolor': [ opt_color, '' ],
|
||||
'contactbgcolor': [ opt_color, '' ],
|
||||
'contactfont': [ opt_str, '' ],
|
||||
'bannertextcolor': [ opt_color, '' ],
|
||||
'bannerbgcolor': [ opt_color, '' ],
|
||||
}, {}),
|
||||
}
|
||||
|
||||
emoticons_default = {
|
||||
|
@ -233,6 +237,21 @@ class Config:
|
|||
'message_sent': [ True, '../data/sounds/sent.wav' ],
|
||||
}
|
||||
|
||||
themes_default = {
|
||||
'green': [ '#ffffff', '#94aa8c', 'Sans Bold 10', '#0000ff', '#eff3e7',
|
||||
'Sans Italic 10', '#000000', '#ffffff', 'Sans 10', '#ffffff',
|
||||
'#94aa8c' ],
|
||||
'cyan': [ '#ff0000', '#9fdfff', 'Sans Bold 10', '#0000ff', '#ffffff',
|
||||
'Sans Italic 10', '#000000', '#ffffff', 'Sans 10', '#ffffff',
|
||||
'#9fdfff' ],
|
||||
'marine': [ '#ffffff', '#918caa', 'Sans Bold 10', '#0000ff', '#e9e7f3',
|
||||
'Sans Italic 10', '#000000', '#ffffff', 'Sans 10', '#ffffff',
|
||||
'#918caa' ],
|
||||
'human': [ '#ffffff', '#996442', 'Sans Bold 10', '#ab5920', '#e3ca94',
|
||||
'Sans Italic 10', '#000000', '#ffffff', 'Sans 10', '#ffffff',
|
||||
'#996442' ],
|
||||
}
|
||||
|
||||
def foreach(self, cb, data = None):
|
||||
for opt in self.__options:
|
||||
cb(data, opt, None, self.__options[opt])
|
||||
|
|
|
@ -148,54 +148,6 @@ class PreferencesWindow:
|
|||
st = gajim.config.get('use_transports_iconsets')
|
||||
self.xml.get_widget('transports_iconsets_checkbutton').set_active(st)
|
||||
|
||||
# Roster colors / font
|
||||
self.theme_default = {
|
||||
'green': {
|
||||
'accounttextcolor': '#ffffff',
|
||||
'grouptextcolor': '#0000ff',
|
||||
'contacttextcolor': '#000000',
|
||||
'accountbgcolor': '#94aa8c',
|
||||
'groupbgcolor': '#eff3e7',
|
||||
'contactbgcolor': '#ffffff',
|
||||
'accountfont': 'Sans Bold 10',
|
||||
'groupfont': 'Sans Italic 10',
|
||||
'userfont': 'Sans 10',
|
||||
},
|
||||
'cyan': {
|
||||
'accounttextcolor': '#ff0000',
|
||||
'grouptextcolor': '#0000ff',
|
||||
'contacttextcolor': '#000000',
|
||||
'accountbgcolor': '#9fdfff',
|
||||
'groupbgcolor': '#ffffff',
|
||||
'contactbgcolor': '#ffffff',
|
||||
'accountfont': 'Sans Bold 10',
|
||||
'groupfont': 'Sans Italic 10',
|
||||
'userfont': 'Sans 10'
|
||||
},
|
||||
'marine': {
|
||||
'accounttextcolor': '#ffffff',
|
||||
'grouptextcolor': '#0000ff',
|
||||
'contacttextcolor': '#000000',
|
||||
'accountbgcolor': '#918caa',
|
||||
'groupbgcolor': '#e9e7f3',
|
||||
'contactbgcolor': '#ffffff',
|
||||
'accountfont': 'Sans Bold 10',
|
||||
'groupfont': 'Sans Italic 10',
|
||||
'userfont': 'Sans 10'
|
||||
},
|
||||
'human': {
|
||||
'accounttextcolor': '#ffffff',
|
||||
'grouptextcolor': '#ab5920',
|
||||
'contacttextcolor': '#000000',
|
||||
'accountbgcolor': '#996442',
|
||||
'groupbgcolor': '#e3ca94',
|
||||
'contactbgcolor': '#ffffff',
|
||||
'accountfont': 'Sans Bold 10',
|
||||
'groupfont': 'Sans Italic 10',
|
||||
'userfont': 'Sans 10'
|
||||
},
|
||||
}
|
||||
|
||||
theme_combobox = self.xml.get_widget('theme_combobox')
|
||||
cell = gtk.CellRendererText()
|
||||
theme_combobox.pack_start(cell, True)
|
||||
|
@ -203,14 +155,11 @@ class PreferencesWindow:
|
|||
model = gtk.ListStore(gobject.TYPE_STRING)
|
||||
theme_combobox.set_model(model)
|
||||
i = 0
|
||||
for t in self.theme_default:
|
||||
for t in gajim.config.get_per('themes'):
|
||||
model.append([t])
|
||||
if gajim.config.get('roster_theme') == t:
|
||||
theme_combobox.set_active(i)
|
||||
i += 1
|
||||
model.append(['custom'])
|
||||
if gajim.config.get('roster_theme') == 'custom':
|
||||
theme_combobox.set_active(i)
|
||||
self.on_theme_combobox_changed(theme_combobox)
|
||||
|
||||
#use tabbed chat window
|
||||
|
|
15
src/gajim.py
15
src/gajim.py
|
@ -790,16 +790,27 @@ class Interface:
|
|||
# Do not set gajim.verbose to False if -v option was given
|
||||
if gajim.config.get('verbose'):
|
||||
gajim.verbose = True
|
||||
#add default emoticons is there is not in the config file
|
||||
#add default emoticons if there is not in the config file
|
||||
if len(gajim.config.get_per('emoticons')) == 0:
|
||||
for emot in gajim.config.emoticons_default:
|
||||
gajim.config.add_per('emoticons', emot)
|
||||
gajim.config.set_per('emoticons', emot, 'path', gajim.config.emoticons_default[emot])
|
||||
#add default status messages is there is not in the config file
|
||||
#add default status messages if there is not in the config file
|
||||
if len(gajim.config.get_per('statusmsg')) == 0:
|
||||
for msg in gajim.config.statusmsg_default:
|
||||
gajim.config.add_per('statusmsg', msg)
|
||||
gajim.config.set_per('statusmsg', msg, 'message', gajim.config.statusmsg_default[msg])
|
||||
#add default themes if there is not in the config file
|
||||
if len(gajim.config.get_per('themes')) == 0:
|
||||
d = ['accounttextcolor', 'accountbgcolor', 'accountfont',
|
||||
'grouptextcolor', 'groupbgcolor', 'groupfont', 'contacttextcolor',
|
||||
'contactbgcolor', 'contactfont', 'bannertextcolor', 'bannerbgcolor']
|
||||
default = gajim.config.themes_default
|
||||
for theme in default:
|
||||
gajim.config.add_per('themes', theme)
|
||||
for o in d:
|
||||
gajim.config.set_per('themes', theme, o,
|
||||
default[theme][d.index(o)])
|
||||
|
||||
if gajim.verbose:
|
||||
gajim.log.setLevel(gajim.logging.DEBUG)
|
||||
|
|
|
@ -669,14 +669,8 @@ class GroupchatWindow(chat.Chat):
|
|||
'conversation_textview')
|
||||
self.name_labels[room_jid] = self.xmls[room_jid].get_widget(
|
||||
'banner_name_label')
|
||||
# set the fg colour of the label to white
|
||||
self.name_labels[room_jid].modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('white'))
|
||||
self.paint_banner(room_jid)
|
||||
|
||||
banner_eventbox = self.xmls[room_jid].get_widget('banner_eventbox')
|
||||
# get the background color from the current theme
|
||||
bgcolor = gajim.config.get('accountbgcolor')
|
||||
banner_eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(bgcolor))
|
||||
|
||||
# connect the menuitems to their respective functions
|
||||
xm = gtk.glade.XML(GTKGUI_GLADE, 'gc_actions_menu', APP)
|
||||
xm.signal_autoconnect(self)
|
||||
|
|
|
@ -1387,13 +1387,14 @@ class RosterWindow:
|
|||
|
||||
def iconCellDataFunc(self, column, renderer, model, iter, data = None):
|
||||
'''When a row is added, set properties for icon renderer'''
|
||||
theme = gajim.config.get('roster_theme')
|
||||
if model.get_value(iter, 2) == 'account':
|
||||
renderer.set_property('cell-background',
|
||||
gajim.config.get('accountbgcolor'))
|
||||
gajim.config.get_per('themes', theme, 'accountbgcolor'))
|
||||
renderer.set_property('xalign', 0)
|
||||
elif model.get_value(iter, 2) == 'group':
|
||||
renderer.set_property('cell-background',
|
||||
gajim.config.get('groupbgcolor'))
|
||||
gajim.config.get_per('themes', theme, 'groupbgcolor'))
|
||||
renderer.set_property('xalign', 0.5)
|
||||
else:
|
||||
jid = model.get_value(iter, 3)
|
||||
|
@ -1404,39 +1405,43 @@ class RosterWindow:
|
|||
renderer.set_property('cell-background', '#ab6161')
|
||||
else:
|
||||
renderer.set_property('cell-background',
|
||||
gajim.config.get('userbgcolor'))
|
||||
gajim.config.get_per('themes', theme, 'contactbgcolor'))
|
||||
renderer.set_property('xalign', 1)
|
||||
renderer.set_property('width', 20)
|
||||
|
||||
def nameCellDataFunc(self, column, renderer, model, iter, data = None):
|
||||
'''When a row is added, set properties for name renderer'''
|
||||
theme = gajim.config.get('roster_theme')
|
||||
if model.get_value(iter, 2) == 'account':
|
||||
renderer.set_property('foreground',
|
||||
gajim.config.get('accounttextcolor'))
|
||||
gajim.config.get_per('themes', theme, 'accounttextcolor'))
|
||||
renderer.set_property('cell-background',
|
||||
gajim.config.get('accountbgcolor'))
|
||||
renderer.set_property('font', gajim.config.get('accountfont'))
|
||||
gajim.config.get_per('themes', theme, 'accountbgcolor'))
|
||||
renderer.set_property('font',
|
||||
gajim.config.get_per('themes', theme, 'accountfont'))
|
||||
renderer.set_property('xpad', 0)
|
||||
elif model.get_value(iter, 2) == 'group':
|
||||
renderer.set_property('foreground',
|
||||
gajim.config.get('grouptextcolor'))
|
||||
gajim.config.get_per('themes', theme, 'grouptextcolor'))
|
||||
renderer.set_property('cell-background',
|
||||
gajim.config.get('groupbgcolor'))
|
||||
renderer.set_property('font', gajim.config.get('groupfont'))
|
||||
gajim.config.get_per('themes', theme, 'groupbgcolor'))
|
||||
renderer.set_property('font',
|
||||
gajim.config.get_per('themes', theme, 'groupfont'))
|
||||
renderer.set_property('xpad', 4)
|
||||
else:
|
||||
jid = model.get_value(iter, 3)
|
||||
account = model.get_value(iter, 4)
|
||||
renderer.set_property('foreground',
|
||||
gajim.config.get('usertextcolor'))
|
||||
gajim.config.get_per('themes', theme, 'contacttextcolor'))
|
||||
if jid in self.newly_added[account]:
|
||||
renderer.set_property('cell-background', '#adc3c6')
|
||||
elif jid in self.to_be_removed[account]:
|
||||
renderer.set_property('cell-background', '#ab6161')
|
||||
else:
|
||||
renderer.set_property('cell-background',
|
||||
gajim.config.get('userbgcolor'))
|
||||
renderer.set_property('font', gajim.config.get('userfont'))
|
||||
gajim.config.get_per('themes', theme, 'contactbgcolor'))
|
||||
renderer.set_property('font',
|
||||
gajim.config.get_per('themes', theme, 'contactfont'))
|
||||
renderer.set_property('xpad', 8)
|
||||
|
||||
def get_show(self, luser):
|
||||
|
|
|
@ -97,24 +97,14 @@ class TabbedChatWindow(chat.Chat):
|
|||
def draw_name_banner(self, name, jid):
|
||||
'''Draw the fat line at the top of the window that
|
||||
houses the status icon, name, jid, and avatar'''
|
||||
|
||||
# this is the text for the big brown bar
|
||||
label_text = '<span weight="heavy" size="x-large">%s</span>\n%s' \
|
||||
% (name, jid)
|
||||
|
||||
# get the bg color of the bar from the current theme colors
|
||||
bgcolor = gajim.config.get('accountbgcolor')
|
||||
|
||||
# the backgrounds are colored by using eventboxes and
|
||||
# setting the bg color of the eventboxes. There is a
|
||||
# separate event box for each component (name label and
|
||||
# status icon). The avatar has one too in the glade file.
|
||||
self.xmls[jid].get_widget('banner_eventbox').modify_bg(
|
||||
gtk.STATE_NORMAL, gtk.gdk.color_parse(bgcolor))
|
||||
# setup the label that holds name and jid
|
||||
banner_name_label = self.xmls[jid].get_widget('banner_name_label')
|
||||
banner_name_label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('white'))
|
||||
banner_name_label.set_markup(label_text)
|
||||
self.paint_banner(jid)
|
||||
|
||||
def set_avatar(self, vcard):
|
||||
if not vcard.has_key('PHOTO'):
|
||||
|
|
Loading…
Reference in New Issue