예제 #1
0
	def channelList_cb(time, server, channel, users, topic):
		""" Signal for /list command.
			Prints content of the listing.
		"""

		self = code.init_function_attrs(channelList_cb,
			_text=[],
			_line=0,
			_tab=gui.tabs.search_tab(server))

		def print_listing():
			self._tab.write_raw("<br/>".join(self._text))

			self._text = []
			self._line = 0
			return False

		if not channel and not topic and users == -1:
			# listing ended, reset variables

			def print_end():
				self._tab.write(time, "End of list.")
				return False

			if self._line > 0:
				# print rest
				gobject.idle_add(print_listing)

			gobject.idle_add(print_end)

			code.reset_function_attrs(channelList_cb)

			signals.disconnect_signal("list", channelList_cb)

		else:
			self._text.append(("• <b>%s</b><br/>\t%d "+_("User")+"<br/>"+
								"\t"+_("Topic")+": \"%s\"") % (
									markup.escape(channel),
									users,
									markup.escape(topic)))
			self._line += 1

			if self._line == 10:

				gobject.idle_add(print_listing)
예제 #2
0
def channelBanlist_cb(time, server, channel, mask, who, when):
    """
		ban list signal.
	"""
    self = code.init_function_attrs(channelBanlist_cb,
                                    tab=gui.tabs.search_tab(server, channel))

    if not mask and not who and when == -1:
        self.tab.write(time, "End of banlist.", gui.tabs.ACTION)
        code.reset_function_attrs(channelBanlist_cb)

    else:
        timestring = mtime.strftime("%Y-%m-%d %H:%M:%S", mtime.localtime(when))

        self.tab.write(
            time, "%s by %s on %s" % (markup.escape(mask), markup.escape(who),
                                      markup.escape(timestring)),
            gui.tabs.ACTION)
예제 #3
0
def channelBanlist_cb(time, server, channel, mask, who, when):
    """
		ban list signal.
	"""
    self = code.init_function_attrs(channelBanlist_cb, tab=gui.tabs.search_tab(server, channel))

    if not mask and not who and when == -1:
        self.tab.write(time, "End of banlist.", gui.tabs.ACTION)
        code.reset_function_attrs(channelBanlist_cb)

    else:
        timestring = mtime.strftime("%Y-%m-%d %H:%M:%S", mtime.localtime(when))

        self.tab.write(
            time,
            "%s by %s on %s" % (markup.escape(mask), markup.escape(who), markup.escape(timestring)),
            gui.tabs.ACTION,
        )
예제 #4
0
def dcc_send_cb(time, id, server, sender, filename, size, progress, speed,
                status):
    """
	status:
	- 1 << 0 = incoming
	- 1 << 1 = resumed
	- 1 << 2 = running
	- 1 << 3 = error

	"" in (server, sender, filename)
		and 0 in (size, progress, speed, status):
	send was removed
	"""
    def dcc_dialog_response_cb(dialog, id, tid):
        if id == gtk.RESPONSE_OK:
            sushi.dcc_send_accept(tid)
        elif id == gtk.RESPONSE_CANCEL:
            sushi.dcc_send_remove(tid)
        dialog.destroy()

    # create dcc_news new-transfer-cache
    self = code.init_function_attrs(dcc_send_cb, dcc_news={}, dcc_notifies={})

    if (server == "" and sender == "" and filename == "" and size == 0
            and progress == 0 and speed == 0 and status == 0):

        # send was removed
        logging.debug("filetransfer %d removed." % (id))

        try:
            del self.dcc_news[id]
            del self.dcc_notifies[id]
        except KeyError:
            pass

        return

    logging.debug("status is %d." % (status))

    # import dcc transfer states
    from tekka.helper.dcc import s_new, s_incoming, s_resumable, s_running

    # handle incoming transfer
    if status & s_incoming == s_incoming:

        if status & s_new == s_new:
            # attempt made

            d = dcc_dialog.DCCDialog(id,
                                     parse_from(sender)[0],
                                     filename,
                                     size,
                                     resumable=(status
                                                & s_resumable == s_resumable))

            self.dcc_news[id] = True

            d.connect("response", dcc_dialog_response_cb, id)
            gui.mgmt.show_inline_dialog(d)

        elif status & s_running and status & s_incoming:
            if not self.dcc_news.has_key(id) and not self.dcc_notifies.has_key(
                    id):
                # notify about auto accepted file transfer
                gui.mgmt.show_inline_message(
                    _("Auto accepted file transfer"),
                    _(
                        "maki auto accepted the following file transfer:\n"
                        "Filename: %(filename)s\n"
                        "Sender: %(sender)s\n"
                        "Size: %(size)s\n"
                        "Server: %(server)s" % {
                            "filename": filename,
                            "sender": parse_from(sender)[0],
                            "size": size,
                            "server": server
                        }),
                    dtype="info")

                self.dcc_notifies[id] = True
예제 #5
0
def dcc_send_cb(time, id, server, sender, filename, size, progress, speed, status):
    """
	status:
	- 1 << 0 = incoming
	- 1 << 1 = resumed
	- 1 << 2 = running
	- 1 << 3 = error

	"" in (server, sender, filename)
		and 0 in (size, progress, speed, status):
	send was removed
	"""

    def dcc_dialog_response_cb(dialog, id, tid):
        if id == gtk.RESPONSE_OK:
            sushi.dcc_send_accept(tid)
        elif id == gtk.RESPONSE_CANCEL:
            sushi.dcc_send_remove(tid)
        dialog.destroy()

        # create dcc_news new-transfer-cache

    self = code.init_function_attrs(dcc_send_cb, dcc_news={}, dcc_notifies={})

    if server == "" and sender == "" and filename == "" and size == 0 and progress == 0 and speed == 0 and status == 0:

        # send was removed
        logging.debug("filetransfer %d removed." % (id))

        try:
            del self.dcc_news[id]
            del self.dcc_notifies[id]
        except KeyError:
            pass

        return

    logging.debug("status is %d." % (status))

    # import dcc transfer states
    from tekka.helper.dcc import s_new, s_incoming, s_resumable, s_running

    # handle incoming transfer
    if status & s_incoming == s_incoming:

        if status & s_new == s_new:
            # attempt made

            d = dcc_dialog.DCCDialog(
                id, parse_from(sender)[0], filename, size, resumable=(status & s_resumable == s_resumable)
            )

            self.dcc_news[id] = True

            d.connect("response", dcc_dialog_response_cb, id)
            gui.mgmt.show_inline_dialog(d)

        elif status & s_running and status & s_incoming:
            if not self.dcc_news.has_key(id) and not self.dcc_notifies.has_key(id):
                # notify about auto accepted file transfer
                gui.mgmt.show_inline_message(
                    _("Auto accepted file transfer"),
                    _(
                        "maki auto accepted the following file transfer:\n"
                        "Filename: %(filename)s\n"
                        "Sender: %(sender)s\n"
                        "Size: %(size)s\n"
                        "Server: %(server)s"
                        % {"filename": filename, "sender": parse_from(sender)[0], "size": size, "server": server}
                    ),
                    dtype="info",
                )

                self.dcc_notifies[id] = True