# This is part of the Murmur Museek Client, and distributed under the GPLv2
# Copyright (c) 2007 daelstorm.
import commands, os, sys, getopt #, subprocess
import locale, gettext
import signal
import pygtk, gtk
import gobject
import time, stat, string, shutil
from time import sleep
from utils import _
REQUIRE_PYMUSEEK = '0.2.0'
def versionCheck(version):
build = 255
def _required():
global REQUIRE_PYMUSEEK
r = REQUIRE_PYMUSEEK.split(".")
r_major, r_minor, r_micro = [int(i) for i in r[:3]]
return (r_major << 24) + (r_minor << 16) + (r_micro << 8) + build
s = version.split(".")
major, minor, micro = [int(i) for i in s[:3]]
if (major << 24) + (minor << 16) + (micro << 8) + build >= _required():
return True
return False
try:
import messages, driver
except:
try:
import museek
from museek import messages, driver
if not hasattr(museek, 'VERSION'):
raise Exception, "Cannot use unknown museek python bindings version."
elif hasattr(museek, 'VERSION') and not versionCheck(museek.VERSION):
raise Exception, "Cannot use museek python bindings version: %s" % (museek.VERSION,)
except Exception, error:
print "WARNING: The Museek Message-Parsing modules, messages.py and/or driver.py were not found, or are an old version. Please install them into your '/usr/lib/python2.X/site-packages/museek' directory, or place them in a 'museek' subdirectory of the directory that contains the mucous python script."
print error
sys.exit()
class EntryDialog( gtk.Dialog):
def __init__(self, Mapp, message="", message2=None, key='', value=None, modal= True, List=[], v_list=[], second=True):
gtk.Dialog.__init__(self)
self.connect("destroy", self.quit)
self.connect("delete_event", self.quit)
self.ret = key
self.ret2 = value
if modal:
self.set_modal(True)
box = gtk.VBox(spacing=10)
box.set_border_width(10)
self.vbox.pack_start(box)
box.show()
if message:
label = gtk.Label(message)
box.pack_start(label)
label.show()
self.combo = gtk.combo_box_entry_new_text()
alist = List
alist.sort()
for i in alist:
self.combo.append_text( i)
if key != None:
self.combo.child.set_text(key)
self.combo.grab_focus()
self.combo.show()
box.pack_start(self.combo)
if message2 != None and message2 != "":
label2 = gtk.Label(message2)
box.pack_start(label2)
if second == True:
label2.show()
self.combov = gtk.combo_box_entry_new_text()
vlist = v_list
vlist.sort()
for i in vlist:
self.combo.append_text( i)
if value is not None:
self.combov.child.set_text(value)
self.combov.grab_focus()
if message2 == _("Encoding"):
for encoding in Mapp.encodings:
self.combov.append_text(encoding)
if second == True and message2 != None and message2 != "":
self.combov.show()
box.pack_start(self.combov)
button = gtk.Button(_("OK"))
button.connect("clicked", self.click)
button.set_flags(gtk.CAN_DEFAULT)
self.action_area.pack_start(button)
button.show()
button.grab_default()
button = gtk.Button(_("Cancel"))
button.connect("clicked", self.close)
button.set_flags(gtk.CAN_DEFAULT)
self.action_area.pack_start(button)
button.show()
def close(self, w=None, event=None):
self.ret = self.ret2 = None
self.quit()
def quit(self, w=None, event=None):
self.hide()
self.destroy()
def click(self, button):
self.ret = self.combo.child.get_text()
self.ret2 = self.combov.child.get_text()
self.quit()
class Settings( gtk.Dialog):
def __init__(self, xapp, message="", modal= True):
gtk.Dialog.__init__(self)
self.app=xapp
self.murmur_config = self.app.Config
self.set_transient_for(self.app.MurmurWindow)
self.set_default_size(600, 550)
self.connect("destroy", self.quit)
self.connect("delete_event", self.quit)
self.parents= {}
self.SharedDirs = {"normal":[], "buddy":[] }
if modal:
self.set_modal(True)
self.vbox.set_spacing(5)
# DIALOGS
self.dialogs()
self.vbox.pack_start(self.MainNotebook)
OkButton = self.app.CreateIconButton(gtk.STOCK_OK, "stock", self.click, _("OK"))
self.action_area.pack_start(OkButton)
OkButton.set_flags(gtk.CAN_DEFAULT)
SaveButton = self.app.CreateIconButton(gtk.STOCK_SAVE, "stock", self.save, _("Save"))
self.action_area.pack_start(SaveButton)
SaveButton.set_flags(gtk.CAN_DEFAULT)
CancelButton = self.app.CreateIconButton(gtk.STOCK_CANCEL, "stock", self.quit, _("Cancel"))
self.action_area.pack_start(CancelButton)
CancelButton.set_flags(gtk.CAN_DEFAULT)
CancelButton.grab_default()
self.ret = None
def input_box(self, title=_("Input Box"), message="", message2= "", key='', value=None, modal= True, List=[], vlist=[], second=True):
try:
win = EntryDialog(self, message, message2, key, value, modal, List, vlist, second)
win.set_title(title)
win.show()
win.run()
win.destroy()
return win.ret, win.ret2
except Exception,e:
print e
def ServerHostChanged(self, widget):
if self.config == {}: return
if "server" in self.config:
#self.app.Networking.Send(messages.ConfigSet("server", "host", self.EntryServerHost.get_text()))
self.config["server"]["host"] = self.EntryServerHost.get_text()
def ServerUsernameChanged(self, widget):
if self.config == {}: return
if "server" in self.config:
self.config["server"]["username"] = self.EntryServerUsername.get_text()
def ServerPortChanged(self, widget):
if self.config == {}: return
if "server" in self.config:
self.config["server"]["port"] = int( self.ServerPort.get_value() )
def ServerPasswordChanged(self, widget):
if self.config == {}: return
if "server" in self.config:
self.config["server"]["password"] = self.EntryServerPassword.get_text()
def EncodingDefaultChanged(self, widget):
if self.config == {}: return
if "encoding" in self.config:
self.config["encoding"]["default"] = self.defaultEncoding.child.get_text()
def EncodingFSChanged(self, widget):
if self.config == {}: return
if "encoding" in self.config:
self.config["encoding"]["filesystem"] = self.filesystemEncoding.child.get_text()
def EncodingNWChanged(self, widget):
if self.config == {}: return
if "encoding" in self.config:
self.config["encoding"]["network"] = self.networkEncoding.child.get_text()
def LastPortChanged(self, widget):
if self.config == {}:
return
if "clients.bind" in self.config:
self.config["clients.bind"]["last"] = str(int( self.LastPort.get_value() ))
def FirstPortChanged(self, widget):
if self.config == {}:
return
if "clients.bind" in self.config:
self.config["clients.bind"]["first"] =str( int( self.FirstPort.get_value() ))
def InterfacePasswordChanged(self, widget):
if self.config == {}:
return
if "interfaces" in self.config:
self.config["interfaces"]["password"] = self.interfacePassword.get_text()
def ConnectModeChanged(self, widget):
if self.config == {}:
return
if "clients" in self.config:
self.config["clients"]["connectmode"] = self.connectMode.child.get_text()
def PrivilegeBuddiesChanged(self, widget):
if self.config == {}:
return
if self.privilege_buddies_Check.get_active() == True:
self.config["transfers"]["privilege_buddies"] = "true"
else:
self.config["transfers"]["privilege_buddies"] = "false"
def EnableBuddySharesChanged(self, widget):
if self.config == {}:
return
if self.have_buddy_shares_Check.get_active() == True:
self.config["transfers"]["have_buddy_shares"] = "true"
else:
self.config["transfers"]["have_buddy_shares"] = "false"
def TrustUploadsChanged(self, widget):
if self.config == {}:
return
if self.trusting_uploads_Check.get_active() == True:
self.config["transfers"]["trusting_uploads"] = "true"
else:
self.config["transfers"]["trusting_uploads"] = "false"
def OnlyBuddiesChanged(self, widget):
if self.config == {}:
return
if self.only_buddies_Check.get_active() == True:
self.config["transfers"]["only_buddies"] = "true"
else:
self.config["transfers"]["only_buddies"] = "false"
def UserWarningsChanged(self, widget):
if self.config == {}:
return
if self.user_warnings_Check.get_active() == True:
self.config["transfers"]["user_warnings"] = "true"
else:
self.config["transfers"]["user_warnings"] = "false"
def UploadSlotsChanged(self, widget):
if self.config != {}:
self.config["transfers"]["upload_slots"] = str(int( self.uploadSlots.get_value() ))
def LoggingChanged(self, widget):
if self.config != {}:
self.config["logging"]["output"] = str(int( self.LogMethod.get_active() ))
def DownloadDirChanged(self, widget):
if self.config != {}:
self.config["transfers"]["download-dir"] = self.EntryDownloadDIr.get_text()
def IncompleteDirChanged(self, widget):
if self.config != {}:
self.config["transfers"]["incomplete-dir"] = self.EntryIncompleteDir.get_text()
def DownloadDBChanged(self, widget):
if self.config != {}:
self.config["transfers"]["downloads"] = self.EntryDownloadsDBase.get_text()
def NormalSharesDBChanged(self, widget):
if self.config != {}:
self.config["shares"]["database"] = self.EntryNormalShares.get_text()
def BuddySharesDBChanged(self, widget):
if self.config != {}:
self.config["buddy.shares"]["database"]= self.EntryBuddyOnlyShares.get_text()
def DefaultTickerChanged(self, widget):
if self.config != {}:
self.config["default-ticker"]["ticker"] = self.defaultTicker.get_text()
def UserinfoTextChanged(self, widget):
if self.importinguserinfo == 1:
return
string = None
try:
string = self.userinfoBuffer.get_text(self.userinfoBuffer.get_start_iter(), self.userinfoBuffer.get_end_iter())
except Exception, e:
self.Bug(_("Loading userinfo into the Config failed.."), str(e))
if string is not None:
if self.config != {}:
self.config["userinfo"]["text"] = string
def AddItemToList(self, node, message, message2, treeview):
key, value = self.input_box(title=_("Add Config setting"), message=message, message2=message2, key="", value="", modal= True, List=[], vlist=[], second=True)
if node == None or key == None:
return
if key == "" or key.isspace():
return
if value == None:
value = ""
if node in self.config:
if key in self.config[node]:
self.Bug(_("Item %s already in the %s list. Please edit instead.") %(key, node), "")
return
# a genuine new key
self.config[node][key] = value
self.parents[node][key] = treeview.get_model().append( None, [ key, value ] )
def OnAddTrusted(self, widget):
treeview = self.TrustedTreeview
self.AddItemToList("trusted", _("Trusted User"), _("Comment"), treeview)
def OnAddBuddy(self, widget):
treeview = self.BuddiesTreeview
self.AddItemToList("buddies", _("Buddied User"), _("Comment"), treeview)
def OnAddBanned(self, widget):
treeview = self.BannedTreeview
self.AddItemToList("banned", _("Banned User"), _("Comment"), treeview)
def OnAddInterface(self, widget):
treeview = self.interfacesTreeview
self.AddItemToList("interfaces.bind", _("Socket / Port"), None, treeview)
def OnAddIgnored(self, widget):
treeview = self.IgnoredTreeview
self.AddItemToList("ignored", _("Ignored User"), _("Comment"), treeview)
def OnAddAlert(self, widget):
treeview = self.AlertsTreeview
self.AddItemToList("alerts", _("User Status Alert"), None, treeview)
def OnAddTicker(self, widget):
treeview = self.tickersTreeview
self.AddItemToList("tickers", _("Ticker's Room"), _("Ticker"), treeview)
def OnAddEncoding(self, widget):
treeview = self.encodingsTreeview
self.AddItemToList("encoding.rooms", _("Room"), _("Encoding"), treeview)
def OnAddAutojoin(self, widget):
treeview = self.autojoinTreeview
self.AddItemToList("autojoin", _("AutoJoin Room"), None, treeview)
def TreeViewSelection3(self, model, path, iter):
key = model.get_value(iter, 0)
value = model.get_value(iter, 1)
self.selected_items = [key, value]
def EditItemToList(self, node, message, message2, key, value, num, treeview):
self.key = key
self.value = value
key, value = self.input_box(title="Edit Config setting", message=message, message2=message2, key=key, value=value, modal= True, List=[], vlist=[], second=True)
if node == None or key == None:
return
if key == "" or key.isspace():
return
if value == None:
value = ""
if node in self.config:
# a genuine new key
self.config[node][key] = value
if self.key == key:
treeview.get_model().set(self.parents[node][key], 0, key, 1, value)
# Remove old key
else:
treeview.get_model().remove(self.parents[node][self.key])
del self.config[node][self.key]
treeview.get_model().append(None, [key, value])
def OnEditEncoding(self, widget):
treeview = self.encodingsTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("encoding.rooms", _("Room"), _("Encoding"), key, value, None, treeview)
def OnEditAlert(self, widget):
# 2 column treeview
treeview = self.AlertsTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("alerts", _("User Status Alert"), None, key, value, None, treeview)
def OnEditInterface(self, widget):
# 2 column treeview
treeview = self.interfacesTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("interfaces.bind", _("Socket / Port"), None, key, value, None, treeview)
def OnEditAutojoin(self, widget):
# 2 column treeview
treeview = self.autojoinTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("autojoin", _("AutoJoin Room"), None, key, value, None, treeview)
def OnEditTicker(self, widget):
treeview = self.tickersTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("tickers", _("Ticker's Room"), _("Ticker"), key, value, None, treeview)
def OnEditTrusted(self, widget):
treeview = self.TrustedTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("trusted", _("Trusted User"), _("Comment"), key, value, None, treeview)
def OnEditBuddy(self, widget):
treeview = self.BuddiesTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("buddies", _("Buddied User"), _("Comment"), key, value, None, treeview)
def OnEditBanned(self, widget):
treeview = self.encodingsTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("banned", _("Banned User"), _("Comment"), key, value, None, treeview)
def OnEditIgnored(self, widget):
treeview = self.encodingsTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.EditItemToList("ignored", _("Ignored User"), _("Comment"), key, value, num, treeview)
def RemoveItemFromList(self, node, key, value, treeview):
if node == None or key == None:
return
if key == "" or key.isspace():
return
if node in self.config:
del self.config[node][key]
treeview.get_model().remove(self.parents[node][key])
def OnRemoveAlert(self, widget):
# 2 column treeview
treeview = self.AlertsTreeview
node = "alerts"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
print self.selected_items
key, value = self.selected_items
self.RemoveItemFromList(node, key, None, treeview)
def OnRemoveTicker(self, widget):
treeview = self.tickersTreeview
node="tickers"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.RemoveItemFromList(node, key, value, treeview)
def OnRemoveTrusted(self, widget):
treeview = self.TrustedTreeview
node = "trusted"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.RemoveItemFromList(node, key, value, treeview)
def OnRemoveBuddy(self, widget):
treeview = self.BuddiesTreeview
node="buddies"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.RemoveItemFromList(node, key, None, treeview)
def OnRemoveBanned(self, widget):
treeview = self.BannedTreeview
node="banned"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.RemoveItemFromList(node, key, None, treeview)
def OnRemoveIgnored(self, widget):
treeview = self.IgnoredTreeview
node="ignored"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.RemoveItemFromList(node, key, value, treeview)
def OnRemoveInterface(self, widget):
# 2 column treeview
treeview = self.interfacesTreeview
node="interface"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key = self.selected_items
self.RemoveItemFromList(node, key, None, treeview)
def OnRemoveEncoding(self, widget):
treeview = self.encodingsTreeview
node="encoding.rooms"
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, value = self.selected_items
self.RemoveItemFromList(node, key, value, treeview)
def OnRemoveAutojoin(self, widget):
# 2 column treeview
node ="autojoin"
treeview = self.autojoinTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
for key in self.selected_items:
self.RemoveItemFromList(node, key, None, treeview)
def OpenFile(self, widget, title, filters):
dialog = gtk.FileChooserDialog(title=title, parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
dialog.set_select_multiple(False)
if os.environ.has_key(["HOME"]) and os.path.exists(os.environ["HOME"]+"/.museekd"):
dialog.set_current_folder_uri("file://"+os.environ["HOME"]+"/.museekd")
ff = gtk.FileFilter()
for ffilter in filters:
ff.add_pattern(ffilter)
dialog.set_property("filter", ff)
response = dialog.run()
if response == gtk.RESPONSE_ACCEPT:
res = dialog.get_filenames()
for files in res:
file = files
else:
file = res = None
dialog.destroy()
return file
def OnClearUserinfo(self, widget):
self.config["userinfo"]["text"] = ""
self.refreshConfigDisplay()
def OnImportUserinfo(self, widget):
self.importinguserinfo = 1
text = self.OpenFile(widget, _("Import Userinfo from a text file"), ["*"])
if text != None:
if os.path.getsize(text) > 100000:
self.Bug(_("Userinfo file is greater than 100KBytes, not using."), "")
return
textfile = open(text)
self.config["userinfo"]["text"] = textfile.read()
self.refreshConfigDisplay()
self.importinguserinfo = 0
def OnDownloadDir(self, widget):
directory = self.OpenDirectory(widget, _("Choose a Download Directory"))
if directory != None:
self.config["transfers"]["download-dir"] = directory
self.refreshConfigDisplay()
def OnIncompleteDir(self, widget):
directory = self.OpenDirectory(widget, _("Choose a Incomplete Downloads Directory"))
if directory != None:
self.config["transfers"]["incomplete-dir"] = directory
self.refreshConfigDisplay()
def OnDownloadDBase(self, widget):
file = self.OpenFile(widget, _("Choose a Download Database"), ["*.downloads"])
if file != None:
self.config["transfers"]["downloads"] = file
self.refreshConfigDisplay()
def OnNormalDBase(self, widget):
file = self.OpenFile(widget, _("Choose a Normal Shares Database"), ["*.shares"])
if file != None:
if "shares" not in self.config:
self.config["shares"] = {}
self.config["shares"]["database"] = file
self.refreshConfigDisplay()
def OnBuddyDBase(self, widget):
file = self.OpenFile(widget, _("Choose a Buddy Shares Database"), ["*.buddyshares"])
if file != None:
if "buddy.shares" not in self.config:
self.config["buddy.shares"] = {}
self.config["buddy.shares"]["database"] = file
self.refreshConfigDisplay()
def OnOpenImage(self, widget):
newimage = self.OpenImage(widget, _("Select an Userinfo Image"), ["*.jpg", "*.jpeg", "*.png","*.bmp", "*.xpm", "*.ico","*.gif"])
if newimage != None:
try:
image = open(newimage, 'rb').read()
self.app.Networking.Send(messages.ConfigSetUserImage(image))
except Exception, e:
self.Bug("Creating image", str(e))
self.refreshConfigDisplay()
def OpenImage(self, widget, title, filters):
dialog = gtk.FileChooserDialog(title=title, parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
dialog.set_select_multiple(False)
dialog.set_current_folder_uri("file://"+os.getcwd())
ff = gtk.FileFilter()
for ffilter in filters:
ff.add_pattern(ffilter)
dialog.set_property("filter", ff)
response = dialog.run()
if response == gtk.RESPONSE_ACCEPT:
res = dialog.get_filenames()
for files in res:
file = files
else:
file = res = None
dialog.destroy()
return file
def OnClearImage(self, widget):
os.remove(self.config["userinfo"]["image"])
image = file(self.config["userinfo"]["image"], "w")
image.close()
self.refreshConfigDisplay()
def OnAddNormalDirs(self, widget):
directory = self.OpenDirectory(widget, _("Add a buddy-only Shared Directory"))
if directory != None:
self.muscan_execute("muscan -c " + self.CONFIG_PATH + " -v -s "+ directory)
self.OnRefreshNormalDirs(None)
def OnAddBuddyDirs(self, widget):
directory = self.OpenDirectory(widget, _("Add a buddy-only Shared Directory"))
if directory != None:
self.muscan_execute("muscan -c " + self.CONFIG_PATH + " -v -b -s "+ directory)
self.OnRefreshBuddyDirs(None)
def OnRemoveBuddyDirs(self, widget):
treeview = self.BuddyDirTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, num = self.selected_items
if key != "" and key is not None:
self.muscan_execute("muscan -c " + self.CONFIG_PATH + " -b -v -u "+ key)
self.OnRefreshBuddyDirs(None)
def OnRemoveNormalDirs(self, widget):
treeview = self.NormalDirTreeview
self.selected_items = []
treeview.get_selection().selected_foreach(self.TreeViewSelection3)
if self.selected_items != []:
key, num = self.selected_items
if key != "" and key is not None:
self.muscan_execute("muscan -c " + self.CONFIG_PATH + " -v -u "+ key)
self.OnRefreshNormalDirs(None)
def muscan_execute(self, command):
commands.getoutput(command)
#z= subprocess.Popen( command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#stdout_text, stderr_text = z.communicate()
#z.wait()
#stdout_text = stdout_text.split('\n')
#for line in stdout_text:
#if line.isspace() or line == '':
#pass
#else:
#print line
def OnRescanBuddyDirs(self, widget):
self.muscan_execute("muscan -c", self.CONFIG_PATH + " -b -v -r")
self.Statusbar.pop(self.status_context_id)
self.Statusbar.push(self.status_context_id, "Rescanned Buddy shares")
def OnRescanNormalDirs(self, widget):
self.muscan_execute("muscan -c "+ self.CONFIG_PATH +" -v -r")
self.Statusbar.pop(self.status_context_id)
self.Statusbar.push(self.status_context_id, "Rescanned Normal shares")
def OnRefreshBuddyDirs(self, widget):
p = "/usr/bin/muscan"
if os.path.exists(p):
output = commands.getoutput("muscan -c "+ self.CONFIG_PATH + " -b -l")
stdout_text = output.split('\n')
self.SharedDirs["buddy"] = []
for line in stdout_text:
if line.isspace() or line == '':
pass
else:
self.SharedDirs["buddy"].append(line)
self.createTreeFor( self.BuddyDirTreestore, self.BuddyDirTreeview, "buddydirs")
def OnRefreshNormalDirs(self, widget):
p = "/usr/bin/muscan"
if os.path.exists(p):
output = commands.getoutput("muscan -c "+ self.CONFIG_PATH + " -l")
stdout_text = output.split('\n')
self.SharedDirs["normal"] = []
for line in stdout_text:
if line.isspace() or line == '':
pass
else:
self.SharedDirs["normal"].append(line)
self.createTreeFor( self.NormalDirTreestore, self.NormalDirTreeview, "normaldirs")
def Bug(self, where, message):
try:
#print where, message
return
win = BugDialog(self, where, message)
if message != "":
win.set_title(_("Exception Detected"))
else:
win.set_title(_("Problem Detected"))
win.show()
win.run()
win.destroy()
except Exception,e:
print e
def OpenDirectory(self, widget, title):
dialog = gtk.FileChooserDialog(title=title, parent=None, action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
dialog.set_select_multiple(False)
dialog.set_current_folder_uri("file://"+os.getcwd())
response = dialog.run()
if response == gtk.RESPONSE_ACCEPT:
res = dialog.get_filenames()
for dir in res:
directory = dir
else:
directory = res = None
dialog.destroy()
return directory
def OpenConfig(self, widget):
dialog = gtk.FileChooserDialog(title=_("Select the Museek Daemon Config"), parent=None, action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
dialog.set_select_multiple(False)
if os.environ.has_key(["HOME"]) and os.path.exists(os.environ["HOME"]+"/.museekd"):
dialog.set_current_folder_uri("file://"+os.environ["HOME"]+"/.museekd")
ff = gtk.FileFilter()
ff.add_pattern("*.xml")
dialog.set_property("filter", ff)
response = dialog.run()
if response == gtk.RESPONSE_ACCEPT:
res = dialog.get_filenames()
for file in res:
self.CONFIG_PATH = file
self.tryReadConfig()
else:
res = None
dialog.destroy()
def TabServer(self):
self.label1 = gtk.Label(_("Server"))
self.label1.show()
self.ServerSW = gtk.ScrolledWindow()
self.ServerSW.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.ServerSW.show()
self.ServerSW.set_shadow_type(gtk.SHADOW_NONE)
self.vbox2 = gtk.VBox(False, 5)
self.vbox2.show()
self.vbox2.set_spacing(5)
self.vbox2.set_border_width(5)
self.hbox2 = gtk.HBox(False, 5)
self.hbox2.show()
self.hbox2.set_spacing(5)
self.Server_Label = gtk.Label(_("Server Host:"))
self.Server_Label.show()
self.hbox2.pack_start(self.Server_Label, False, False, 0)
self.EntryServerHost = gtk.Entry()
self.EntryServerHost.set_text("")
self.EntryServerHost.set_editable(True)
self.EntryServerHost.show()
self.EntryServerHost.set_visibility(True)
self.EntryServerHost.connect("changed", self.ServerHostChanged)
self.hbox2.pack_end(self.EntryServerHost, False, True, 0)
self.vbox2.pack_start(self.hbox2, False, False, 0)
self.hbox5 = gtk.HBox(False, 0)
self.hbox5.show()
self.hbox5.set_spacing(0)
self.s_port_Label = gtk.Label(_("Server Port:"))
self.s_port_Label.show()
self.hbox5.pack_start(self.s_port_Label, False, False, 0)
aj = gtk.Adjustment(value=2240, lower=0, upper=65535, step_incr=1, page_incr=0, page_size=0)
self.ServerPort = gtk.SpinButton(aj)
self.ServerPort.set_numeric(True)
self.ServerPort.show()
self.ServerPort.connect("changed", self.ServerPortChanged)
self.hbox5.pack_end(self.ServerPort, False, True, 0)
self.vbox2.pack_start(self.hbox5, False, False, 0)
self.hbox4 = gtk.HBox(False, 5)
self.hbox4.show()
self.hbox4.set_spacing(5)
self.s_username_Label = gtk.Label(_("Server Username:"))
self.s_username_Label.show()
self.hbox4.pack_start(self.s_username_Label, False, False, 0)
self.EntryServerUsername = gtk.Entry()
self.EntryServerUsername.set_text("")
self.EntryServerUsername.set_editable(True)
self.EntryServerUsername.show()
self.EntryServerUsername.set_visibility(True)
self.EntryServerUsername.connect("changed", self.ServerUsernameChanged)
self.hbox4.pack_end(self.EntryServerUsername, False, True, 0)
self.vbox2.pack_start(self.hbox4, False, False, 0)
self.hbox3 = gtk.HBox(False, 5)
self.hbox3.show()
self.hbox3.set_spacing(5)
self.s_password_Label = gtk.Label(_("Server Password:"))
self.s_password_Label.show()
self.hbox3.pack_start(self.s_password_Label, False, False, 0)
self.EntryServerPassword = gtk.Entry()
self.EntryServerPassword.set_text("")
self.EntryServerPassword.set_editable(True)
self.EntryServerPassword.show()
self.EntryServerPassword.set_visibility(False)
self.EntryServerPassword.connect("changed", self.ServerPasswordChanged)
self.hbox3.pack_end(self.EntryServerPassword, False, True, 0)
self.vbox2.pack_start(self.hbox3, False, False, 0)
self.frame1 = gtk.Frame()
self.frame1.show()
self.frame1.set_shadow_type(gtk.SHADOW_IN)
self.alignment1 = gtk.Alignment(0.5, 0.5, 1, 1)
self.alignment1.show()
self.vbox3 = gtk.VBox(False, 5)
self.vbox3.show()
self.vbox3.set_spacing(5)
self.vbox3.set_border_width(5)
self.hbox6 = gtk.HBox(False, 5)
self.hbox6.show()
self.hbox6.set_spacing(5)
self.default___Label = gtk.Label(_("Default: "))
self.default___Label.set_padding(5, 0)
self.default___Label.show()
self.hbox6.pack_start(self.default___Label, False, False, 0)
self.defaultEncoding_List = gtk.ListStore(gobject.TYPE_STRING)
self.defaultEncoding = gtk.ComboBoxEntry()
self.defaultEncoding.show()
for encoding in self.encodings:
self.defaultEncoding_List.append([encoding])
self.defaultEncoding.set_model(self.defaultEncoding_List)
self.defaultEncoding.set_text_column(0)
self.defaultEncoding.connect("changed", self.EncodingDefaultChanged)
self.hbox6.pack_end(self.defaultEncoding, False, True, 0)
self.vbox3.pack_start(self.hbox6, False, False, 0)
self.hbox7 = gtk.HBox(False, 5)
self.hbox7.show()
self.hbox7.set_spacing(5)
self.filesystem_Label = gtk.Label(_("Filesystem: "))
self.filesystem_Label.set_padding(5, 0)
self.filesystem_Label.show()
self.hbox7.pack_start(self.filesystem_Label, False, False, 0)
self.filesystemEncoding_List = gtk.ListStore(gobject.TYPE_STRING)
self.filesystemEncoding = gtk.ComboBoxEntry()
self.filesystemEncoding.show()
for encoding in self.encodings:
self.filesystemEncoding_List.append([encoding])
self.filesystemEncoding.connect("changed", self.EncodingFSChanged)
self.filesystemEncoding.set_model(self.filesystemEncoding_List)
self.filesystemEncoding.set_text_column(0)
self.hbox7.pack_end(self.filesystemEncoding, False, True, 0)
self.vbox3.pack_start(self.hbox7, False, False, 0)
self.hbox8 = gtk.HBox(False, 5)
self.hbox8.show()
self.hbox8.set_spacing(5)
self.network_Label = gtk.Label(_("Network:"))
self.network_Label.set_padding(5, 0)
self.network_Label.show()
self.hbox8.pack_start(self.network_Label, False, False, 0)
self.networkEncoding_List = gtk.ListStore(gobject.TYPE_STRING)
self.networkEncoding = gtk.ComboBoxEntry()
self.networkEncoding.show()
for encoding in self.encodings:
self.networkEncoding_List.append([encoding])
self.networkEncoding.connect("changed", self.EncodingNWChanged)
self.networkEncoding.set_model(self.networkEncoding_List)
self.networkEncoding.set_text_column(0)
self.hbox8.pack_end(self.networkEncoding, False, True, 0)
self.vbox3.pack_start(self.hbox8, False, False, 0)
self.alignment1.add(self.vbox3)
self.frame1.add(self.alignment1)
self.encodings__Label = gtk.Label()
self.encodings__Label.set_markup(_("Encodings") )
self.encodings__Label.show()
self.frame1.set_label_widget(self.encodings__Label)
self.vbox2.pack_start(self.frame1, False, False, 0)
self.hbox33 = gtk.HBox(False, 5)
self.hbox33.show()
self.hbox33.set_spacing(5)
self.fp_Label = gtk.Label(_("First Soulseek Port: "))
self.fp_Label.show()
self.hbox33.pack_start(self.fp_Label, False, False, 0)
fp = gtk.Adjustment(value=2239, lower=0, upper=65535, step_incr=1, page_incr=0, page_size=0)
self.FirstPort = gtk.SpinButton(fp)
self.FirstPort.show()
self.FirstPort.connect("changed", self.FirstPortChanged)
self.hbox33.pack_start(self.FirstPort, True, True, 0)
self.lp_Label = gtk.Label(_("Last Soulseek Port:"))
self.lp_Label.show()
self.hbox33.pack_start(self.lp_Label, False, False, 0)
lp = gtk.Adjustment(value=2234, lower=0, upper=65535, step_incr=1, page_incr=0, page_size=0)
self.LastPort = gtk.SpinButton(lp)
self.LastPort.show()
self.LastPort.connect("changed", self.LastPortChanged)
self.hbox33.pack_start(self.LastPort, True, True, 0)
self.vbox2.pack_start(self.hbox33, False, False, 0)
self.LoggingHbox = gtk.HBox(False, 5)
self.LoggingHbox.show()
self.LoggingHbox.set_spacing(5)
self.LogMethod = gtk.CheckButton()
self.LogMethod.set_active(False)
self.LogMethod.set_label(_("Output to Syslog instead of standard output"))
self.LogMethod.show()
self.LogMethod.connect("clicked", self.LoggingChanged)
self.LoggingHbox.pack_end(self.LogMethod, False, True, 0)
self.vbox2.pack_start(self.LoggingHbox, False, False, 0)
self.ServerSW.add_with_viewport(self.vbox2)
def TabMuseekClients(self):
self.MuseekClientsSW = gtk.ScrolledWindow()
self.MuseekClientsSW.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.MuseekClientsSW.show()
self.MuseekClientsSW.set_shadow_type(gtk.SHADOW_NONE)
self.viewport3 = gtk.Viewport()
self.viewport3.show()
self.viewport3.set_shadow_type(gtk.SHADOW_IN)
self.vbox4 = gtk.VBox(False, 5)
self.vbox4.show()
self.vbox4.set_spacing(5)
self.vbox4.set_border_width(5)
self.hbox11 = gtk.HBox(False, 5)
self.hbox11.show()
self.hbox11.set_spacing(5)
self.label33 = gtk.Label(_("Client Interfaces Password:"))
self.label33.show()
self.hbox11.pack_start(self.label33, False, False, 0)
self.interfacePassword = gtk.Entry()
self.interfacePassword.set_text("")
self.interfacePassword.set_editable(True)
self.interfacePassword.show()
self.interfacePassword.set_visibility(False)
self.interfacePassword.connect("changed", self.InterfacePasswordChanged)
self.hbox11.pack_end(self.interfacePassword, True, True)
self.vbox4.pack_start(self.hbox11, False, True)
self.frame2 = gtk.Frame()
self.frame2.show()
self.frame2.set_shadow_type(gtk.SHADOW_IN)
self.alignment2 = gtk.Alignment(0.5, 0.5, 1, 1)
self.alignment2.show()
self.hbox10 = gtk.HBox(False, 5)
self.hbox10.show()
self.hbox10.set_spacing(5)
self.hbox10.set_border_width(5)
self.scrolledwindow16 = gtk.ScrolledWindow()
self.scrolledwindow16.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.scrolledwindow16.show()
self.scrolledwindow16.set_shadow_type(gtk.SHADOW_IN)
self.interfacesTreestore = gtk.TreeStore( str, str )
self.interfacesTreeview = gtk.TreeView(self.interfacesTreestore)
self.interfacesTreeview.set_property("rules-hint", True)
self.interfacesTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.interfacesTreeview.show()
self.interfacesTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn('Interfaces')
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.interfacesTreeview.append_column(column)
self.scrolledwindow16.add(self.interfacesTreeview)
self.hbox10.pack_start(self.scrolledwindow16, True, True)
self.vbox5 = gtk.VBox(False, 5)
self.vbox5.show()
self.vbox5.set_spacing(5)
self.vbox5.set_border_width(3)
self.AddInterface = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddInterface, _("Add"))
self.vbox5.pack_start(self.AddInterface, False, False)
self.EditInterface = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditInterface, _("Edit"))
self.vbox5.pack_start(self.EditInterface, False, False)
self.RemoveInterface = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveInterface, _("Remove"))
self.vbox5.pack_start(self.RemoveInterface, False, False)
self.hbox10.pack_end(self.vbox5, False, True)
self.alignment2.add(self.hbox10)
self.frame2.add(self.alignment2)
self.label32 = gtk.Label()
self.label32.set_markup(_("Client Interface Ports & Sockets"))
self.label32.show()
self.frame2.set_label_widget(self.label32)
self.vbox4.pack_start(self.frame2, True, True)
self.viewport3.add(self.vbox4)
self.MuseekClientsSW.add(self.viewport3)
self.label3 = gtk.Label(_("Museek Clients"))
self.label3.show()
def TabTransfers(self):
self.TransfersScrollWindow = gtk.ScrolledWindow()
self.TransfersScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.TransfersScrollWindow.show()
self.TransfersScrollWindow.set_shadow_type(gtk.SHADOW_NONE)
self.viewport4 = gtk.Viewport()
self.viewport4.show()
self.viewport4.set_shadow_type(gtk.SHADOW_IN)
self.vbox6 = gtk.VBox(False, 5)
self.vbox6.show()
self.vbox6.set_spacing(5)
self.vbox6.set_border_width(5)
self.hbox12 = gtk.HBox(False, 5)
self.hbox12.show()
self.hbox12.set_spacing(5)
self.hbox12.set_border_width(3)
self.privilege_buddies_Check = gtk.CheckButton()
self.privilege_buddies_Check.set_active(False)
self.privilege_buddies_Check.set_label(_("Privilege Buddies"))
self.privilege_buddies_Check.show()
self.privilege_buddies_Check.connect("clicked", self.PrivilegeBuddiesChanged)
self.hbox12.pack_start(self.privilege_buddies_Check, False, False, 0)
self.have_buddy_shares_Check = gtk.CheckButton()
self.have_buddy_shares_Check.set_active(False)
self.have_buddy_shares_Check.set_label(_("Enable Buddy Shares"))
self.have_buddy_shares_Check.show()
self.have_buddy_shares_Check.connect("clicked", self.EnableBuddySharesChanged)
self.hbox12.pack_start(self.have_buddy_shares_Check, False, False, 0)
self.only_buddies_Check = gtk.CheckButton()
self.only_buddies_Check.set_active(False)
self.only_buddies_Check.set_label(_("Only Share to Buddies"))
self.only_buddies_Check.show()
self.only_buddies_Check.connect("clicked", self.OnlyBuddiesChanged)
self.hbox12.pack_start(self.only_buddies_Check, False, False, 0)
self.vbox6.pack_start(self.hbox12, False, False, 0)
self.hbox13 = gtk.HBox(False, 0)
self.hbox13.show()
self.hbox13.set_spacing(0)
self.hbox13.set_border_width(3)
self.trusting_uploads_Check = gtk.CheckButton()
self.trusting_uploads_Check.set_active(False)
self.trusting_uploads_Check.set_label(_("Allow Buddies to send you files"))
self.trusting_uploads_Check.show()
self.trusting_uploads_Check.connect("clicked", self.TrustUploadsChanged)
self.hbox13.pack_start(self.trusting_uploads_Check, False, False, 0)
self.vbox6.pack_start(self.hbox13, False, False, 0)
self.hbox14 = gtk.HBox(False, 0)
self.hbox14.show()
self.hbox14.set_spacing(0)
self.hbox14.set_border_width(3)
self.user_warnings_Check = gtk.CheckButton()
self.user_warnings_Check.set_active(False)
self.user_warnings_Check.set_label(_("Send Automatic Warnings via Private Chat"))
self.user_warnings_Check.show()
self.user_warnings_Check.connect("clicked", self.UserWarningsChanged)
self.hbox14.pack_start(self.user_warnings_Check, False, False, 0)
self.vbox6.pack_start(self.hbox14, False, False, 0)
self.hbox15 = gtk.HBox(False, 5)
self.hbox15.show()
self.hbox15.set_spacing(5)
self.hbox15.set_border_width(3)
self.label34 = gtk.Label(_("Upload Slots:"))
self.label34.show()
self.hbox15.pack_start(self.label34, False, False, 0)
us = gtk.Adjustment(value=1, lower=0, upper=1000, step_incr=1, page_incr=0, page_size=0)
self.uploadSlots = gtk.SpinButton(us)
self.uploadSlots.show()
self.uploadSlots.connect("changed", self.UploadSlotsChanged)
self.hbox15.pack_start(self.uploadSlots, False, True, 0)
self.pabel= gtk.Label(_("Connection Mode:"))
self.pabel.show()
self.hbox15.pack_start(self.pabel, False, False, 0)
self.connectMode_List = gtk.ListStore(gobject.TYPE_STRING)
self.connectMode = gtk.ComboBoxEntry()
self.connectMode.show()
for item in ["passive", "active"]:
self.connectMode_List.append([item])
self.connectMode.set_model(self.connectMode_List)
self.connectMode.set_text_column(0)
self.connectMode.connect("changed", self.ConnectModeChanged)
self.hbox15.pack_start(self.connectMode, False, False, 0)
self.vbox6.pack_start(self.hbox15, False, True, 0)
self.hbox16 = gtk.HBox(False, 5)
self.hbox16.show()
self.hbox16.set_spacing(5)
self.hbox16.set_border_width(3)
self.label35 = gtk.Label(_("Download Directory:"))
self.label35.show()
self.hbox16.pack_start(self.label35, False, False, 0)
self.EntryDownloadDIr = gtk.Entry()
self.EntryDownloadDIr.set_text("")
self.EntryDownloadDIr.set_editable(True)
self.EntryDownloadDIr.show()
self.EntryDownloadDIr.set_visibility(True)
self.EntryDownloadDIr.connect("changed", self.DownloadDirChanged)
self.hbox16.pack_start(self.EntryDownloadDIr, True, True, 0)
self.downloadDirButton = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnDownloadDir, "Select Directory")
self.hbox16.pack_end(self.downloadDirButton, False, False, 0)
self.vbox6.pack_start(self.hbox16, False, False, 0)
self.hbox17 = gtk.HBox(False, 5)
self.hbox17.show()
self.hbox17.set_spacing(5)
self.hbox17.set_border_width(3)
self.id_Label = gtk.Label(_("Incomplete Directory:"))
self.id_Label.show()
self.hbox17.pack_start(self.id_Label, False, False, 0)
self.EntryIncompleteDir = gtk.Entry()
self.EntryIncompleteDir.set_text("")
self.EntryIncompleteDir.set_editable(True)
self.EntryIncompleteDir.show()
self.EntryIncompleteDir.set_visibility(True)
self.EntryIncompleteDir.connect("changed", self.IncompleteDirChanged)
self.hbox17.pack_start(self.EntryIncompleteDir, True, True, 0)
self.incompleteDirButton = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnIncompleteDir, "Select Directory")
self.hbox17.pack_end(self.incompleteDirButton, False, False, 0)
self.vbox6.pack_start(self.hbox17, False, False, 0)
self.dButtons_hbox = gtk.HBox(False, 5)
self.dButtons_hbox.show()
self.dButtons_hbox.set_spacing(5)
self.dButtons_hbox.set_border_width(3)
self.ddb_Label = gtk.Label(_("Downloads Database:"))
self.ddb_Label.show()
self.dButtons_hbox.pack_start(self.ddb_Label, False, False, 0)
self.EntryDownloadsDBase = gtk.Entry()
self.EntryDownloadsDBase.set_text("")
self.EntryDownloadsDBase.set_editable(True)
self.EntryDownloadsDBase.show()
self.EntryDownloadsDBase.set_visibility(True)
self.EntryDownloadsDBase.connect("changed", self.DownloadDBChanged)
self.dButtons_hbox.pack_start(self.EntryDownloadsDBase, True, True, 0)
self.downloadsDBaseButton = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnDownloadDBase, "Select Database")
self.downloadsDBaseButton.connect("clicked", self.OnDownloadDBase)
self.dButtons_hbox.pack_end(self.downloadsDBaseButton, False, False, 0)
self.vbox6.pack_start(self.dButtons_hbox, False, False, 0)
self.viewport4.add(self.vbox6)
self.TransfersScrollWindow.add(self.viewport4)
self.TransfersLabel = gtk.Label(_("Transfers"))
self.TransfersLabel.show()
def TabChatRoom(self):
self.hboxchat = gtk.HBox(True, 5)
self.hboxchat.set_border_width(5)
self.hboxchat.show()
self.ChatRoomNoteBook = gtk.Notebook()
self.ChatRoomNoteBook.set_tab_pos(gtk.POS_TOP)
self.ChatRoomNoteBook.set_scrollable(False)
self.ChatRoomNoteBook.show()
self.hboxchat.pack_start(self.ChatRoomNoteBook, True, True)
self.autojoin_hbox = gtk.HBox(False, 5)
self.autojoin_hbox.set_border_width(5)
self.autojoin_hbox.show()
self.autojoinScrollWindow2 = gtk.ScrolledWindow()
self.autojoinScrollWindow2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.autojoinScrollWindow2.show()
self.autojoinScrollWindow2.set_shadow_type(gtk.SHADOW_IN)
self.autojoinTreestore = gtk.TreeStore( str, str )
self.autojoinTreeview = gtk.TreeView(self.autojoinTreestore)
self.autojoinTreeview.set_property("rules-hint", True)
self.autojoinTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.autojoinTreeview.show()
self.autojoinTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn('Rooms')
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.autojoinTreeview.append_column(column)
self.autojoinScrollWindow2.add(self.autojoinTreeview)
self.autojoin_hbox.pack_start(self.autojoinScrollWindow2, True, True, 0)
self.vbox17 = gtk.VBox(False, 5)
self.vbox17.show()
self.vbox17.set_spacing(5)
self.vbox17.set_border_width(3)
self.AddAutojoin = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddAutojoin, _("Add"))
self.vbox17.pack_start(self.AddAutojoin, False, False, 0)
self.EditAutojoin = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditAutojoin, _("Edit"))
self.vbox17.pack_start(self.EditAutojoin, False, False, 0)
self.RemoveAutojoin = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveAutojoin, _("Remove"))
self.vbox17.pack_start(self.RemoveAutojoin, False, False, 0)
self.autojoin_hbox.pack_start(self.vbox17, False, True, 0)
self.autojoin_hbox.show()
self.autojoinLabel = gtk.Label(_("AutoJoined"))
self.autojoinLabel.show()
self.encodings_hbox = gtk.HBox(False, 5)
self.encodings_hbox.set_border_width(5)
self.encodings_hbox.show()
self.encodingsScrollWindow2 = gtk.ScrolledWindow()
self.encodingsScrollWindow2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.encodingsScrollWindow2.show()
self.encodingsScrollWindow2.set_shadow_type(gtk.SHADOW_IN)
self.encodingsTreestore = gtk.TreeStore( str, str )
self.encodingsTreeview = gtk.TreeView(self.encodingsTreestore)
self.encodingsTreeview.set_property("rules-hint", True)
self.encodingsTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.encodingsTreeview.show()
self.encodingsTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn('Rooms')
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.encodingsTreeview.append_column(column)
column = gtk.TreeViewColumn('Encodings')
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 1)
column.set_sort_column_id(1)
self.encodingsTreeview.append_column(column)
self.encodingsScrollWindow2.add(self.encodingsTreeview)
self.encodings_hbox.pack_start(self.encodingsScrollWindow2, True, True, 0)
self.encodings_vbox = gtk.VBox(False, 5)
self.encodings_vbox.show()
self.encodings_vbox.set_spacing(5)
self.encodings_vbox.set_border_width(3)
self.AddEncoding = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddEncoding, _("Add"))
self.encodings_vbox.pack_start(self.AddEncoding, False, False, 0)
self.EditEncoding = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditEncoding, _("Edit"))
self.encodings_vbox.pack_start(self.EditEncoding, False, False, 0)
self.RemoveEncoding = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveEncoding, _("Remove"))
self.encodings_vbox.pack_start(self.RemoveEncoding, False, False, 0)
self.encodings_hbox.pack_start(self.encodings_vbox, False, True, 0)
self.encodingsLabel = gtk.Label(_("Encodings"))
self.encodingsLabel.show()
self.vbox1 = gtk.VBox(False, 5)
self.vbox1.set_border_width(5)
self.vbox1.show()
self.hbox1 = gtk.HBox(False, 5)
self.hbox1.show()
self.hbox1.set_spacing(5)
self.defaultTickerLabel = gtk.Label(_("Default Ticker:"))
self.defaultTickerLabel.show()
self.hbox1.pack_start(self.defaultTickerLabel, False, False, 0)
self.defaultTicker = gtk.Entry()
self.defaultTicker.set_text("")
self.defaultTicker.set_editable(True)
self.defaultTicker.show()
self.defaultTicker.set_visibility(True)
self.defaultTicker.connect("changed", self.DefaultTickerChanged)
self.hbox1.pack_start(self.defaultTicker, True, True, 0)
self.vbox1.pack_start(self.hbox1, False, True, 0)
self.hbox34 = gtk.HBox(False, 0)
self.hbox34.show()
self.hbox34.set_spacing(0)
self.tickersScrollWindow = gtk.ScrolledWindow()
self.tickersScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.tickersScrollWindow.show()
self.tickersScrollWindow.set_shadow_type(gtk.SHADOW_IN)
self.tickersTreestore = gtk.TreeStore( str,str )
self.tickersTreeview = gtk.TreeView(self.tickersTreestore)
self.tickersTreeview.set_property("rules-hint", True)
self.tickersTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.tickersTreeview.show()
self.tickersTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn('Rooms')
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.tickersTreeview.append_column(column)
column = gtk.TreeViewColumn('Tickers')
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 1)
column.set_sort_column_id(1)
self.tickersTreeview.append_column(column)
self.tickersScrollWindow.add(self.tickersTreeview)
self.hbox34.pack_start(self.tickersScrollWindow, True, True, 0)
self.vbox15 = gtk.VBox(False, 5)
self.vbox15.show()
self.vbox15.set_spacing(5)
self.vbox15.set_border_width(3)
self.AddTicker = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddTicker, _("Add"))
self.vbox15.pack_start(self.AddTicker, False, False, 0)
self.EditTicker = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditTicker, _("Edit"))
self.vbox15.pack_start(self.EditTicker, False, False, 0)
self.RemoveTicker = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveTicker, _("Remove"))
self.vbox15.pack_start(self.RemoveTicker, False, False, 0)
self.hbox34.pack_start(self.vbox15, False, True, 0)
self.vbox1.pack_start(self.hbox34, True, True, 0)
self.TickersLabel = gtk.Label(_("Tickers"))
self.TickersLabel.show()
self.ChatRoomNoteBook.append_page(self.autojoin_hbox, self.autojoinLabel)
self.ChatRoomNoteBook.append_page(self.encodings_hbox, self.encodingsLabel)
self.ChatRoomNoteBook.append_page(self.vbox1, self.TickersLabel)
self.ChatRooms_Label = gtk.Label(_("Chat Rooms"))
self.ChatRooms_Label.show()
def TabUsers(self):
self.hboxusers = gtk.HBox(True, 5)
self.hboxusers.set_border_width(5)
self.hboxusers.show()
self.users_Label = gtk.Label(_("Users"))
self.users_Label.show()
self.UsersNoteBook = gtk.Notebook()
self.UsersNoteBook.set_tab_pos(gtk.POS_TOP)
self.UsersNoteBook.set_scrollable(False)
self.UsersNoteBook.show()
self.hboxusers.pack_start(self.UsersNoteBook, True, True)
self.TabUsersBuddies()
self.TabUsersTrusted()
self.TabUsersBanned()
self.TabUsersIgnored()
self.TabUsersAlerts()
def TabUsersBuddies(self):
self.hbox22 = gtk.HBox(False, 5)
self.hbox22.show()
self.hbox22.set_spacing(5)
self.hbox22.set_border_width(5)
self.scrolledwindow19 = gtk.ScrolledWindow()
self.scrolledwindow19.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.scrolledwindow19.show()
self.scrolledwindow19.set_shadow_type(gtk.SHADOW_NONE)
self.BuddiesTreestore = gtk.TreeStore( str,str )
self.BuddiesTreeview = gtk.TreeView(self.BuddiesTreestore)
self.BuddiesTreeview.set_property("rules-hint", True)
self.BuddiesTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.BuddiesTreeview.show()
self.BuddiesTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn(_('Users'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.BuddiesTreeview.append_column(column)
column = gtk.TreeViewColumn(_('Comments'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 1)
column.set_sort_column_id(1)
self.BuddiesTreeview.append_column(column)
self.scrolledwindow19.add(self.BuddiesTreeview)
self.hbox22.pack_start(self.scrolledwindow19, True, True, 0)
self.vbox7 = gtk.VBox(False, 5)
self.vbox7.show()
self.vbox7.set_spacing(5)
self.vbox7.set_border_width(3)
self.AddBuddy = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddBuddy, _("Add"))
self.vbox7.pack_start(self.AddBuddy, False, False, 0)
self.EditBuddy = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditBuddy, _("Edit"))
self.vbox7.pack_start(self.EditBuddy, False, False, 0)
self.RemoveBuddy = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveBuddy, _("Remove"))
self.vbox7.pack_start(self.RemoveBuddy, False, False, 0)
self.hbox22.pack_start(self.vbox7, False, True, 0)
self.BuddiesTab = gtk.Label(_("Buddies"))
self.BuddiesTab.show()
self.UsersNoteBook.append_page(self.hbox22, self.BuddiesTab)
def TabUsersBanned(self):
self.hbox23 = gtk.HBox(False, 5)
self.hbox23.show()
self.hbox23.set_spacing(5)
self.hbox23.set_border_width(5)
self.BannedScrollWindow = gtk.ScrolledWindow()
self.BannedScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.BannedScrollWindow.show()
self.BannedScrollWindow.set_shadow_type(gtk.SHADOW_NONE)
self.BannedTreestore = gtk.TreeStore( str,str )
self.BannedTreeview = gtk.TreeView(self.BannedTreestore)
self.BannedTreeview.set_property("rules-hint", True)
self.BannedTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.BannedTreeview.show()
self.BannedTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn(_('Users'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.BannedTreeview.append_column(column)
column = gtk.TreeViewColumn(_('Comments'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 1)
column.set_sort_column_id(1)
self.BannedTreeview.append_column(column)
self.BannedScrollWindow.add(self.BannedTreeview)
self.hbox23.pack_start(self.BannedScrollWindow, True, True, 0)
self.vbox8 = gtk.VBox(False, 5)
self.vbox8.show()
self.vbox8.set_spacing(5)
self.vbox8.set_border_width(3)
self.AddBanned = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddBanned, _("Add"))
self.vbox8.pack_start(self.AddBanned, False, False, 0)
self.EditBanned = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditBanned, _("Edit"))
self.vbox8.pack_start(self.EditBanned, False, False, 0)
self.RemoveBanned = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveBanned, _("Remove"))
self.vbox8.pack_start(self.RemoveBanned, False, False, 0)
self.hbox23.pack_start(self.vbox8, False, True, 0)
self.BannedTab = gtk.Label(_("Banned"))
self.BannedTab.show()
self.UsersNoteBook.append_page(self.hbox23, self.BannedTab)
def TabUsersIgnored(self):
self.hbox24 = gtk.HBox(False, 5)
self.hbox24.show()
self.hbox24.set_spacing(5)
self.hbox24.set_border_width(5)
self.IgnoredScrollWindow = gtk.ScrolledWindow()
self.IgnoredScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.IgnoredScrollWindow.show()
self.IgnoredScrollWindow.set_shadow_type(gtk.SHADOW_NONE)
self.IgnoredTreestore = gtk.TreeStore( str, str )
self.IgnoredTreeview = gtk.TreeView(self.IgnoredTreestore)
self.IgnoredTreeview.set_property("rules-hint", True)
self.IgnoredTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.IgnoredTreeview.show()
self.IgnoredTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn(_('Users'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.IgnoredTreeview.append_column(column)
column = gtk.TreeViewColumn(_('Comments'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 1)
column.set_sort_column_id(1)
self.IgnoredTreeview.append_column(column)
self.IgnoredScrollWindow.add(self.IgnoredTreeview)
self.hbox24.pack_start(self.IgnoredScrollWindow, True, True, 0)
self.vbox9 = gtk.VBox(False, 5)
self.vbox9.show()
self.vbox9.set_spacing(5)
self.vbox9.set_border_width(3)
self.AddIgnored = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddIgnored, _("Add"))
self.vbox9.pack_start(self.AddIgnored, False, False, 0)
self.EditIgnored = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditIgnored, _("Edit"))
self.vbox9.pack_start(self.EditIgnored, False, False, 0)
self.RemoveIgnored = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveIgnored, _("Remove"))
self.vbox9.pack_start(self.RemoveIgnored, False, False, 0)
self.hbox24.pack_start(self.vbox9, False, True, 0)
self.IgnoredTab = gtk.Label(_("Ignored"))
self.IgnoredTab.show()
self.UsersNoteBook.append_page(self.hbox24, self.IgnoredTab)
def TabUsersTrusted(self):
self.hbox25 = gtk.HBox(False, 5)
self.hbox25.show()
self.hbox25.set_spacing(5)
self.hbox25.set_border_width(5)
self.TrustedScrollWindow = gtk.ScrolledWindow()
self.TrustedScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.TrustedScrollWindow.show()
self.TrustedScrollWindow.set_shadow_type(gtk.SHADOW_NONE)
self.TrustedTreestore = gtk.TreeStore( str, str )
self.TrustedTreeview = gtk.TreeView(self.TrustedTreestore)
self.TrustedTreeview.set_property("rules-hint", True)
self.TrustedTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.TrustedTreeview.show()
self.TrustedTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn(_('Users'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.TrustedTreeview.append_column(column)
column = gtk.TreeViewColumn(_('Comments'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 1)
column.set_sort_column_id(1)
self.TrustedTreeview.append_column(column)
self.TrustedScrollWindow.add(self.TrustedTreeview)
self.hbox25.pack_start(self.TrustedScrollWindow, True, True, 0)
self.trusted_vbox = gtk.VBox(False, 5)
self.trusted_vbox.show()
self.trusted_vbox.set_spacing(5)
self.trusted_vbox.set_border_width(3)
self.AddTrusted = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddTrusted, _("Add"))
self.trusted_vbox.pack_start(self.AddTrusted, False, False, 0)
self.EditTrusted = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditTrusted, _("Edit"))
self.trusted_vbox.pack_start(self.EditTrusted, False, False, 0)
self.RemoveTrusted = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveTrusted, _("Remove"))
self.trusted_vbox.pack_start(self.RemoveTrusted, False, False, 0)
self.hbox25.pack_start(self.trusted_vbox, False, True, 0)
self.TrustedTab = gtk.Label(_("Trusted"))
self.TrustedTab.show()
self.UsersNoteBook.append_page(self.hbox25, self.TrustedTab)
def TabUsersAlerts(self):
self.alert_hbox = gtk.HBox(False, 5)
self.alert_hbox.set_border_width(5)
self.alert_hbox.set_spacing(5)
self.alert_hbox.show()
self.alertScrollWindow = gtk.ScrolledWindow()
self.alertScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.alertScrollWindow.show()
self.alertScrollWindow.set_shadow_type(gtk.SHADOW_NONE)
self.AlertsTreestore = gtk.TreeStore( str, str )
self.AlertsTreeview = gtk.TreeView(self.AlertsTreestore)
self.AlertsTreeview.set_property("rules-hint", True)
self.AlertsTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.AlertsTreeview.show()
self.AlertsTreeview.set_headers_visible(True)
column = gtk.TreeViewColumn(_('Users'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.AlertsTreeview.append_column(column)
self.alertScrollWindow.add(self.AlertsTreeview)
self.alert_hbox.pack_start(self.alertScrollWindow, True, True)
self.vbox14 = gtk.VBox(False, 5)
self.vbox14.set_border_width(3)
self.vbox14.set_spacing(5)
self.vbox14.show()
self.AddAlert = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddAlert, _("Add"))
self.vbox14.pack_start(self.AddAlert, False, False)
self.EditAlert = self.app.CreateIconButton(gtk.STOCK_EDIT, "stock", self.OnEditAlert, _("Edit"))
self.vbox14.pack_start(self.EditAlert, False, False)
self.RemoveAlert = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveAlert, _("Remove"))
self.vbox14.pack_start(self.RemoveAlert, False, False)
self.alert_hbox.pack_start(self.vbox14, False, True)
self.alertsLabel = gtk.Label(_("Alerts"))
self.alertsLabel.show()
self.UsersNoteBook.append_page(self.alert_hbox, self.alertsLabel)
def TabUserInfo(self):
self.UserinfoLabel = gtk.Label(_("My Userinfo"))
self.UserinfoLabel.show()
self.UserInfoSW = gtk.ScrolledWindow()
self.UserInfoSW.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.UserInfoSW.show()
self.UserInfoSW.set_shadow_type(gtk.SHADOW_NONE)
self.viewport5 = gtk.Viewport()
self.viewport5.show()
self.viewport5.set_shadow_type(gtk.SHADOW_IN)
self.hpaned1 = gtk.HPaned()
self.hpaned1.show()
# Left Side
self.vbox12 = gtk.VBox(False, 5)
self.vbox12.show()
self.vbox12.set_spacing(5)
self.vbox12.set_border_width(5)
self.UserinfoTextScrollWindow = gtk.ScrolledWindow()
self.UserinfoTextScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.UserinfoTextScrollWindow.show()
self.UserinfoTextScrollWindow.set_shadow_type(gtk.SHADOW_IN)
self.userinfoBuffer = gtk.TextBuffer()
self.userinfoTextview = gtk.TextView(self.userinfoBuffer)
self.userinfoTextview.set_cursor_visible(True)
self.userinfoTextview.set_editable(True)
self.userinfoTextview.set_wrap_mode(gtk.WRAP_WORD)
self.userinfoTextview.show()
self.userinfoBuffer.connect("changed", self.UserinfoTextChanged)
self.UserinfoTextScrollWindow.add(self.userinfoTextview)
self.vbox12.pack_start(self.UserinfoTextScrollWindow, True, True, 0)
self.hbox26 = gtk.HBox(False, 5)
self.hbox26.show()
self.hbox26.set_spacing(5)
self.removeUserinfoText = self.app.CreateIconButton(gtk.STOCK_CLEAR, "stock", self.OnClearUserinfo, _("Clear"))
self.hbox26.pack_start(self.removeUserinfoText, False, False, 5)
self.selectUserinfoText = self.app.CreateIconButton(gtk.STOCK_CLEAR, "stock", self.OnImportUserinfo, _("Import Text"))
self.hbox26.pack_end(self.selectUserinfoText, False, False, 5)
self.vbox12.pack_start(self.hbox26, False, True, 5)
self.hpaned1.pack1(self.vbox12, False, True)
# Right Side
self.vbox11 = gtk.VBox(False, 5)
self.vbox11.show()
self.vbox11.set_spacing(5)
self.vbox11.set_border_width(5)
self.scrolledwindow24 = gtk.ScrolledWindow()
self.scrolledwindow24.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.scrolledwindow24.show()
self.scrolledwindow24.set_shadow_type(gtk.SHADOW_IN)
self.viewport6 = gtk.Viewport()
self.viewport6.show()
self.viewport6.set_shadow_type(gtk.SHADOW_IN)
self.userinfoImage = gtk.Image()
self.userinfoImage.show()
self.viewport6.add(self.userinfoImage)
self.scrolledwindow24.add(self.viewport6)
self.vbox11.pack_start(self.scrolledwindow24, True, True, 5)
self.EntryImage = gtk.Entry()
self.EntryImage.set_text("")
self.EntryImage.set_editable(True)
self.EntryImage.show()
self.EntryImage.set_visibility(True)
self.vbox11.pack_start(self.EntryImage, False, True, 5)
self.hboxcl = gtk.HBox(False, 5)
self.hboxcl.show()
self.hboxcl.set_spacing(5)
self.removeUserinfoImage = self.app.CreateIconButton(gtk.STOCK_CLEAR, "stock", self.OnClearImage, _("Clear Image"))
self.hboxcl.pack_start(self.removeUserinfoImage, False, False, 0)
self.selectUserinfoImage = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnOpenImage, _("Select Image"))
self.hboxcl.pack_end(self.selectUserinfoImage, False, False, 0)
self.vbox11.pack_start(self.hboxcl, False, True, 5)
self.hpaned1.pack2(self.vbox11, True, True)
self.viewport5.add(self.hpaned1)
self.UserInfoSW.add(self.viewport5)
def TabShares(self):
self.SharesSW = gtk.ScrolledWindow()
self.SharesSW.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.SharesSW.show()
self.SharesSW.set_shadow_type(gtk.SHADOW_NONE)
self.viewport7 = gtk.Viewport()
self.viewport7.show()
self.viewport7.set_shadow_type(gtk.SHADOW_NONE)
self.vbox13 = gtk.VBox(False, 0)
self.vbox13.show()
self.vbox13.set_spacing(5)
self.vbox13.set_border_width(5)
self.frame3 = gtk.Frame()
self.frame3.show()
self.frame3.set_border_width(3)
self.frame3.set_shadow_type(gtk.SHADOW_IN)
self.vbox13.pack_start(self.frame3, False, False, 0)
self.vbox324 = gtk.VBox(False, 5)
self.vbox324.set_border_width(5)
self.vbox324.show()
self.alignment3 = gtk.Alignment(0.5, 0.5, 1, 1)
self.alignment3.show()
self.alignment3.add(self.vbox324)
self.frame3.add(self.alignment3)
self.normalSharesLabel = gtk.Label()
self.normalSharesLabel.set_markup(_("Normal Shares"))
self.normalSharesLabel.show()
self.frame3.set_label_widget(self.normalSharesLabel)
self.hbox29 = gtk.HBox(False, 5)
self.hbox29.set_border_width(5)
self.hbox29.show()
self.vbox324.pack_start(self.hbox29, False, False, 0)
self.EntryNormalShares = gtk.Entry()
self.EntryNormalShares.set_text("")
self.EntryNormalShares.set_editable(True)
self.EntryNormalShares.show()
self.EntryNormalShares.set_visibility(True)
self.EntryNormalShares.connect("changed", self.NormalSharesDBChanged)
self.hbox29.pack_start(self.EntryNormalShares, True, True, 0)
self.selectNormalDBase = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnNormalDBase, _("Select DB"))
self.hbox29.pack_end(self.selectNormalDBase, False, False, 0)
self.sharesdirshbox = gtk.HBox(False, 5)
self.sharesdirshbox.show()
self.sharesdirshbox.set_spacing(5)
self.sharesdirshbox.set_border_width(5)
self.sharesdirsScrollWindow = gtk.ScrolledWindow()
self.sharesdirsScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.sharesdirsScrollWindow.show()
self.sharesdirsScrollWindow.set_shadow_type(gtk.SHADOW_IN)
self.sharesdirshbox.pack_start(self.sharesdirsScrollWindow, True, True)
self.NormalDirTreestore = gtk.TreeStore( str, str )
self.NormalDirTreeview = gtk.TreeView(self.NormalDirTreestore)
self.NormalDirTreeview.show()
self.NormalDirTreeview.set_headers_visible(True)
self.NormalDirTreeview.set_property("rules-hint", True)
self.NormalDirTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
column = gtk.TreeViewColumn(_('Directories'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.NormalDirTreeview.append_column(column)
self.sharesdirsScrollWindow.add(self.NormalDirTreeview)
self.nSharesButtonsVbox = gtk.VBox(False, 5)
self.nSharesButtonsVbox.show()
self.nSharesButtonsVbox.set_spacing(5)
self.nSharesButtonsVbox.set_border_width(0)
self.refreshNormalDir = self.app.CreateIconButton(gtk.STOCK_REFRESH, "stock", self.OnRefreshNormalDirs, _("Refresh list"))
self.nSharesButtonsVbox.pack_start(self.refreshNormalDir, False, False)
self.rescanNormalDir = self.app.CreateIconButton(gtk.STOCK_EXECUTE, "stock", self.OnRescanNormalDirs, _("Rescan shares"))
self.nSharesButtonsVbox.pack_start(self.rescanNormalDir, False, False)
self.addNormalDir = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddNormalDirs, _("Add directory"))
self.nSharesButtonsVbox.pack_start(self.addNormalDir, False, False)
self.removeNormalDir = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveNormalDirs, _("Remove directory"))
self.nSharesButtonsVbox.pack_end(self.removeNormalDir, False, False)
self.sharesdirshbox.pack_start(self.nSharesButtonsVbox, False, True)
self.vbox324.pack_start(self.sharesdirshbox, False, False, 0)
# Buddy Shares
# -----------------------------------
self.frame4 = gtk.Frame()
self.frame4.show()
self.frame4.set_border_width(3)
self.frame4.set_shadow_type(gtk.SHADOW_IN)
self.label39 = gtk.Label()
self.label39.set_markup(_("Buddy-Only Shares"))
self.label39.show()
self.frame4.set_label_widget(self.label39)
self.alignment4 = gtk.Alignment(0.5, 0.5, 1, 1)
self.alignment4.show()
self.frame4.add(self.alignment4)
self.vbox28 = gtk.VBox(False, 5)
self.vbox28.show()
self.vbox28.set_spacing(5)
self.vbox28.set_border_width(5)
self.alignment4.add(self.vbox28)
self.hbox28 = gtk.HBox(False, 5)
self.hbox28.show()
self.hbox28.set_spacing(5)
self.hbox28.set_border_width(5)
self.vbox28.pack_start(self.hbox28, True, True, 0)
self.EntryBuddyOnlyShares = gtk.Entry()
self.EntryBuddyOnlyShares.set_text("")
self.EntryBuddyOnlyShares.set_editable(True)
self.EntryBuddyOnlyShares.show()
self.EntryBuddyOnlyShares.set_visibility(True)
self.EntryBuddyOnlyShares.connect("changed", self.BuddySharesDBChanged)
self.hbox28.pack_start(self.EntryBuddyOnlyShares, True, True, 0)
self.selectBuddyOnlyDBase = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnBuddyDBase, _("Select DB"))
self.hbox28.pack_end(self.selectBuddyOnlyDBase, False, False, 0)
self.bSharedDirsVbox = gtk.HBox(False, 5)
self.bSharedDirsVbox.show()
self.bSharedDirsVbox.set_spacing(5)
self.bSharedDirsVbox.set_border_width(5)
self.bsharesdirsScrollWindow = gtk.ScrolledWindow()
self.bsharesdirsScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.bsharesdirsScrollWindow.show()
self.bsharesdirsScrollWindow.set_shadow_type(gtk.SHADOW_IN)
self.BuddyDirTreestore = gtk.TreeStore( str, str )
self.BuddyDirTreeview = gtk.TreeView(self.BuddyDirTreestore)
self.BuddyDirTreeview.show()
self.BuddyDirTreeview.set_headers_visible(True)
self.BuddyDirTreeview.set_property("rules-hint", True)
self.BuddyDirTreestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
column = gtk.TreeViewColumn(_('Directories'))
cell = gtk.CellRendererText()
cell.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
column.pack_start(cell, True)
column.add_attribute(cell, 'text', 0)
column.set_sort_column_id(0)
self.BuddyDirTreeview.append_column(column)
self.bsharesdirsScrollWindow.add(self.BuddyDirTreeview)
self.bSharedDirsVbox.pack_start(self.bsharesdirsScrollWindow, True, True, 0)
self.bSharesButtonsVbox = gtk.VBox(False, 5)
self.bSharesButtonsVbox.show()
self.bSharesButtonsVbox.set_spacing(5)
self.bSharesButtonsVbox.set_border_width(0)
self.refreshBuddyDir = self.app.CreateIconButton(gtk.STOCK_REFRESH, "stock", self.OnRefreshBuddyDirs, _("Refresh list"))
self.bSharesButtonsVbox.pack_start(self.refreshBuddyDir, False, False, 0)
self.rescanBuddyDir = self.app.CreateIconButton(gtk.STOCK_EXECUTE, "stock", self.OnRescanBuddyDirs, _("Rescan shares"))
self.bSharesButtonsVbox.pack_start(self.rescanBuddyDir, False, False, 0)
self.addBuddyDir = self.app.CreateIconButton(gtk.STOCK_ADD, "stock", self.OnAddBuddyDirs, _("Add directory"))
self.bSharesButtonsVbox.pack_start(self.addBuddyDir, False, False, 0)
self.removeBuddyDir = self.app.CreateIconButton(gtk.STOCK_REMOVE, "stock", self.OnRemoveBuddyDirs, _("Remove directory"))
self.bSharesButtonsVbox.pack_end(self.removeBuddyDir, False, False, 0)
self.bSharedDirsVbox.pack_start(self.bSharesButtonsVbox, False, True, 0)
self.vbox28.pack_start(self.bSharedDirsVbox, True, True, 0)
self.vbox13.pack_start(self.frame4, False, True, 0)
# -----------------------------------
self.viewport7.add(self.vbox13)
self.SharesSW.add(self.viewport7)
self.sharesDBLabel = gtk.Label(_("Shares"))
self.sharesDBLabel.show()
# -----------------------------------
def TabMurmurAppearance(self):
self.labelMurmurAppearance = gtk.Label(_("Appearance"))
self.labelMurmurAppearance.show()
vboxAppearance = gtk.VBox(False, spacing=5)
vboxAppearance.set_border_width(5)
vboxAppearance.show()
self.FontsSW = gtk.ScrolledWindow()
self.FontsSW.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.FontsSW.show()
self.FontsSW.set_shadow_type(gtk.SHADOW_NONE)
self.FontsSW.add_with_viewport(vboxAppearance)
self.hbox172 = gtk.HBox(False, 0)
self.hbox172.show()
self.hbox172.set_spacing(0)
self.chatfontlabel = gtk.Label(_("Chat Font:"))
self.chatfontlabel.set_alignment(0, 0.5)
self.chatfontlabel.set_line_wrap(False)
self.chatfontlabel.show()
self.hbox172.pack_start(self.chatfontlabel, False, False, 0)
self.SelectChatFont = gtk.FontButton()
self.SelectChatFont.show()
self.hbox172.pack_start(self.SelectChatFont, False, False, 5)
vboxAppearance.pack_start(self.hbox172, False, True, 0)
self.hbox182 = gtk.HBox(False, 0)
self.hbox182.show()
self.hbox182.set_spacing(5)
self.label213 = gtk.Label(_("Decimal seperator:"))
self.label213.set_alignment(0, 0.5)
self.label213.set_line_wrap(False)
self.label213.show()
self.hbox182.pack_start(self.label213, False, False, 0)
self.DecimalSep_List = gtk.ListStore(gobject.TYPE_STRING)
self.DecimalSep = gtk.ComboBoxEntry()
self.DecimalSep.set_size_request(99, -1)
self.DecimalSep.show()
self.entry89 = self.DecimalSep.child
self.entry89.set_text("")
self.entry89.set_editable(False)
self.entry89.show()
self.entry89.set_visibility(True)
self.DecimalSep.set_model(self.DecimalSep_List)
self.DecimalSep.set_text_column(0)
self.hbox182.pack_start(self.DecimalSep, False, False, 0)
vboxAppearance.pack_start(self.hbox182, False, False, 0)
self.expander2 = gtk.Expander()
self.expander2.set_expanded(False)
self.expander2.show()
self.expander2.set_spacing(0)
self.table2 = gtk.Table()
self.table2.show()
self.table2.set_row_spacings(3)
self.table2.set_col_spacings(15)
self.PickRemote = gtk.Button()
self.PickRemote.show()
self.alignment35 = gtk.Alignment(0, 0, 0, 0)
self.alignment35.show()
self.hbox124 = gtk.HBox(False, 0)
self.hbox124.show()
self.hbox124.set_spacing(2)
self.image32 = gtk.Image()
self.image32.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image32.show()
self.hbox124.pack_start(self.image32, False, False, 0)
self.label197 = gtk.Label(_("Remote text"))
self.label197.set_line_wrap(False)
self.label197.show()
self.hbox124.pack_start(self.label197, False, False, 0)
self.alignment35.add(self.hbox124)
self.PickRemote.add(self.alignment35)
self.table2.attach(self.PickRemote, 0, 1, 0, 1, gtk.FILL, 0, 0, 0)
self.PickLocal = gtk.Button()
self.PickLocal.show()
self.alignment43 = gtk.Alignment(0, 0, 0, 0)
self.alignment43.show()
self.hbox132 = gtk.HBox(False, 0)
self.hbox132.show()
self.hbox132.set_spacing(2)
self.image40 = gtk.Image()
self.image40.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image40.show()
self.hbox132.pack_start(self.image40, False, False, 0)
self.label205 = gtk.Label(_("Local text"))
self.label205.set_line_wrap(False)
self.label205.show()
self.hbox132.pack_start(self.label205, False, False, 0)
self.alignment43.add(self.hbox132)
self.PickLocal.add(self.alignment43)
self.table2.attach(self.PickLocal, 0, 1, 1, 2, gtk.FILL, 0, 0, 0)
self.PickMe = gtk.Button()
self.PickMe.show()
self.alignment44 = gtk.Alignment(0, 0, 0, 0)
self.alignment44.show()
self.hbox133 = gtk.HBox(False, 0)
self.hbox133.show()
self.hbox133.set_spacing(2)
self.image41 = gtk.Image()
self.image41.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image41.show()
self.hbox133.pack_start(self.image41, False, False, 0)
self.label206 = gtk.Label(_("/me text"))
self.label206.set_line_wrap(False)
self.label206.show()
self.hbox133.pack_start(self.label206, False, False, 0)
self.alignment44.add(self.hbox133)
self.PickMe.add(self.alignment44)
self.table2.attach(self.PickMe, 0, 1, 2, 3, gtk.FILL, 0, 0, 0)
self.PickHighlight = gtk.Button()
self.PickHighlight.show()
self.alignment45 = gtk.Alignment(0, 0, 0, 0)
self.alignment45.show()
self.hbox134 = gtk.HBox(False, 0)
self.hbox134.show()
self.hbox134.set_spacing(2)
self.image42 = gtk.Image()
self.image42.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image42.show()
self.hbox134.pack_start(self.image42, False, False, 0)
self.label207 = gtk.Label(_("Highlight text"))
self.label207.set_line_wrap(False)
self.label207.show()
self.hbox134.pack_start(self.label207, False, False, 0)
self.alignment45.add(self.hbox134)
self.PickHighlight.add(self.alignment45)
self.table2.attach(self.PickHighlight, 0, 1, 3, 4, gtk.FILL, 0, 0, 0)
self.Remote = gtk.Entry()
self.Remote.set_text("")
self.Remote.set_editable(False)
self.Remote.show()
self.Remote.set_visibility(True)
self.table2.attach(self.Remote, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.Local = gtk.Entry()
self.Local.set_text("")
self.Local.set_editable(False)
self.Local.show()
self.Local.set_visibility(True)
self.table2.attach(self.Local, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.Me = gtk.Entry()
self.Me.set_text("")
self.Me.set_editable(False)
self.Me.show()
self.Me.set_visibility(True)
self.table2.attach(self.Me, 1, 2, 2, 3, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.Highlight = gtk.Entry()
self.Highlight.set_text("")
self.Highlight.set_editable(False)
self.Highlight.show()
self.Highlight.set_visibility(True)
self.table2.attach(self.Highlight, 1, 2, 3, 4, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.DefaultRemote = gtk.Button()
self.DefaultRemote.show()
self.alignment36 = gtk.Alignment(0, 0, 0, 0)
self.alignment36.show()
self.hbox125 = gtk.HBox(False, 0)
self.hbox125.show()
self.hbox125.set_spacing(2)
self.image33 = gtk.Image()
self.image33.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image33.show()
self.hbox125.pack_start(self.image33, False, False, 0)
self.label198 = gtk.Label(_("Default"))
self.label198.set_line_wrap(False)
self.label198.show()
self.hbox125.pack_start(self.label198, False, False, 0)
self.alignment36.add(self.hbox125)
self.DefaultRemote.add(self.alignment36)
self.table2.attach(self.DefaultRemote, 2, 3, 0, 1, gtk.FILL, 0, 0, 0)
self.DefaultLocal = gtk.Button()
self.DefaultLocal.show()
self.alignment40 = gtk.Alignment(0, 0, 0, 0)
self.alignment40.show()
self.hbox129 = gtk.HBox(False, 0)
self.hbox129.show()
self.hbox129.set_spacing(2)
self.image37 = gtk.Image()
self.image37.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image37.show()
self.hbox129.pack_start(self.image37, False, False, 0)
self.label202 = gtk.Label(_("Default"))
self.label202.set_line_wrap(False)
self.label202.show()
self.hbox129.pack_start(self.label202, False, False, 0)
self.alignment40.add(self.hbox129)
self.DefaultLocal.add(self.alignment40)
self.table2.attach(self.DefaultLocal, 2, 3, 1, 2, gtk.FILL, 0, 0, 0)
self.DefaultMe = gtk.Button()
self.DefaultMe.show()
self.alignment41 = gtk.Alignment(0, 0, 0, 0)
self.alignment41.show()
self.hbox130 = gtk.HBox(False, 0)
self.hbox130.show()
self.hbox130.set_spacing(2)
self.image38 = gtk.Image()
self.image38.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image38.show()
self.hbox130.pack_start(self.image38, False, False, 0)
self.label203 = gtk.Label(_("Default"))
self.label203.set_line_wrap(False)
self.label203.show()
self.hbox130.pack_start(self.label203, False, False, 0)
self.alignment41.add(self.hbox130)
self.DefaultMe.add(self.alignment41)
self.table2.attach(self.DefaultMe, 2, 3, 2, 3, gtk.FILL, 0, 0, 0)
self.DefaultHighlight = gtk.Button()
self.DefaultHighlight.show()
self.alignment42 = gtk.Alignment(0, 0, 0, 0)
self.alignment42.show()
self.hbox131 = gtk.HBox(False, 0)
self.hbox131.show()
self.hbox131.set_spacing(2)
self.image39 = gtk.Image()
self.image39.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image39.show()
self.hbox131.pack_start(self.image39, False, False, 0)
self.label204 = gtk.Label(_("Default"))
self.label204.set_line_wrap(False)
self.label204.show()
self.hbox131.pack_start(self.label204, False, False, 0)
self.alignment42.add(self.hbox131)
self.DefaultHighlight.add(self.alignment42)
self.table2.attach(self.DefaultHighlight, 2, 3, 3, 4, gtk.FILL, 0, 0, 0)
self.label208 = gtk.Label("")
self.label208.set_alignment(0, 0.5)
self.label208.set_padding(0, 5)
self.label208.set_line_wrap(False)
self.label208.set_markup(_("List and search colours"))
self.label208.show()
self.table2.attach(self.label208, 0, 3, 4, 5, gtk.FILL, 0, 0, 0)
self.PickImmediate = gtk.Button()
self.PickImmediate.show()
self.alignment46 = gtk.Alignment(0, 0, 0, 0)
self.alignment46.show()
self.hbox135 = gtk.HBox(False, 0)
self.hbox135.show()
self.hbox135.set_spacing(2)
self.image43 = gtk.Image()
self.image43.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image43.show()
self.hbox135.pack_start(self.image43, False, False, 0)
self.label209 = gtk.Label(_("List Text"))
self.label209.set_line_wrap(False)
self.label209.show()
self.hbox135.pack_start(self.label209, False, False, 0)
self.alignment46.add(self.hbox135)
self.PickImmediate.add(self.alignment46)
self.table2.attach(self.PickImmediate, 0, 1, 5, 6, gtk.FILL, 0, 0, 0)
self.Immediate = gtk.Entry()
self.Immediate.set_text("")
self.Immediate.set_editable(False)
self.Immediate.show()
self.Immediate.set_visibility(True)
self.table2.attach(self.Immediate, 1, 2, 5, 6, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.DefaultImmediate = gtk.Button()
self.DefaultImmediate.show()
self.alignment48 = gtk.Alignment(0, 0, 0, 0)
self.alignment48.show()
self.hbox137 = gtk.HBox(False, 0)
self.hbox137.show()
self.hbox137.set_spacing(2)
self.image45 = gtk.Image()
self.image45.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image45.show()
self.hbox137.pack_start(self.image45, False, False, 0)
self.label211 = gtk.Label(_("Default"))
self.label211.set_line_wrap(False)
self.label211.show()
self.hbox137.pack_start(self.label211, False, False, 0)
self.alignment48.add(self.hbox137)
self.DefaultImmediate.add(self.alignment48)
self.table2.attach(self.DefaultImmediate, 2, 3, 5, 6, gtk.FILL, 0, 0, 0)
self.DefaultQueue = gtk.Button()
self.DefaultQueue.show()
self.alignment49 = gtk.Alignment(0, 0, 0, 0)
self.alignment49.show()
self.hbox138 = gtk.HBox(False, 0)
self.hbox138.show()
self.hbox138.set_spacing(2)
self.image46 = gtk.Image()
self.image46.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image46.show()
self.hbox138.pack_start(self.image46, False, False, 0)
self.label212 = gtk.Label(_("Default"))
self.label212.set_line_wrap(False)
self.label212.show()
self.hbox138.pack_start(self.label212, False, False, 0)
self.alignment49.add(self.hbox138)
self.DefaultQueue.add(self.alignment49)
self.table2.attach(self.DefaultQueue, 2, 3, 6, 7, gtk.FILL, 0, 0, 0)
self.Queue = gtk.Entry()
self.Queue.set_text("")
self.Queue.set_editable(False)
self.Queue.show()
self.Queue.set_visibility(True)
self.table2.attach(self.Queue, 1, 2, 6, 7, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.PickQueue = gtk.Button()
self.PickQueue.show()
self.alignment47 = gtk.Alignment(0, 0, 0, 0)
self.alignment47.show()
self.hbox136 = gtk.HBox(False, 0)
self.hbox136.show()
self.hbox136.set_spacing(2)
self.image44 = gtk.Image()
self.image44.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image44.show()
self.hbox136.pack_start(self.image44, False, False, 0)
self.label210 = gtk.Label(_("With queue"))
self.label210.set_line_wrap(False)
self.label210.show()
self.hbox136.pack_start(self.label210, False, False, 0)
self.alignment47.add(self.hbox136)
self.PickQueue.add(self.alignment47)
self.table2.attach(self.PickQueue, 0, 1, 6, 7, gtk.FILL, 0, 0, 0)
self.OnlineColor = gtk.Entry()
self.OnlineColor.set_text("")
self.OnlineColor.set_editable(False)
self.OnlineColor.show()
self.OnlineColor.set_visibility(True)
self.table2.attach(self.OnlineColor, 1, 2, 8, 9, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.OfflineColor = gtk.Entry()
self.OfflineColor.set_text("")
self.OfflineColor.set_editable(False)
self.OfflineColor.show()
self.OfflineColor.set_visibility(True)
self.table2.attach(self.OfflineColor, 1, 2, 9, 10, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.DefaultOnline = gtk.Button()
self.DefaultOnline.show()
self.alignment81 = gtk.Alignment(0, 0, 0, 0)
self.alignment81.show()
self.hbox186 = gtk.HBox(False, 0)
self.hbox186.show()
self.hbox186.set_spacing(2)
self.image75 = gtk.Image()
self.image75.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image75.show()
self.hbox186.pack_start(self.image75, False, False, 0)
self.label311 = gtk.Label(_("Default"))
self.label311.set_line_wrap(False)
self.label311.show()
self.hbox186.pack_start(self.label311, False, False, 0)
self.alignment81.add(self.hbox186)
self.DefaultOnline.add(self.alignment81)
self.table2.attach(self.DefaultOnline, 2, 3, 8, 9, gtk.FILL, 0, 0, 0)
self.DefaultOffline = gtk.Button()
self.DefaultOffline.show()
self.alignment82 = gtk.Alignment(0, 0, 0, 0)
self.alignment82.show()
self.hbox187 = gtk.HBox(False, 0)
self.hbox187.show()
self.hbox187.set_spacing(2)
self.image76 = gtk.Image()
self.image76.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image76.show()
self.hbox187.pack_start(self.image76, False, False, 0)
self.label312 = gtk.Label(_("Default"))
self.label312.set_line_wrap(False)
self.label312.show()
self.hbox187.pack_start(self.label312, False, False, 0)
self.alignment82.add(self.hbox187)
self.DefaultOffline.add(self.alignment82)
self.table2.attach(self.DefaultOffline, 2, 3, 9, 10, gtk.FILL, 0, 0, 0)
self.UsernameHotspots = gtk.CheckButton()
self.UsernameHotspots.set_active(False)
self.UsernameHotspots.set_label(_("Username Colours and Hotspots"))
self.UsernameHotspots.show()
self.UsernameHotspots.connect("toggled", self.OnUsernameHotspotsToggled)
self.table2.attach(self.UsernameHotspots, 0, 3, 7, 8, gtk.FILL, 0, 0, 0)
self.AwayColor = gtk.Entry()
self.AwayColor.set_text("")
self.AwayColor.set_editable(False)
self.AwayColor.show()
self.AwayColor.set_visibility(True)
self.table2.attach(self.AwayColor, 1, 2, 10, 11, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.PickAway = gtk.Button()
self.PickAway.show()
self.alignment80 = gtk.Alignment(0, 0, 0, 0)
self.alignment80.show()
self.hbox185 = gtk.HBox(False, 0)
self.hbox185.show()
self.hbox185.set_spacing(2)
self.image74 = gtk.Image()
self.image74.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image74.show()
self.hbox185.pack_start(self.image74, False, False, 0)
self.label310 = gtk.Label(_("Away"))
self.label310.set_line_wrap(False)
self.label310.show()
self.hbox185.pack_start(self.label310, False, False, 0)
self.alignment80.add(self.hbox185)
self.PickAway.add(self.alignment80)
self.table2.attach(self.PickAway, 0, 1, 10, 11, gtk.FILL, 0, 0, 0)
self.DefaultAway = gtk.Button()
self.DefaultAway.show()
self.alignment83 = gtk.Alignment(0, 0, 0, 0)
self.alignment83.show()
self.hbox188 = gtk.HBox(False, 0)
self.hbox188.show()
self.hbox188.set_spacing(2)
self.image77 = gtk.Image()
self.image77.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image77.show()
self.hbox188.pack_start(self.image77, False, False, 0)
self.label313 = gtk.Label(_("Default"))
self.label313.set_line_wrap(False)
self.label313.show()
self.hbox188.pack_start(self.label313, False, False, 0)
self.alignment83.add(self.hbox188)
self.DefaultAway.add(self.alignment83)
self.table2.attach(self.DefaultAway, 2, 3, 10, 11, gtk.FILL, 0, 0, 0)
self.PickOnline = gtk.Button()
self.PickOnline.show()
self.alignment78 = gtk.Alignment(0, 0, 0, 0)
self.alignment78.show()
self.hbox183 = gtk.HBox(False, 0)
self.hbox183.show()
self.hbox183.set_spacing(2)
self.image72 = gtk.Image()
self.image72.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image72.show()
self.hbox183.pack_start(self.image72, False, False, 0)
self.label308 = gtk.Label(_("Online"))
self.label308.set_line_wrap(False)
self.label308.show()
self.hbox183.pack_start(self.label308, False, False, 0)
self.alignment78.add(self.hbox183)
self.PickOnline.add(self.alignment78)
self.table2.attach(self.PickOnline, 0, 1, 8, 9, gtk.FILL, 0, 0, 0)
self.PickOffline = gtk.Button()
self.PickOffline.show()
self.alignment79 = gtk.Alignment(0, 0, 0, 0)
self.alignment79.show()
self.hbox184 = gtk.HBox(False, 0)
self.hbox184.show()
self.hbox184.set_spacing(2)
self.image73 = gtk.Image()
self.image73.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image73.show()
self.hbox184.pack_start(self.image73, False, False, 0)
self.label309 = gtk.Label(_("Offline"))
self.label309.set_line_wrap(False)
self.label309.show()
self.hbox184.pack_start(self.label309, False, False, 0)
self.alignment79.add(self.hbox184)
self.PickOffline.add(self.alignment79)
self.table2.attach(self.PickOffline, 0, 1, 9, 10, gtk.FILL, 0, 0, 0)
self.DefaultBackground = gtk.Button()
self.DefaultBackground.show()
self.alignment94 = gtk.Alignment(0, 0, 0, 0)
self.alignment94.show()
self.hbox210 = gtk.HBox(False, 0)
self.hbox210.show()
self.hbox210.set_spacing(2)
self.image88 = gtk.Image()
self.image88.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image88.show()
self.hbox210.pack_start(self.image88, False, False, 0)
self.label360 = gtk.Label(_("Default"))
self.label360.set_line_wrap(False)
self.label360.show()
self.hbox210.pack_start(self.label360, False, False, 0)
self.alignment94.add(self.hbox210)
self.DefaultBackground.add(self.alignment94)
self.table2.attach(self.DefaultBackground, 2, 3, 12, 13, gtk.FILL, 0, 0, 0)
self.BackgroundColor = gtk.Entry()
self.BackgroundColor.set_text("")
self.BackgroundColor.set_editable(False)
self.BackgroundColor.show()
self.BackgroundColor.set_visibility(True)
self.table2.attach(self.BackgroundColor, 1, 2, 12, 13, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.PickBackground = gtk.Button()
self.PickBackground.show()
self.alignment93 = gtk.Alignment(0, 0, 0, 0)
self.alignment93.show()
self.hbox209 = gtk.HBox(False, 0)
self.hbox209.show()
self.hbox209.set_spacing(2)
self.image87 = gtk.Image()
self.image87.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image87.show()
self.hbox209.pack_start(self.image87, False, False, 0)
self.label359 = gtk.Label(_("Background"))
self.label359.set_line_wrap(False)
self.label359.show()
self.hbox209.pack_start(self.label359, False, False, 0)
self.alignment93.add(self.hbox209)
self.PickBackground.add(self.alignment93)
self.table2.attach(self.PickBackground, 0, 1, 12, 13, gtk.FILL, 0, 0, 0)
self.hbox197 = gtk.HBox(False, 0)
self.hbox197.show()
self.hbox197.set_spacing(3)
self.label321 = gtk.Label(_("Username Font Style:"))
self.label321.set_line_wrap(False)
self.label321.show()
self.hbox197.pack_start(self.label321, False, False, 0)
self.UsernameStyle_List = gtk.ListStore(gobject.TYPE_STRING)
self.UsernameStyle = gtk.ComboBoxEntry()
self.UsernameStyle.show()
self.UsernameStyle.set_model(self.UsernameStyle_List)
self.UsernameStyle.set_text_column(0)
self.hbox197.pack_start(self.UsernameStyle, False, True, 0)
self.table2.attach(self.hbox197, 0, 3, 11, 12, gtk.FILL, gtk.EXPAND|gtk.FILL, 0, 0)
self.PickInput = gtk.Button()
self.PickInput.show()
self.alignment100 = gtk.Alignment(0, 0, 0, 0)
self.alignment100.show()
self.hbox220 = gtk.HBox(False, 0)
self.hbox220.show()
self.hbox220.set_spacing(2)
self.image94 = gtk.Image()
self.image94.set_from_stock(gtk.STOCK_SELECT_COLOR, 4)
self.image94.show()
self.hbox220.pack_start(self.image94, False, False, 0)
self.label374 = gtk.Label(_("Input Text"))
self.label374.set_line_wrap(False)
self.label374.show()
self.hbox220.pack_start(self.label374, False, False, 0)
self.alignment100.add(self.hbox220)
self.PickInput.add(self.alignment100)
self.table2.attach(self.PickInput, 0, 1, 13, 14, gtk.FILL, 0, 0, 0)
self.InputColor = gtk.Entry()
self.InputColor.set_text("")
self.InputColor.set_editable(False)
self.InputColor.show()
self.InputColor.set_visibility(True)
self.table2.attach(self.InputColor, 1, 2, 13, 14, gtk.EXPAND|gtk.FILL, 0, 0, 0)
self.DefaultInput = gtk.Button()
self.DefaultInput.show()
self.alignment101 = gtk.Alignment(0, 0, 0, 0)
self.alignment101.show()
self.hbox221 = gtk.HBox(False, 0)
self.hbox221.show()
self.hbox221.set_spacing(2)
self.image95 = gtk.Image()
self.image95.set_from_stock(gtk.STOCK_CANCEL, 4)
self.image95.show()
self.hbox221.pack_start(self.image95, False, False, 0)
self.label375 = gtk.Label(_("Default"))
self.label375.set_line_wrap(False)
self.label375.show()
self.hbox221.pack_start(self.label375, False, False, 0)
self.alignment101.add(self.hbox221)
self.DefaultInput.add(self.alignment101)
self.table2.attach(self.DefaultInput, 2, 3, 13, 14, gtk.FILL, 0, 0, 0)
self.expander2.add(self.table2)
self.label306 = gtk.Label("")
self.label306.set_line_wrap(False)
self.label306.set_markup(_("Colours"))
self.label306.show()
self.expander2.set_label_widget(self.label306)
vboxAppearance.pack_start(self.expander2, False, False, 0)
for item in ["", ",", ".", ""]:
self.DecimalSep.append_text(item)
for item in ["bold", "italic", "underline", "normal"]:
self.UsernameStyle.append_text(item)
self.UsernameStyle.child.set_editable(False)
self.PickRemote.connect("clicked", self.PickColour, self.Remote)
self.PickLocal.connect("clicked", self.PickColour, self.Local)
self.PickMe.connect("clicked", self.PickColour, self.Me)
self.PickHighlight.connect("clicked", self.PickColour, self.Highlight)
self.PickImmediate.connect("clicked", self.PickColour, self.Immediate)
self.PickQueue.connect("clicked", self.PickColour, self.Queue)
self.PickAway.connect("clicked", self.PickColour, self.AwayColor)
self.PickOnline.connect("clicked", self.PickColour, self.OnlineColor)
self.PickOffline.connect("clicked", self.PickColour, self.OfflineColor)
self.DefaultAway.connect("clicked", self.DefaultColour, self.AwayColor)
self.DefaultOnline.connect("clicked", self.DefaultColour, self.OnlineColor)
self.DefaultOffline.connect("clicked", self.DefaultColour, self.OfflineColor)
self.PickBackground.connect("clicked", self.PickColour, self.BackgroundColor)
self.DefaultBackground.connect("clicked", self.DefaultColour, self.BackgroundColor)
self.PickInput.connect("clicked", self.PickColour, self.InputColor)
self.DefaultInput.connect("clicked", self.DefaultColour, self.InputColor)
self.DefaultRemote.connect("clicked", self.DefaultColour, self.Remote)
self.DefaultLocal.connect("clicked", self.DefaultColour, self.Local)
self.DefaultMe.connect("clicked", self.DefaultColour, self.Me)
self.DefaultHighlight.connect("clicked", self.DefaultColour, self.Highlight)
self.DefaultImmediate.connect("clicked", self.DefaultColour, self.Immediate)
self.DefaultQueue.connect("clicked", self.DefaultColour, self.Queue)
self.DefaultQueue.connect("clicked", self.DefaultColour, self.Queue)
# To set needcolors flag
self.SelectChatFont.connect("font-set", self.FontsColorsChanged)
self.Local.connect("changed", self.FontsColorsChanged)
self.Remote.connect("changed", self.FontsColorsChanged)
self.Me.connect("changed", self.FontsColorsChanged)
self.Highlight.connect("changed", self.FontsColorsChanged)
self.BackgroundColor.connect("changed", self.FontsColorsChanged)
self.Immediate.connect("changed", self.FontsColorsChanged)
self.Queue.connect("changed", self.FontsColorsChanged)
self.AwayColor.connect("changed", self.FontsColorsChanged)
self.OnlineColor.connect("changed", self.FontsColorsChanged)
self.OfflineColor.connect("changed", self.FontsColorsChanged)
self.UsernameStyle.child.connect("changed", self.FontsColorsChanged)
self.InputColor.connect("changed", self.FontsColorsChanged)
def FontsColorsChanged(self, widget):
self.needcolors = 1
def OnEnableTransparentToggled(self, widget):
sensitive = widget.get_active()
self.PickTint.set_sensitive(sensitive)
self.TintAlpha.set_sensitive(sensitive)
self.DefaultTint.set_sensitive(sensitive)
self.TintColor.set_sensitive(sensitive)
self.Blue.set_sensitive(sensitive)
self.Red.set_sensitive(sensitive)
self.Green.set_sensitive(sensitive)
self.label346.set_sensitive(sensitive)
self.label348.set_sensitive(sensitive)
self.label349.set_sensitive(sensitive)
self.label347.set_sensitive(sensitive)
def OnUsernameHotspotsToggled(self, widget):
sensitive = widget.get_active()
self.AwayColor.set_sensitive(sensitive)
self.OnlineColor.set_sensitive(sensitive)
self.OfflineColor.set_sensitive(sensitive)
self.DefaultAway.set_sensitive(sensitive)
self.DefaultOnline.set_sensitive(sensitive)
self.DefaultOffline.set_sensitive(sensitive)
self.PickAway.set_sensitive(sensitive)
self.PickOnline.set_sensitive(sensitive)
self.PickOffline.set_sensitive(sensitive)
def PickColour(self, widget, entry):
dlg = gtk.ColorSelectionDialog(_("Pick a colour, any colour"))
colour = entry.get_text()
if colour != None and colour !='':
colour = gtk.gdk.color_parse(colour)
dlg.colorsel.set_current_color(colour)
if dlg.run() == gtk.RESPONSE_OK:
colour = dlg.colorsel.get_current_color()
colour = "#%02X%02X%02X" % (colour.red / 256, colour.green / 256, colour.blue / 256)
entry.set_text(colour)
dlg.destroy()
#def ColourScale(self, widget):
#tint = self.TintColor.get_text()
#if tint != "":
#if tint[0] == "#" and len(tint) == 7:
#try:
#red = int(tint[1:3], 16)
#green = int(tint[3:5], 16)
#blue = int(tint[5:], 16)
#self.Red.set_value(red)
#self.Blue.set_value(blue)
#self.Green.set_value(green)
#except Exception, e:
#print e
#def ScaleColour(self, widget):
#if self.settingup:
#return
#red = int(self.Red.get_value() )
#green = int(self.Green.get_value())
#blue = int(self.Blue.get_value())
#colour = "#%02X%02X%02X" % (red, green, blue)
#self.TintColor.set_text(colour)
def DefaultColour(self, widget, entry):
entry.set_text("")
def TabMurmurLogin(self):
self.labelMurmur = gtk.Label(_("Murmur"))
self.labelMurmur.show()
self.labelMurmurLogin = gtk.Label(_("Login"))
self.labelMurmurLogin.show()
hboxMurmur = gtk.VBox(False, spacing=5)
hboxMurmur.set_border_width(5)
hboxMurmur.show()
self.MurmurSW = gtk.ScrolledWindow()
self.MurmurSW.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.MurmurSW.show()
self.MurmurSW.set_shadow_type(gtk.SHADOW_NONE)
self.MurmurSW.add_with_viewport(hboxMurmur)
self.frame1 = gtk.Frame()
self.frame1.show()
self.frame1.set_shadow_type(gtk.SHADOW_IN)
self.connectLabel = gtk.Label()
self.connectLabel.set_markup(_("Connect to Museek Daemon") )
self.connectLabel.show()
self.frame1.set_label_widget(self.connectLabel)
self.InterFaceTable = gtk.Table( homogeneous=False)
self.InterFaceTable.set_border_width(5)
self.InterFaceTable.show()
self.InterFaceTable.set_col_spacings(5)
self.InterFaceTable.set_row_spacings(5)
count = 0
# Museek Interface
label3 = gtk.Label("Museek Interface:")
label3.set_alignment(0, 0)
label3.show()
self.Interface = gtk.Entry()
if self.murmur_config["connection"]["interface"] != None:
self.Interface.set_text(self.murmur_config["connection"]["interface"])
else:
self.Interface.set_text("")
self.Interface.show()
self.InterFaceTable.attach(label3, 0, 1, count, count+1, gtk.FILL, gtk.SHRINK, 0, 0)
self.InterFaceTable.attach(self.Interface, 1, 2, count, count+1, gtk.FILL, gtk.FILL, 0, 0)
count += 1
# Password
label2 = gtk.Label("Password:")
label2.set_alignment(0, 0)
label2.show()
self.Password = gtk.Entry()
if self.murmur_config["connection"]["passw"] != None:
self.Password.set_text(self.murmur_config["connection"]["passw"])
else:
self.Password.set_text("")
self.Password.set_visibility(False)
self.Password.show()
self.InterFaceTable.attach(label2, 0, 1, count, count+1, gtk.FILL, gtk.SHRINK, 0, 0)
self.InterFaceTable.attach(self.Password, 1, 2, count, count+1, gtk.FILL, gtk.SHRINK, 0, 0)
self.frame1.add(self.InterFaceTable)
# Tooltips
self.TooltipCheck = gtk.CheckButton("Tooltips")
if self.murmur_config["murmur"]["tooltips"]:
self.TooltipCheck.set_active(True)
else:
self.TooltipCheck.set_active(False)
self.TooltipCheck.connect("toggled", self.tooltip_check)
self.TooltipCheck.show()
self.TrayIcon = gtk.CheckButton(_("Load Tray Icon at start"))
self.TrayIcon.connect("toggled", self.trayapp_check)
if self.murmur_config["murmur"]["trayapp"]:
self.TrayIcon.set_active(True)
else:
self.TrayIcon.set_active(False)
self.TrayIcon.show()
label6 = gtk.Label("Museekd's Config File:")
label6.set_alignment(0, 0)
label6.show()
self.hbox142 = gtk.HBox(False, spacing=5)
self.hbox142.set_border_width(5)
self.hbox142.show()
self.Configfile = gtk.Entry()
if str(self.murmur_config["museekd"]["configfile"]) != "None":
self.Configfile.set_text(self.murmur_config["museekd"]["configfile"])
else:
self.Configfile.set_text("Input the path to the Museekd Config")
self.Configfile.show()
self.SelectConfig = self.app.CreateIconButton(gtk.STOCK_OPEN, "stock", self.OnSelectConfig, _("Select"))
self.hbox142.pack_start(self.Configfile, True, True)
self.hbox142.pack_start(self.SelectConfig, False, False)
# Insert horizontal boxes into vertical box
hboxMurmur.pack_start(self.frame1, False, False)
self.vbox2 = gtk.VBox(False, spacing=5)
self.vbox2.show()
self.vbox2.pack_start(self.TooltipCheck, False, False) #checkbox (tooltip)
self.vbox2.pack_start(self.TrayIcon, False, False) #checkbox (trayapp)
self.vbox2.pack_start(label6, False, False)
self.vbox2.pack_start(self.hbox142, False, False)
hboxMurmur.pack_start(self.vbox2, False, False)
def OnSelectConfig(self, widget):
text = self.OpenFile(widget, _("Select Museekd config file"), ["*.xml"])
if text != None:
self.murmur_config["museekd"]["configfile"] = text
self.Configfile.set_text(text)
def dialogs(self):
self.encodings= ["UTF-8", "UTF-7", "UTF-16", "UTF-32", "KOI8-R", "ISO8859-1", "ISO8859-2", "ISO8859-3", "ISO8859-4", "ISO8859-5", "ISO8859-6", "ISO8859-7", "ISO8859-8", "ISO8859-9", "ISO8859-10", "ISO8859-11", "ISO8859-13", "ISO8859-14", "ISO8859-15", "ISO8859-16", "CP1250", "CP1251", "CP1252", "CP1253", "CP1254", "CP1255", "CP1256", "CP1257", "CP1258", "CP874"]
self.MainNotebook = gtk.Notebook()
self.MainNotebook.set_tab_pos(gtk.POS_TOP)
self.MainNotebook.set_scrollable(False)
self.MainNotebook.show()
self.MurmurNotebook = gtk.Notebook()
self.MurmurNotebook.set_tab_pos(gtk.POS_LEFT)
self.MurmurNotebook.set_scrollable(True)
self.MurmurNotebook.show()
self.TabMurmurLogin()
self.MurmurNotebook.append_page(self.MurmurSW, self.labelMurmurLogin)
self.TabMurmurAppearance()
self.MurmurNotebook.append_page(self.FontsSW, self.labelMurmurAppearance)
self.MainNotebook.append_page(self.MurmurNotebook, self.labelMurmur)
self.MuseekdNotebook = gtk.Notebook()
self.MuseekdNotebook.set_tab_pos(gtk.POS_LEFT)
self.MuseekdNotebook.set_scrollable(True)
self.MuseekdNotebook.show()
self.labelMuseekd = gtk.Label(_("Museek Daemon"))
self.labelMuseekd.show()
self.MainNotebook.append_page(self.MuseekdNotebook, self.labelMuseekd)
self.TabServer()
self.MuseekdNotebook.append_page(self.ServerSW, self.label1)
self.TabMuseekClients()
self.MuseekdNotebook.append_page(self.MuseekClientsSW, self.label3)
self.TabTransfers()
self.MuseekdNotebook.append_page(self.TransfersScrollWindow, self.TransfersLabel)
self.TabChatRoom()
self.MuseekdNotebook.append_page(self.hboxchat, self.ChatRooms_Label)
self.TabUsers()
self.MuseekdNotebook.append_page(self.hboxusers, self.users_Label)
self.TabUserInfo()
self.MuseekdNotebook.append_page(self.UserInfoSW, self.UserinfoLabel)
self.TabShares()
self.MuseekdNotebook.append_page(self.SharesSW, self.sharesDBLabel)
def createTreeFor(self, store, treeview, name):
store.clear()
if name in ("normaldirs", "buddydirs"):
if name == "normaldirs":
dict = self.SharedDirs["normal"]
elif name == "buddydirs":
dict = self.SharedDirs["buddy"]
parents = self.parents[name] = {}
num = 0
for key in dict:
parents[key] = store.append(None, [key, num])
num += 1
self.parents[name] = parents
elif name in self.config:
dict = self.config[name]
parents = self.parents[name] = {}
num = 0
for key, value in dict.items():
if name in ("interfaces.bind", "autojoin", "alerts"):
parents[key] = store.append(None, [key, None])
else:
parents[key] = store.append(None, [key, value])
num += 1
self.parents[name] = parents
else:
self.config[name] = {}
def refreshConfigDisplay(self):
self.populate_dialogs()
def MuseekSettingsSensitive(self, sensitive):
self.ServerSW.set_sensitive( sensitive)
self.MuseekClientsSW.set_sensitive( sensitive)
self.TransfersScrollWindow.set_sensitive( sensitive)
self.hboxchat.set_sensitive( sensitive)
self.hboxusers.set_sensitive( sensitive)
self.UserInfoSW.set_sensitive( sensitive)
self.SharesSW.set_sensitive( sensitive)
def ClearSettings(self):
self.MuseekSettingsSensitive(False)
self.EntryServerHost.set_text("")
self.ServerPort.set_value(0)
self.EntryServerPassword.set_text("")
self.EntryServerUsername.set_text("")
self.defaultEncoding.child.set_text("")
self.filesystemEncoding.child.set_text("")
self.networkEncoding.child.set_text("")
self.LastPort.set_value(0)
self.FirstPort.set_value(0)
self.LogMethod.set_active(0)
# Museek Clients
self.interfacePassword.set_text("")
self.interfacesTreestore.clear()
# Transfers
self.connectMode.child.set_text("")
self.privilege_buddies_Check.set_active(False)
self.have_buddy_shares_Check.set_active(False)
self.trusting_uploads_Check.set_active(False)
self.only_buddies_Check.set_active(False)
self.user_warnings_Check.set_active(False)
self.uploadSlots.set_value(0)
self.EntryDownloadDIr.set_text("")
self.EntryIncompleteDir.set_text("")
self.EntryDownloadsDBase.set_text("")
# Chat rooms
self.defaultTicker.set_text("")
self.autojoinTreestore.clear()
self.encodingsTreestore.clear()
self.tickersTreestore.clear()
# Users
self.BuddiesTreestore.clear()
self.BannedTreestore.clear()
self.IgnoredTreestore.clear()
self.TrustedTreestore.clear()
# My userinfo
self.importinguserinfo =1
s = self.userinfoBuffer.get_start_iter()
e = self.userinfoBuffer.get_end_iter()
self.userinfoBuffer.delete(s, e)
self.userinfoImage.set_from_file("")
self.EntryImage.set_text("")
s= self.userinfoBuffer.get_start_iter()
self.userinfoBuffer.insert(s, "")
self.importinguserinfo =0
# Shares DBs
self.EntryNormalShares.set_text("")
self.EntryBuddyOnlyShares.set_text("")
# Alerts
self.AlertsTreestore.clear()
self.NormalDirTreestore.clear()
self.BuddyDirTreestore.clear()
#self.OnRefreshBuddyDirs(None)
def populate_dialogs(self):
self.parents= {}
# Server
if self.config == {}:
self.ClearSettings()
return
#try:
if 1:
self.MuseekSettingsSensitive(True)
self.app.Muscan.GetConfig()
self.CONFIG_PATH = self.app.Muscan.configfile
self.EntryServerHost.set_text(self.config["server"]["host"])
self.ServerPort.set_value(int(self.config["server"]["port"]))
self.EntryServerPassword.set_text(self.config["server"]["password"])
self.EntryServerUsername.set_text(self.config["server"]["username"])
if "default" in self.config["encoding"]:
self.defaultEncoding.child.set_text(str(self.config["encoding"]["default"]))
if "filesystem" in self.config["encoding"]:
self.filesystemEncoding.child.set_text(self.config["encoding"]["filesystem"])
if "network" in self.config["encoding"]:
self.networkEncoding.child.set_text(self.config["encoding"]["network"])
self.LastPort.set_value(int(self.config["clients.bind"]["last"]))
self.FirstPort.set_value(int(self.config["clients.bind"]["first"]))
self.LogMethod.set_active(int(self.config["logging"]["output"]))
# Museek Clients
self.interfacePassword.set_text(str(self.config["interfaces"]["password"]))
self.createTreeFor( self.interfacesTreestore, self.interfacesTreeview, "interfaces.bind")
# Transfers
self.connectMode.child.set_text(str(self.config["clients"]["connectmode"]))
if str(self.config["transfers"]["privilege_buddies"]) == "true":
self.privilege_buddies_Check.set_active(True)
else:
self.privilege_buddies_Check.set_active(False)
if "have_buddy_shares" in self.config["transfers"]:
if str(self.config["transfers"]["have_buddy_shares"]) == "true":
self.have_buddy_shares_Check.set_active(True)
else:
self.have_buddy_shares_Check.set_active(False)
else:
self.have_buddy_shares_Check.set_active(False)
if "trusting_uploads" in self.config["transfers"]:
if str(self.config["transfers"]["trusting_uploads"]) == "true":
self.trusting_uploads_Check.set_active(True)
else:
self.trusting_uploads_Check.set_active(False)
else:
self.trusting_uploads_Check.set_active(False)
if str(self.config["transfers"]["only_buddies"]) == "true":
self.only_buddies_Check.set_active(True)
else:
self.only_buddies_Check.set_active(False)
if "user_warnings" in self.config["transfers"]:
if str(self.config["transfers"]["user_warnings"]) == "true":
self.user_warnings_Check.set_active(True)
else:
self.user_warnings_Check.set_active(False)
else:
self.user_warnings_Check.set_active(False)
self.uploadSlots.set_value(int(self.config["transfers"]["upload_slots"]))
self.EntryDownloadDIr.set_text(str(self.config["transfers"]["download-dir"]))
self.EntryIncompleteDir.set_text(str(self.config["transfers"]["incomplete-dir"]))
self.EntryDownloadsDBase.set_text(str(self.config["transfers"]["downloads"]))
# Chat rooms
if "default-ticker" in self.config:
if "ticker" in self.config["default-ticker"]:
self.defaultTicker.set_text(str(self.config["default-ticker"]["ticker"]))
self.createTreeFor( self.autojoinTreestore, self.autojoinTreeview, "autojoin")
self.createTreeFor( self.encodingsTreestore, self.encodingsTreeview, "encoding.rooms")
self.createTreeFor( self.tickersTreestore, self.tickersTreeview, "tickers")
# Users
self.createTreeFor( self.BuddiesTreestore, self.BuddiesTreeview, "buddies")
self.createTreeFor( self.BannedTreestore, self.BannedTreeview, "banned")
self.createTreeFor( self.IgnoredTreestore, self.IgnoredTreeview, "ignored")
self.createTreeFor( self.TrustedTreestore, self.TrustedTreeview, "trusted")
# My userinfo
self.importinguserinfo =1
s = self.userinfoBuffer.get_start_iter()
e = self.userinfoBuffer.get_end_iter()
self.userinfoBuffer.delete(s, e)
self.userinfoImage.set_from_file(str(self.config["userinfo"]["image"]))
self.EntryImage.set_text(str(self.config["userinfo"]["image"]))
s= self.userinfoBuffer.get_start_iter()
self.userinfoBuffer.insert(s, str(self.config["userinfo"]["text"]))
self.importinguserinfo =0
# Shares DBs
self.EntryNormalShares.set_text(str(self.config["shares"]["database"]))
if "buddy.shares" not in self.config:
self.config["buddy.shares"] = {"database": config_path+".buddyshares"}
self.EntryBuddyOnlyShares.set_text(str(self.config["buddy.shares"]["database"]))
# Alerts
self.createTreeFor( self.AlertsTreestore, self.AlertsTreeview, "alerts")
self.OnRefreshNormalDirs(None)
self.OnRefreshBuddyDirs(None)
ui = self.murmur_config["ui"]
#private = config["privatechat"]
#transfers = self.murmur_config["transfers"]
if ui["chatfont"] is not None:
self.SelectChatFont.set_font_name(ui["chatfont"])
if ui["chatlocal"] is not None:
self.Local.set_text(ui["chatlocal"])
if ui["chatremote"] is not None:
self.Remote.set_text(ui["chatremote"])
if ui["chatme"] is not None:
self.Me.set_text(ui["chatme"])
if ui["chathilite"] is not None:
self.Highlight.set_text(ui["chathilite"])
if ui["useraway"] is not None:
self.AwayColor.set_text(ui["useraway"])
if ui["useronline"] is not None:
self.OnlineColor.set_text(ui["useronline"])
if ui["useroffline"] is not None:
self.OfflineColor.set_text(ui["useroffline"])
if ui["usernamehotspots"] is not None:
self.UsernameHotspots.set_active(ui["usernamehotspots"])
if ui["textbg"] is not None:
self.BackgroundColor.set_text(ui["textbg"])
if ui["inputcolor"] is not None:
self.InputColor.set_text(ui["inputcolor"])
self.OnUsernameHotspotsToggled(self.UsernameHotspots)
if ui["search"] is not None:
self.Immediate.set_text(ui["search"])
if ui["searchq"] is not None:
self.Queue.set_text(ui["searchq"])
if ui["decimalsep"] is not None:
self.DecimalSep.child.set_text(ui["decimalsep"])
#if ui["exitdialog"] is not None:
#self.ExitDialog.set_active(ui["exitdialog"])
#if private["store"] is not None:
#self.ReopenPrivateChats.set_active(private["store"])
if ui["usernamestyle"] is not None:
self.UsernameStyle.child.set_text(ui["usernamestyle"])
#if transfers["enabletransferbuttons"] is not None:
#self.ShowTransferButtons.set_active(transfers["enabletransferbuttons"])
self.needcolors = 0
#except Exception, e:
#self.Bug(_("Populating the Dialogs with config data failed:"), str(e))
#print e
def read_config(self):
self.SharedDirs = {"normal":[], "buddy":[] }
self.config = {}
for section in self.app.Networking.config.keys():
self.config[section] = {}
for key, value in self.app.Networking.config[section].items():
self.config[section][key] = value
if self.murmur_config["connection"]["interface"] != None:
self.Interface.set_text(self.murmur_config["connection"]["interface"])
else:
self.Interface.set_text("Input a Museek Interface")
if self.murmur_config["connection"]["passw"] != None:
self.Password.set_text(self.murmur_config["connection"]["passw"])
else:
self.Password.set_text("Input a password")
if self.murmur_config["murmur"]["tooltips"]:
self.TooltipCheck.set_active(True)
else:
self.TooltipCheck.set_active(False)
self.populate_dialogs()
def trayapp_check(self, string):
self.murmur_config["murmur"]["trayapp"] = self.TrayIcon.get_active()
def tooltip_check(self, string):
self.murmur_config["murmur"]["tooltips"] = self.TooltipCheck.get_active()
def quit(self, w=None, event=None):
self.hide()
def click(self, button):
self.save(button)
self.quit()
def save(self, button):
self.murmur_config["connection"]["interface"] = self.Interface.get_text()
self.murmur_config["connection"]["passw"] = self.Password.get_text()
self.murmur_config["murmur"]["tooltips"] = self.TooltipCheck.get_active()
self.murmur_config["murmur"]["trayapp"] = self.TrayIcon.get_active()
settings = {
"ui": {
"chatfont": self.SelectChatFont.get_font_name(),
"chatlocal": self.Local.get_text(),
"chatremote": self.Remote.get_text(),
"chatme": self.Me.get_text(),
"chathilite": self.Highlight.get_text(),
"textbg": self.BackgroundColor.get_text(),
"inputcolor": self.InputColor.get_text(),
"search": self.Immediate.get_text(),
"searchq": self.Queue.get_text(),
"decimalsep": self.DecimalSep.child.get_text(),
"useraway": self.AwayColor.get_text(),
"useronline": self.OnlineColor.get_text(),
"useroffline": self.OfflineColor.get_text(),
"usernamehotspots": int(self.UsernameHotspots.get_active()),
"usernamestyle": self.UsernameStyle.child.get_text(),
}
}
for domain in settings.keys():
for key, value in settings[domain].items():
self.murmur_config[domain][key] = value
self.WriteConfig()
self.app.ChatRooms.UpdateColours()
self.app.PrivateChats.UpdateColours()
def WriteConfig(self):
oldconfig = self.app.Networking.config
for section in oldconfig:
for key, value in oldconfig[section].items():
if key not in self.config[section].keys():
self.app.Networking.Send(messages.ConfigRemove(section, key))
#print "Remove", section, key, value
for section in self.config:
for key, value in self.config[section].items():
if key not in oldconfig[section].keys():
self.app.Networking.Send(messages.ConfigSet(section, key, str(value)))
#print "Added", section, key, value
else:
if str(self.config[section][key]) != str(oldconfig[section][key]):
#print "new", self.config[section][key]
#print "old", oldconfig[section][key]
self.app.Networking.Send(messages.ConfigSet(section, key, str(value)))
#print "Changed", section, key, value
self.app.config_manager.update_config()