Index: 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("Note: 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("\nNote: 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("\nNote: 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 = '%s' % self.external_ip - port = '6891' + port = (str(self.config.glob['webcamport'])) xml = '' xml += '2.0'