def __show_data(self): log.info("Showing data...") self.__status_updater.stop() self.__data = self.__data_builder.data self.__data_builder = None self.__process_data()
def refresh(self): log.info("Refreshing logs...") pb = self.__ui.progressBar pb.setValue(0) pb.setRange(0, 0) self.__logs.clear() self.__data_builder = DataBuilder(self.__dialog) self.__data_builder.filter = self.__filter; self.__data_builder.rule_key = self.__dialog.rule_key self.__data_builder.finished.connect(self.__show_data) self.__data_builder.start() self.__status_updater = QTimer(self.__dialog) self.__status_updater.timeout.connect(self.__update_status) self.__status_updater.start(1000)
def __process_data(self, order_by=None): pb = self.__ui.progressBar pb.setFormat("Showing data...") pb.setValue(0) pb.setRange(0, 0) data = self.__data if order_by is not None: print order_by.order, order_by.dir rules = data.iteritems() if order_by is not None and order_by.order == "by rule name": print "rule" if order_by.dir == "asc": rules = sorted(rules) else: rules = sorted(rules, reverse=True) html = [] for rule, rule_data in rules: html.append("<h2>Rule: %s</h2>" % rule) paths = rule_data.iteritems() if order_by is not None and order_by.order == "by path": print "path" if order_by.dir == "asc": paths = sorted(paths) else: paths = sorted(paths, reverse=True) for path, path_data in paths: html.append('<h4 class="path">Path: %s</h4>' % path) users = path_data.iteritems() if order_by is not None and order_by.order == "by user name": if order_by.dir == "asc": users = sorted(users) else: users = sorted(users, reverse=True) for user, user_data in users: html.append('<h4 class="user">User: %s</h4>' % user) progs = user_data.iteritems() if order_by is not None and order_by.order == "by PID": if order_by.dir == "asc": progs = sorted(progs) else: progs = sorted(progs, reverse=True) elif order_by is not None and order_by.order == "by command": print "command" if order_by.dir == "asc": progs = sorted(progs, key=lambda p: p[1]['comm']) else: progs = sorted(progs, key=lambda p: p[1]['comm'], reverse=True) for prog, prog_data in progs: if self.__filter is not None and self.__filter.groupPID: html.append('<h4 class="prog">%s (%s)</h4>' % (prog, prog_data['exe'])) else: html.append('<h4 class="prog">PID: %s ---- %s (%s)</h4>' % (prog, prog_data['comm'], prog_data['exe'])) html.append('<ul class="calls">') for name, val in prog_data.iteritems(): if name not in ['comm', 'exe']: html.append("<li>%s = %s</li>" % (name, val)) html.append("</ul>") doc = self.__logs.document() doc.setDefaultStyleSheet(""" h2 {background: #e8a49b;} .path {margin-left: 20px; background: #b1e89b;} .user {margin-left: 40px; background: #9b9be8;} .prog {margin-left: 60px; background: #9bc5e8;} .calls {margin-left: 60px;} """) doc.setHtml("\n".join(html)) self.__html = "\n".join(html) pb.setFormat("Done") pb.setRange(0, 1) pb.setValue(1) log.info("Showing data: done.")