예제 #1
0
    def OnSetRoomWallMessage(self, widget):
        result = self.RoomWallEntry.get_text()
        self.RoomWallEntry.set_text("")

        config = self.frame.np.config.sections
        room_name = self.room.room

        self.frame.np.queue.put(slskmessages.RoomTickerSet(room_name, result))

        self.RoomWallList.get_buffer().set_text("")

        login = config["server"]["login"]

        if result:
            AppendLine(self.RoomWallList,
                       "[%s] %s" % (login, result),
                       showstamp=False,
                       scroll=False)

        tickers = self.room.Tickers.get_tickers()
        AppendLine(self.RoomWallList,
                   "%s" % ("\n".join([
                       "[%s] %s" % (user, msg)
                       for (user, msg) in tickers if not user == login
                   ])),
                   showstamp=False,
                   scroll=False)
예제 #2
0
    def OnSetRoomWallMessage(self, widget):
        result = self.RoomWallEntry.get_text()
        self.RoomWallEntry.set_text("")

        config = self.frame.np.config.sections
        room_name = self.room.room

        if not result:
            if room_name in config["ticker"]["rooms"]:
                del config["ticker"]["rooms"][room_name]
        else:
            config["ticker"]["rooms"][room_name] = result

        self.frame.np.config.writeConfiguration()

        self.frame.np.queue.put(slskmessages.RoomTickerSet(room_name, result))

        self.RoomWallList.get_buffer().set_text("")

        tickers = self.room.Tickers.get_tickers()
        login = config["server"]["login"]
        AppendLine(self.RoomWallList,
                   "%s" % ("\n".join([
                       "[%s] %s" % (user, msg)
                       for (user, msg) in tickers if not user == login
                   ])),
                   showstamp=False)

        if result:
            AppendLine(self.RoomWallList,
                       "[%s] %s" % (login, result),
                       showstamp=False)
예제 #3
0
    def on_set_room_wall_message(self, *_args):

        entry_text = self.clear_room_wall_message(update_list=False)
        self.frame.np.queue.append(slskmessages.RoomTickerSet(self.room.room, entry_text))

        if entry_text:
            login_username = self.frame.np.login_username
            self.room_wall_textview.append_line("[%s] %s" % (login_username, entry_text), showstamp=False, scroll=False)

        self.update_message_list()
예제 #4
0
    def clear_room_wall_message(self, update_list=True):

        entry_text = self.message_entry.get_text()
        self.message_entry.set_text("")

        self.room.tickers.remove_ticker(self.frame.np.login_username)
        self.room_wall_textview.clear()

        if update_list:
            self.frame.np.queue.append(slskmessages.RoomTickerSet(self.room.room, ""))
            self.update_message_list()

        return entry_text
예제 #5
0
    def on_set_room_wall_message(self, *args):

        entry_text = self.clear_room_wall_message(update_list=False)
        self.frame.np.queue.append(
            slskmessages.RoomTickerSet(self.room.room, entry_text))

        if entry_text:
            login = config.sections["server"]["login"]
            append_line(self.RoomWallList,
                        "[%s] %s" % (login, entry_text),
                        showstamp=False,
                        scroll=False)

        self.update_message_list()
예제 #6
0
    def clear_room_wall_message(self, update_list=True):

        entry_text = self.RoomWallEntry.get_text()
        self.RoomWallEntry.set_text("")

        login = config.sections["server"]["login"]
        self.room.tickers.remove_ticker(login)

        self.RoomWallList.get_buffer().set_text("")

        if update_list:
            self.frame.np.queue.append(
                slskmessages.RoomTickerSet(self.room.room, ""))
            self.update_message_list()

        return entry_text
예제 #7
0
    def on_set_room_wall_message(self, *args):

        result = self.RoomWallEntry.get_text()
        self.RoomWallEntry.set_text("")

        room_name = self.room.room

        self.frame.np.queue.append(slskmessages.RoomTickerSet(room_name, result))

        self.RoomWallList.get_buffer().set_text("")

        login = config.sections["server"]["login"]

        if result:
            append_line(self.RoomWallList, "[%s] %s" % (login, result), showstamp=False, scroll=False)

        tickers = self.room.tickers.get_tickers()
        append_line(self.RoomWallList, "%s" % ("\n".join(["[%s] %s" % (user, msg) for (user, msg) in tickers if not user == login])), showstamp=False, scroll=False)
예제 #8
0
    def on_enter(self, widget):

        text = widget.get_text()

        if not text:
            widget.set_text("")
            return

        if is_alias(text):
            alias_text = expand_alias(text)

            if not alias_text:
                log.add(_('Alias "%s" returned nothing'), text)
                return

            text = alias_text

        s = text.split(" ", 1)
        cmd = s[0]

        # Remove empty items created by split, if command ended with a space, e.g. '/ctcpversion '
        if len([i for i in s if i]) == 2:
            arg_self = args = s[1]
        else:
            if not self.is_chatroom:
                arg_self = self.entity
            else:
                arg_self = ""

            args = ""

        if cmd[:1] == "/" and cmd[:2] != "//" and cmd + " " not in self.command_list:
            log.add(_("Command %s is not recognized"), text)
            return

        if cmd in ("/alias", "/al"):
            append_line(self.textview, add_alias(args), None, "")

            if config.sections["words"]["aliases"]:
                self.frame.update_completions()

        elif cmd in ("/unalias", "/un"):
            append_line(self.textview, unalias(args), None, "")

            if config.sections["words"]["aliases"]:
                self.frame.update_completions()

        elif cmd in ("/w", "/whois", "/info"):
            if arg_self:
                self.frame.np.userinfo.request_user_info(arg_self)
                self.frame.change_main_page("userinfo")

        elif cmd in ("/b", "/browse"):
            if arg_self:
                self.frame.np.userbrowse.browse_user(arg_self)
                self.frame.change_main_page("userbrowse")

        elif cmd == "/ip":
            if arg_self:
                self.frame.np.request_ip_address(arg_self)

        elif cmd == "/pm":
            if args:
                self.frame.np.privatechats.show_user(args)
                self.frame.change_main_page("private")

        elif cmd in ("/m", "/msg"):
            if args:
                s = args.split(" ", 1)
                user = s[0]
                if len(s) == 2:
                    msg = s[1]
                else:
                    msg = None
                self.frame.np.privatechats.show_user(args)
                self.frame.np.privatechats.send_message(user, msg)
                self.frame.change_main_page("private")

        elif cmd in ("/s", "/search"):
            if args:
                self.frame.SearchMethod.set_active(0)
                self.frame.SearchEntry.set_text(args)
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/us", "/usearch"):
            s = args.split(" ", 1)
            if len(s) == 2:
                self.frame.SearchMethod.set_active(3)
                self.frame.SearchEntry.set_text(s[1])
                self.frame.UserSearchEntry.set_text(s[0])
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/rs", "/rsearch"):
            if args:
                self.frame.SearchMethod.set_active(2)
                self.frame.SearchEntry.set_text(args)
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/bs", "/bsearch"):
            if args:
                self.frame.SearchMethod.set_active(1)
                self.frame.SearchEntry.set_text(args)
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/j", "/join"):
            if args:
                self.frame.np.queue.append(slskmessages.JoinRoom(args))

        elif cmd in ("/l", "/leave", "/p", "/part"):
            if args:
                self.frame.np.queue.append(slskmessages.LeaveRoom(args))
            else:
                self.frame.np.queue.append(slskmessages.LeaveRoom(self.entity))

        elif cmd in ("/ad", "/add", "/buddy"):
            if args:
                self.frame.np.userlist.add_user(args)

        elif cmd in ("/rem", "/unbuddy"):
            if args:
                self.frame.np.userlist.remove_user(args)

        elif cmd == "/ban":
            if args:
                self.frame.np.network_filter.ban_user(args)

        elif cmd == "/ignore":
            if args:
                self.frame.np.network_filter.ignore_user(args)

        elif cmd == "/ignoreip":
            if args:
                self.frame.np.network_filter.ignore_ip(args)

        elif cmd == "/unban":
            if args:
                self.frame.np.network_filter.unban_user(args)

        elif cmd == "/unignore":
            if args:
                self.frame.np.network_filter.unignore_user(args)

        elif cmd == "/ctcpversion":
            if arg_self:
                self.frame.np.privatechats.show_user(arg_self)
                self.frame.np.privatechats.send_message(
                    arg_self, self.frame.privatechats.CTCP_VERSION, bytestring=True)

        elif cmd in ("/clear", "/cl"):
            self.textview.get_buffer().set_text("")

        elif cmd in ("/a", "/away"):
            self.frame.on_away()

        elif cmd in ("/q", "/quit", "/exit"):
            self.frame.on_quit()
            return  # Avoid gsignal warning

        elif cmd in ("/c", "/close"):
            self.frame.privatechats.users[self.entity].on_close()

        elif cmd == "/now":
            self.frame.np.now_playing.display_now_playing(
                callback=lambda np_message: self.send_message(self.entity, np_message))

        elif cmd == "/rescan":
            # Rescan public shares if needed
            if not config.sections["transfers"]["friendsonly"] and config.sections["transfers"]["shared"]:
                self.frame.on_rescan()

            # Rescan buddy shares if needed
            if config.sections["transfers"]["enablebuddyshares"]:
                self.frame.on_buddy_rescan()

        elif cmd in ("/tick", "/t"):
            self.frame.np.queue.append(slskmessages.RoomTickerSet(self.entity, args))

        elif cmd == "/tickers":
            self.frame.chatrooms.joinedrooms[self.entity].show_tickers()

        elif cmd == "/toggle":
            if args:
                self.frame.np.pluginhandler.toggle_plugin(args)

        elif cmd == "/me":
            self.send_message(self.entity, text)

        elif text[:2] == "//":
            text = text[1:]
            self.send_message(self.entity, text)

        elif cmd[:1] == "/" and self.is_chatroom:
            self.frame.np.pluginhandler.trigger_public_command_event(self.entity, cmd[1:], args)

        elif cmd[:1] == "/" and not self.is_chatroom:
            self.frame.np.pluginhandler.trigger_private_command_event(self.entity, cmd[1:], args)

        else:
            self.send_message(self.entity, text)

        self.entry.set_text("")