internal PlainChannelMessageRenderer(ChannelGUI gui, string sender, string text)
                : base(sender, text)
            {
                // use full markup for clickies
                textClickifiedText = StripControlChars(text);

                this.highlighted = gui.highlightName && (sender != "*") && this.sourceText.ToLower().Contains(gui.config.nick.ToLower());
            }
            internal RichTextLabelChannelMessageRenderer(ChannelGUI gui, string sender, string text)
                : base(sender, text)
            {
                ToRichText(sender, out senderRichText, out senderClickifiedText);
                ToRichText(text, out textRichText, out textClickifiedText);

                this.highlighted = gui.highlightName && (sender != "*") && this.sourceText.ToLower().Contains(gui.config.nick.ToLower());
            }
 private void initStyles(ChannelGUI gui)
 {
     if (!this.stylesInitialized)
     {
         this.senderWidth       = gui.senderStyle.CalcSize(new GUIContent(sender)).x;
         this.stylesInitialized = true;
     }
 }
            private void handleClick(ChannelGUI gui, string text, int index)
            {
                string word = GetWordAt(text, index);

                if (word.StartsWith("http:") || word.StartsWith("https:"))
                {
                    gui.linkWindow.load(word);
                }
            }
Exemple #5
0
 private void closeChannel(string handle)
 {
     if (channelClosedEvent != null)
     {
         channelClosedEvent(new ChannelEvent(handle));
     }
     channelGUIs.Remove(handle);
     handles.Remove(handle);
     currentChannelGUI = channelGUIs.Values.FirstOrDefault();
 }
 internal ChannelMessageRenderer get(ChannelGUI gui, string sender, string text)
 {
     if (gui.config.forceSimpleRender)
     {
         return(new PlainChannelMessageRenderer(gui, sender, text));
     }
     else
     {
         return(new RichTextLabelChannelMessageRenderer(gui, sender, text));
     }
 }
Exemple #7
0
        private ChannelGUI getChannelGUI(string handle)
        {
            ChannelGUI channelGUI;

            if (!channelGUIs.ContainsKey(handle))
            {
                channelGUI        = new ChannelGUI(linkWindow, handle, config);
                channelGUI.hidden = true;
                channelGUI.onUserCommandEntered += (e) => userCommandEntered(e.command);
                channelGUIs.Add(handle, channelGUI);
                handles.Add(handle);
                handles.Sort(StringComparer.CurrentCultureIgnoreCase);
            }
            else
            {
                channelGUI = channelGUIs[handle];
            }
            return(channelGUI);
        }
            internal override void Render(ChannelGUI gui, float spaceWidth, float maxNameWidth)
            {
                initStyles(gui);


                GUIStyle style = (highlighted ? gui.textHighlightedStyle : gui.textStyle);

                GUILayout.BeginHorizontal();
                GUILayout.Label(sender, gui.senderStyle, GUILayout.Width(maxNameWidth), GUILayout.MaxWidth(maxNameWidth));
                if (GUILayout.Button(sourceText, style))
                {
                    int textIndex = style.GetCursorStringIndex(textRect, new GUIContent(textClickifiedText), Event.current.mousePosition);
                    handleClick(gui, textClickifiedText, textIndex);
                }
                if (Event.current.type == EventType.Repaint)
                {
                    textRect = GUILayoutUtility.GetLastRect();
                }
                GUILayout.EndHorizontal();
            }
Exemple #9
0
        public void addToChannel(string handle, string sender, string text, IRCCommand cmd = null)
        {
            TextInputState textInputState = GetInputState();
            ChannelGUI     channelGUI     = getChannelGUI(handle);

            channelGUI.addToBuffer(sender, text, cmd);

            // show this channel if no channel is visible yet
            if (currentChannelGUI == null)
            {
                currentChannelGUI        = channelGUI;
                currentChannelGUI.hidden = false;
            }

            RestoreInputFocus(textInputState);

            if (config.tts)
            {
                speak(handle, sender, text, cmd);
            }
        }
            private void initStyles(ChannelGUI gui)
            {
                if (!this.stylesInitialized)
                {
                    this.senderTextStyle = new GUIStyle(gui.senderStyle);
                    this.senderTextStyle.normal.textColor = Color.white;
                    this.senderTextStyle.richText         = true;

                    this.textStyle = new GUIStyle(gui.textStyle);
                    this.textStyle.normal.textColor = Color.white;
                    this.textStyle.richText         = true;

                    this.textHighlightedStyle = new GUIStyle(gui.textHighlightedStyle);
                    this.textHighlightedStyle.normal.textColor = Color.white;
                    this.textHighlightedStyle.richText         = true;

                    this.senderWidth = senderTextStyle.CalcSize(new GUIContent(senderRichText)).x;

                    this.stylesInitialized = true;
                }
            }
Exemple #11
0
        private void drawButtons()
        {
            GUILayout.BeginHorizontal();
            for (int ix = 0; ix < handles.Count; ix++)
            {
                string handle = handles[ix];

                ChannelGUI channelGUI = getChannelGUI(handle);
                GUIStyle   buttonStyle;
                if (channelGUI.Equals(currentChannelGUI))
                {
                    buttonStyle = buttonActiveStyle;
                }
                else if (channelGUI.channelHighlightedPrivateMessage)
                {
                    buttonStyle = buttonHighlightedNicknameStyle;
                }
                else if (channelGUI.channelHighlightedMessage)
                {
                    buttonStyle = buttonHighlightedStyle;
                }
                else
                {
                    buttonStyle = GUI.skin.button;
                }

                if (GUILayout.Button(handle, buttonStyle))
                {
                    currentChannelGUI        = channelGUI;
                    currentChannelGUI.hidden = false;
                    foreach (ChannelGUI gui in channelGUIs.Values.Where(gui => !gui.Equals(currentChannelGUI)))
                    {
                        gui.hidden = true;
                    }
                }
            }

            GUILayout.FlexibleSpace();

            if ((currentChannelGUI != null) && (channelGUIs.Count > 1))
            {
                if (currentChannelGUI.handle.StartsWith("#"))
                {
                    if (GUILayout.Button(namesHidden ? "<" : ">"))
                    {
                        namesHidden = !namesHidden;
                    }
                }
                if (GUILayout.Button("X"))
                {
                    closeChannel(currentChannelGUI.handle);
                }
            }

            if (GUILayout.Button("Config"))
            {
                if (onShowConfigHandler != null)
                {
                    onShowConfigHandler(new ShowConfigEvent());
                }
            }
            GUILayout.EndHorizontal();
        }
 internal override float SenderWidth(ChannelGUI gui)
 {
     initStyles(gui);
     return(senderWidth);
 }
 abstract internal void Render(ChannelGUI gui, float spaceWidth, float maxNameWidth);
 abstract internal float SenderWidth(ChannelGUI gui);