python类idle_add()的实例源码

smalictrace.py 文件源码 项目:linux-pentest-util 作者: fikr4n 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def _do_parsing(self, delivery):
        try:
            if os.path.isdir(self._classpath):
                self.parser.parse_dir(self._classpath)
                self.parser.derive_indirect_calls()
                event = threading.Event()
                pulse_progress_until(delivery['progress_view'].progress, event)
                parse_result = self.parser.get_result()
                if self._cache_filename:
                    try:
                        with open(self._cache_filename, 'wb') as f:
                            pickle.dump(parse_result, f)
                    except IOError as e:
                        gobject.idle_add(self._launch_error, e, "Can't save to file")
                event.set()
            else:
                event = threading.Event()
                pulse_progress_until(delivery['progress_view'].progress, event)
                with open(self._classpath, 'rb') as f:
                    parse_result = pickle.load(f)
                event.set()
            self.parse_result = parse_result

            gobject.idle_add(self._launch_main, delivery)
        except IOError as e:
            gobject.idle_add(self._launch_error, e, "Can't open file", True)
lodgeit.py 文件源码 项目:software-factory 作者: softwarefactory-project 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def copy_url(url):
    """Copy the url into the clipboard."""
    # try windows first
    try:
        import win32clipboard
    except ImportError:
        # then give pbcopy a try.  do that before gtk because
        # gtk might be installed on os x but nobody is interested
        # in the X11 clipboard there.
        from subprocess import Popen, PIPE
        for prog in 'pbcopy', 'xclip':
            try:
                client = Popen([prog], stdin=PIPE)
            except OSError:
                continue
            else:
                client.stdin.write(url)
                client.stdin.close()
                client.wait()
                break
        else:
            try:
                import pygtk
                pygtk.require('2.0')
                import gtk
                import gobject
            except ImportError:
                return
            gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD).set_text(url)
            gobject.idle_add(gtk.main_quit)
            gtk.main()
    else:
        win32clipboard.OpenClipboard()
        win32clipboard.EmptyClipboard()
        win32clipboard.SetClipboardText(url)
        win32clipboard.CloseClipboard()
editorset.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def _do_import_locked(self, dlgclass, src_radio, dst_rthread):

        # An import/export action needs to be done in the absence of any
        # other queued changes.  So, we make sure that nothing else is
        # staged for the thread and lock it up.  Then we use the hidden
        # interface to queue our own changes before opening it up to the
        # rest of the world.

        dst_rthread._qlock_when_idle(5)  # Suspend job submission when idle

        dialog = dlgclass(src_radio, dst_rthread.radio, self.parent_window)
        r = dialog.run()
        dialog.hide()
        if r != gtk.RESPONSE_OK:
            dst_rthread._qunlock()
            return

        count = dialog.do_import(dst_rthread)
        LOG.debug("Imported %i" % count)
        dst_rthread._qunlock()

        if count > 0:
            self.editor_changed()
            current_editor = self.get_current_editor()
            gobject.idle_add(current_editor.prefill)

        return count
editorset.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def prime(self):
        # NOTE: this is only called to prime new CSV files, so assume
        # only one memory editor for now
        mem = chirp_common.Memory()
        mem.freq = 146010000

        def cb(*args):
            gobject.idle_add(self.editors["memedit0"].prefill)

        job = common.RadioJob(cb, "set_memory", mem)
        job.set_desc(_("Priming memory"))
        self.rthread.submit(job)
importdialog.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def execute(self, radio):
        import_logic.import_bank(radio, self.__src_radio,
                                 self.__dst_mem, self.__src_mem)
        if self.cb:
            gobject.idle_add(self.cb, *self.cb_args)
memedit.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def _delete_rows(self, paths):
        to_remove = []
        for path in paths:
            iter = self.store.get_iter(path)
            cur_pos, = self.store.get(iter, self.col(_("Loc")))
            to_remove.append(cur_pos)
            self.store.set(iter, self.col("_filled"), False)
            job = common.RadioJob(None, "erase_memory", cur_pos)
            job.set_desc(_("Erasing memory {number}").format(number=cur_pos))
            self.rthread.submit(job)

            def handler(mem):
                if not isinstance(mem, Exception):
                    if not mem.empty or self.show_empty:
                        gobject.idle_add(self.set_memory, mem)

            job = common.RadioJob(handler, "get_memory", cur_pos)
            job.set_desc(_("Getting memory {number}").format(number=cur_pos))
            self.rthread.submit(job)

        if not self.show_empty:
            # We need to actually remove the rows from the store
            # now, but carefully! Get a list of deleted locations
            # in order and proceed from the first path in the list
            # until we run out of rows or we've removed all the
            # desired ones.
            to_remove.sort()
            to_remove.reverse()
            iter = self.store.get_iter(paths[0])
            while to_remove and iter:
                pos, = self.store.get(iter, self.col(_("Loc")))
                if pos in to_remove:
                    to_remove.remove(pos)
                    if not self.store.remove(iter):
                        break  # This was the last row
                else:
                    iter = self.store.iter_next(iter)

        return True  # We changed memories
memedit.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def _show_raw(self, cur_pos):
        def idle_show_raw(result):
            gobject.idle_add(common.show_diff_blob,
                             _("Raw memory {number}").format(
                                 number=cur_pos), result)

        job = common.RadioJob(idle_show_raw, "get_raw_memory", cur_pos)
        job.set_desc(_("Getting raw memory {number}").format(number=cur_pos))
        self.rthread.submit(job)
memedit.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def prefill(self):
        self.store.clear()
        self._rows_in_store = 0

        lo = int(self.lo_limit_adj.get_value())
        hi = int(self.hi_limit_adj.get_value())

        def handler(mem, number):
            if not isinstance(mem, Exception):
                if not mem.empty or self.show_empty:
                    gobject.idle_add(self.set_memory, mem)
            else:
                mem = chirp_common.Memory()
                mem.number = number
                mem.name = "ERROR"
                mem.empty = True
                gobject.idle_add(self.set_memory, mem)

        for i in range(lo, hi+1):
            job = common.RadioJob(handler, "get_memory", i)
            job.set_desc(_("Getting memory {number}").format(number=i))
            job.set_cb_args(i)
            self.rthread.submit(job, 2)

        if self.show_special:
            for i in self._features.valid_special_chans:
                job = common.RadioJob(handler, "get_memory", i)
                job.set_desc(_("Getting channel {chan}").format(chan=i))
                job.set_cb_args(i)
                self.rthread.submit(job, 2)
shiftdialog.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def status(self, msg, prog):
        gobject.idle_add(self._status, msg, prog)
shiftdialog.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def finished(self):
        if self.quiet:
            gobject.idle_add(self.response, gtk.RESPONSE_OK)
        else:
            gobject.idle_add(self.set_response_sensitive,
                             gtk.RESPONSE_OK, True)
clone.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def __status(self, status):
        gobject.idle_add(self.__progw.status, status)
clone.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def run(self):
        LOG.debug("Clone thread started")

        gobject.idle_add(self.__progw.show)

        self.__radio.status_fn = self.__status

        try:
            if self.__out:
                self.__radio.sync_out()
            else:
                self.__radio.sync_in()

            emsg = None
        except Exception, e:
            common.log_exception()
            LOG.error(_("Clone failed: {error}").format(error=e))
            emsg = e

        gobject.idle_add(self.__progw.hide)

        # NB: Compulsory close of the radio's serial connection
        if self.__radio.pipe is not None:
            self.__radio.pipe.close()

        LOG.debug("Clone thread ended")

        if self.__cback and not self.__cancelled:
            gobject.idle_add(self.__cback, self.__radio, emsg)
bankedit.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def execute(self, radio):
        self.__editor.mappings = []

        mappings = self.__model.get_mappings()
        for mapping in mappings:
            self.__editor.mappings.append((mapping, mapping.get_name()))

        gobject.idle_add(self.cb, *self.cb_args)
common.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def _status(self, msg):
        jobs = 0
        for i in dict(self.__queue):
                jobs += len(self.__queue[i])
        gobject.idle_add(self.emit, "status", "[%i] %s" % (jobs, msg))
csvapp.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def update_status(self, s):
        gobject.idle_add(self.progwin.status, s)
csvapp.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def _download_img(self):
        gobject.idle_add(self.progwin.show)
        fn = "%s.img" % self.rtype

        try:
            s = serial.Serial(port=self.rport,
                              baudrate=RADIOS[self.rtype].BAUD_RATE,
                              timeout=0.5)

            radio = RADIOS[self.rtype](s)
            radio.status_fn = self.update_status
            radio.sync_in()

            print "Sync done, saving to: %s" % fn
            radio.save_mmap(fn)

            self.refresh_radio()
        except serial.SerialException, e:
            gobject.idle_add(self.mainwin.set_status,
                             "Error: Unable to open serial port")
        except Exception, e:
            gobject.idle_add(self.mainwin.set_status,
                             "Error: %s" % e)

        try:
            s.close()
        except Exception:
            pass

        gobject.idle_add(self.progwin.hide)
csvapp.py 文件源码 项目:chirp_fork 作者: mach327 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def _export_file_live(self, fname, l, h):
        gobject.idle_add(self.progwin.show)

        try:
            f = file(fname, "w")
        except Exception, e:
            gobject.idle_add(self.progwin.hide)
            gobject.idle_add(self.mainwin.set_status, "%s: %s" % (fname, e))
            return

        print >>f, chirp.chirp_common.Memory.CSV_FORMAT
        for i in range(l, h+1):
            s = chirp.chirp_common.Status()
            s.msg = "Reading memory %i" % i
            s.cur = i
            s.max = h+1
            gobject.idle_add(self.progwin.status, s)

            try:
                m = self.radio.get_memory(i)
                print >>f, m.to_csv()
            except chirp.errors.InvalidMemoryLocation:
                pass

        f.close()

        gobject.idle_add(self.progwin.hide)
dockyard_noblock.py 文件源码 项目:dockyard 作者: maidstone-hackspace 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def threaded_task(function, *args, **kwargs):
    """Run function(*args, **kwargs) inside a thread and return the result."""
    def _task(task_return):
        def _thread():
            result = function(*args, **kwargs)
            gobject.idle_add(task_return, result)
        thread = threading.Thread(target=_thread, args=())
        thread.setDaemon(True)
        thread.start()
    return _task

# Example of usage
gtkbase.py 文件源码 项目:gui-o-matic 作者: mailpile 项目源码 文件源码 阅读 37 收藏 0 点赞 0 评论 0
def show_splash_screen(self, height=None, width=None,
                           progress_bar=False, image=None, message=None,
                           now=False):
        def show(self):
            window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            vbox = gtk.VBox(False, 1)

            if message:
                lbl = gtk.Label()
                lbl.set_markup(message or '')
                lbl.set_alignment(0.5, 0.5)
                vbox.pack_start(lbl, True, True)
            else:
                lbl = None

            if image:
                self._set_background_image(vbox, image)

            if progress_bar:
                pbar = gtk.ProgressBar()
                pbar.set_orientation(gtk.PROGRESS_LEFT_TO_RIGHT)
                vbox.pack_end(pbar, False, True)
            else:
                pbar = None

            window.set_title(self.config.get('app_name', 'gui-o-matic'))
            window.set_decorated(False)
            window.set_position(gtk.WIN_POS_CENTER)
            window.set_size_request(width or 240, height or 320)
            window.add(vbox)
            window.show_all()

            self.hide_splash_screen(now=True)
            self.splash = {
                'window': window,
                'vbox': vbox,
                'message': lbl,
                'progress': pbar}
        if now:
            show(self)
        else:
            gobject.idle_add(show, self)
smalictrace.py 文件源码 项目:linux-pentest-util 作者: fikr4n 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def do_search(self, query, event_flag):
        def get_icon(n):
            if n not in self.parser.members:  # no check for undeclared class
                icon = gtk.STOCK_DELETE
            elif '(' in n:
                icon = gtk.STOCK_EXECUTE
            elif ':' in n:
                icon = gtk.STOCK_SELECT_FONT
            else:
                icon = gtk.STOCK_FILE
            return icon

        def append_row(parent, names, depth, call_info):

            name = names[0]
            call_info_str = call_info.select_from_call_types(u'?????') \
                            .replace(u'??', u'?') \
                            .replace(u'??', u'?')
            it = self.store.append(parent, (
                name,  # class/method/field name
                get_icon(name),  # icon
                'b' if name in toplevel else '',
                    # bold (in root) or not
                call_info_str
                ))

            # Append children
            d = depth + 1
            if d >= self._max_tree_depth:
                self.store.append(it, (' ...maximum depth (%d) reached' %
                    self._max_tree_depth, gtk.STOCK_INFO, 'i',
                    call_info_str))
                return
            for caller, info in self.parser.callers.get(name, {}).items():
                if event_flag.is_set():  # stopped earlier
                    return
                if caller not in names:
                    names.appendleft(caller)
                    append_row(it, names, d, info)
                    names.popleft()
                else:
                    self.store.append(it, (' ...recursive ' + caller,
                        gtk.STOCK_INFO, 'i', call_info_str))

        with self.search_lock:
            gobject.idle_add(self.treeview.set_model, None)

            toplevel = set()
            self.store.clear()
            for k in self.parser.callers:
                if fnmatch.fnmatch(k, query):
                    toplevel.add(k)
            for i in toplevel:
                append_row(None, collections.deque((i,)), 0, CallInfo())

            # Finalization
            if not event_flag.is_set():
                event_flag.set()
                gobject.idle_add(self.treeview.set_model, self.store)
                gobject.idle_add(self.on_search_stop)


问题


面经


文章

微信
公众号

扫码关注公众号