Changeset 735

Show
Ignore:
Timestamp:
07/23/08 09:25:05 (4 months ago)
Author:
sylvain
Message:

Content area are now dockable widgets
Added a log handler and display the log in a textedit

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • oss/jlib/examples/basic/client.py

    r734 r735  
    1616     jlibNodeItem, jlibNodeItemModel 
    1717from jlib.gui.atom.entry import jlibAtomEntryForm 
     18from jlib.core.logger import jlibLogger, jlibLoggerComponent 
    1819 
    1920from clientui import Ui_MainWindow 
     
    3536        self.connection = None 
    3637 
     38        self.logger = jlibLogger() 
     39        self.logger.setComponent(jlibLoggerComponent()) 
     40        QtCore.QObject.connect(self.actionShowLog, QtCore.SIGNAL("toggled(bool)"), 
     41                               self.changeLogAreaView) 
     42        QtCore.QObject.connect(self.logger, QtCore.SIGNAL("logData(PyQt_PyObject)"), 
     43                               self.logData) 
     44 
    3745        self.toolBox.setItemText(0, "Contacts") 
    3846        self.contactUi = jlibContactWidget(parent=self.page) 
     
    5260        self.nodesUi = jlibPubSubNodeWidget(parent=self.page_4) 
    5361 
    54         #self.tabWidget.contextMenuEvent = self.contextEventOnTab 
     62    def changeLogAreaView(self, state): 
     63        if state: 
     64            self.logArea.show() 
     65        else: 
     66            self.logArea.hide() 
     67 
     68    def logData(self, data): 
     69        self.logArea.insertPlainText(data + '\n') 
     70        self.logArea.ensureCursorVisible() 
    5571 
    5672    def start(self): 
     
    5975        self.connection.emit(QtCore.SIGNAL("activateChat()")) 
    6076        self.connection.emit(QtCore.SIGNAL("activatePubSub(PyQt_PyObject)"), unicode(self.options.pubsub)) 
     77        self.connection.emit(QtCore.SIGNAL("registerLinkages(PyQt_PyObject)"), self.logger) 
    6178        self.connection.emit(QtCore.SIGNAL("registerLinkages(PyQt_PyObject)"), self.contactUi.contact) 
    6279        self.connection.emit(QtCore.SIGNAL("registerLinkages(PyQt_PyObject)"), self.contactUi.presence) 
     
    88105        host, port = self.options.address.rsplit(':', 1) 
    89106 
    90         self.dialog.connection.username.setText(self.options.username
    91         self.dialog.connection.password.setText(self.options.password
     107        self.dialog.connection.username.setText(self.options.username or ''
     108        self.dialog.connection.password.setText(self.options.password or ''
    92109        self.dialog.connection.domain.setText(self.options.domain or 'localhost') 
    93110        self.dialog.connection.resource.setText('Home') 
     
    172189 
    173190    def _openChat(self, contact_jid): 
    174         widget = QtGui.QWidget() 
     191        dock = QtGui.QDockWidget(QtCore.QString(str(contact_jid)), 
     192                                 self.centralwidget) 
     193        widget = QtGui.QWidget(dock) 
    175194        chatUi = jlibChatWidget(contact_jid, chat=self.connection.qobj.chat, 
    176195                                parent=widget) 
    177         #tab = self.tabWidget.addTab(widget, QtCore.QString(contact_jid)) 
    178         #self.tabWidget.setCurrentIndex(tab) 
    179  
    180         self.stackedWidget.addWidget(widget) 
     196        dock.setWidget(widget) 
     197        dock.setFloating(True) 
     198        dock.show() 
    181199 
    182200    def updatedItem(self, node_name, item_id, entry): 
     
    192210                if child.xml_ns == ATOM10_NS and child.xml_name == 'entry': 
    193211                    id_element = child.get_child('id', ATOM10_NS) 
    194                     widget = QtGui.QWidget() 
     212                    dock = QtGui.QDockWidget(QtCore.QString(str(id_element)), 
     213                                             self.centralwidget) 
     214                    widget = QtGui.QWidget(dock) 
    195215                    form = jlibAtomEntryForm(parent=widget) 
    196216                    form.setNode(node.node_name) 
    197217                    form.setEntry(child) 
    198                     #tab = self.tabWidget.addTab(widget, QtCore.QString(str(id_element))) 
    199                     #self.tabWidget.setCurrentIndex(tab) 
    200                     self.stackedWidget.addWidget(widget) 
     218                    dock.setWidget(widget) 
     219                    dock.setFloating(True) 
    201220 
    202221                    QtCore.QObject.connect(form, QtCore.SIGNAL("itemReady(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"), 
    203222                                           self.updatedItem) 
     223                    dock.show() 
    204224 
    205225def parse_commandline(): 
  • oss/jlib/examples/basic/clientui.py

    r734 r735  
    33# Form implementation generated from reading ui file 'mainwindow.ui' 
    44# 
    5 # Created: Tue Jul 22 22:44:23 2008 
    6 #      by: PyQt4 UI code generator 4.3.3 
     5# Created: Wed Jul 23 15:27:15 2008 
     6#      by: PyQt4 UI code generator 4.4.2 
    77# 
    88# WARNING! All changes made in this file will be lost! 
     
    1313    def setupUi(self, MainWindow): 
    1414        MainWindow.setObjectName("MainWindow") 
    15         MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,800,600).size()).expandedTo(MainWindow.minimumSizeHint())) 
    16  
     15        MainWindow.resize(604,444) 
    1716        self.centralwidget = QtGui.QWidget(MainWindow) 
     17        self.centralwidget.setGeometry(QtCore.QRect(0,19,604,406)) 
    1818        self.centralwidget.setObjectName("centralwidget") 
    19  
    20         self.hboxlayout = QtGui.QHBoxLayout(self.centralwidget) 
    21         self.hboxlayout.setObjectName("hboxlayout") 
    22  
     19        self.horizontalLayout = QtGui.QHBoxLayout(self.centralwidget) 
     20        self.horizontalLayout.setObjectName("horizontalLayout") 
    2321        self.splitter = QtGui.QSplitter(self.centralwidget) 
    2422        self.splitter.setOrientation(QtCore.Qt.Horizontal) 
    2523        self.splitter.setObjectName("splitter") 
    26  
    2724        self.toolBox = QtGui.QToolBox(self.splitter) 
    2825        self.toolBox.setObjectName("toolBox") 
    29  
    3026        self.page = QtGui.QWidget() 
    31         self.page.setGeometry(QtCore.QRect(0,0,94,24)) 
     27        self.page.setGeometry(QtCore.QRect(0,0,161,248)) 
    3228        self.page.setObjectName("page") 
    3329        self.toolBox.addItem(self.page,"") 
    34  
    3530        self.page_2 = QtGui.QWidget() 
    36         self.page_2.setGeometry(QtCore.QRect(0,0,94,24)) 
     31        self.page_2.setGeometry(QtCore.QRect(0,0,161,248)) 
    3732        self.page_2.setObjectName("page_2") 
    3833        self.toolBox.addItem(self.page_2,"") 
    39  
    4034        self.page_3 = QtGui.QWidget() 
    41         self.page_3.setGeometry(QtCore.QRect(0,0,94,24)) 
     35        self.page_3.setGeometry(QtCore.QRect(0,0,161,248)) 
    4236        self.page_3.setObjectName("page_3") 
    4337        self.toolBox.addItem(self.page_3,"") 
    44  
    4538        self.page_5 = QtGui.QWidget() 
    46         self.page_5.setGeometry(QtCore.QRect(0,0,184,376)) 
     39        self.page_5.setGeometry(QtCore.QRect(0,0,161,248)) 
    4740        self.page_5.setObjectName("page_5") 
    4841        self.toolBox.addItem(self.page_5,"") 
    49  
    5042        self.page_4 = QtGui.QWidget() 
    51         self.page_4.setGeometry(QtCore.QRect(0,0,94,24)) 
     43        self.page_4.setGeometry(QtCore.QRect(0,0,161,248)) 
    5244        self.page_4.setObjectName("page_4") 
    5345        self.toolBox.addItem(self.page_4,"") 
    54  
    55         self.stackedWidget = QtGui.QStackedWidget(self.splitter) 
    56         self.stackedWidget.setObjectName("stackedWidget") 
    57  
    58         self.page_6 = QtGui.QWidget() 
    59         self.page_6.setObjectName("page_6") 
    60         self.stackedWidget.addWidget(self.page_6) 
    61         self.hboxlayout.addWidget(self.splitter) 
     46        self.logArea = QtGui.QTextEdit(self.splitter) 
     47        self.logArea.setLineWrapMode(QtGui.QTextEdit.NoWrap) 
     48        self.logArea.setReadOnly(True) 
     49        self.logArea.setAcceptRichText(True) 
     50        self.logArea.setObjectName("logArea") 
     51        self.horizontalLayout.addWidget(self.splitter) 
    6252        MainWindow.setCentralWidget(self.centralwidget) 
    63  
    6453        self.menubar = QtGui.QMenuBar(MainWindow) 
    65         self.menubar.setGeometry(QtCore.QRect(0,0,800,27)) 
     54        self.menubar.setGeometry(QtCore.QRect(0,0,604,19)) 
    6655        self.menubar.setObjectName("menubar") 
    67  
    6856        self.menuJabber = QtGui.QMenu(self.menubar) 
    6957        self.menuJabber.setObjectName("menuJabber") 
    70  
    7158        self.menuConnection = QtGui.QMenu(self.menuJabber) 
    7259        self.menuConnection.setObjectName("menuConnection") 
     60        self.menuOptions = QtGui.QMenu(self.menubar) 
     61        self.menuOptions.setObjectName("menuOptions") 
    7362        MainWindow.setMenuBar(self.menubar) 
    74  
    7563        self.statusbar = QtGui.QStatusBar(MainWindow) 
     64        self.statusbar.setGeometry(QtCore.QRect(0,425,604,19)) 
    7665        self.statusbar.setObjectName("statusbar") 
    7766        MainWindow.setStatusBar(self.statusbar) 
    78  
    7967        self.actionSettings = QtGui.QAction(MainWindow) 
    8068        self.actionSettings.setObjectName("actionSettings") 
    81  
    8269        self.actionStart = QtGui.QAction(MainWindow) 
    8370        self.actionStart.setObjectName("actionStart") 
    84  
    8571        self.actionStop = QtGui.QAction(MainWindow) 
    8672        self.actionStop.setObjectName("actionStop") 
    87  
    8873        self.actionQuit = QtGui.QAction(MainWindow) 
    8974        self.actionQuit.setObjectName("actionQuit") 
     75        self.actionShowLog = QtGui.QAction(MainWindow) 
     76        self.actionShowLog.setCheckable(True) 
     77        self.actionShowLog.setChecked(True) 
     78        self.actionShowLog.setObjectName("actionShowLog") 
    9079        self.menuConnection.addAction(self.actionSettings) 
    9180        self.menuConnection.addSeparator() 
     
    9584        self.menuJabber.addSeparator() 
    9685        self.menuJabber.addAction(self.actionQuit) 
     86        self.menuOptions.addAction(self.actionShowLog) 
    9787        self.menubar.addAction(self.menuJabber.menuAction()) 
     88        self.menubar.addAction(self.menuOptions.menuAction()) 
    9889 
    9990        self.retranslateUi(MainWindow) 
    100         self.toolBox.setCurrentIndex(3
     91        self.toolBox.setCurrentIndex(0
    10192        QtCore.QMetaObject.connectSlotsByName(MainWindow) 
    10293 
    10394    def retranslateUi(self, MainWindow): 
    104         MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) 
     95        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "jlib demo", None, QtGui.QApplication.UnicodeUTF8)) 
    10596        self.toolBox.setItemText(self.toolBox.indexOf(self.page), QtGui.QApplication.translate("MainWindow", "Page 1", None, QtGui.QApplication.UnicodeUTF8)) 
    10697        self.toolBox.setItemText(self.toolBox.indexOf(self.page_2), QtGui.QApplication.translate("MainWindow", "Page 2", None, QtGui.QApplication.UnicodeUTF8)) 
     
    110101        self.menuJabber.setTitle(QtGui.QApplication.translate("MainWindow", "Jabber", None, QtGui.QApplication.UnicodeUTF8)) 
    111102        self.menuConnection.setTitle(QtGui.QApplication.translate("MainWindow", "Connection", None, QtGui.QApplication.UnicodeUTF8)) 
     103        self.menuOptions.setTitle(QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8)) 
    112104        self.actionSettings.setText(QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8)) 
    113105        self.actionStart.setText(QtGui.QApplication.translate("MainWindow", "Start", None, QtGui.QApplication.UnicodeUTF8)) 
    114106        self.actionStop.setText(QtGui.QApplication.translate("MainWindow", "Stop", None, QtGui.QApplication.UnicodeUTF8)) 
    115107        self.actionQuit.setText(QtGui.QApplication.translate("MainWindow", "Quit", None, QtGui.QApplication.UnicodeUTF8)) 
     108        self.actionShowLog.setText(QtGui.QApplication.translate("MainWindow", "Show log", None, QtGui.QApplication.UnicodeUTF8)) 
     109        self.actionShowLog.setToolTip(QtGui.QApplication.translate("MainWindow", "Display or hide the log window", None, QtGui.QApplication.UnicodeUTF8)) 
    116110 
  • oss/jlib/examples/basic/mainwindow.ui

    r734 r735  
    66    <x>0</x> 
    77    <y>0</y> 
    8     <width>800</width> 
    9     <height>600</height> 
     8    <width>604</width> 
     9    <height>444</height> 
    1010   </rect> 
    1111  </property> 
    1212  <property name="windowTitle" > 
    13    <string>MainWindow</string> 
     13   <string>jlib demo</string> 
    1414  </property> 
    1515  <widget class="QWidget" name="centralwidget" > 
    16    <layout class="QHBoxLayout" > 
     16   <property name="geometry" > 
     17    <rect> 
     18     <x>0</x> 
     19     <y>19</y> 
     20     <width>604</width> 
     21     <height>406</height> 
     22    </rect> 
     23   </property> 
     24   <layout class="QHBoxLayout" name="horizontalLayout" > 
    1725    <item> 
    1826     <widget class="QSplitter" name="splitter" > 
     
    2230      <widget class="QToolBox" name="toolBox" > 
    2331       <property name="currentIndex" > 
    24         <number>3</number> 
     32        <number>0</number> 
    2533       </property> 
    2634       <widget class="QWidget" name="page" > 
     
    2937          <x>0</x> 
    3038          <y>0</y> 
    31           <width>94</width> 
    32           <height>24</height> 
     39          <width>161</width> 
     40          <height>248</height> 
    3341         </rect> 
    3442        </property> 
     
    4250          <x>0</x> 
    4351          <y>0</y> 
    44           <width>94</width> 
    45           <height>24</height> 
     52          <width>161</width> 
     53          <height>248</height> 
    4654         </rect> 
    4755        </property> 
     
    5563          <x>0</x> 
    5664          <y>0</y> 
    57           <width>94</width> 
    58           <height>24</height> 
     65          <width>161</width> 
     66          <height>248</height> 
    5967         </rect> 
    6068        </property> 
     
    6876          <x>0</x> 
    6977          <y>0</y> 
    70           <width>182</width> 
    71           <height>376</height> 
     78          <width>161</width> 
     79          <height>248</height> 
    7280         </rect> 
    7381        </property> 
     
    8189          <x>0</x> 
    8290          <y>0</y> 
    83           <width>94</width> 
    84           <height>24</height> 
     91          <width>161</width> 
     92          <height>248</height> 
    8593         </rect> 
    8694        </property> 
     
    9098       </widget> 
    9199      </widget> 
    92       <widget class="QDockWidget" name="dockWidget" > 
    93        <widget class="QWidget" name="dockWidgetContents" /> 
     100      <widget class="QTextEdit" name="logArea" > 
     101       <property name="undoRedoEnabled" > 
     102        <bool>false</bool> 
     103       </property> 
     104       <property name="lineWrapMode" > 
     105        <enum>QTextEdit::NoWrap</enum> 
     106       </property> 
     107       <property name="readOnly" > 
     108        <bool>true</bool> 
     109       </property> 
     110       <property name="acceptRichText" > 
     111        <bool>true</bool> 
     112       </property> 
    94113      </widget> 
    95114     </widget> 
     
    102121     <x>0</x> 
    103122     <y>0</y> 
    104      <width>800</width> 
    105      <height>27</height> 
     123     <width>604</width> 
     124     <height>19</height> 
    106125    </rect> 
    107126   </property> 
     
    123142    <addaction name="actionQuit" /> 
    124143   </widget> 
     144   <widget class="QMenu" name="menuOptions" > 
     145    <property name="title" > 
     146     <string>Settings</string> 
     147    </property> 
     148    <addaction name="actionShowLog" /> 
     149   </widget> 
    125150   <addaction name="menuJabber" /> 
     151   <addaction name="menuOptions" /> 
    126152  </widget> 
    127   <widget class="QStatusBar" name="statusbar" /> 
     153  <widget class="QStatusBar" name="statusbar" > 
     154   <property name="geometry" > 
     155    <rect> 
     156     <x>0</x> 
     157     <y>425</y> 
     158     <width>604</width> 
     159     <height>19</height> 
     160    </rect> 
     161   </property> 
     162  </widget> 
    128163  <action name="actionSettings" > 
    129164   <property name="text" > 
     
    144179   <property name="text" > 
    145180    <string>Quit</string> 
     181   </property> 
     182  </action> 
     183  <action name="actionShowLog" > 
     184   <property name="checkable" > 
     185    <bool>true</bool> 
     186   </property> 
     187   <property name="checked" > 
     188    <bool>true</bool> 
     189   </property> 
     190   <property name="text" > 
     191    <string>Show log</string> 
     192   </property> 
     193   <property name="toolTip" > 
     194    <string>Display or hide the log window</string> 
    146195   </property> 
    147196  </action> 
  • oss/jlib/jlib/core/connection.py

    r721 r735  
    220220            if self.dataReady("unhandled"): 
    221221                msg = self.recv('unhandled') 
    222                 #self.send(('UNHANDLED', msg), 'log') 
     222                self.send(('UNHANDLED', msg), 'log') 
    223223                 
    224224            if self.dataReady("inbox"): 
  • oss/jlib/jlib/gui/contact.py

    r719 r735  
    117117        menu.addAction(actionSub) 
    118118 
    119         actionNewGroup = QtGui.QAction(QtCore.QString("Add a new group"), self.parent()) 
    120         QtCore.QObject.connect(actionNewGroup, QtCore.SIGNAL("triggered()"), self.createNewGroup) 
    121         menu.addAction(actionNewGroup) 
    122  
    123         actionChangeGroup = QtGui.QAction(QtCore.QString("Change group"), self.parent()) 
    124         QtCore.QObject.connect(actionChangeGroup, QtCore.SIGNAL("triggered()"), self.changeGroup) 
    125         menu.addAction(actionChangeGroup) 
     119        #actionNewGroup = QtGui.QAction(QtCore.QString("Add a new group"), self.parent()) 
     120        #QtCore.QObject.connect(actionNewGroup, QtCore.SIGNAL("triggered()"), self.createNewGroup) 
     121        #menu.addAction(actionNewGroup) 
    126122 
    127123        menu.exec_(event.globalPos())