rendered paste bodyIndex: PreferenceWindow.py
===================================================================
--- PreferenceWindow.py (revision 1342)
+++ PreferenceWindow.py (working copy)
@@ -70,15 +70,18 @@
gtk.Label(_('Filetransfer')))
self.desktopTab = DesktopTab(self.controller)
+ self.webcamTab = WebcamTab(self.config)
self.connectionTab = ConnectionTab(self.config)
if self.controller.connected:
+ notebook.append_page(self.webcamTab, gtk.Label(_('Webcam')))
notebook.append_page(self.desktopTab, gtk.Label(_('Desktop')))
notebook.append_page(self.connectionTab, gtk.Label(_('Connection')))
else:
notebook.append_page(self.connectionTab, gtk.Label(_('Connection')))
notebook.append_page(self.desktopTab, gtk.Label(_('Desktop')))
+
vbox.show_all()
self.add(vbox)
@@ -99,12 +102,14 @@
'''save the actual setting'''
self.connectionTab.save()
+ self.webcamTab.save()
if self.controller.connected:
self.interface_tab.save()
self.themesTab.save()
self.colorSchemeTab.save()
self.desktopTab.save()
+ self.webcamTab.save()
self.ftTab.save()
# TODO: remove preferences-changed
self.controller.emit('preferences-changed')
@@ -167,8 +172,124 @@
def save(self, *args):
for i in self.items.keys():
self.config.user[self.items[i].configColor] = rgbToHexa(self.items[i].button.get_color())
+
+class WebcamTab(gtk.VBox):
+ '''A tab that lets the user override the detected desktop settings'''
+
+ def __init__(self, config):
+ gtk.VBox.__init__(self)
+ self.config = config
+
+ self.imageQuality = ImageQuality(self.config)
+ frame = gtk.Frame(_('Image quality'))
+ frame.set_border_width(4)
+ frame.add(self.imageQuality)
+ self.webConnectionSettings = WebConnectionSettings(self.config)
+ frame1 = gtk.Frame(_('Connection settings'))
+ frame1.set_border_width(4)
+ frame1.add(self.webConnectionSettings)
+
+ self.set_spacing(8)
+ self.set_border_width(8)
+
+ self.pack_start(frame, False)
+ self.pack_start(frame1, False)
+ def save(self):
+ self.imageQuality.save()
+ self.webConnectionSettings.save()
+
+class ImageQuality(gtk.VBox):
+ def __init__(self, config):
+ gtk.VBox.__init__(self)
+
+ self.set_spacing(8)
+ self.set_border_width(8)
+
+ self.config = config
+
+ markup = _('If you need it, you can choose a different webcam resolution')
+
+ self.infolabel = gtk.Label()
+ self.infolabel.set_markup(markup)
+ self.infolabel.set_line_wrap(True)
+ self.infolabel.set_alignment(0.0, 0.0)
+
+ self.low = gtk.CheckButton(_('Low ( 160x120, for slow CPU )'))
+ self.low.set_active(self.config.glob['camLowQuality'])
+ #self.low.set_active(self.config.glob['weblowquality'] == '160x120')
+ #self.low.connect('toggled', self.toggleLow)
+
+ self.hight = gtk.CheckButton(_('Hight ( 320x240, for better quality )'))
+ self.hight.set_active(self.config.glob['camHightQuality'])
+ #self.hight.connect('toggled', self.toggleHight)
+
+ self.imagelabel = gtk.Label()
+ self.imagelabel.set_markup("<i>Note:</i> The image quality depends also on your connection")
+ self.imagelabel.set_alignment(0, 1.0)
+
+ self.webbox = gtk.HBox()
+ self.prevbutton = gtk.Button(_('See a preview of webcam'))
+ self.prevbutton.set_sensitive(False)
+ self.webbox.pack_start(gtk.Label())
+ self.webbox.pack_start(self.prevbutton, False, True, 6)
+
+ self.pack_start(self.infolabel, False)
+ self.pack_start(self.hight, False)
+ self.pack_start(self.low, False)
+ self.pack_start(self.webbox, False)
+ self.pack_start(self.imagelabel, False)
+ self.save()
+
+ def save(self):
+ self.config.glob['camLowQuality'] = self.low.get_active()
+ self.config.glob['camHightQuality'] = self.hight.get_active()
+
+class WebConnectionSettings(gtk.VBox):
+ def __init__(self, config):
+ gtk.VBox.__init__(self)
+
+ self.set_spacing(8)
+ self.set_border_width(8)
+
+ self.config = config
+
+ self.refresh = gtk.HBox()
+ self.msrefresh = gtk.Entry()
+ self.refresh.pack_start(gtk.Label(_("Refresh image every:")), False)
+ self.refresh.pack_start(self.msrefresh)
+ self.msrefresh.set_text(str(self.config.glob['msrefresh']))#number of ms
+ #resize the input field, I don't know how I do, I've tryed with set_width_chars but it doesn't work
+ self.refresh.pack_start(gtk.Label(_(" ms")), False)
+
+ self.refreshlabel = gtk.Label()
+ self.refreshlabel.set_markup("\n<i>Note:</i> Change it at own risk!")
+ self.refreshlabel.set_alignment(0, 1.0)
+
+ self.webCamServer = gtk.HBox()
+ self.nserverport = gtk.Entry()
+ self.webCamServer.pack_start(gtk.Label(_("\nServer port:")), False)
+ self.nserverport.set_text(str(self.config.glob['webcamPort']))#number of serverport
+ self.webCamServer.pack_start(self.nserverport)
+
+ #fix the alignment of input field, and resize it too
+
+ self.webCamServerLabel = gtk.Label()
+ self.webCamServerLabel.set_markup("\n<i>Note:</i> You need one port opened to use webcam (MSN default port: 6891)")
+ self.webCamServerLabel.set_alignment(0, 1.0)
+
+ self.pack_start(self.refresh, False)
+ self.pack_start(self.refreshlabel, False)
+ self.pack_start(self.webCamServer, False)
+ self.pack_start(self.webCamServerLabel, False)
+ self.save()
+
+
+ def save(self):
+ self.config.glob['webcamPort'] = self.nserverport.get_text()
+ self.config.glob['msrefresh'] = self.msrefresh.get_text()
+
class DesktopTab(gtk.VBox):
'''A tab that lets the user override the detected desktop settings'''
@@ -195,7 +316,6 @@
self.config.glob['rgbaColormap'] = self.rgba.get_active()
self.urlSettings.save()
-
class UrlSettings(gtk.VBox):
def __init__(self, config):
gtk.VBox.__init__(self)
@@ -322,6 +442,7 @@
self.proxySettings.save()
+
class ThemesTab(gtk.VBox):
'''This class represent the tab that ...'''
@@ -617,6 +738,7 @@
mkcheck(self, 'showTabCloseButton', _('Show close button on _each tab'))
mkcheck(self, 'avatarsInUserList', _('Show _avatars'))
mkcheck(self, 'avatarsInTaskbar', _('Show avatars in task_bar'))
+ mkcheck(self, 'hideNewWindow', _('Hide new conversation window automatically'))
#mkcheck(self, 'showMailTyping', _('Show ma_il on "is typing" message'))
#mkcheck(self, 'disableEsc', _('Don\'t _close by pressing ESC'))
Index: ConversationManager.py
===================================================================
--- ConversationManager.py (revision 1342)
+++ ConversationManager.py (working copy)
@@ -128,11 +128,10 @@
# Gnome does not support calling iconify() before show() (?)
# so we call it before and after, other WMs may support it...
- if not weStarted:
+ if self.config.user['hideNewWindow']:
window.iconify()
window.show()
- if not weStarted:
- window.iconify()
+
conversation.setWindow(window)
window.set_icon(conversation.getWindowIcon())
Index: Config.py
===================================================================
--- Config.py (revision 1342)
+++ Config.py (working copy)
@@ -40,6 +40,11 @@
'lastLoggedAccount': '',
'rgbaColormap' : False,
'overrideDesktop' : '',
+
+ 'webcamPort' : 6891,
+ 'camLowQuality' : True,
+ 'camHightQuality' : False,
+ 'msrefresh' : 1000,
}
@@ -96,6 +101,7 @@
'showTabCloseButton' : True, # TODO: w/o signal
'avatarsInUserList' : True, # TODO: w/o signal
'avatarsInTaskbar' : False,
+ 'hideNewWindow' : True,
'showMailTyping' : True,
'showSendButton' : False,
@@ -113,7 +119,7 @@
'sendTyping' : True, # send the is typing notification to other clients
'useFancyLabel' : False,
'userListAvatarSize': 32,
-
+
'receivedFilesSortedByUser' : False,
'receivedFilesDir' : '~/',
'disableEsc' : False, # disable the esc key to close conversations
Index: emesenelib/p2p/transfers.py
===================================================================
--- emesenelib/p2p/transfers.py (revision 1342)
+++ emesenelib/p2p/transfers.py (working copy)
@@ -24,7 +24,9 @@
import base64
import struct
import gobject
+import Config
+
import socket, asyncore
from threading import Thread
@@ -829,8 +831,11 @@
print 'Got ReflData, connect to reflector?'
def get_viewer_xml(self, session, rid):
+
+ self.config = Config.Config()
+
ip = '<tcpipaddress1>%s</tcpipaddress1>' % self.external_ip
- port = '6891'
+ port = (str(self.config.glob['webcamport']))
xml = '<viewer>'
xml += '<version>2.0</version>'