Beispiel #1
0
Datei: find.py Projekt: kzwkt/dff
    def start(self, args):
        self.nodes = []
        self.nodescount = 1
        self.oldcur = 0

        fname = args["filter_name"].value()
        expression = args["expression"].value()
        root_node = args["root_node"].value()
        if args.has_key("verbose"):
            self.verbose = True
        else:
            self.verbose = False
        if args.has_key("recursive"):
            recursive = True
        else:
            recursive = False
        f = Filter(fname)
        f.connection(self)
        try:
            f.compile(expression)
        except RuntimeError:
            self.res["error"] = Variant("provided expression is not valid")
        f.process(root_node, recursive)
        self.res["total of matching nodes"] = Variant(len(self.nodes))
        if args.has_key("save_result"):
            si_node = self.vfs.getnode("/Bookmarks")
            if si_node == None:
                root = self.vfs.getnode("/")
                si_node = Node("Bookmarks", 0, root)
                si_node.__disown__()
            fnode = Node(fname, 0, si_node)
            fnode.__disown__()
            for node in self.nodes:
                vl = VLink(node, fnode, node.name())
                vl.__disown__()
Beispiel #2
0
    def start(self, args):
        self.nodes = []
        self.nodescount = 1
        self.oldcur = 0

        fname = args["filter_name"].value()
        expression = args["expression"].value()
        root_node = args["root_node"].value()
        if args.has_key("verbose"):
            self.verbose = True
        else:
            self.verbose = False
        if args.has_key("recursive"):
            recursive = True
        else:
            recursive = False
        f = Filter(fname)
        f.connection(self)
        try:
            f.compile(expression)
        except RuntimeError:
            self.res["error"] = Variant("provided expression is not valid")
        f.process(root_node, recursive)
        self.res["total of matching nodes"] = Variant(len(self.nodes))
        if args.has_key("save_result"):
            si_node = self.vfs.getnode("/Bookmarks")
            if si_node == None:
                root = self.vfs.getnode("/")
                si_node = Node("Bookmarks", 0, root)
                si_node.__disown__()
            fnode = Node(fname, 0, si_node)
            fnode.__disown__()
            for node in self.nodes:
                vl = VLink(node, fnode, node.name())
                vl.__disown__()
Beispiel #3
0
class SearchThread(QThread, EventHandler):
    def __init__(self, parent=None):
        EventHandler.__init__(self)
        QThread.__init__(self)
        self.__parent = parent
        self.nodes = []
        self.filters = Filter("search")
        self.filters.connection(self)
        self.model = None
        self.listmode = False

    def setListContext(self, query, nodelist, targetmodel):
        self.listmode = True
        self.nodes = VecNode()
        for node in nodelist:
            self.nodes.append(node)
        self.model = targetmodel
        try:
            self.filters.compile(query)
            return True
        except:
            box = QMessageBox(QMessageBox.Critical, self.tr("Error"), self.tr("Error compiling query"), \
                                QMessageBox.NoButton, self.__parent)
            box.setDetailedText(QString.fromUtf8(query))
            box.exec_()
            return False

    def setContext(self, query, rootnode, targetmodel):
        self.listmode = False
        self.rootnode = rootnode
        self.model = targetmodel
        try:
            self.filters.compile(query)
            return True
        except Exception as e:
            print e
            box = QMessageBox(QMessageBox.Critical, self.tr("Error"), self.tr("Error compiling query"), \
                                QMessageBox.NoButton, self.__parent)
            box.setDetailedText(QString.fromUtf8(query))
            box.exec_()
            return False

    def Event(self, e):
        if e != None:
            if e.value != None:
                if e.type == Filter.EndOfProcessing:
                    self.emit(SIGNAL("finished"))
                if e.type == Filter.TotalNodesToProcess:
                    self.total = e.value.value()
                if e.type == Filter.ProcessedNodes:
                    self.processed += 1
                if e.type == Filter.NodeMatched:
                    self.match += 1
                    val = e.value.value()
                    self.model.emit(SIGNAL("appendList"), val)
                    self.emit(SIGNAL("match"))
                pc = self.processed * 100 / self.total
                try:
                    if pc > self.percent:
                        self.percent = pc
                        self.emit(SIGNAL("count"), self.percent)
                except:
                    self.percent = 0

    def run(self):
        self.emit(SIGNAL("started"))
        self.match = 0
        self.processed = 0
        self.total = 0
        self.percent = 0
        try:
            if not self.listmode:
                self.filters.process(self.rootnode, True)
            else:
                self.filters.process(self.nodes)
        except:
            pass

    def stopSearch(self):
        e = event()
        e.thisown = False
        e.type = Filter.StopProcessing
        self.filters.Event(e)
Beispiel #4
0
class SearchThread(QThread, EventHandler):
    def __init__(self, parent=None):
        EventHandler.__init__(self)
        QThread.__init__(self)
        self.__parent = parent
        self.nodes = []
        self.filters = Filter("search")
        self.filters.connection(self)
        self.model = None
        self.listmode = False

    def setListContext(self, query, nodelist, targetmodel):
        self.listmode = True
        self.nodes = VecNode()
        for node in nodelist:
            self.nodes.append(node)
        self.model = targetmodel
        try:
            self.filters.compile(query)
            return True
        except:
            box = QMessageBox(
                QMessageBox.Critical,
                self.tr("Error"),
                self.tr("Error compiling query"),
                QMessageBox.NoButton,
                self.__parent,
            )
            box.setDetailedText(QString.fromUtf8(query))
            box.exec_()
            return False

    def setContext(self, query, rootnode, targetmodel):
        self.listmode = False
        self.rootnode = rootnode
        self.model = targetmodel
        try:
            self.filters.compile(query)
            return True
        except Exception as e:
            print e
            box = QMessageBox(
                QMessageBox.Critical,
                self.tr("Error"),
                self.tr("Error compiling query"),
                QMessageBox.NoButton,
                self.__parent,
            )
            box.setDetailedText(QString.fromUtf8(query))
            box.exec_()
            return False

    def Event(self, e):
        if e != None:
            if e.value != None:
                if e.type == Filter.EndOfProcessing:
                    self.emit(SIGNAL("finished"))
                if e.type == Filter.TotalNodesToProcess:
                    self.total = e.value.value()
                if e.type == Filter.ProcessedNodes:
                    self.processed += 1
                if e.type == Filter.NodeMatched:
                    self.match += 1
                    val = e.value.value()
                    self.model.emit(SIGNAL("appendList"), val)
                    self.emit(SIGNAL("match"))
                pc = self.processed * 100 / self.total
                try:
                    if pc > self.percent:
                        self.percent = pc
                        self.emit(SIGNAL("count"), self.percent)
                except:
                    self.percent = 0

    def run(self):
        self.emit(SIGNAL("started"))
        self.match = 0
        self.processed = 0
        self.total = 0
        self.percent = 0
        try:
            if not self.listmode:
                self.filters.process(self.rootnode, True)
            else:
                self.filters.process(self.nodes)
        except:
            pass

    def stopSearch(self):
        e = event()
        e.thisown = False
        e.type = Filter.StopProcessing
        self.filters.Event(e)