Changeset 737

Show
Ignore:
Timestamp:
07/24/08 10:37:02 (4 months ago)
Author:
sylvain
Message:

Extended and improved the Atom entry form

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • oss/jlib/designer/ui/atomentryform.ui

    r732 r737  
    66    <x>0</x> 
    77    <y>0</y> 
    8     <width>444</width> 
    9     <height>461</height> 
     8    <width>533</width> 
     9    <height>477</height> 
    1010   </rect> 
    1111  </property> 
     
    1313   <string>Form</string> 
    1414  </property> 
    15   <layout class="QGridLayout" > 
    16    <item row="0" column="0"
    17     <widget class="QLabel" name="label" > 
    18      <property name="text" > 
    19       <string>ID:</string
     15  <layout class="QVBoxLayout" name="verticalLayout_4" > 
     16   <item
     17    <widget class="QToolBox" name="toolBox" > 
     18     <property name="currentIndex" > 
     19      <number>0</number
    2020     </property> 
     21     <widget class="QWidget" name="generalItem" > 
     22      <attribute name="label" > 
     23       <string>General</string> 
     24      </attribute> 
     25      <layout class="QGridLayout" name="gridLayout" > 
     26       <item row="0" column="0" > 
     27        <widget class="QLabel" name="label" > 
     28         <property name="text" > 
     29          <string>ID:</string> 
     30         </property> 
     31        </widget> 
     32       </item> 
     33       <item row="0" column="1" colspan="2" > 
     34        <widget class="QLineEdit" name="atomID" /> 
     35       </item> 
     36       <item row="0" column="3" > 
     37        <widget class="QCheckBox" name="withUuid" > 
     38         <property name="text" > 
     39          <string>Generate UUID</string> 
     40         </property> 
     41        </widget> 
     42       </item> 
     43       <item row="1" column="0" > 
     44        <widget class="QLabel" name="label_2" > 
     45         <property name="text" > 
     46          <string>Title:</string> 
     47         </property> 
     48        </widget> 
     49       </item> 
     50       <item row="1" column="1" colspan="3" > 
     51        <widget class="QLineEdit" name="title" /> 
     52       </item> 
     53       <item row="2" column="0" > 
     54        <widget class="QLabel" name="label_4" > 
     55         <property name="text" > 
     56          <string>Subtitle:</string> 
     57         </property> 
     58        </widget> 
     59       </item> 
     60       <item row="2" column="1" colspan="3" > 
     61        <widget class="QLineEdit" name="subtitle" /> 
     62       </item> 
     63       <item row="3" column="0" > 
     64        <widget class="QLabel" name="label_3" > 
     65         <property name="text" > 
     66          <string>Publication:</string> 
     67         </property> 
     68        </widget> 
     69       </item> 
     70       <item row="3" column="1" > 
     71        <widget class="QDateTimeEdit" name="publication" /> 
     72       </item> 
     73       <item rowspan="2" row="3" column="2" colspan="2" > 
     74        <spacer name="horizontalSpacer" > 
     75         <property name="orientation" > 
     76          <enum>Qt::Horizontal</enum> 
     77         </property> 
     78         <property name="sizeHint" stdset="0" > 
     79          <size> 
     80           <width>268</width> 
     81           <height>20</height> 
     82          </size> 
     83         </property> 
     84        </spacer> 
     85       </item> 
     86       <item row="4" column="0" > 
     87        <widget class="QLabel" name="label_6" > 
     88         <property name="text" > 
     89          <string>Edition:</string> 
     90         </property> 
     91        </widget> 
     92       </item> 
     93       <item row="4" column="1" > 
     94        <widget class="QDateTimeEdit" name="edition" /> 
     95       </item> 
     96       <item row="5" column="0" > 
     97        <widget class="QLabel" name="label_7" > 
     98         <property name="text" > 
     99          <string>Rights:</string> 
     100         </property> 
     101        </widget> 
     102       </item> 
     103       <item row="5" column="1" colspan="3" > 
     104        <widget class="QLineEdit" name="rights" /> 
     105       </item> 
     106       <item row="6" column="0" > 
     107        <widget class="QLabel" name="label_5" > 
     108         <property name="text" > 
     109          <string>Summary:</string> 
     110         </property> 
     111        </widget> 
     112       </item> 
     113       <item row="7" column="0" colspan="4" > 
     114        <widget class="QTextEdit" name="summary" /> 
     115       </item> 
     116      </layout> 
     117     </widget> 
     118     <widget class="QWidget" name="authorItem" > 
     119      <property name="geometry" > 
     120       <rect> 
     121        <x>0</x> 
     122        <y>0</y> 
     123        <width>497</width> 
     124        <height>271</height> 
     125       </rect> 
     126      </property> 
     127      <attribute name="label" > 
     128       <string>Authors</string> 
     129      </attribute> 
     130      <layout class="QVBoxLayout" name="verticalLayout" > 
     131       <item> 
     132        <widget class="QTableView" name="authors" > 
     133         <property name="alternatingRowColors" > 
     134          <bool>true</bool> 
     135         </property> 
     136        </widget> 
     137       </item> 
     138      </layout> 
     139     </widget> 
     140     <widget class="QWidget" name="linkItem" > 
     141      <property name="geometry" > 
     142       <rect> 
     143        <x>0</x> 
     144        <y>0</y> 
     145        <width>497</width> 
     146        <height>271</height> 
     147       </rect> 
     148      </property> 
     149      <attribute name="label" > 
     150       <string>Links</string> 
     151      </attribute> 
     152      <layout class="QVBoxLayout" name="verticalLayout_2" > 
     153       <item> 
     154        <widget class="QTableView" name="links" > 
     155         <property name="alternatingRowColors" > 
     156          <bool>true</bool> 
     157         </property> 
     158        </widget> 
     159       </item> 
     160      </layout> 
     161     </widget> 
     162     <widget class="QWidget" name="categoryItem" > 
     163      <attribute name="label" > 
     164       <string>Categories</string> 
     165      </attribute> 
     166      <layout class="QVBoxLayout" name="verticalLayout_3" > 
     167       <item> 
     168        <widget class="QTableView" name="categories" > 
     169         <property name="alternatingRowColors" > 
     170          <bool>true</bool> 
     171         </property> 
     172        </widget> 
     173       </item> 
     174      </layout> 
     175     </widget> 
     176     <widget class="QWidget" name="contentItem" > 
     177      <attribute name="label" > 
     178       <string>Content</string> 
     179      </attribute> 
     180      <layout class="QVBoxLayout" name="verticalLayout_5" > 
     181       <item> 
     182        <widget class="QTextEdit" name="content" /> 
     183       </item> 
     184      </layout> 
     185     </widget> 
    21186    </widget> 
    22187   </item> 
    23    <item row="0" column="1" colspan="2" > 
    24     <widget class="QLineEdit" name="atomID" /> 
    25    </item> 
    26    <item row="1" column="0" > 
    27     <widget class="QLabel" name="label_2" > 
    28      <property name="text" > 
    29       <string>Title:</string> 
    30      </property> 
    31     </widget> 
    32    </item> 
    33    <item row="1" column="1" colspan="2" > 
    34     <widget class="QLineEdit" name="title" /> 
    35    </item> 
    36    <item row="2" column="0" colspan="2" > 
    37     <widget class="QLabel" name="label_3" > 
    38      <property name="text" > 
    39       <string>Authors:</string> 
    40      </property> 
    41     </widget> 
    42    </item> 
    43    <item rowspan="2" row="2" column="2" > 
    44     <widget class="QTableView" name="authors" > 
    45      <property name="alternatingRowColors" > 
    46       <bool>true</bool> 
    47      </property> 
    48     </widget> 
    49    </item> 
    50    <item row="3" column="0" colspan="2" > 
    51     <spacer> 
    52      <property name="orientation" > 
    53       <enum>Qt::Vertical</enum> 
    54      </property> 
    55      <property name="sizeHint" > 
    56       <size> 
    57        <width>20</width> 
    58        <height>121</height> 
    59       </size> 
    60      </property> 
    61     </spacer> 
    62    </item> 
    63    <item row="4" column="0" colspan="2" > 
    64     <widget class="QLabel" name="label_4" > 
    65      <property name="text" > 
    66       <string>Links:</string> 
    67      </property> 
    68     </widget> 
    69    </item> 
    70    <item rowspan="2" row="4" column="2" > 
    71     <widget class="QTableView" name="links" > 
    72      <property name="alternatingRowColors" > 
    73       <bool>true</bool> 
    74      </property> 
    75     </widget> 
    76    </item> 
    77    <item row="5" column="0" colspan="2" > 
    78     <spacer> 
    79      <property name="orientation" > 
    80       <enum>Qt::Vertical</enum> 
    81      </property> 
    82      <property name="sizeHint" > 
    83       <size> 
    84        <width>20</width> 
    85        <height>41</height> 
    86       </size> 
    87      </property> 
    88     </spacer> 
    89    </item> 
    90    <item row="6" column="0" colspan="2" > 
    91     <widget class="QLabel" name="label_5" > 
    92      <property name="text" > 
    93       <string>Categories:</string> 
    94      </property> 
    95     </widget> 
    96    </item> 
    97    <item rowspan="2" row="6" column="2" > 
    98     <widget class="QTableView" name="categories" > 
    99      <property name="alternatingRowColors" > 
    100       <bool>true</bool> 
    101      </property> 
    102     </widget> 
    103    </item> 
    104    <item row="7" column="0" colspan="2" > 
    105     <spacer> 
    106      <property name="orientation" > 
    107       <enum>Qt::Vertical</enum> 
    108      </property> 
    109      <property name="sizeHint" > 
    110       <size> 
    111        <width>20</width> 
    112        <height>81</height> 
    113       </size> 
    114      </property> 
    115     </spacer> 
    116    </item> 
    117    <item row="8" column="2" > 
     188   <item> 
    118189    <widget class="QDialogButtonBox" name="buttonBox" > 
    119190     <property name="standardButtons" > 
  • oss/jlib/jlib/gui/atom/entry.py

    r734 r737  
    2020    def setupUi(self, parent): 
    2121        Ui_jlibAtomEntryForm.setupUi(self, parent) 
     22        self.authors.contextMenuEvent = self.authorsContextMenuEvent 
     23         
    2224        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), 
    2325                               self.saveEntry) 
     26        QtCore.QObject.connect(self.withUuid, QtCore.SIGNAL("stateChanged(int)"), 
     27                               self.uuidToggle) 
     28 
     29        self.publication.setDateTime(QtCore.QDateTime.currentDateTime()) 
     30        self.edition.setDateTime(QtCore.QDateTime.currentDateTime()) 
    2431 
    2532    def setNode(self, node): 
     
    3037        E(u'id', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
    3138          content=unicode(self.atomID.text()), parent=entry) 
    32         date = unicode(datetime.datetime.utcnow().isoformat()) + u'Z' 
     39 
    3340        E(u'published', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
    34           content=date, parent=entry) 
     41          content=unicode(self.publication.dateTime().toString(QtCore.Qt.ISODate)), 
     42          parent=entry) 
     43         
    3544        E(u'updated', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
    36           content=date, parent=entry) 
     45          content=unicode(self.edition.dateTime().toString(QtCore.Qt.ISODate)), 
     46          parent=entry) 
     47         
    3748        E(u'title', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
    38           attributes={u'type': u'text'}, content=unicode(self.title.text()), parent=entry) 
     49          attributes={u'type': u'text'}, content=unicode(self.title.text()), 
     50          parent=entry) 
     51 
     52        if not self.subtitle.text().isEmpty(): 
     53            E(u'subtitle', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
     54              attributes={u'type': u'text'}, content=unicode(self.subtitle.text()), 
     55              parent=entry) 
     56 
     57        if not self.rights.text().isEmpty(): 
     58            E(u'rights', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
     59              attributes={u'type': u'text'}, content=unicode(self.rights.text()), 
     60              parent=entry) 
     61             
     62        if not self.summary.toPlainText().isEmpty(): 
     63            E(u'summary', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
     64              attributes={u'type': u'text'}, content=unicode(self.summary.toPlainText()), 
     65              parent=entry) 
     66 
    3967        E(u'content', namespace=ATOM10_NS, prefix=ATOM10_PREFIX, 
    40           attributes={u'type': u'text'}, parent=entry) 
     68          attributes={u'type': u'text'}, content=unicode(self.content.toPlainText()), 
     69          parent=entry) 
    4170 
    4271        self.entry = entry 
     
    5382            self.title.setText(QtCore.QString(str(title_element))) 
    5483 
     84        subtitle_element = entry.get_child('subtitle', ATOM10_NS) 
     85        if subtitle_element and subtitle_element.xml_text: 
     86            self.subtitle.setText(QtCore.QString(str(subtitle_element))) 
     87 
     88        rights_element = entry.get_child('rights', ATOM10_NS) 
     89        if rights_element and rights_element.xml_text: 
     90            self.rights.setText(QtCore.QString(str(rights_element))) 
     91 
     92        summary_element = entry.get_child('summary', ATOM10_NS) 
     93        if summary_element and summary_element.xml_text: 
     94            self.summary.setPlainText(QtCore.QString(str(summary_element))) 
     95 
     96        content_element = entry.get_child('content', ATOM10_NS) 
     97        if content_element and content_element.xml_text: 
     98            self.content.setPlainText(QtCore.QString(str(content_element))) 
     99 
     100        published_element = entry.get_child('published', ATOM10_NS) 
     101        if published_element and published_element.xml_text: 
     102            dt = QtCore.QDateTime.fromString(str(published_element), QtCore.Qt.ISODate) 
     103            self.publication.setDateTime(dt) 
     104 
     105        updated_element = entry.get_child('updated', ATOM10_NS) 
     106        if updated_element and updated_element.xml_text: 
     107            dt = QtCore.QDateTime.fromString(str(updated_element), QtCore.Qt.ISODate) 
     108            self.edition.setDateTime(dt) 
     109 
    55110        authors = entry.get_children('author', ATOM10_NS) 
    56111        model = jlibAtomAuthorModel(parent=self.authors) 
     
    64119        self.links.setModel(model) 
    65120        self.links.verticalHeader().hide() 
     121 
     122        self.publication.setEnabled(False) 
     123        self.withUuid.hide() 
    66124 
    67125    def saveEntry(self): 
     
    77135        self.emit(QtCore.SIGNAL("itemReady(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"), 
    78136                  self.node, id_element.xml_text, self.entry) 
     137 
     138    def uuidToggle(self, state): 
     139        if self.withUuid.isChecked(): 
     140            uuid = str(QtCore.QUuid.createUuid().toString()).replace('{', '').replace('}', '') 
     141            self.atomID.setText('urn:uuid:%s' % uuid) 
     142            self.atomID.setReadOnly(True) 
     143            self.atomID.setEnabled(False) 
     144        else: 
     145            self.atomID.setText('') 
     146            self.atomID.setReadOnly(False) 
     147            self.atomID.setEnabled(True) 
     148 
     149    def addNewAuthor(self): 
     150        pass 
     151 
     152    def delAuthor(self): 
     153        pass 
     154 
     155    def authorsContextMenuEvent(self, event): 
     156        menu = QtGui.QMenu(self.parent()) 
     157 
     158        actionNewAuthor = QtGui.QAction(QtCore.QString("Add a new author"), self.parent()) 
     159        QtCore.QObject.connect(actionNewAuthor, QtCore.SIGNAL("triggered()"), self.addNewAuthor) 
     160        menu.addAction(actionNewAuthor) 
     161 
     162        actionDelAuthor = QtGui.QAction(QtCore.QString("Delete author"), self.parent()) 
     163        QtCore.QObject.connect(actionDelAuthor, QtCore.SIGNAL("triggered()"), self.delAuthor) 
     164        menu.addAction(actionDelAuthor) 
     165 
     166        menu.exec_(event.globalPos()) 
    79167                      
    80168class jlibAtomEntryFormDialog(QtGui.QDialog):   
  • oss/jlib/jlib/gui/atom/entryui.py

    r727 r737  
    11# -*- coding: utf-8 -*- 
    22 
    3 # Form implementation generated from reading ui file 'designer/ui/atomentryform.ui' 
     3# Form implementation generated from reading ui file '..\..\designer\ui\atomentryform.ui' 
    44# 
    5 # Created: Sun Jul 20 19:50:13 2008 
    6 #      by: PyQt4 UI code generator 4.3.3 
     5# Created: Thu Jul 24 15:25:35 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, jlibAtomEntryForm): 
    1414        jlibAtomEntryForm.setObjectName("jlibAtomEntryForm") 
    15         jlibAtomEntryForm.resize(QtCore.QSize(QtCore.QRect(0,0,444,461).size()).expandedTo(jlibAtomEntryForm.minimumSizeHint())) 
    16  
    17         self.gridlayout = QtGui.QGridLayout(jlibAtomEntryForm) 
    18         self.gridlayout.setObjectName("gridlayout") 
    19  
    20         self.label = QtGui.QLabel(jlibAtomEntryForm) 
     15        jlibAtomEntryForm.resize(533,477) 
     16        self.verticalLayout_4 = QtGui.QVBoxLayout(jlibAtomEntryForm) 
     17        self.verticalLayout_4.setObjectName("verticalLayout_4") 
     18        self.toolBox = QtGui.QToolBox(jlibAtomEntryForm) 
     19        self.toolBox.setObjectName("toolBox") 
     20        self.generalItem = QtGui.QWidget() 
     21        self.generalItem.setObjectName("generalItem") 
     22        self.gridLayout = QtGui.QGridLayout(self.generalItem) 
     23        self.gridLayout.setObjectName("gridLayout") 
     24        self.label = QtGui.QLabel(self.generalItem) 
    2125        self.label.setObjectName("label") 
    22         self.gridlayout.addWidget(self.label,0,0,1,1) 
    23  
    24         self.atomID = QtGui.QLineEdit(jlibAtomEntryForm) 
     26        self.gridLayout.addWidget(self.label,0,0,1,1) 
     27        self.atomID = QtGui.QLineEdit(self.generalItem) 
    2528        self.atomID.setObjectName("atomID") 
    26         self.gridlayout.addWidget(self.atomID,0,1,1,2) 
    27  
    28         self.label_2 = QtGui.QLabel(jlibAtomEntryForm) 
     29        self.gridLayout.addWidget(self.atomID,0,1,1,2) 
     30        self.withUuid = QtGui.QCheckBox(self.generalItem) 
     31        self.withUuid.setObjectName("withUuid") 
     32        self.gridLayout.addWidget(self.withUuid,0,3,1,1) 
     33        self.label_2 = QtGui.QLabel(self.generalItem) 
    2934        self.label_2.setObjectName("label_2") 
    30         self.gridlayout.addWidget(self.label_2,1,0,1,1) 
    31  
    32         self.title = QtGui.QLineEdit(jlibAtomEntryForm) 
     35        self.gridLayout.addWidget(self.label_2,1,0,1,1) 
     36        self.title = QtGui.QLineEdit(self.generalItem) 
    3337        self.title.setObjectName("title") 
    34         self.gridlayout.addWidget(self.title,1,1,1,2) 
    35  
    36         self.label_3 = QtGui.QLabel(jlibAtomEntryForm) 
     38        self.gridLayout.addWidget(self.title,1,1,1,3) 
     39        self.label_4 = QtGui.QLabel(self.generalItem) 
     40        self.label_4.setObjectName("label_4") 
     41        self.gridLayout.addWidget(self.label_4,2,0,1,1) 
     42        self.subtitle = QtGui.QLineEdit(self.generalItem) 
     43        self.subtitle.setObjectName("subtitle") 
     44        self.gridLayout.addWidget(self.subtitle,2,1,1,3) 
     45        self.label_3 = QtGui.QLabel(self.generalItem) 
    3746        self.label_3.setObjectName("label_3") 
    38         self.gridlayout.addWidget(self.label_3,2,0,1,2) 
    39  
    40         self.authors = QtGui.QTableView(jlibAtomEntryForm) 
     47        self.gridLayout.addWidget(self.label_3,3,0,1,1) 
     48        self.publication = QtGui.QDateTimeEdit(self.generalItem) 
     49        self.publication.setObjectName("publication") 
     50        self.gridLayout.addWidget(self.publication,3,1,1,1) 
     51        spacerItem = QtGui.QSpacerItem(268,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum) 
     52        self.gridLayout.addItem(spacerItem,3,2,2,2) 
     53        self.label_6 = QtGui.QLabel(self.generalItem) 
     54        self.label_6.setObjectName("label_6") 
     55        self.gridLayout.addWidget(self.label_6,4,0,1,1) 
     56        self.edition = QtGui.QDateTimeEdit(self.generalItem) 
     57        self.edition.setObjectName("edition") 
     58        self.gridLayout.addWidget(self.edition,4,1,1,1) 
     59        self.label_7 = QtGui.QLabel(self.generalItem) 
     60        self.label_7.setObjectName("label_7") 
     61        self.gridLayout.addWidget(self.label_7,5,0,1,1) 
     62        self.rights = QtGui.QLineEdit(self.generalItem) 
     63        self.rights.setObjectName("rights") 
     64        self.gridLayout.addWidget(self.rights,5,1,1,3) 
     65        self.label_5 = QtGui.QLabel(self.generalItem) 
     66        self.label_5.setObjectName("label_5") 
     67        self.gridLayout.addWidget(self.label_5,6,0,1,1) 
     68        self.summary = QtGui.QTextEdit(self.generalItem) 
     69        self.summary.setObjectName("summary") 
     70        self.gridLayout.addWidget(self.summary,7,0,1,4) 
     71        self.toolBox.addItem(self.generalItem,"") 
     72        self.authorItem = QtGui.QWidget() 
     73        self.authorItem.setGeometry(QtCore.QRect(0,0,497,271)) 
     74        self.authorItem.setObjectName("authorItem") 
     75        self.verticalLayout = QtGui.QVBoxLayout(self.authorItem) 
     76        self.verticalLayout.setObjectName("verticalLayout") 
     77        self.authors = QtGui.QTableView(self.authorItem) 
    4178        self.authors.setAlternatingRowColors(True) 
    4279        self.authors.setObjectName("authors") 
    43         self.gridlayout.addWidget(self.authors,2,2,2,1) 
    44  
    45         spacerItem = QtGui.QSpacerItem(20,121,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding) 
    46         self.gridlayout.addItem(spacerItem,3,0,1,2) 
    47  
    48         self.label_4 = QtGui.QLabel(jlibAtomEntryForm) 
    49         self.label_4.setObjectName("label_4") 
    50         self.gridlayout.addWidget(self.label_4,4,0,1,2) 
    51  
    52         self.links = QtGui.QTableView(jlibAtomEntryForm) 
     80        self.verticalLayout.addWidget(self.authors) 
     81        self.toolBox.addItem(self.authorItem,"") 
     82        self.linkItem = QtGui.QWidget() 
     83        self.linkItem.setGeometry(QtCore.QRect(0,0,497,271)) 
     84        self.linkItem.setObjectName("linkItem") 
     85        self.verticalLayout_2 = QtGui.QVBoxLayout(self.linkItem) 
     86        self.verticalLayout_2.setObjectName("verticalLayout_2") 
     87        self.links = QtGui.QTableView(self.linkItem) 
    5388        self.links.setAlternatingRowColors(True) 
    5489        self.links.setObjectName("links") 
    55         self.gridlayout.addWidget(self.links,4,2,2,1) 
    56  
    57         spacerItem1 = QtGui.QSpacerItem(20,41,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding) 
    58         self.gridlayout.addItem(spacerItem1,5,0,1,2) 
    59  
    60         self.label_5 = QtGui.QLabel(jlibAtomEntryForm) 
    61         self.label_5.setObjectName("label_5") 
    62         self.gridlayout.addWidget(self.label_5,6,0,1,2) 
    63  
    64         self.categories = QtGui.QTableView(jlibAtomEntryForm) 
     90        self.verticalLayout_2.addWidget(self.links) 
     91        self.toolBox.addItem(self.linkItem,"") 
     92        self.categoryItem = QtGui.QWidget() 
     93        self.categoryItem.setObjectName("categoryItem") 
     94        self.verticalLayout_3 = QtGui.QVBoxLayout(self.categoryItem) 
     95        self.verticalLayout_3.setObjectName("verticalLayout_3") 
     96        self.categories = QtGui.QTableView(self.categoryItem) 
    6597        self.categories.setAlternatingRowColors(True) 
    6698        self.categories.setObjectName("categories") 
    67         self.gridlayout.addWidget(self.categories,6,2,2,1) 
    68  
    69         spacerItem2 = QtGui.QSpacerItem(20,81,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding) 
    70         self.gridlayout.addItem(spacerItem2,7,0,1,2) 
    71  
     99        self.verticalLayout_3.addWidget(self.categories) 
     100        self.toolBox.addItem(self.categoryItem,"") 
     101        self.contentItem = QtGui.QWidget() 
     102        self.contentItem.setObjectName("contentItem") 
     103        self.verticalLayout_5 = QtGui.QVBoxLayout(self.contentItem) 
     104        self.verticalLayout_5.setObjectName("verticalLayout_5") 
     105        self.content = QtGui.QTextEdit(self.contentItem) 
     106        self.content.setObjectName("content") 
     107        self.verticalLayout_5.addWidget(self.content) 
     108        self.toolBox.addItem(self.contentItem,"") 
     109        self.verticalLayout_4.addWidget(self.toolBox) 
    72110        self.buttonBox = QtGui.QDialogButtonBox(jlibAtomEntryForm) 
    73111        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Save) 
    74112        self.buttonBox.setObjectName("buttonBox") 
    75         self.gridlayout.addWidget(self.buttonBox,8,2,1,1
     113        self.verticalLayout_4.addWidget(self.buttonBox
    76114 
    77115        self.retranslateUi(jlibAtomEntryForm) 
     116        self.toolBox.setCurrentIndex(0) 
    78117        QtCore.QMetaObject.connectSlotsByName(jlibAtomEntryForm) 
    79118 
     
    81120        jlibAtomEntryForm.setWindowTitle(QtGui.QApplication.translate("jlibAtomEntryForm", "Form", None, QtGui.QApplication.UnicodeUTF8)) 
    82121        self.label.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "ID:", None, QtGui.QApplication.UnicodeUTF8)) 
     122        self.withUuid.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Generate UUID", None, QtGui.QApplication.UnicodeUTF8)) 
    83123        self.label_2.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Title:", None, QtGui.QApplication.UnicodeUTF8)) 
    84         self.label_3.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Authors:", None, QtGui.QApplication.UnicodeUTF8)) 
    85         self.label_4.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Links:", None, QtGui.QApplication.UnicodeUTF8)) 
    86         self.label_5.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Categories:", None, QtGui.QApplication.UnicodeUTF8)) 
     124        self.label_4.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Subtitle:", None, QtGui.QApplication.UnicodeUTF8)) 
     125        self.label_3.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Publication:", None, QtGui.QApplication.UnicodeUTF8)) 
     126        self.label_6.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Edition:", None, QtGui.QApplication.UnicodeUTF8)) 
     127        self.label_7.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Rights:", None, QtGui.QApplication.UnicodeUTF8)) 
     128        self.label_5.setText(QtGui.QApplication.translate("jlibAtomEntryForm", "Summary:", None, QtGui.QApplication.UnicodeUTF8)) 
     129        self.toolBox.setItemText(self.toolBox.indexOf(self.generalItem), QtGui.QApplication.translate("jlibAtomEntryForm", "General", None, QtGui.QApplication.UnicodeUTF8)) 
     130        self.toolBox.setItemText(self.toolBox.indexOf(self.authorItem), QtGui.QApplication.translate("jlibAtomEntryForm", "Authors", None, QtGui.QApplication.UnicodeUTF8)) 
     131        self.toolBox.setItemText(self.toolBox.indexOf(self.linkItem), QtGui.QApplication.translate("jlibAtomEntryForm", "Links", None, QtGui.QApplication.UnicodeUTF8)) 
     132        self.toolBox.setItemText(self.toolBox.indexOf(self.categoryItem), QtGui.QApplication.translate("jlibAtomEntryForm", "Categories", None, QtGui.QApplication.UnicodeUTF8)) 
     133        self.toolBox.setItemText(self.toolBox.indexOf(self.contentItem), QtGui.QApplication.translate("jlibAtomEntryForm", "Content", None, QtGui.QApplication.UnicodeUTF8)) 
    87134 
  • oss/jlib/jlib/gui/pubsub/node.py

    r733 r737  
    55from jlib.gui.pubsub.createnodedialog import jlibCreateNodeDialog 
    66from jlib.gui.atom.entry import jlibAtomEntryFormDialog 
     7from jlib.core.pubsub import jlibNodeItem, jlibNodeItemItem 
    78 
    89__all__ = ['jlibPubSubNodeWidget'] 
     
    1718 
    1819        self.nodes.contextMenuEvent = self.contextMenuEvent 
    19         QtCore.QObject.connect(self.nodes, QtCore.SIGNAL("clicked(QModelIndex)"), self.clicked) 
     20        QtCore.QObject.connect(self.nodes, QtCore.SIGNAL("activated(QModelIndex)"), 
     21                               self.activated) 
    2022 
    2123    def setPubSub(self, pubsub): 
     
    2325        QtCore.QObject.connect(self.pubsub, QtCore.SIGNAL("receivedError(PyQt_PyObject)"), 
    2426                               self.handleError) 
    25  
    26     def setNode(self, node): 
    27         self.node = node 
    2827 
    2928    def setModel(self, model): 
     
    4544        dialog = jlibAtomEntryFormDialog() 
    4645        if dialog.exec_() == QtGui.QDialog.Accepted: 
     46            model = self.nodes.model() 
     47            index = self.nodes.currentIndex() 
     48            item = model.itemFromIndex(index) 
     49         
    4750            self.pubsub.emit(QtCore.SIGNAL("publishItem(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"),  
    48                              self.node, unicode(dialog.form.atomID.text()), dialog.form.entry) 
     51                             item.node, unicode(dialog.form.atomID.text()), dialog.form.entry) 
    4952 
    5053    def deleteItem(self): 
    5154        model = self.nodes.model() 
    5255        index = self.nodes.currentIndex() 
    53         item = model.getNodeItem(index) 
     56        item = model.itemFromIndex(index) 
    5457        self.pubsub.emit(QtCore.SIGNAL("deleteItem(PyQt_PyObject, PyQt_PyObject)"), 
    55                          item.node_item.node, item.node_item.name) 
     58                         item.item.node, item.item.name) 
    5659 
    57     def clicked(self, index): 
     60    def purgeNode(self): 
    5861        model = self.nodes.model() 
    59         item = model.getNodeItem(index) 
     62        index = self.nodes.currentIndex() 
     63        item = model.itemFromIndex(index) 
     64        self.pubsub.emit(QtCore.SIGNAL("purgeCollectionNode(PyQt_PyObject)"), item.node) 
     65         
     66    def activated(self, index): 
     67        model = self.nodes.model() 
     68        item = model.itemFromIndex(index) 
    6069        self.pubsub.emit(QtCore.SIGNAL("retrieveItem(PyQt_PyObject, PyQt_PyObject)"), 
    61                          item.node_item.node, item.node_item.name) 
     70                         item.item.node, item.item.name) 
    6271 
    6372    def contextMenuEvent(self, event): 
    64         menu = QtGui.QMenu(self.parent()) 
     73        event.ignore() 
     74        model = self.nodes.model() 
     75        index = self.nodes.currentIndex() 
     76        item = model.itemFromIndex(index) 
    6577 
    66         publishMenu = QtGui.QMenu(menu) 
    67         publishMenu.setTitle(QtCore.QString("Publish")) 
     78        if item.type() == jlibNodeItem.TYPE: 
     79            menu = QtGui.QMenu(self.parent()) 
     80            publishMenu = QtGui.QMenu(menu) 
     81            publishMenu.setTitle(QtCore.QString("Publish")) 
     82             
     83            actionPublishAtomEntry = QtGui.QAction(QtCore.QString("Atom Entry"), self.parent()) 
     84            QtCore.QObject.connect(actionPublishAtomEntry, QtCore.SIGNAL("triggered()"), 
     85                                   self.publishAtomEntry) 
     86            publishMenu.addAction(actionPublishAtomEntry) 
     87 
     88            actionPurgeNode = QtGui.QAction(QtCore.QString("Purge node"), self.parent()) 
     89            QtCore.QObject.connect(actionPurgeNode, QtCore.SIGNAL("triggered()"), self.purgeNode) 
     90            menu.addAction(actionPurgeNode) 
     91 
     92            menu.addAction(publishMenu.menuAction()) 
     93            menu.exec_(event.globalPos()) 
     94        elif item.type() == jlibNodeItemItem.TYPE: 
     95            menu = QtGui.QMenu(self.parent()) 
     96            actionDeleteItem = QtGui.QAction(QtCore.QString("Delete item"), self.parent()) 
     97            QtCore.QObject.connect(actionDeleteItem, QtCore.SIGNAL("triggered()"), 
     98                                   self.deleteItem) 
     99            menu.addAction(actionDeleteItem) 
     100            menu.exec_(event.globalPos()) 
     101 
    68102         
    69         actionPublishAtomEntry = QtGui.QAction(QtCore.QString("Atom Entry"), self.parent()) 
    70         QtCore.QObject.connect(actionPublishAtomEntry, QtCore.SIGNAL("triggered()"), 
    71                                self.publishAtomEntry) 
    72         publishMenu.addAction(actionPublishAtomEntry) 
    73  
    74         menu.addAction(publishMenu.menuAction()) 
    75  
    76         actionDeleteItem = QtGui.QAction(QtCore.QString("Delete item"), self.parent()) 
    77         QtCore.QObject.connect(actionDeleteItem, QtCore.SIGNAL("triggered()"), 
    78                                self.deleteItem) 
    79         menu.addAction(actionDeleteItem) 
    80  
    81         menu.exec_(event.globalPos())