예제 #1
0
파일: main.py 프로젝트: payload/blain
 def updateMessageView(self, maxcount = 0):
     maxcount = maxcount or 200
     mt = self.ui.messageTable
     items = [ (n, str(i.text(1)), mt.itemWidget(i, 0), i)
               for n, i in enumerate(map(lambda n:mt.topLevelItem(n),
                           range(mt.topLevelItemCount()))) ]
     pids = [ str(item[2].id.text()) for item in items ]
     olditems = list(items)
     olds = list(pids)
     n = 0
     self.app.icons.avatar_cache = {}
     messages = self.app.db.get_messages_from_cache(maxcount)
     print "* update message view", len(messages)
     for _blob in messages:
         blob = prepare_post(_blob.__dict__)
         if str(blob.pid) in olds:
             i = olds.index(str(blob.pid))
             olditems.pop(i)
             olds.pop(i)
         if str(blob.pid) not in pids:
             pids.append(blob.pid)
             msg, time = self.build_message_item(blob)
             i = QTreeWidgetItem(mt)
             i.setText(1, time)
             mt.setItemWidget(i, 0, msg)
     # now remove the too old ones
     items.sort(key=lambda i:i[1])
     for old in list(reversed(items))[maxcount-1:] + olditems:
         mt.removeItemWidget(old[3], 0)
         item = old[2]
         del item
예제 #2
0
    def __init__(self, parent, name=None):
        QTreeWidgetItem.__init__(self)

        self.filterList = ('mmp', 'MMP')

        if isinstance(parent, QListView):
            self.p = None
            if name:
                self.f = name
            else:
                self.f = '/'
        else:
            self.p = parent
            self.f = name

        self.readable = QDir(self.fullName()).isReadable()

        if not self.readable:
            self.setIcon(0, folderLockedIcon)
        else:
            self.setIcon(0, folderClosedIcon)
        if name is not None:
            self.setText(1, name)
        if isinstance(parent, QTreeWidget):
            parent.addTopLevelItem(self)
        else:
            parent.addChild(self)
예제 #3
0
    def setup_ui(self):
        self.l = l = QVBoxLayout(self)
        self.setLayout(l)

        self.msg = m = QLabel(
            self.msg
            or _('Choose the folder into which the files will be placed'))
        l.addWidget(m)
        m.setWordWrap(True)

        self.folders = f = QTreeWidget(self)
        f.setHeaderHidden(True)
        f.itemDoubleClicked.connect(self.accept)
        l.addWidget(f)
        f.setContextMenuPolicy(Qt.CustomContextMenu)
        f.customContextMenuRequested.connect(self.show_context_menu)
        self.root = QTreeWidgetItem(f, ('/', ))

        def process(node, parent):
            parent.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for child in sorted(node, key=sort_key):
                c = QTreeWidgetItem(parent, (child, ))
                process(node[child], c)

        process(create_folder_tree(current_container()), self.root)
        self.root.setSelected(True)
        f.expandAll()

        l.addWidget(self.bb)
예제 #4
0
    def __init__(self, parent, name=None):
        QTreeWidgetItem.__init__(self)
        
        self.filterList = ('mmp', 'MMP')
        
        if isinstance(parent, QListView):
            self.p = None
            if name:
                self.f = name
            else:
                self.f = '/'
        else:
            self.p = parent
            self.f = name
            
        self.readable = QDir( self.fullName() ).isReadable()

        if  not self.readable :
            self.setIcon(0, folderLockedIcon)
        else:
            self.setIcon(0, folderClosedIcon)
        if name is not None:
            self.setText(1, name)
        if isinstance(parent, QTreeWidget):
            parent.addTopLevelItem(self)
        else:
            parent.addChild(self)
예제 #5
0
 def create_item(self, parent, child, idx=-1):
     if idx == -1:
         c = QTreeWidgetItem(parent)
     else:
         c = QTreeWidgetItem()
         parent.insertChild(idx, c)
     self.populate_item(c, child)
     return c
예제 #6
0
    def __init__(self, parent, fio, name=None):
        QTreeWidgetItem.__init__(self)
        parent.addChild(self)
        if name is not None:
            self.setText(1, name)

        self.f = name
        self.fileObj = fio
예제 #7
0
 def __init__(self, parent, fio, name=None):
     QTreeWidgetItem.__init__(self)
     parent.addChild(self)
     if name is not None:
         self.setText(1, name)
     
     self.f = name
     self.fileObj = fio
예제 #8
0
 def create_folder(self, item):
     text, ok = QInputDialog.getText(self, _('Folder name'), _('Enter a name for the new folder'))
     if ok and unicode(text):
         c = QTreeWidgetItem(item, (unicode(text),))
         c.setIcon(0, QIcon(I('mimetypes/dir.png')))
         for item in self.folders.selectedItems():
             item.setSelected(False)
         c.setSelected(True)
         self.folders.setCurrentItem(c)
예제 #9
0
    def process_duplicates(self, db, duplicates):
        ta = _('%(title)s by %(author)s')
        bf = QFont(self.dup_list.font())
        bf.setBold(True)
        itf = QFont(self.dup_list.font())
        itf.setItalic(True)

        for mi, cover, formats in duplicates:
            item = QTreeWidgetItem([ta%dict(
                title=mi.title, author=mi.format_field('authors')[1])] , 0)
            item.setCheckState(0, Qt.Checked)
            item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsUserCheckable)
            item.setData(0, Qt.FontRole, bf)
            item.setData(0, Qt.UserRole, (mi, cover, formats))
            matching_books = db.books_with_same_title(mi)

            def add_child(text):
                c = QTreeWidgetItem([text], 1)
                c.setFlags(Qt.ItemIsEnabled)
                item.addChild(c)
                return c

            add_child(_('Already in calibre:')).setData(0, Qt.FontRole, itf)

            for book_id in matching_books:
                aut = [a.replace('|', ',') for a in (db.authors(book_id,
                    index_is_id=True) or '').split(',')]
                add_child(ta%dict(
                    title=db.title(book_id, index_is_id=True),
                    author=authors_to_string(aut)))
            add_child('')

            yield item
예제 #10
0
        def create_item(name, linear=None):
            imt = container.mime_map.get(name, guess_type(name))
            icat = get_category(imt)
            category = 'text' if linear is not None else ({'text':'misc'}.get(icat, icat))
            item = QTreeWidgetItem(self.categories['text' if linear is not None else category], 1)
            flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable
            if category == 'text':
                flags |= Qt.ItemIsDragEnabled
            item.setFlags(flags)
            item.setStatusTip(0, _('Full path: ') + name)
            item.setData(0, NAME_ROLE, name)
            item.setData(0, CATEGORY_ROLE, category)
            set_display_name(name, item)
            # TODO: Add appropriate tooltips based on the emblems
            emblems = []
            if name in {cover_page_name, cover_image_name}:
                emblems.append('default_cover.png')
            if name not in manifested_names and name not in ok_to_be_unmanifested:
                emblems.append('dialog_question.png')
            if linear is False:
                emblems.append('arrow-down.png')
            if linear is None and icat == 'text':
                # Text item outside spine
                emblems.append('dialog_warning.png')
            if category == 'text' and name in processed:
                # Duplicate entry in spine
                emblems.append('dialog_warning.png')

            render_emblems(item, emblems)
            return item
예제 #11
0
 def readControlFile(self, filename):
     self.control = controlPoints(self.N, filename)
     #         obs=obsSplit(obs)
     for x, y in self.control.iteritems():
         #print coord
         item = QTreeWidgetItem(self.treeControl)
         item.setText(0, x)
         item.setText(1, str(round(y.y, 3)))
         item.setText(2, str(round(y.x, 3)))
         item.setText(3, str(round(y.h, 3)))
         item.setCheckState(0, Qt.Checked)
예제 #12
0
 def __init__(self, parent, device):
     QTreeWidgetItem.__init__(self, parent)
     self._device = device
     self.setText(0, device.lvname)
     mountpoint = getattr(device.format, "mountpoint", "")
     if not mountpoint:
         mountpoint = ""
     elif not (device.format and device.format.mountable):
         mountpoint = "N/A"
     self.setText(1, mountpoint)
     self.setText(2, "%Ld" % device.size)
예제 #13
0
 def create_item(self, f, parent):
     name = f.name
     ans = QTreeWidgetItem(parent, [name])
     ans.setData(0, Qt.UserRole, '/'.join(f.full_path[1:]))
     ans.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
     ans.setCheckState(
         0, Qt.Unchecked if self.dev.is_folder_ignored(
             f.storage_id, f.full_path[1:]) else Qt.Checked)
     ans.setData(0, Qt.DecorationRole,
                 file_icon_provider().icon_from_ext('dir'))
     return ans
예제 #14
0
 def create_item(self, f, parent):
     name = f.name
     ans = QTreeWidgetItem(parent, [name])
     ans.setData(0, Qt.UserRole, '/'.join(f.full_path[1:]))
     ans.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
     ans.setCheckState(0,
         Qt.Unchecked if self.dev.is_folder_ignored(f.storage_id, f.full_path[1:]) else Qt.Checked)
     ans.setData(0, Qt.DecorationRole, file_icon_provider().icon_from_ext('dir'))
     return ans
예제 #15
0
def item(f, parent):
    name = f.name
    if not f.is_folder:
        name += ' [%s]'%f.last_mod_string
    ans = QTreeWidgetItem(parent, [name])
    ans.setData(0, Qt.UserRole, f.full_path)
    if f.is_folder:
        ext = 'dir'
    else:
        ext = f.name.rpartition('.')[-1]
    ans.setData(0, Qt.DecorationRole, file_icon_provider().icon_from_ext(ext))

    return ans
예제 #16
0
    def readControlFile(self, filename):
        self.control = controlPoints(self.N,filename)
#         obs=obsSplit(obs)
        for x,y in self.control.iteritems():
            #print coord
            item = QTreeWidgetItem(self.treeControl)
            item.setText(0, x)
            item.setText(1, str(round(y.y,3)))
            item.setText(2, str(round(y.x,3)))
            item.setText(3, str(round(y.h,3)))
            item.setCheckState(0, Qt.Checked)
예제 #17
0
 def __init__(self, src, *args):
     QTreeWidgetItem.__init__(self, *args)
     self._src = src
     # fonts
     self._initFonts()
     # array of actual (i.e. numeric) column values
     self._values = [None] * NumColumns
     # set text alignment
     for icol in range(NumColumns):
         self.setTextAlignment(icol, Qt.AlignLeft)
     self.setTextAlignment(ColumnR, Qt.AlignRight)
     self.setTextAlignment(ColumnType, Qt.AlignHCenter)
     # setup source
     self._highlighted = self._highlighted_visual = False
     self.setSource(src)
예제 #18
0
 def _set_tree_model(self, parsing, parent=None):
     self.data_tree.clear()
     for field_info in parsing:
         item = QTreeWidgetItem(parent)
         item.setText(0, "%s" % field_info['name'])
         item.setData(0, QtCore.Qt.UserRole,
                      (field_info['offset'], field_info['length']))
         if isinstance(field_info['value'], list):
             self._set_tree_model(field_info['value'], item)
         else:
             child = QTreeWidgetItem(item)
             child.setText(0, repr(field_info['value']))
         if parent is None:
             self.data_tree.addTopLevelItem(item)
         self.data_tree.expandItem(item)
예제 #19
0
 def updateProv(self):
     self.treeProvis.clear()
     for x, y in self.provis.iteritems():
         item = QTreeWidgetItem(self.treeProvis)
         item.setText(0, x)
         item.setText(1, str(round(y.y, 3)))
         item.setText(2, str(round(y.x, 3)))
         item.setText(3, str(round(y.h, 3)))
예제 #20
0
 def __init__(self, src, *args):
     QTreeWidgetItem.__init__(self, *args)
     self._src = src
     # fonts
     self._initFonts()
     # array of actual (i.e. numeric) column values
     self._values = [None] * NumColumns
     # set text alignment
     for icol in range(NumColumns):
         self.setTextAlignment(icol, Qt.AlignLeft)
     self.setTextAlignment(ColumnR, Qt.AlignRight)
     self.setTextAlignment(ColumnType, Qt.AlignHCenter)
     # setup source
     self._highlighted = self._highlighted_visual = False
     self.setSource(src)
예제 #21
0
    def setup_ui(self):
        self.l = l = QVBoxLayout(self)
        self.setLayout(l)

        self.msg = m = QLabel(self.msg or _(
        'Choose the folder into which the files will be placed'))
        l.addWidget(m)
        m.setWordWrap(True)

        self.folders = f = QTreeWidget(self)
        f.setHeaderHidden(True)
        f.itemDoubleClicked.connect(self.accept)
        l.addWidget(f)
        f.setContextMenuPolicy(Qt.CustomContextMenu)
        f.customContextMenuRequested.connect(self.show_context_menu)
        self.root = QTreeWidgetItem(f, ('/',))

        def process(node, parent):
            parent.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for child in sorted(node, key=sort_key):
                c = QTreeWidgetItem(parent, (child,))
                process(node[child], c)
        process(create_folder_tree(current_container()), self.root)
        self.root.setSelected(True)
        f.expandAll()

        l.addWidget(self.bb)
예제 #22
0
파일: duplicates.py 프로젝트: sss/calibre
    def process_duplicates(self, db, duplicates):
        ta = _('%(title)s by %(author)s [%(formats)s]')
        bf = QFont(self.dup_list.font())
        bf.setBold(True)
        itf = QFont(self.dup_list.font())
        itf.setItalic(True)

        for mi, cover, formats in duplicates:
            # formats is a list of file paths
            # Grab just the extension and display to the user
            # Based only off the file name, no file type tests are done.
            incoming_formats = ', '.join(
                os.path.splitext(path)[-1].replace('.', '').upper()
                for path in formats)
            item = QTreeWidgetItem([
                ta % dict(title=mi.title,
                          author=mi.format_field('authors')[1],
                          formats=incoming_formats)
            ], 0)
            item.setCheckState(0, Qt.Checked)
            item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
            item.setData(0, Qt.FontRole, bf)
            item.setData(0, Qt.UserRole, (mi, cover, formats))
            matching_books = db.books_with_same_title(mi)

            def add_child(text):
                c = QTreeWidgetItem([text], 1)
                c.setFlags(Qt.ItemIsEnabled)
                item.addChild(c)
                return c

            add_child(_('Already in calibre:')).setData(0, Qt.FontRole, itf)

            for book_id in matching_books:
                aut = [
                    a.replace('|', ',') for a in (
                        db.authors(book_id, index_is_id=True) or '').split(',')
                ]
                add_child(
                    ta %
                    dict(title=db.title(book_id, index_is_id=True),
                         author=authors_to_string(aut),
                         formats=db.formats(
                             book_id, index_is_id=True, verify_formats=False)))
            add_child('')

            yield item
예제 #23
0
파일: toc.py 프로젝트: siebert/calibre
 def process_node(toc, parent):
     for child in toc:
         node = QTreeWidgetItem(parent)
         node.setText(0, child.title or '')
         node.setData(0, DEST_ROLE, child.dest or '')
         node.setData(0, FRAG_ROLE, child.frag or '')
         tt = _('File: {0}\nAnchor: {1}').format(
             child.dest or '', child.frag or _('Top of file'))
         node.setData(0, Qt.ToolTipRole, tt)
         process_node(child, node)
예제 #24
0
class ChooseFolder(Dialog):  # {{{

    def __init__(self, msg=None, parent=None):
        self.msg = msg
        Dialog.__init__(self, _('Choose folder'), 'choose-folder', parent=parent)

    def setup_ui(self):
        self.l = l = QVBoxLayout(self)
        self.setLayout(l)

        self.msg = m = QLabel(self.msg or _(
        'Choose the folder into which the files will be placed'))
        l.addWidget(m)
        m.setWordWrap(True)

        self.folders = f = QTreeWidget(self)
        f.setHeaderHidden(True)
        f.itemDoubleClicked.connect(self.accept)
        l.addWidget(f)
        self.root = QTreeWidgetItem(f, ('/',))

        def process(node, parent):
            parent.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for child in sorted(node, key=sort_key):
                c = QTreeWidgetItem(parent, (child,))
                process(node[child], c)
        process(create_folder_tree(current_container()), self.root)
        self.root.setSelected(True)
        f.expandAll()

        l.addWidget(self.bb)

    def folder_path(self, item):
        ans = []
        while item is not self.root:
            ans.append(unicode(item.text(0)))
            item = item.parent()
        return tuple(reversed(ans))

    @property
    def chosen_folder(self):
        try:
            return '/'.join(self.folder_path(self.folders.selectedItems()[0]))
        except IndexError:
            return ''
예제 #25
0
파일: main.py 프로젝트: payload/blain
 def showConversation(self, item, _):
     mt = self.ui.messageTable
     msg = mt.itemWidget(item, 0)
     if item.isExpanded():
         msg.replyLabel.setVisible(True)
         return # allready added
     if not msg.replyLabel.isVisible():
         return # no conversation
     msg.replyLabel.setVisible(False)
     if item.childCount(): return # allready added
     messages = self.app.db.get_conversation_messages(int(msg.id.text()))
     for _blob in messages:
         blob = prepare_post(_blob.__dict__)
         msg, time = self.build_message_item(blob)
         msg.replyLabel.setVisible(False) # no conversation trees possible
         i = QTreeWidgetItem(item)
         i.setText(1, time)
         mt.setItemWidget(i, 0, msg)
예제 #26
0
 def updateProv(self):
     self.treeProvis.clear()
     for x,y in self.provis.iteritems():
         item = QTreeWidgetItem(self.treeProvis)
         item.setText(0, x)
         item.setText(1, str(round(y.y,3)))
         item.setText(2, str(round(y.x,3)))
         item.setText(3, str(round(y.h,3)))
예제 #27
0
파일: toc.py 프로젝트: 089git/calibre
 def process_node(toc, parent):
     for child in toc:
         node = QTreeWidgetItem(parent)
         node.setText(0, child.title or '')
         node.setData(0, DEST_ROLE, child.dest or '')
         node.setData(0, FRAG_ROLE, child.frag or '')
         tt = _('File: {0}\nAnchor: {1}').format(
             child.dest or '', child.frag or _('Top of file'))
         node.setData(0, Qt.ToolTipRole, tt)
         process_node(child, node)
예제 #28
0
    def setOpen(self, o):
        if o:
            self.setIcon(0, folderOpenIcon)
        else:
            self.setIcon(0, folderClosedIcon)

        if o and not self.childCount():
            s = self.fullName()
            thisDir = QDir(s)
            if not thisDir.isReadable():
                self.readable = 0
                return

            files = thisDir.entryInfoList()
            if files:
                for f in files:
                    # f is a QFileInfo
                    # f.fileName is '.' or '..' or 'bearings' or...
                    fileName = str(f.fileName())
                    if fileName == '.' or fileName == '..':
                        continue
                    elif f.isSymLink():
                        d = QTreeWidgetItem(self,
                                            fileName)  #, 'Symbolic Link')
                        d.setIcon(0, fileIcon)
                    elif f.isDir():
                        if fileName == 'CVS':
                            #bruce 060319 skip CVS directories, so developers see same set of directories as end-users
                            # (implements NFR I recently reported)
                            # WARNING: this is only legitimate for some applications of this module.
                            # For now that's ok (we only use it in MMKit). Later this feature should be turned on
                            # by an optional argument to __init__, and generalized to a list of files to not show
                            # or to a filter function.
                            continue
                        d = Directory(self, fileName)
                    else:
                        if f.isFile():
                            s = 'File'
                        else:
                            s = 'Special'
                        if not fileName[-3:] in self.filterList:
                            continue
                        d = FileItem(self, f.absFilePath(), fileName)
                        d.setIcon(0, fileIcon)

        qt4todo('QTreeWidgetItem.setOpen(self, o)')
예제 #29
0
 def create_folder(self, item):
     text, ok = QInputDialog.getText(self, _('Folder name'),
                                     _('Enter a name for the new folder'))
     if ok and unicode(text):
         c = QTreeWidgetItem(item, (unicode(text), ))
         c.setIcon(0, QIcon(I('mimetypes/dir.png')))
         for item in self.folders.selectedItems():
             item.setSelected(False)
         c.setSelected(True)
         self.folders.setCurrentItem(c)
예제 #30
0
    def process_duplicates(self, db, duplicates):
        ta = _('%(title)s by %(author)s [%(formats)s]')
        bf = QFont(self.dup_list.font())
        bf.setBold(True)
        itf = QFont(self.dup_list.font())
        itf.setItalic(True)

        for mi, cover, formats in duplicates:
            # formats is a list of file paths
            # Grab just the extension and display to the user
            # Based only off the file name, no file type tests are done.
            incoming_formats = ', '.join(os.path.splitext(path)[-1].replace('.', '').upper() for path in formats)
            item = QTreeWidgetItem([ta%dict(
                title=mi.title, author=mi.format_field('authors')[1],
                formats=incoming_formats)] , 0)
            item.setCheckState(0, Qt.Checked)
            item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsUserCheckable)
            item.setData(0, Qt.FontRole, bf)
            item.setData(0, Qt.UserRole, (mi, cover, formats))
            matching_books = db.books_with_same_title(mi)

            def add_child(text):
                c = QTreeWidgetItem([text], 1)
                c.setFlags(Qt.ItemIsEnabled)
                item.addChild(c)
                return c

            add_child(_('Already in calibre:')).setData(0, Qt.FontRole, itf)

            for book_id in matching_books:
                aut = [a.replace('|', ',') for a in (db.authors(book_id,
                    index_is_id=True) or '').split(',')]
                add_child(ta%dict(
                    title=db.title(book_id, index_is_id=True),
                    author=authors_to_string(aut),
                    formats=db.formats(book_id, index_is_id=True,
                                       verify_formats=False)))
            add_child('')

            yield item
예제 #31
0
def browser_item(f, parent):
    name = f.name
    if not f.is_folder:
        name += ' [%s]' % f.last_mod_string
    ans = QTreeWidgetItem(parent, [name])
    ans.setData(0, Qt.UserRole, f.full_path)
    if f.is_folder:
        ext = 'dir'
    else:
        ext = f.name.rpartition('.')[-1]
    ans.setData(0, Qt.DecorationRole, file_icon_provider().icon_from_ext(ext))

    return ans
예제 #32
0
    def setOpen(self, o):
        if  o: 
            self.setIcon(0, folderOpenIcon)
        else:
            self.setIcon(0, folderClosedIcon)

        if o and not self.childCount():
            s = self.fullName()
            thisDir = QDir(s)
            if not thisDir.isReadable():
                self.readable = 0
                return

            files = thisDir.entryInfoList()
            if files:
                for f in files:
                    # f is a QFileInfo
                    # f.fileName is '.' or '..' or 'bearings' or...
                    fileName = str(f.fileName())
                    if fileName == '.' or fileName == '..':
                        continue
                    elif f.isSymLink():
                        d = QTreeWidgetItem(self, fileName)#, 'Symbolic Link')
                        d.setIcon(0, fileIcon)
                    elif f.isDir():
                        if fileName == 'CVS':
                            #bruce 060319 skip CVS directories, so developers see same set of directories as end-users
                            # (implements NFR I recently reported)
                            # WARNING: this is only legitimate for some applications of this module.
                            # For now that's ok (we only use it in MMKit). Later this feature should be turned on
                            # by an optional argument to __init__, and generalized to a list of files to not show
                            # or to a filter function.
                            continue
                        d = Directory(self, fileName)
                    else:
                        if f.isFile():
                            s = 'File'
                        else:
                            s = 'Special'
                        if not fileName[-3:] in self.filterList:
                            continue
                        d = FileItem(self, f.absFilePath(), fileName)
                        d.setIcon(0, fileIcon)
    
        qt4todo('QTreeWidgetItem.setOpen(self, o)')
예제 #33
0
    def calcProv(self):
        self.nodeg.setVisible(False)
        self.unknowns = getUnknowns(self.N, self.control)
        self.provisionals = getProvisionals(self.N, self.control,
                                            self.unknowns)
        self.treeProvis.clear()
        self.saveProvisButton.setVisible(True)
        self.bowditch.setVisible(True)
        #         for name in self.stationsOrder:
        #             item = QTreeWidgetItem(self.treeProvis)
        #             item.setText(0, name)
        #
        #
        #             item.setText(1, str(round(self.provisionals[name].x,3)))
        #             item.setText(2, str(round(self.provisionals[name].y,3)))
        #             item.setText(3, str(round(self.provisionals[name].h,3)))

        for x, y in self.provisionals.iteritems():
            item = QTreeWidgetItem(self.treeProvis)
            item.setText(0, x)
            item.setText(1, str(round(y.y, 3)))
            item.setText(2, str(round(y.x, 3)))
            item.setText(3, str(round(y.h, 3)))
        self.updateGraph()
예제 #34
0
 def _addEntryItem(self, entry, number, after):
     item = entry.tw_item = QTreeWidgetItem(self.etw, after)
     timelabel = self._make_time_label(entry.timestamp)
     item.setText(0, timelabel)
     item.setText(1, " " + (entry.title or ""))
     item.setToolTip(1, entry.title)
     if entry.comment:
         item.setText(2, " " + entry.comment.split('\n')[0])
         item.setToolTip(2, "<P>" + entry.comment.replace("<", "&lt;").replace(">", "&gt;"). \
                         replace("\n\n", "</P><P>").replace("\n", "</P><P>") + "</P>")
     item._ientry = number
     item._dp = None
     item._menu = self._entry_menu
     item._set_menu_title = lambda: self._entry_menu_title.setText(
         '"%s"' % entry.title)
     # now make subitems for DPs
     subitem = None
     for dp in entry.dps:
         if not dp.ignored:
             subitem = self._addDPSubItem(dp, item, subitem)
     self.etw.collapseItem(item)
     self.etw.header().headerDataChanged(Qt.Horizontal, 0, 2)
     return item
예제 #35
0
    def calcProv(self):
        self.nodeg.setVisible(False)
        self.unknowns=getUnknowns(self.N,self.control)
        self.provisionals= getProvisionals(self.N,self.control,self.unknowns) 
        self.treeProvis.clear()
        self.saveProvisButton.setVisible(True)
        self.bowditch.setVisible(True)
#         for name in self.stationsOrder:
#             item = QTreeWidgetItem(self.treeProvis)
#             item.setText(0, name)
#             
#             
#             item.setText(1, str(round(self.provisionals[name].x,3)))
#             item.setText(2, str(round(self.provisionals[name].y,3)))
#             item.setText(3, str(round(self.provisionals[name].h,3)))
            
        for x,y in self.provisionals.iteritems():
            item = QTreeWidgetItem(self.treeProvis)
            item.setText(0, x)
            item.setText(1, str(round(y.y,3)))
            item.setText(2, str(round(y.x,3)))
            item.setText(3, str(round(y.h,3)))
        self.updateGraph()
예제 #36
0
    def __init__(self, window, msg, formats):
        '''
        formats is a list of tuples: [(format, exists, convertible)].
            format: Lower case format identifier. E.G. mobi
            exists: String representing the number of books that
                    exist in the format.
            convertible: True if the format is a convertible format.
        formats should be ordered in the device's preferred format ordering.
        '''
        QDialog.__init__(self, window)
        Ui_ChooseFormatDeviceDialog.__init__(self)
        self.setupUi(self)
        self.formats.activated[QModelIndex].connect(self.activated_slot)

        self.msg.setText(msg)
        for i, (format, exists, convertible) in enumerate(formats):
            t_item = QTreeWidgetItem()
            t_item.setIcon(0,
                           file_icon_provider().icon_from_ext(format.lower()))
            t_item.setText(0, format.upper())
            t_item.setText(1, exists)
            if convertible:
                t_item.setIcon(2, QIcon(I('ok.png')))
            self.formats.addTopLevelItem(t_item)
            if i == 0:
                self.formats.setCurrentItem(t_item)
                t_item.setSelected(True)
        self.formats.resizeColumnToContents(2)
        self.formats.resizeColumnToContents(1)
        self.formats.resizeColumnToContents(0)
        self.formats.header().resizeSection(
            0,
            self.formats.header().sectionSize(0) * 2)
        self._format = None
예제 #37
0
class ChooseFolder(Dialog):  # {{{
    def __init__(self, msg=None, parent=None):
        self.msg = msg
        Dialog.__init__(self,
                        _('Choose folder'),
                        'choose-folder',
                        parent=parent)

    def setup_ui(self):
        self.l = l = QVBoxLayout(self)
        self.setLayout(l)

        self.msg = m = QLabel(
            self.msg
            or _('Choose the folder into which the files will be placed'))
        l.addWidget(m)
        m.setWordWrap(True)

        self.folders = f = QTreeWidget(self)
        f.setHeaderHidden(True)
        f.itemDoubleClicked.connect(self.accept)
        l.addWidget(f)
        f.setContextMenuPolicy(Qt.CustomContextMenu)
        f.customContextMenuRequested.connect(self.show_context_menu)
        self.root = QTreeWidgetItem(f, ('/', ))

        def process(node, parent):
            parent.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for child in sorted(node, key=sort_key):
                c = QTreeWidgetItem(parent, (child, ))
                process(node[child], c)

        process(create_folder_tree(current_container()), self.root)
        self.root.setSelected(True)
        f.expandAll()

        l.addWidget(self.bb)

    def show_context_menu(self, point):
        item = self.folders.itemAt(point)
        if item is None:
            return
        m = QMenu(self)
        m.addAction(QIcon(I('mimetypes/dir.png')), _('Create new folder'),
                    partial(self.create_folder, item))
        m.popup(self.folders.mapToGlobal(point))

    def create_folder(self, item):
        text, ok = QInputDialog.getText(self, _('Folder name'),
                                        _('Enter a name for the new folder'))
        if ok and unicode(text):
            c = QTreeWidgetItem(item, (unicode(text), ))
            c.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for item in self.folders.selectedItems():
                item.setSelected(False)
            c.setSelected(True)
            self.folders.setCurrentItem(c)

    def folder_path(self, item):
        ans = []
        while item is not self.root:
            ans.append(unicode(item.text(0)))
            item = item.parent()
        return tuple(reversed(ans))

    @property
    def chosen_folder(self):
        try:
            return '/'.join(self.folder_path(self.folders.selectedItems()[0]))
        except IndexError:
            return ''
예제 #38
0
        def create_item(name, linear=None):
            imt = container.mime_map.get(name, guess_type(name))
            icat = get_category(name, imt)
            category = 'text' if linear is not None else ({'text':'misc'}.get(icat, icat))
            item = QTreeWidgetItem(self.categories['text' if linear is not None else category], 1)
            flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable
            if category == 'text':
                flags |= Qt.ItemIsDragEnabled
            if name not in cannot_be_renamed:
                flags |= Qt.ItemIsEditable
            item.setFlags(flags)
            item.setStatusTip(0, _('Full path: ') + name)
            item.setData(0, NAME_ROLE, name)
            item.setData(0, CATEGORY_ROLE, category)
            item.setData(0, LINEAR_ROLE, bool(linear))
            item.setData(0, MIME_ROLE, imt)
            set_display_name(name, item)
            tooltips = []
            emblems = []
            if name in {cover_page_name, cover_image_name}:
                emblems.append('default_cover.png')
                tooltips.append(_('This file is the cover %s for this book') % (_('image') if name == cover_image_name else _('page')))
            if name in container.opf_name:
                emblems.append('metadata.png')
                tooltips.append(_('This file contains all the metadata and book structure information'))
            if imt == ncx_mime:
                emblems.append('toc.png')
                tooltips.append(_('This file contains the metadata table of contents'))
            if name not in manifested_names and not container.ok_to_be_unmanifested(name):
                emblems.append('dialog_question.png')
                tooltips.append(_('This file is not listed in the book manifest'))
            if linear is False:
                emblems.append('arrow-down.png')
                tooltips.append(_('This file is marked as non-linear in the spine\nDrag it to the top to make it linear'))
            if linear is None and icat == 'text':
                # Text item outside spine
                emblems.append('dialog_warning.png')
                tooltips.append(_('This file is a text file that is not referenced in the spine'))
            if category == 'text' and name in processed:
                # Duplicate entry in spine
                emblems.append('dialog_error.png')
                tooltips.append(_('This file occurs more than once in the spine'))

            render_emblems(item, emblems)
            if tooltips:
                item.setData(0, Qt.ToolTipRole, '\n'.join(tooltips))
            return item
예제 #39
0
 def process(node, parent):
     parent.setIcon(0, QIcon(I('mimetypes/dir.png')))
     for child in sorted(node, key=sort_key):
         c = QTreeWidgetItem(parent, (child, ))
         process(node[child], c)
예제 #40
0
        def create_item(name, linear=None):
            imt = container.mime_map.get(name, guess_type(name))
            icat = get_category(name, imt)
            category = 'text' if linear is not None else ({
                'text': 'misc'
            }.get(icat, icat))
            item = QTreeWidgetItem(
                self.categories['text' if linear is not None else category], 1)
            flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable
            if category == 'text':
                flags |= Qt.ItemIsDragEnabled
            if name not in cannot_be_renamed:
                flags |= Qt.ItemIsEditable
            item.setFlags(flags)
            item.setStatusTip(0, _('Full path: ') + name)
            item.setData(0, NAME_ROLE, name)
            item.setData(0, CATEGORY_ROLE, category)
            item.setData(0, LINEAR_ROLE, bool(linear))
            item.setData(0, MIME_ROLE, imt)
            set_display_name(name, item)
            tooltips = []
            emblems = []
            if name in {cover_page_name, cover_image_name}:
                emblems.append('default_cover.png')
                tooltips.append(
                    _('This file is the cover %s for this book') %
                    (_('image') if name == cover_image_name else _('page')))
            if name in container.opf_name:
                emblems.append('metadata.png')
                tooltips.append(
                    _('This file contains all the metadata and book structure information'
                      ))
            if imt == ncx_mime:
                emblems.append('toc.png')
                tooltips.append(
                    _('This file contains the metadata table of contents'))
            if name not in manifested_names and not container.ok_to_be_unmanifested(
                    name):
                emblems.append('dialog_question.png')
                tooltips.append(
                    _('This file is not listed in the book manifest'))
            if linear is False:
                emblems.append('arrow-down.png')
                tooltips.append(
                    _('This file is marked as non-linear in the spine\nDrag it to the top to make it linear'
                      ))
            if linear is None and icat == 'text':
                # Text item outside spine
                emblems.append('dialog_warning.png')
                tooltips.append(
                    _('This file is a text file that is not referenced in the spine'
                      ))
            if category == 'text' and name in processed:
                # Duplicate entry in spine
                emblems.append('dialog_error.png')
                tooltips.append(
                    _('This file occurs more than once in the spine'))

            render_emblems(item, emblems)
            if tooltips:
                item.setData(0, Qt.ToolTipRole, '\n'.join(tooltips))
            return item
예제 #41
0
 def _addDPSubItem(self, dp, parent, after):
     item = QTreeWidgetItem(parent, after)
     item.setText(1, dp.filename)
     item.setToolTip(1, dp.filename)
     item.setText(2, dp.comment or "")
     item.setToolTip(2, dp.comment or "")
     item._ientry = None
     item._dp = dp
     item._menu = self._archived_dp_menu
     item._set_menu_title = lambda: self._archived_dp_menu_title.setText(os.path.basename(dp.filename))
     return item
예제 #42
0
    def residuals(self):
        self.stdDevTree.clear()
        self.resid = {}
        for x in self.unknowns:
            list = []

            name = x[0:-2]
            item = QTreeWidgetItem(self.stdDevTree)
            item.setText(0, name)
            if not self.resid.has_key(name):
                self.resid[name] = [None, None, None]

            if x[-1] == "o":
                self.resid[name][2] = (self.precisi[name + "_o"])
                item.setText(3, str(round(float(self.resid[name][2]), 3)))

            elif x[-1] == "x":
                self.resid[name][0] = (self.precisi[name + "_x"])
                item.setText(1, str(round(float(self.resid[name][0]), 3)))

            elif x[-1] == "y":
                self.resid[name][1] = (self.precisi[name + "_y"])
                item.setText(2, str(round(float(self.resid[name][1]), 3)))

        for name in self.unknowns:
            name = x[0:-2]

            if not (self.resid[name][2]) == None:

                if (self.resid[name][0]) == None and (
                        self.resid[name][1]) == None:
                    item.setText(0, name + "(control)")

        self.vtpvLabel.setText("VTPV: " + str(self.vtpv))
        self.vtpvLabel.setVisible(True)
        if float(
                round(
                    float((self.A.T * self.P * self.V).T *
                          (self.A.T * self.P * self.V)), 6)) == 0.:
            self.numcheckLabel.setVisible(True)
        self.posteriori.setText("Posteriori: " + str(self.posterioriValue))
        self.posteriori.setVisible(True)
        self.posteriori_2.setText(str(round(self.posterioriValue, 5)))
        self.posteriori_2.setVisible(True)
        check1 = globalCheck(self.provis, self.control, self.V, self.obs,
                             self.unknowns, self.Xdict)
        for x, ob in self.XOdict.iteritems():
            list = []
            name = x[0:-2]
            item = QTreeWidgetItem(self.stdDevTree)
            item.setText(0, name + " orientation:")
            item.setText(3, str(round(float(self.XOdict[x]), 3)))
        sum = 0
        for i in check1.values():
            sum += round(i, 4)
        if round(sum, 3) == 0.:
            self.glocheckLabel.setVisible(True)
        else:
            self.glocheckLabel.setText("GLOBAL UNSUCCESS")
            #             self.glocheckLabel.setStyleSheet(color="red")
            self.glocheckLabel.setVisible(True)
예제 #43
0
    def residuals2(self):
        self.AObs = self.posterioriValue * self.A * (self.A.T * self.P *
                                                     self.A)**-1 * self.A.T
        self.cofactorM = self.A * (self.A.T * self.P * self.A)**-1 * self.A.T
        self.AResObs = self.posterioriValue * (
            self.P**-1 - self.A * (self.A.T * self.P * self.A)**-1 * self.A.T)
        #         print (self.A.T*self.P*self.A)**-1
        #         print self.posterioriValue
        #         print self.posterioriValue*(self.A.T*self.P*self.A)**-1
        self.cofactorAObs.clear()
        self.cofactorZ.clear()
        self.residA = OrderedDict()
        self.residARe = OrderedDict()
        #         print self.cofactorM
        count = 0
        for i, j in self.obs.iteritems():
            for k, l in j.iteritems():
                count += 1
        self.obsCount = count
        self.cofactorAObs.setColumnCount(count)
        self.cofactorAObs.setRowCount(count)
        self.cofactorZ.setColumnCount(count)
        self.cofactorZ.setRowCount(count)
        for i in range(count):
            for j in range(count):
                temp = QTableWidgetItem()
                temp.setText(str(self.cofactorM[i, j]))
                self.cofactorAObs.setItem(i, j, temp)
        for i in range(count):
            for j in range(count):
                temp = QTableWidgetItem()
                temp.setText(str(self.AResObs[i, j]))
                self.cofactorZ.setItem(i, j, temp)
        i = 0
        for x, sta in self.obs.iteritems():
            for tn, tar in sta.iteritems():

                name = x
                #             name=x[0:-2]
                if not self.residA.has_key(x + tn):
                    self.residA[x + tn] = [None]
                if not self.residARe.has_key(x + tn):
                    self.residARe[x + tn] = [None]

                self.residA[x + tn][0] = sqrt(self.AObs[i, i])
                self.residARe[x + tn][0] = sqrt(self.AResObs[i, i])
                i += 1
#         print self.residA
#         print self.residARe
        for x, sta in self.obs.iteritems():
            for tn, target in sta.iteritems():
                name = x + tn
                item1 = QTreeWidgetItem(self.stdDevAtree)
                item2 = QTreeWidgetItem(self.stdDevObsTree)
                if tn[-1] == "D":
                    item1.setText(0, "Direction from" + x + "to :" + tn[0:-2])
                    item2.setText(0, "Direction from" + x + "to :" + tn[0:-2])
                elif tn[-1] == "d":
                    item1.setText(0, "Distance from" + x + "to :" + tn[0:-2])
                    item2.setText(0, "Distance from" + x + "to :" + tn[0:-2])

                item1.setText(1, str(round(float(self.residA[name][0]), 3)))
                item2.setText(1, str(round(float(self.residARe[name][0]), 3)))
예제 #44
0
 def __init__(self, parent, device=None):
     QTreeWidgetItem.__init__(self, parent)
     self.device = device
예제 #45
0
    def build(self, container):
        self.clear()
        self.root = self.invisibleRootItem()
        self.root.setFlags(Qt.ItemIsDragEnabled)
        self.categories = {}
        for category, text, icon in (
            ('text', _('Text'), 'keyboard-prefs.png'),
            ('styles', _('Styles'), 'lookfeel.png'),
            ('images', _('Images'), 'view-image.png'),
            ('fonts', _('Fonts'), 'font.png'),
            ('misc', _('Miscellaneous'), 'mimetypes/dir.png'),
        ):
            self.categories[category] = i = QTreeWidgetItem(self.root, 0)
            i.setText(0, text)
            i.setIcon(0, QIcon(I(icon)))
            f = i.font(0)
            f.setBold(True)
            i.setFont(0, f)
            i.setData(0, NAME_ROLE, category)
            flags = Qt.ItemIsEnabled
            if category == 'text':
                flags |= Qt.ItemIsDropEnabled
            i.setFlags(flags)

        processed, seen = set(), {}

        def get_display_name(name, item):
            parts = name.split('/')
            text = parts[-1]
            while text in seen and parts:
                text = parts.pop() + '/' + text
            seen[text] = item
            return text

        for name, linear in container.spine_names:
            processed.add(name)
            i = QTreeWidgetItem(self.categories['text'], 1)
            prefix = '' if linear else '[nl] '
            if not linear:
                i.setIcon(self.non_linear_icon)
            i.setText(0, prefix + get_display_name(name, i))
            i.setStatusTip(0, _('Full path: ') + name)
            i.setFlags(Qt.ItemIsEnabled | Qt.ItemIsDragEnabled | Qt.ItemIsSelectable)
            i.setData(0, NAME_ROLE, name)

        font_types = {guess_type('a.'+x)[0] for x in ('ttf', 'otf', 'woff')}

        def get_category(mt):
            category = 'misc'
            if mt.startswith('image/'):
                category = 'images'
            elif mt in font_types:
                category = 'fonts'
            elif mt in OEB_STYLES:
                category = 'styles'
            return category

        all_files = list(container.manifest_type_map.iteritems())
        all_files.append((guess_type('a.opf')[0], [container.opf_name]))

        for name in container.name_path_map:
            if name in processed:
                continue
            processed.add(name)
            imt = container.mime_map.get(name, guess_type(name)[0])
            icat = get_category(imt)
            i = QTreeWidgetItem(self.categories[icat], 1)
            i.setText(0, get_display_name(name, i))
            i.setStatusTip(0, _('Full path: ') + name)
            i.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
            i.setData(0, NAME_ROLE, name)

        for c in self.categories.itervalues():
            self.expandItem(c)
예제 #46
0
    def readObsFile(self, filename):
        self.N, self.stationsOrder, self.obsOrder = Observations(filename)
        N = self.N
        self.obs1, self.ObsList = getObs(N)
        self.obs = obsSplit(self.obs1)
        for name in self.stationsOrder:
            item = QTreeWidgetItem(self.treeObs)
            item.setText(0, name)

            for t, j in self.obs[name].iteritems():
                subitem = QTreeWidgetItem(item)
                subitem.setText(1, t[0:-2])
                if j.type == 'direction':
                    subitem.setText(2, str(rad2dms(j.direction)))
                    subitem.setCheckState(0, Qt.Checked)
                if j.type == 'distance':
                    subitem.setCheckState(0, Qt.Checked)
                    subitem.setText(3, str(j.distance))
                if j.type == 'both':
                    subitem.setText(2, str(rad2dms(j.direction)))
                    subitem.setCheckState(0, Qt.Checked)
                    subitem.setText(3, str(j.distance))
                item.setCheckState(0, Qt.Checked)
예제 #47
0
 def _addDPSubItem(self, dp, parent, after):
     item = QTreeWidgetItem(parent, after)
     item.setText(1, dp.filename)
     item.setToolTip(1, dp.filename)
     item.setText(2, dp.comment or "")
     item.setToolTip(2, dp.comment or "")
     item._ientry = None
     item._dp = dp
     item._menu = self._archived_dp_menu
     item._set_menu_title = lambda: self._archived_dp_menu_title.setText(
         os.path.basename(dp.filename))
     return item
예제 #48
0
    def residuals2(self):
        self.AObs=self.posterioriValue*self.A*(self.A.T*self.P*self.A)**-1*self.A.T
        self.cofactorM=self.A*(self.A.T*self.P*self.A)**-1*self.A.T
        self.AResObs=self.posterioriValue*(self.P**-1 - self.A*(self.A.T*self.P*self.A)**-1*self.A.T)
#         print (self.A.T*self.P*self.A)**-1
#         print self.posterioriValue
#         print self.posterioriValue*(self.A.T*self.P*self.A)**-1
        self.cofactorAObs.clear()
        self.cofactorZ.clear()
        self.residA=OrderedDict()
        self.residARe=OrderedDict()
#         print self.cofactorM   
        count = 0
        for i,j in self.obs.iteritems():
            for k,l in j.iteritems():
                count+=1
        self.obsCount=count
        self.cofactorAObs.setColumnCount(count)
        self.cofactorAObs.setRowCount(count)
        self.cofactorZ.setColumnCount(count)
        self.cofactorZ.setRowCount(count)
        for i in range (count):
            for j in range (count):
                temp=QTableWidgetItem()
                temp.setText(str(self.cofactorM[i,j]))
                self.cofactorAObs.setItem(i,j,temp)
        for i in range (count):
            for j in range (count):
                temp=QTableWidgetItem()
                temp.setText(str(self.AResObs[i,j]))
                self.cofactorZ.setItem(i,j,temp)
        i=0
        for x,sta in self.obs.iteritems():
            for tn,tar in sta.iteritems():

                name=x
    #             name=x[0:-2]
                if not self.residA.has_key(x+tn):
                    self.residA[x+tn]=[None]
                if not self.residARe.has_key(x+tn):
                    self.residARe[x+tn]=[None]
                
    
                self.residA[x+tn][0]=sqrt(self.AObs[i,i])
                self.residARe[x+tn][0]=sqrt(self.AResObs[i,i])
                i+=1
#         print self.residA
#         print self.residARe
        for x,sta in self.obs.iteritems():
           for tn,target in sta.iteritems(): 
                name=x+tn
                item1 = QTreeWidgetItem(self.stdDevAtree)
                item2 = QTreeWidgetItem(self.stdDevObsTree)
                if tn[-1]=="D":
                    item1.setText(0, "Direction from"+ x +"to :"+tn[0:-2])
                    item2.setText(0,"Direction from"+ x+"to :"+tn[0:-2])
                elif tn[-1]=="d":
                    item1.setText(0, "Distance from"+ x+"to :"+tn[0:-2])
                    item2.setText(0,"Distance from"+ x+"to :"+tn[0:-2])
                    
                    
                    
                item1.setText(1, str(round(float(self.residA[name][0]),3)))
                item2.setText(1, str(round(float(self.residARe[name][0]),3)))
예제 #49
0
 def add_child(text):
     c = QTreeWidgetItem([text], 1)
     c.setFlags(Qt.ItemIsEnabled)
     item.addChild(c)
     return c
예제 #50
0
파일: file_list.py 프로젝트: kmshi/calibre
        def create_item(name, linear=None):
            imt = container.mime_map.get(name, guess_type(name))
            icat = get_category(name, imt)
            category = 'text' if linear is not None else ({
                'text': 'misc'
            }.get(icat, icat))
            item = QTreeWidgetItem(
                self.categories['text' if linear is not None else category], 1)
            flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable
            if category == 'text':
                flags |= Qt.ItemIsDragEnabled
            if name not in cannot_be_renamed:
                flags |= Qt.ItemIsEditable
            item.setFlags(flags)
            item.setStatusTip(0, _('Full path: ') + name)
            item.setData(0, NAME_ROLE, name)
            item.setData(0, CATEGORY_ROLE, category)
            item.setData(0, LINEAR_ROLE, bool(linear))
            item.setData(0, MIME_ROLE, imt)
            set_display_name(name, item)
            # TODO: Add appropriate tooltips based on the emblems
            emblems = []
            if name in {cover_page_name, cover_image_name}:
                emblems.append('default_cover.png')
            if name in container.opf_name:
                emblems.append('metadata.png')
            if imt == ncx_mime:
                emblems.append('toc.png')
            if name not in manifested_names and name not in ok_to_be_unmanifested:
                emblems.append('dialog_question.png')
            if linear is False:
                emblems.append('arrow-down.png')
            if linear is None and icat == 'text':
                # Text item outside spine
                emblems.append('dialog_warning.png')
            if category == 'text' and name in processed:
                # Duplicate entry in spine
                emblems.append('dialog_warning.png')

            render_emblems(item, emblems)
            return item
예제 #51
0
    def build(self, container, preserve_state=True):
        if preserve_state:
            state = self.get_state()
        self.clear()
        self.root = self.invisibleRootItem()
        self.root.setFlags(Qt.ItemIsDragEnabled)
        self.categories = {}
        for category, text in (
            ('text', _('Text')),
            ('styles', _('Styles')),
            ('images', _('Images')),
            ('fonts', _('Fonts')),
            ('misc', _('Miscellaneous')),
        ):
            self.categories[category] = i = QTreeWidgetItem(self.root, 0)
            i.setText(0, text)
            i.setData(0, Qt.DecorationRole,
                      self.top_level_pixmap_cache[category])
            f = i.font(0)
            f.setBold(True)
            i.setFont(0, f)
            i.setData(0, NAME_ROLE, category)
            flags = Qt.ItemIsEnabled
            if category == 'text':
                flags |= Qt.ItemIsDropEnabled
            i.setFlags(flags)

        processed, seen = {}, {}

        cover_page_name = get_cover_page_name(container)
        cover_image_name = get_raster_cover_name(container)
        manifested_names = set()
        for names in container.manifest_type_map.itervalues():
            manifested_names |= set(names)

        def get_category(name, mt):
            category = 'misc'
            if mt.startswith('image/'):
                category = 'images'
            elif mt in OEB_FONTS:
                category = 'fonts'
            elif mt in OEB_STYLES:
                category = 'styles'
            elif mt in OEB_DOCS:
                category = 'text'
            ext = name.rpartition('.')[-1].lower()
            if ext in {'ttf', 'otf', 'woff'}:
                # Probably wrong mimetype in the OPF
                category = 'fonts'
            return category

        def set_display_name(name, item):
            if name in processed:
                # We have an exact duplicate (can happen if there are
                # duplicates in the spine)
                item.setText(0, processed[name].text(0))
                item.setText(1, processed[name].text(1))
                return

            parts = name.split('/')
            text = parts[-1]
            while text in seen and parts:
                text = parts.pop() + '/' + text
            seen[text] = item
            item.setText(0, text)
            item.setText(1, hexlify(sort_key(text)))

        def render_emblems(item, emblems):
            emblems = tuple(emblems)
            if not emblems:
                return
            icon = self.rendered_emblem_cache.get(emblems, None)
            if icon is None:
                pixmaps = []
                for emblem in emblems:
                    pm = self.emblem_cache.get(emblem, None)
                    if pm is None:
                        pm = self.emblem_cache[emblem] = QPixmap(
                            I(emblem)).scaled(
                                self.iconSize(),
                                transformMode=Qt.SmoothTransformation)
                    pixmaps.append(pm)
                num = len(pixmaps)
                w, h = pixmaps[0].width(), pixmaps[0].height()
                if num == 1:
                    icon = self.rendered_emblem_cache[emblems] = QIcon(
                        pixmaps[0])
                else:
                    canvas = QPixmap((num * w) + ((num - 1) * 2), h)
                    canvas.fill(Qt.transparent)
                    painter = QPainter(canvas)
                    for i, pm in enumerate(pixmaps):
                        painter.drawPixmap(i * (w + 2), 0, pm)
                    painter.end()
                    icon = self.rendered_emblem_cache[emblems] = canvas
            item.setData(0, Qt.DecorationRole, icon)

        cannot_be_renamed = container.names_that_must_not_be_changed
        ncx_mime = guess_type('a.ncx')

        def create_item(name, linear=None):
            imt = container.mime_map.get(name, guess_type(name))
            icat = get_category(name, imt)
            category = 'text' if linear is not None else ({
                'text': 'misc'
            }.get(icat, icat))
            item = QTreeWidgetItem(
                self.categories['text' if linear is not None else category], 1)
            flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable
            if category == 'text':
                flags |= Qt.ItemIsDragEnabled
            if name not in cannot_be_renamed:
                flags |= Qt.ItemIsEditable
            item.setFlags(flags)
            item.setStatusTip(0, _('Full path: ') + name)
            item.setData(0, NAME_ROLE, name)
            item.setData(0, CATEGORY_ROLE, category)
            item.setData(0, LINEAR_ROLE, bool(linear))
            item.setData(0, MIME_ROLE, imt)
            set_display_name(name, item)
            tooltips = []
            emblems = []
            if name in {cover_page_name, cover_image_name}:
                emblems.append('default_cover.png')
                tooltips.append(
                    _('This file is the cover %s for this book') %
                    (_('image') if name == cover_image_name else _('page')))
            if name in container.opf_name:
                emblems.append('metadata.png')
                tooltips.append(
                    _('This file contains all the metadata and book structure information'
                      ))
            if imt == ncx_mime:
                emblems.append('toc.png')
                tooltips.append(
                    _('This file contains the metadata table of contents'))
            if name not in manifested_names and not container.ok_to_be_unmanifested(
                    name):
                emblems.append('dialog_question.png')
                tooltips.append(
                    _('This file is not listed in the book manifest'))
            if linear is False:
                emblems.append('arrow-down.png')
                tooltips.append(
                    _('This file is marked as non-linear in the spine\nDrag it to the top to make it linear'
                      ))
            if linear is None and icat == 'text':
                # Text item outside spine
                emblems.append('dialog_warning.png')
                tooltips.append(
                    _('This file is a text file that is not referenced in the spine'
                      ))
            if category == 'text' and name in processed:
                # Duplicate entry in spine
                emblems.append('dialog_error.png')
                tooltips.append(
                    _('This file occurs more than once in the spine'))

            render_emblems(item, emblems)
            if tooltips:
                item.setData(0, Qt.ToolTipRole, '\n'.join(tooltips))
            return item

        for name, linear in container.spine_names:
            processed[name] = create_item(name, linear=linear)

        for name in container.name_path_map:
            if name in processed:
                continue
            processed[name] = create_item(name)

        for name, c in self.categories.iteritems():
            c.setExpanded(True)
            if name != 'text':
                c.sortChildren(1, Qt.AscendingOrder)

        if preserve_state:
            self.set_state(state)

        if self.current_edited_name:
            item = self.item_from_name(self.current_edited_name)
            if item is not None:
                self.mark_item_as_current(item)
예제 #52
0
파일: duplicates.py 프로젝트: sss/calibre
 def add_child(text):
     c = QTreeWidgetItem([text], 1)
     c.setFlags(Qt.ItemIsEnabled)
     item.addChild(c)
     return c
예제 #53
0
    def residuals(self):
        self.stdDevTree.clear()
        self.resid={}
        for x in self.unknowns:
            list=[]
            
            name=x[0:-2]
            item = QTreeWidgetItem(self.stdDevTree)
            item.setText(0, name)
            if not self.resid.has_key(name):
                self.resid[name]=[None,None,None]
            
            if x[-1]=="o":
                self.resid[name][2]=(self.precisi[name+"_o"])
                item.setText(3, str(round(float(self.resid[name][2]),3)))
                
            elif x[-1]=="x":
                self.resid[name][0]=(self.precisi[name+"_x"])
                item.setText(1, str(round(float(self.resid[name][0]),3)))
                
                
            elif x[-1]=="y":
                self.resid[name][1]=(self.precisi[name+"_y"])
                item.setText(2, str(round(float(self.resid[name][1]),3)))
                
        for name in self.unknowns:
            name=x[0:-2]
               
            if not (self.resid[name][2])==None:
                
                if (self.resid[name][0])==None and (self.resid[name][1])==None:
                        item.setText(0, name+"(control)")
        
        self.vtpvLabel.setText("VTPV: "+str(self.vtpv))
        self.vtpvLabel.setVisible(True)
        if float(round(float((self.A.T*self.P*self.V).T*(self.A.T*self.P*self.V)),6))==0.:
            self.numcheckLabel.setVisible(True)
        self.posteriori.setText("Posteriori: "+str(self.posterioriValue))
        self.posteriori.setVisible(True)
        self.posteriori_2.setText(str(round(self.posterioriValue,5)))
        self.posteriori_2.setVisible(True)
        check1=globalCheck(self.provis,self.control,self.V,self.obs,self.unknowns,self.Xdict)
        for x,ob in self.XOdict.iteritems():
            list=[]
            name=x[0:-2]
            item = QTreeWidgetItem(self.stdDevTree)
            item.setText(0, name+" orientation:")
            item.setText(3, str(round(float(self.XOdict[x]),3)))
        sum=0
        for i in check1.values():
            sum+=round(i,4)
        if round(sum,3)==0.:
            self.glocheckLabel.setVisible(True)
        else:
            self.glocheckLabel.setText("GLOBAL UNSUCCESS")       
#             self.glocheckLabel.setStyleSheet(color="red")     
            self.glocheckLabel.setVisible(True) 
예제 #54
0
class ChooseFolder(Dialog):  # {{{

    def __init__(self, msg=None, parent=None):
        self.msg = msg
        Dialog.__init__(self, _('Choose folder'), 'choose-folder', parent=parent)

    def setup_ui(self):
        self.l = l = QVBoxLayout(self)
        self.setLayout(l)

        self.msg = m = QLabel(self.msg or _(
        'Choose the folder into which the files will be placed'))
        l.addWidget(m)
        m.setWordWrap(True)

        self.folders = f = QTreeWidget(self)
        f.setHeaderHidden(True)
        f.itemDoubleClicked.connect(self.accept)
        l.addWidget(f)
        f.setContextMenuPolicy(Qt.CustomContextMenu)
        f.customContextMenuRequested.connect(self.show_context_menu)
        self.root = QTreeWidgetItem(f, ('/',))

        def process(node, parent):
            parent.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for child in sorted(node, key=sort_key):
                c = QTreeWidgetItem(parent, (child,))
                process(node[child], c)
        process(create_folder_tree(current_container()), self.root)
        self.root.setSelected(True)
        f.expandAll()

        l.addWidget(self.bb)

    def show_context_menu(self, point):
        item = self.folders.itemAt(point)
        if item is None:
            return
        m = QMenu(self)
        m.addAction(QIcon(I('mimetypes/dir.png')), _('Create new folder'), partial(self.create_folder, item))
        m.popup(self.folders.mapToGlobal(point))

    def create_folder(self, item):
        text, ok = QInputDialog.getText(self, _('Folder name'), _('Enter a name for the new folder'))
        if ok and unicode(text):
            c = QTreeWidgetItem(item, (unicode(text),))
            c.setIcon(0, QIcon(I('mimetypes/dir.png')))
            for item in self.folders.selectedItems():
                item.setSelected(False)
            c.setSelected(True)
            self.folders.setCurrentItem(c)

    def folder_path(self, item):
        ans = []
        while item is not self.root:
            ans.append(unicode(item.text(0)))
            item = item.parent()
        return tuple(reversed(ans))

    @property
    def chosen_folder(self):
        try:
            return '/'.join(self.folder_path(self.folders.selectedItems()[0]))
        except IndexError:
            return ''
예제 #55
0
 def setup(self):
     self.setExpandable(1)
     QTreeWidgetItem.setup(self)
예제 #56
0
    def __init__(self, window, msg, formats):
        '''
        formats is a list of tuples: [(format, exists, convertible)].
            format: Lower case format identifier. E.G. mobi
            exists: String representing the number of books that
                    exist in the format.
            convertible: True if the format is a convertible format.
        formats should be ordered in the device's preferred format ordering.
        '''
        QDialog.__init__(self, window)
        Ui_ChooseFormatDeviceDialog.__init__(self)
        self.setupUi(self)
        self.formats.activated[QModelIndex].connect(self.activated_slot)

        self.msg.setText(msg)
        for i, (format, exists, convertible) in enumerate(formats):
            t_item = QTreeWidgetItem()
            t_item.setIcon(0, file_icon_provider().icon_from_ext(format.lower()))
            t_item.setText(0, format.upper())
            t_item.setText(1, exists)
            if convertible:
                t_item.setIcon(2, QIcon(I('ok.png')))
            self.formats.addTopLevelItem(t_item)
            if i == 0:
                self.formats.setCurrentItem(t_item)
                t_item.setSelected(True)
        self.formats.resizeColumnToContents(2)
        self.formats.resizeColumnToContents(1)
        self.formats.resizeColumnToContents(0)
        self.formats.header().resizeSection(0, self.formats.header().sectionSize(0) * 2)
        self._format = None
예제 #57
0
 def setup(self):
     self.setExpandable(1)
     QTreeWidgetItem.setup(self)
예제 #58
0
 def readObsFile(self, filename):
     self.N,self.stationsOrder,self.obsOrder = Observations(filename)
     N=self.N
     self.obs1,self.ObsList=getObs(N)
     self.obs=obsSplit(self.obs1)
     for name in self.stationsOrder:
         item = QTreeWidgetItem(self.treeObs)
         item.setText(0, name)
         
         for t,j in self.obs[name].iteritems():
             subitem=QTreeWidgetItem(item)
             subitem.setText(1, t[0:-2])
             if j.type=='direction':
                 subitem.setText(2,str( rad2dms(j.direction))) 
                 subitem.setCheckState(0, Qt.Checked)          
             if j.type=='distance':
                 subitem.setCheckState(0, Qt.Checked)
                 subitem.setText(3, str(j.distance))
             if j.type=='both':
                 subitem.setText(2,str( rad2dms(j.direction))) 
                 subitem.setCheckState(0, Qt.Checked)
                 subitem.setText(3, str(j.distance))
             item.setCheckState(0, Qt.Checked)