Exemplo n.º 1
0
    void OnGUI()
    {
        GUIStyle newStyle = new GUIStyle();

        newStyle.alignment        = TextAnchor.MiddleCenter;
        newStyle.normal.textColor = defaultColor;
        Rect guiRect;

        foreach (GUIInfo info in guiInfos)
        {
            newStyle.fontSize = (int)info.fontSize;
            Vector2 pos = new Vector2(info.posX * Screen.width / 100f, (100 - info.posY) * Screen.height / 100f);
            guiRect = new Rect(pos.x, pos.y, 0, 0);
            GUI.Box(guiRect, info.text, newStyle);
        }
        for (int i = 0; i < options.Length; i++)
        {
            GUIInfo info = options[i];
            Vector2 pos  = new Vector2(info.posX * Screen.width / 100f, (100 - info.posY) * Screen.height / 100f);
            guiRect = new Rect(pos.x, pos.y, 0, 0);
            if (optionNum != i)
            {
                newStyle.normal.textColor = defaultColor;
                newStyle.fontSize         = (int)info.fontSize;
            }
            else
            {
                newStyle.normal.textColor = selectedColor;
                newStyle.fontSize         = (int)info.fontSize + 2;
            }
            GUI.Box(guiRect, info.text, newStyle);
        }

        HandleInput();
    }
	// Use this for initialization
	void Start () {
	
    data = DataScript.data;
    player = PlayerDataScript.playerData;
    guiInfo = GUIInfo.guiInfo;
  
	}
Exemplo n.º 3
0
        /// <summary>
        /// 4. 게임 실행중 한번만 실행됨
        /// </summary>
        public void Start()
        {
            MyLog.LogMessage("Start", string.Format("{0:0.000} ", stopwatch.Elapsed.ToString()));
#if DebugLilly
            GUIInfo.GetGameInfo();
#endif
        }
Exemplo n.º 4
0
    protected override void OnGUI()
    {
        float nowAlpha;

        if (alphaValue > 0f)
        {
            nowAlpha = getNowAlpha();
            float pixelRatio = (mainCamera.orthographicSize * 2) / mainCamera.pixelHeight;
            style.alignment        = TextAnchor.UpperCenter;
            style.normal.textColor = new Color(1, 1, 1, nowAlpha);
            Rect guiRect;

            GUIInfo elem = guiInfos[activeText];

            style.fontSize = (int)(elem.fontSize / pixelRatio);
            Vector3 screenPoint = getScreenPoint(elem.posX, elem.posY);
            guiRect = new Rect(screenPoint.x, Screen.height - (screenPoint.y), 0, 0);
            GUI.Box(guiRect, elem.text, style);
        }
    }
    private static void InitXML()
    {
#pragma warning disable 0618
        WWW www = new WWW(PathManager.FileBasePath() + "/Editor/CMD/TPackageInfo.xml");
        while (!www.isDone)
        {
        }
        if (string.IsNullOrEmpty(www.error))
        {
            XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.LoadXml(www.text);
            XmlNodeList soundBankList = XmlDoc.GetElementsByTagName("Item");
            InfoList = new List <GUIInfo>();
            foreach (XmlNode node in soundBankList)
            {
                GUIInfo info = new GUIInfo(node.Attributes["In"].Value, node.Attributes["Name"].Value, node.Attributes["Out"].Value);
                InfoList.Add(info);
            }
        }
        else
        {
            Log.Error(www.error);
        }
    }
Exemplo n.º 6
0
 /// <summary>
 /// Adds a result to the MultiInfoBool cache
 /// </summary>
 /// <param name="info">the GUIInfo object(condition)</param>
 /// <param name="result">result of the condition</param>
 private static void AddMultiInfoBoolResult(GUIInfo info, bool result)
 {
   lock (lockCache)
   {
     m_cacheMultiInfoBoolResults[info] = result;
   }
 }
Exemplo n.º 7
0
    /// <summary>
    /// Adds (links) a property to the given MultiInfoBool condition
    /// </summary>
    /// <param name="info">the GUIInfo object(condition)</param>
    /// <param name="property"></param>
    private static void AddMultiBoolInfoProperty(GUIInfo info, string property)
    {
      if (property == null || property.IndexOf('#') == -1)
        return;

      lock (lockCache)
      {
        HashSet<GUIInfo> set = null;
        if (!m_cacheMultiInfoBoolProperties.TryGetValue(property, out set))
        {
          set = new HashSet<GUIInfo>();
          set.Add(info);
          m_cacheMultiInfoBoolProperties[property] = set;
          m_cacheMultiInfoBoolPropertiesLookup[info.m_data1] = property;
        }
        else
        {
          if (!set.Contains(info))
          {
            set.Add(info);
          }
        }
      }
    }
Exemplo n.º 8
0
    /// \brief Examines the multi information sent and returns true or false accordingly.
    private static bool GetMultiInfoBool(GUIInfo info, int dwContextWindow)
    {
      bool bReturn = false;
      if (IsCachedMultiInfoBoolResult(info, out bReturn))
      {
        return bReturn;
      }

      int condition = Math.Abs(info.m_info);
      switch (condition)
      {
        case SKIN_BOOL:
          bReturn = SkinSettings.GetSkinBool(info.m_data1);
          break;
        case STRING_EQUALS:
        case STRING_STARTS:
        case STRING_CONTAINS:
        case SKIN_STRING:
          if (info.m_data2 != 0)
          {
            string prop1 = "";
            string prop1Name = GetMultiBoolInfoProperty(info.m_data1);
            if (string.IsNullOrEmpty(prop1Name))
            {
              prop1Name = SkinSettings.GetSkinName(info.m_data1);
              prop1 = SkinSettings.GetSkinString(info.m_data1);
            }
            else
            {
              prop1 = GUIPropertyManager.GetProperty(prop1Name);
            }

            string prop2 = m_stringParameters[info.m_data2];
            string value1 = GUIPropertyManager.Parse(prop1).Trim().ToLowerInvariant();
            string value2 = GUIPropertyManager.Parse(prop2).Trim().ToLowerInvariant();

            if ((condition == STRING_EQUALS) || (condition == SKIN_STRING))
            {
              bReturn = (value1 == value2);
            }
            else if (condition == STRING_STARTS)
            {
              bReturn = value1.StartsWith(value2);
            }
            else
            {
              bReturn = value1.Contains(value2);
            }

            bReturn = (info.m_info < 0) ? !bReturn : bReturn;
            AddMultiBoolInfoProperty(info, prop1Name);
            AddMultiBoolInfoProperty(info, prop2);

            // Do not cache the result for skin settings.  The results change based on user interactions.
            if (condition != SKIN_STRING)
            {
              AddMultiInfoBoolResult(info, bReturn);
            }
          }
          else
          {
            string skinProperty = "";
            string skinPropertyName = GetMultiBoolInfoProperty(info.m_data1);
            if (string.IsNullOrEmpty(skinPropertyName))
            {
              skinPropertyName = SkinSettings.GetSkinName(info.m_data1);
              skinProperty = SkinSettings.GetSkinString(info.m_data1);
            }
            else
            {
              skinProperty = GUIPropertyManager.GetProperty(skinPropertyName);
            }

            bReturn = (GUIPropertyManager.Parse(skinProperty).Length != 0);
            bReturn = (info.m_info < 0) ? !bReturn : bReturn;
            AddMultiBoolInfoProperty(info, skinPropertyName);
            AddMultiInfoBoolResult(info, bReturn);
          }
          return bReturn;
        case SKIN_THEME:
          if (info.m_data2 != 0)
          {
            string prop1 = GUIThemeManager.CurrentTheme;
            string prop2 = m_stringParameters[info.m_data2];

            string value1 = GUIPropertyManager.Parse(prop1).Trim().ToLowerInvariant();
            string value2 = GUIPropertyManager.Parse(prop2).Trim().ToLowerInvariant();

            bReturn = (value1 == value2);
          }
          break;
        case CONTROL_GROUP_HAS_FOCUS:
          //  GUIWindow win = GUIWindowManager.GetWindow(dwContextWindow);
          //  if (win == null) win = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow);
          //  if (win != null)
          //    bReturn = win.ControlGroupHasFocus(info.m_data1, info.m_data2);
          bReturn = false;

          break;
        case PLUGIN_IS_ENABLED:
          bReturn = PluginManager.IsPluginNameEnabled2(info.m_stringData);
          break;
        case CONTROL_HAS_TEXT:
          GUIWindow pWindow = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow);
          if (pWindow != null)
          {
            // Note: This'll only work for unique id's
            GUILabelControl control = pWindow.GetControl(info.m_data1) as GUILabelControl;
            if (control != null)
            {
              bReturn = (control.TextWidth > 0);
            }
            else
            {
              GUIFadeLabel control2 = pWindow.GetControl(info.m_data1) as GUIFadeLabel;
              if (control2 != null)
              {
                bReturn = control2.HasText;
              }
              else
              {
                GUITextControl control3 = pWindow.GetControl(info.m_data1) as GUITextControl;
                if (control3 != null)
                {
                  bReturn = control3.HasText;
                }
                else
                {
                  GUITextScrollUpControl control4 = pWindow.GetControl(info.m_data1) as GUITextScrollUpControl;
                  if (control4 != null)
                  {
                    // SE - does not work
                    //bReturn = control4.SubItemCount > 0;
                    bReturn = control4.HasText;
                  }
                }
              }
            }
          }
          break;
        case CONTROL_HAS_THUMB:
          GUIWindow tWindow = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow);
          if (tWindow != null)
          {
            // Note: This'll only work for unique id's
            GUIImage control = tWindow.GetControl(info.m_data1) as GUIImage;
            if (control != null)
            {
              bReturn = (control.TextureHeight > 0 && control.TextureWidth > 0);
            }
          }
          break;
        case CONTROL_IS_VISIBLE:
          GUIWindow vWindow = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow);
          if (vWindow != null)
          {
            // Note: This'll only work for unique id's
            GUIControl control = vWindow.GetControl(info.m_data1);
            if (control != null)
            {
              bReturn = control.Visible;
            }
          }
          break;
        case CONTROL_HAS_FOCUS:
          GUIWindow fWindow = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow);
          if (fWindow != null)
          {
            bReturn = (fWindow.GetFocusControlId() == info.m_data1);
          }
          break;
        case BUTTON_SCROLLER_HAS_ICON:
          /*
          GUIWindow pWindow = GUIWindowManager.GetWindow(dwContextWindow);
          if (null==pWindow) pWindow = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow);
          if (pWindow!=null)
          {
            GUIControl *pControl = (GUIControl *)pWindow.GetControl(pWindow.GetFocusedControl());
            if (pControl && pControl.GetControlType() == GUIControl::GUIControl_BUTTONBAR)
              bReturn = ((CGUIButtonScroller *)pControl).GetActiveButtonID() == info.m_data1;
          }
           */
          return false;
        case SYSTEM_DATE_IS_BETWEEN:
          {
            if (IsTimeForRefresh())
            {
              string startDate = SkinSettings.GetSkinString(info.m_data1);
              string endDate = SkinSettings.GetSkinString(info.m_data2);
              var dateRange = new DateRange(startDate, endDate);
              bReturn = dateRange.IsInRange(DateTime.Now);
              LastReturnValues[info] = bReturn;
              break;
            }
            LastReturnValues.TryGetValue(info, out bReturn);
            break;
          }
        case SYSTEM_TIME_IS_BETWEEN:
          {
            if (IsTimeForRefresh())
            {
              string startDate = SkinSettings.GetSkinString(info.m_data1);
              string endDate = SkinSettings.GetSkinString(info.m_data2);
              var timeRange = new TimeRange(startDate, endDate);
              bReturn = timeRange.IsInRange(DateTime.Now);
              LastReturnValues[info] = bReturn;
              break;
            }
            LastReturnValues.TryGetValue(info, out bReturn);
            break;
          }
        case WINDOW_NEXT:
          bReturn = (info.m_data1 == m_nextWindowID);
          break;
        case WINDOW_PREVIOUS:
          bReturn = (info.m_data1 == m_prevWindowID);
          break;
        case WINDOW_IS_VISIBLE:
          bReturn = GUIWindowManager.ActiveWindow == (info.m_data1);
          break;
        case WINDOW_IS_TOPMOST:
          bReturn = GUIWindowManager.ActiveWindow == (info.m_data1);
          break;
        case SYSTEM_HAS_ALARM:
          bReturn = false; //g_alarmClock.hasAlarm(m_stringParameters[info.m_data1]);
          break;
      }
      return (info.m_info < 0) ? !bReturn : bReturn;
    }
Exemplo n.º 9
0
    /// <summary>
    /// Examines the multi information sent and returns the string value.
    /// </summary>
    /// <param name="info"></param>
    /// <param name="dwContextWindow"></param>
    /// <returns></returns>
    private static string GetMultiInfoString(GUIInfo info, int dwContextWindow)
    {
      string strReturn = "";

      int condition = Math.Abs(info.m_info);
      switch (condition)
      {
        case SKIN_STRING:
          if (info.m_data2 != 0)
          {
            string prop1 = SkinSettings.GetSkinString(info.m_data1);
            strReturn = GUIPropertyManager.Parse(prop1);
          }
          break;
      }
      return strReturn;
    }
Exemplo n.º 10
0
 private static void SetMultiInfoBool(GUIInfo info, bool newValue, int dwContextWindow)
 {
   int condition = Math.Abs(info.m_info);
   switch (condition)
   {
     case SKIN_BOOL:
       SkinSettings.SetSkinBool(info.m_data1, newValue);
       break;
   }
 }
Exemplo n.º 11
0
 private static void SetMultiInfoString(GUIInfo info, string newValue, int dwContextWindow)
 {
   int condition = Math.Abs(info.m_info);
   switch (condition)
   {
     case SKIN_STRING:
       SkinSettings.SetSkinString(info.m_data1, newValue);
       break;
   }
 }
 // Use this for initialization
 void Start()
 {
     data = DataScript.data;
     guiInfo = GUIInfo.guiInfo;
 }
 // Use this for initialization
 void Start()
 {
     guiInfo = GUIInfo.guiInfo;
     data = DataScript.data;
     kingdomData = KingdomDataScript.kingdomData;
 }
Exemplo n.º 14
0
    /* ------------------------------------------------------------------------------*/
    void Awake()
    {
        guiInfo = this;

        armyButton = new Rect(
          armyWindow.x,
          armyWindow.y,
          armyWindow.width / armyButtonDimensions.x,
          armyWindow.height / armyButtonDimensions.y
        );
    }
 // Use this for initialization
 void Awake()
 {
     data = DataScript.data;
     guiInfo = GUIInfo.guiInfo;
 }
Exemplo n.º 16
0
 /// <summary>
 /// Gets a value indicating whether this condition has as cached result
 /// </summary>
 /// <param name="info">the GUIInfo object(condition)</param>
 /// <param name="result">returns the value from cache </param>
 /// <returns>True if output was cached</returns>
 private static bool IsCachedMultiInfoBoolResult(GUIInfo info, out bool result)
 {
   result = false;
   lock (lockCache)
   {
     bool isCachedMultiInfoBoolResult = (m_cacheMultiInfoBoolResults.TryGetValue(info, out result));
     return isCachedMultiInfoBoolResult;
   }
 }
Exemplo n.º 17
0
    public static int TranslateSingleString(string strCondition)
    {
      if (strCondition.Length == 0)
      {
        return 0;
      }
      string strTest = strCondition;
      strTest = strTest.ToLowerInvariant();
      strTest = strTest.TrimStart(new char[] {' '});
      strTest = strTest.TrimEnd(new char[] {' '});
      if (strTest.Length == 0)
      {
        return 0;
      }

      bool bNegate = strTest[0] == '!';
      int ret = 0;
      string strCategory = "";

      if (bNegate)
      {
        strTest = strTest.Remove(0, 1);
      }

      // translate conditions...
      if (strTest == "false" || strTest == "no" || strTest == "off" || strTest == "disabled")
      {
        ret = SYSTEM_ALWAYS_FALSE;
      }
      else if (strTest == "true" || strTest == "yes" || strTest == "on" || strTest == "enabled")
      {
        ret = SYSTEM_ALWAYS_TRUE;
      }
      else
      {
        strCategory = strTest.Substring(0, strTest.IndexOf("."));
      }

      
      if (strCategory == "topbar")
      {
        if (strTest == "topbar.focused")
        {
          ret = TOPBAR_HAS_FOCUS;
        }
        else if (strTest == "topbar.visible")
        {
          ret = TOPBAR_IS_VISIBLE;
        }
      }
      else if (strCategory == "player")
      {
        if (strTest == "player.hasmedia")
        {
          ret = PLAYER_HAS_MEDIA;
        }
        else if (strTest == "player.hasaudio")
        {
          ret = PLAYER_HAS_AUDIO;
        }
        else if (strTest == "player.hasvideo")
        {
          ret = PLAYER_HAS_VIDEO;
        }
        else if (strTest == "player.playing")
        {
          ret = PLAYER_PLAYING;
        }
        else if (strTest == "player.paused")
        {
          ret = PLAYER_PAUSED;
        }
        else if (strTest == "player.rewinding")
        {
          ret = PLAYER_REWINDING;
        }
        else if (strTest == "player.forwarding")
        {
          ret = PLAYER_FORWARDING;
        }
        else if (strTest == "player.rewinding2x")
        {
          ret = PLAYER_REWINDING_2x;
        }
        else if (strTest == "player.rewinding4x")
        {
          ret = PLAYER_REWINDING_4x;
        }
        else if (strTest == "player.rewinding8x")
        {
          ret = PLAYER_REWINDING_8x;
        }
        else if (strTest == "player.rewinding16x")
        {
          ret = PLAYER_REWINDING_16x;
        }
        else if (strTest == "player.rewinding32x")
        {
          ret = PLAYER_REWINDING_32x;
        }
        else if (strTest == "player.forwarding2x")
        {
          ret = PLAYER_FORWARDING_2x;
        }
        else if (strTest == "player.forwarding4x")
        {
          ret = PLAYER_FORWARDING_4x;
        }
        else if (strTest == "player.forwarding8x")
        {
          ret = PLAYER_FORWARDING_8x;
        }
        else if (strTest == "player.forwarding16x")
        {
          ret = PLAYER_FORWARDING_16x;
        }
        else if (strTest == "player.forwarding32x")
        {
          ret = PLAYER_FORWARDING_32x;
        }
        else if (strTest == "player.canrecord")
        {
          ret = PLAYER_CAN_RECORD;
        }
        else if (strTest == "player.recording")
        {
          ret = PLAYER_RECORDING;
        }
        else if (strTest == "player.displayafterseek")
        {
          ret = PLAYER_DISPLAY_AFTER_SEEK;
        }
        else if (strTest == "player.caching")
        {
          ret = PLAYER_CACHING;
        }
        else if (strTest == "player.seekbar")
        {
          ret = PLAYER_SEEKBAR;
        }
        else if (strTest == "player.seektime")
        {
          ret = PLAYER_SEEKTIME;
        }
        else if (strTest == "player.progress")
        {
          ret = PLAYER_PROGRESS;
        }
        else if (strTest == "player.seeking")
        {
          ret = PLAYER_SEEKING;
        }
        else if (strTest == "player.showtime")
        {
          ret = PLAYER_SHOWTIME;
        }
        else if (strTest == "player.showcodec")
        {
          ret = PLAYER_SHOWCODEC;
        }
        else if (strTest == "player.showinfo")
        {
          ret = PLAYER_SHOWINFO;
        }
        else if (strTest == "player.time")
        {
          ret = PLAYER_TIME;
        }
        else if (strTest == "player.timeremaining")
        {
          ret = PLAYER_TIME_REMAINING;
        }
        else if (strTest == "player.duration")
        {
          ret = PLAYER_DURATION;
        }
        else if (strTest == "player.volume")
        {
          ret = PLAYER_VOLUME;
        }
        else if (strTest == "player.muted")
        {
          ret = PLAYER_MUTED;
        }
        else if (strTest == "player.hasduration")
        {
          ret = PLAYER_HASDURATION;
        }
      }
      else if (strCategory == "system")
      {
        if (strTest == "system.date")
        {
          ret = SYSTEM_DATE;
        }
        else if (strTest.Substring(0, 21) == "system.date.isbetween")
        {
          String withoutBlanks = strTest.Replace(" ", String.Empty);
          int param1 = SkinSettings.TranslateSkinString(withoutBlanks.Substring(22, 5));
          int param2 = SkinSettings.TranslateSkinString(withoutBlanks.Substring(28, 5));
          return AddMultiInfo(new GUIInfo(bNegate ? -SYSTEM_DATE_IS_BETWEEN : SYSTEM_DATE_IS_BETWEEN, param1, param2));
        }
        else if (strTest == "system.time")
        {
          ret = SYSTEM_TIME;
        }
        else if (strTest.Substring(0, 21) == "system.time.isbetween")
        {
          String withoutBlanks = strTest.Replace(" ", String.Empty);
          int param1 = SkinSettings.TranslateSkinString(withoutBlanks.Substring(22, 5));
          int param2 = SkinSettings.TranslateSkinString(withoutBlanks.Substring(28, 5));

          var guiInfo = new GUIInfo(bNegate ? -SYSTEM_TIME_IS_BETWEEN : SYSTEM_TIME_IS_BETWEEN, param1, param2);
          int index = AddMultiInfo(guiInfo);
          if (!LastReturnValues.ContainsKey(m_multiInfo[index - MULTI_INFO_START]))
            LastReturnValues.Add(m_multiInfo[index - MULTI_INFO_START], false);
          return index;
        }
        else if (strTest == "system.cputemperature")
        {
          ret = SYSTEM_CPU_TEMPERATURE;
        }
        else if (strTest == "system.gputemperature")
        {
          ret = SYSTEM_GPU_TEMPERATURE;
        }
        else if (strTest == "system.fanspeed")
        {
          ret = SYSTEM_FAN_SPEED;
        }
        else if (strTest == "system.freespace(c)")
        {
          ret = SYSTEM_FREE_SPACE_C;
        }
        else if (strTest == "system.freespace(e)")
        {
          ret = SYSTEM_FREE_SPACE_E;
        }
        else if (strTest == "system.freespace(f)")
        {
          ret = SYSTEM_FREE_SPACE_F;
        }
        else if (strTest == "system.freespace(g)")
        {
          ret = SYSTEM_FREE_SPACE_G;
        }
        else if (strTest == "system.buildversion")
        {
          ret = SYSTEM_BUILD_VERSION;
        }
        else if (strTest == "system.builddate")
        {
          ret = SYSTEM_BUILD_DATE;
        }
        else if (strTest == "system.hasnetwork")
        {
          ret = SYSTEM_ETHERNET_LINK_ACTIVE;
        }
        else if (strTest == "system.fps")
        {
          ret = SYSTEM_FPS;
        }
        else if (strTest == "system.kaiconnected")
        {
          ret = SYSTEM_KAI_CONNECTED;
        }
        else if (strTest == "system.kaienabled")
        {
          ret = SYSTEM_KAI_ENABLED;
        }
        else if (strTest == "system.hasmediadvd")
        {
          ret = SYSTEM_MEDIA_DVD;
        }
        else if (strTest == "system.dvdready")
        {
          ret = SYSTEM_DVDREADY;
        }
        else if (strTest == "system.trayopen")
        {
          ret = SYSTEM_TRAYOPEN;
        }
        else if (strTest == "system.autodetection")
        {
          ret = SYSTEM_AUTODETECTION;
        }
        else if (strTest == "system.freememory")
        {
          ret = SYSTEM_FREE_MEMORY;
        }
        else if (strTest == "system.screenmode")
        {
          ret = SYSTEM_SCREEN_MODE;
        }
        else if (strTest == "system.screenwidth")
        {
          ret = SYSTEM_SCREEN_WIDTH;
        }
        else if (strTest == "system.screenheight")
        {
          ret = SYSTEM_SCREEN_HEIGHT;
        }
        else if (strTest == "system.currentwindow")
        {
          ret = SYSTEM_CURRENT_WINDOW;
        }
        else if (strTest == "system.currentcontrol")
        {
          ret = SYSTEM_CURRENT_CONTROL;
        }
        else if (strTest == "system.xboxnickname")
        {
          ret = SYSTEM_XBOX_NICKNAME;
        }
        else if (strTest == "system.dvdlabel")
        {
          ret = SYSTEM_DVD_LABEL;
        }
        else if (strTest == "system.haslocks")
        {
          ret = SYSTEM_HASLOCKS;
        }
        else if (strTest == "system.hasloginscreen")
        {
          ret = SYSTEM_HAS_LOGINSCREEN;
        }
        else if (strTest == "system.ismaster")
        {
          ret = SYSTEM_ISMASTER;
        }
        else if (strTest == "system.internetstate")
        {
          ret = SYSTEM_INTERNET_STATE;
        }
        else if (strTest == "system.loggedon")
        {
          ret = SYSTEM_LOGGEDON;
        }
        else if (strTest.Substring(0, 16) == "system.idletime(")
        {
          int time = Int32.Parse((strTest.Substring(16, strTest.Length - 17)));
          if (time > SYSTEM_IDLE_TIME_FINISH - SYSTEM_IDLE_TIME_START)
          {
            time = SYSTEM_IDLE_TIME_FINISH - SYSTEM_IDLE_TIME_START;
          }
          if (time > 0)
          {
            ret = SYSTEM_IDLE_TIME_START + time;
          }
        }
        else if (strTest.Substring(0, 16) == "system.hddsmart(")
        {
          i_SmartRequest = Int32.Parse((strTest.Substring(16, strTest.Length - 17)));
          if (i_SmartRequest <= 0)
          {
            i_SmartRequest = 17; //falling back to HDD temp
          }
          ret = SYSTEM_HDD_SMART;
        }
        else if (strTest.Substring(0, 16) == "system.hasalarm(")
        {
          return
            AddMultiInfo(new GUIInfo(bNegate ? -SYSTEM_HAS_ALARM : SYSTEM_HAS_ALARM,
                                     ConditionalStringParameter(strTest.Substring(16, strTest.Length - 17)), 0));
        }
          //else if (strTest.Substring(0,16)=="system.alarmpos(")
        else if (strTest == "system.alarmpos")
        {
          ret = SYSTEM_ALARM_POS;
        }
        else if (strTest == "system.profilename")
        {
          ret = SYSTEM_PROFILENAME;
        }
        else if (strTest == "system.profilethumb")
        {
          ret = SYSTEM_PROFILETHUMB;
        }
      }
      else if (strCategory == "xlinkkai")
      {
        if (strTest == "xlinkkai.username")
        {
          ret = XLINK_KAI_USERNAME;
        }
      }
      else if (strCategory == "lcd")
      {
        if (strTest == "lcd.playicon")
        {
          ret = LCD_PLAY_ICON;
        }
        else if (strTest == "lcd.progressbar")
        {
          ret = LCD_PROGRESS_BAR;
        }
        else if (strTest == "lcd.cputemperature")
        {
          ret = LCD_CPU_TEMPERATURE;
        }
        else if (strTest == "lcd.gputemperature")
        {
          ret = LCD_GPU_TEMPERATURE;
        }
        else if (strTest == "lcd.fanspeed")
        {
          ret = LCD_FAN_SPEED;
        }
        else if (strTest == "lcd.date")
        {
          ret = LCD_DATE;
        }
        else if (strTest == "lcd.freespace(c)")
        {
          ret = LCD_FREE_SPACE_C;
        }
        else if (strTest == "lcd.freespace(e)")
        {
          ret = LCD_FREE_SPACE_E;
        }
        else if (strTest == "lcd.freespace(f)")
        {
          ret = LCD_FREE_SPACE_F;
        }
        else if (strTest == "lcd.freespace(g)")
        {
          ret = LCD_FREE_SPACE_G;
        }
      }
      else if (strCategory == "network")
      {
        if (strTest == "network.ipaddress")
        {
          ret = NETWORK_IP_ADDRESS;
        }
      }
      else if (strCategory == "musicplayer")
      {
        if (strTest == "musicplayer.title")
        {
          ret = MUSICPLAYER_TITLE;
        }
        else if (strTest == "musicplayer.album")
        {
          ret = MUSICPLAYER_ALBUM;
        }
        else if (strTest == "musicplayer.artist")
        {
          ret = MUSICPLAYER_ARTIST;
        }
        else if (strTest == "musicplayer.year")
        {
          ret = MUSICPLAYER_YEAR;
        }
        else if (strTest == "musicplayer.genre")
        {
          ret = MUSICPLAYER_GENRE;
        }
        else if (strTest == "musicplayer.time")
        {
          ret = MUSICPLAYER_TIME;
        }
        else if (strTest == "musicplayer.timeremaining")
        {
          ret = MUSICPLAYER_TIME_REMAINING;
        }
        else if (strTest == "musicplayer.timespeed")
        {
          ret = MUSICPLAYER_TIME_SPEED;
        }
        else if (strTest == "musicplayer.tracknumber")
        {
          ret = MUSICPLAYER_TRACK_NUMBER;
        }
        else if (strTest == "musicplayer.duration")
        {
          ret = MUSICPLAYER_DURATION;
        }
        else if (strTest == "musicplayer.cover")
        {
          ret = MUSICPLAYER_COVER;
        }
        else if (strTest == "musicplayer.bitrate")
        {
          ret = MUSICPLAYER_BITRATE;
        }
        else if (strTest == "musicplayer.playlistlength")
        {
          ret = MUSICPLAYER_PLAYLISTLEN;
        }
        else if (strTest == "musicplayer.playlistposition")
        {
          ret = MUSICPLAYER_PLAYLISTPOS;
        }
        else if (strTest == "musicplayer.channels")
        {
          ret = MUSICPLAYER_CHANNELS;
        }
        else if (strTest == "musicplayer.bitspersample")
        {
          ret = MUSICPLAYER_BITSPERSAMPLE;
        }
        else if (strTest == "musicplayer.samplerate")
        {
          ret = MUSICPLAYER_SAMPLERATE;
        }
        else if (strTest == "musicplayer.codec")
        {
          ret = MUSICPLAYER_CODEC;
        }
        else if (strTest == "musicplayer.discnumber")
        {
          ret = MUSICPLAYER_DISC_NUMBER;
        }
      }
      else if (strCategory == "videoplayer")
      {
        if (strTest == "videoplayer.title")
        {
          ret = VIDEOPLAYER_TITLE;
        }
        else if (strTest == "videoplayer.genre")
        {
          ret = VIDEOPLAYER_GENRE;
        }
        else if (strTest == "videoplayer.director")
        {
          ret = VIDEOPLAYER_DIRECTOR;
        }
        else if (strTest == "videoplayer.year")
        {
          ret = VIDEOPLAYER_YEAR;
        }
        else if (strTest == "videoplayer.time")
        {
          ret = VIDEOPLAYER_TIME;
        }
        else if (strTest == "videoplayer.timeremaining")
        {
          ret = VIDEOPLAYER_TIME_REMAINING;
        }
        else if (strTest == "videoplayer.timespeed")
        {
          ret = VIDEOPLAYER_TIME_SPEED;
        }
        else if (strTest == "videoplayer.duration")
        {
          ret = VIDEOPLAYER_DURATION;
        }
        else if (strTest == "videoplayer.cover")
        {
          ret = VIDEOPLAYER_COVER;
        }
        else if (strTest == "videoplayer.usingoverlays")
        {
          ret = VIDEOPLAYER_USING_OVERLAYS;
        }
        else if (strTest == "videoplayer.isfullscreen")
        {
          ret = VIDEOPLAYER_ISFULLSCREEN;
        }
        else if (strTest == "videoplayer.hasmenu")
        {
          ret = VIDEOPLAYER_HASMENU;
        }
        else if (strTest == "videoplayer.playlistlength")
        {
          ret = VIDEOPLAYER_PLAYLISTLEN;
        }
        else if (strTest == "videoplayer.playlistposition")
        {
          ret = VIDEOPLAYER_PLAYLISTPOS;
        }
      }
      else if (strCategory == "playlist")
      {
        if (strTest == "playlist.length")
        {
          ret = PLAYLIST_LENGTH;
        }
        else if (strTest == "playlist.position")
        {
          ret = PLAYLIST_POSITION;
        }
        else if (strTest == "playlist.random")
        {
          ret = PLAYLIST_RANDOM;
        }
        else if (strTest == "playlist.repeat")
        {
          ret = PLAYLIST_REPEAT;
        }
        else if (strTest == "playlist.israndom")
        {
          ret = PLAYLIST_ISRANDOM;
        }
        else if (strTest == "playlist.isrepeat")
        {
          ret = PLAYLIST_ISREPEAT;
        }
        else if (strTest == "playlist.isrepeatone")
        {
          ret = PLAYLIST_ISREPEATONE;
        }
      }
      else if (strCategory == "musicpartymode")
      {
        if (strTest == "musicpartymode.enabled")
        {
          ret = MUSICPM_ENABLED;
        }
        else if (strTest == "musicpartymode.songsplayed")
        {
          ret = MUSICPM_SONGSPLAYED;
        }
        else if (strTest == "musicpartymode.matchingsongs")
        {
          ret = MUSICPM_MATCHINGSONGS;
        }
        else if (strTest == "musicpartymode.matchingsongspicked")
        {
          ret = MUSICPM_MATCHINGSONGSPICKED;
        }
        else if (strTest == "musicpartymode.matchingsongsleft")
        {
          ret = MUSICPM_MATCHINGSONGSLEFT;
        }
        else if (strTest == "musicpartymode.relaxedsongspicked")
        {
          ret = MUSICPM_RELAXEDSONGSPICKED;
        }
        else if (strTest == "musicpartymode.randomsongspicked")
        {
          ret = MUSICPM_RANDOMSONGSPICKED;
        }
      }
      else if (strCategory.StartsWith("container"))
      {
        //000000000011111111111222222222233333333334444444444
        //012345678900123456789012345678901234567890123456789
        //Container.ListItem(1).Icon
        //Listitem(
        int id = 0;
        if (strCategory.Length > 10)
        {
          Int32.TryParse(strCategory.Substring(10), out id);
        }
        string info = strTest.Substring(10);
        if (info.StartsWith("listitem"))
        {
          int offset = 0;
          string sid = info.Substring(9);
          int p = sid.IndexOf(")");
          sid = sid.Substring(0, p);
          Int32.TryParse(sid, out offset);
          ret = TranslateListItem(info.Substring(info.IndexOf(".") + 1));
          if (offset != 0 || id != 0)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -ret : ret, id, offset));
          }
        }
        else if (info == "folderthumb")
        {
          ret = CONTAINER_FOLDERTHUMB;
        }
        else if (info == "folderpath")
        {
          ret = CONTAINER_FOLDERPATH;
        }
        else if (info == "onnext")
        {
          ret = CONTAINER_ON_NEXT;
        }
        else if (info == "onprevious")
        {
          ret = CONTAINER_ON_PREVIOUS;
        }
        else if (info.StartsWith("content("))
        {
          return
            AddMultiInfo(new GUIInfo(bNegate ? -CONTAINER_CONTENT : CONTAINER_CONTENT,
                                     ConditionalStringParameter(info.Substring(8, info.Length - 9)), 0));
        }
        else if (info == "hasthumb")
        {
          ret = CONTAINER_HAS_THUMB;
        }
        else if (info.StartsWith("sort("))
        {
          //SORT_METHOD sort = SORT_METHOD_NONE;
          //string method = info.Substring(5, info.Length - 6);
          //if (method.Equals("songrating")) sort = SORT_METHOD_SONG_RATING;
          //if (sort != SORT_METHOD_NONE)
          //  return AddMultiInfo(new GUIInfo(bNegate ? -CONTAINER_SORT_METHOD : CONTAINER_SORT_METHOD, sort));
        }
        else if (id != 0 && info.StartsWith("hasfocus("))
        {
          int itemID;
          string sid = info.Substring(9);
          int p = sid.IndexOf(")");
          sid = sid.Substring(0, p);
          Int32.TryParse(sid, out itemID);
          return AddMultiInfo(new GUIInfo(bNegate ? -CONTAINER_HAS_FOCUS : CONTAINER_HAS_FOCUS, id, itemID));
        }
        if (id != 0 && (ret == CONTAINER_ON_NEXT || ret == CONTAINER_ON_PREVIOUS))
        {
          return AddMultiInfo(new GUIInfo(bNegate ? -ret : ret, id));
        }
      }
      else if (strCategory == "listitem")
      {
        if (strTest == "listitem.thumb")
        {
          ret = LISTITEM_THUMB;
        }
        else if (strTest == "listitem.icon")
        {
          ret = LISTITEM_ICON;
        }
        else if (strTest == "listitem.label")
        {
          ret = LISTITEM_LABEL;
        }
        else if (strTest == "listitem.title")
        {
          ret = LISTITEM_TITLE;
        }
        else if (strTest == "listitem.tracknumber")
        {
          ret = LISTITEM_TRACKNUMBER;
        }
        else if (strTest == "listitem.artist")
        {
          ret = LISTITEM_ARTIST;
        }
        else if (strTest == "listitem.album")
        {
          ret = LISTITEM_ALBUM;
        }
        else if (strTest == "listitem.year")
        {
          ret = LISTITEM_YEAR;
        }
        else if (strTest == "listitem.genre")
        {
          ret = LISTITEM_GENRE;
        }
        else if (strTest == "listitem.director")
        {
          ret = LISTITEM_DIRECTOR;
        }
      }
      else if (strCategory == "visualisation")
      {
        if (strTest == "visualisation.locked")
        {
          ret = VISUALISATION_LOCKED;
        }
        else if (strTest == "visualisation.preset")
        {
          ret = VISUALISATION_PRESET;
        }
        else if (strTest == "visualisation.name")
        {
          ret = VISUALISATION_NAME;
        }
        else if (strTest == "visualisation.enabled")
        {
          ret = VISUALISATION_ENABLED;
        }
      }
      else if (strCategory == "skin" || strCategory == "string")
      {
        // string.equals(val1, val2) will check the equality of val1 to val2.
        // string.equals(val1)       will return true if val1 has a length > 0
        if (strTest.Substring(0, 14) == "string.equals(")
        {
          // this condition uses GUIPropertyManager.Parse, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] {' '});
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] {' '});
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset;
          int pos = strTestKeepCase.IndexOf(",");
          if (pos >= 0)
          {
            skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(14, pos - 14));
            int compareString =
              ConditionalStringParameter(strTestKeepCase.Substring(pos + 1, strTestKeepCase.Length - (pos + 2)));
            return AddMultiInfo(new GUIInfo(bNegate ? -STRING_EQUALS : STRING_EQUALS, skinOffset, compareString));
          }
          skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(14, strTestKeepCase.Length - 15));
          return AddMultiInfo(new GUIInfo(bNegate ? -STRING_EQUALS : STRING_EQUALS, skinOffset));
        }
        else if (strTest.Substring(0, 16) == "string.contains(")
        {
          // this condition uses GUIPropertyManager.Parse, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] {' '});
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] {' '});
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset;
          int pos = strTestKeepCase.IndexOf(",");
          if (pos >= 0)
          {
            skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(16, pos - 16));
            int compareString =
              ConditionalStringParameter(strTestKeepCase.Substring(pos + 1, strTestKeepCase.Length - (pos + 2)));
            return AddMultiInfo(new GUIInfo(bNegate ? -STRING_CONTAINS : STRING_CONTAINS, skinOffset, compareString));
          }
          skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(16, strTestKeepCase.Length - 17));
          return AddMultiInfo(new GUIInfo(bNegate ? -STRING_CONTAINS : STRING_CONTAINS, skinOffset));
        }
        else if (strTest.Substring(0, 14) == "string.starts(")
        {
          // this condition uses GUIPropertyManager.Parse, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] {' '});
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] {' '});
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset;
          int pos = strTestKeepCase.IndexOf(",");
          if (pos >= 0)
          {
            skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(14, pos - 14));
            int compareString =
              ConditionalStringParameter(strTestKeepCase.Substring(pos + 1, strTestKeepCase.Length - (pos + 2)));
            return AddMultiInfo(new GUIInfo(bNegate ? -STRING_STARTS : STRING_STARTS, skinOffset, compareString));
          }
          skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(14, strTestKeepCase.Length - 15));
          return AddMultiInfo(new GUIInfo(bNegate ? -STRING_STARTS : STRING_STARTS, skinOffset));
        }
        else if (strTest.Substring(0, 16) == "skin.hassetting(")
        {
          // this condition uses GUIPropertyManager, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] { ' ' });
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] { ' ' });
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset = SkinSettings.TranslateSkinBool(strTestKeepCase.Substring(16, strTestKeepCase.Length - 17), SkinSettings.Kind.PERSISTENT);
          return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_BOOL : SKIN_BOOL, skinOffset));
        }
        else if (strTest.Substring(0, 12) == "skin.string(")
        {
          // this condition uses GUIPropertyManager.Parse, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] { ' ' });
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] { ' ' });
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset;
          int pos = strTestKeepCase.IndexOf(",");
          if (pos >= 0)
          {
            skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(12, pos - 12), SkinSettings.Kind.PERSISTENT);
            int compareString =
              ConditionalStringParameter(strTestKeepCase.Substring(pos + 1, strTestKeepCase.Length - (pos + 2)));
            return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_STRING : SKIN_STRING, skinOffset, compareString));
          }
          skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(12, strTestKeepCase.Length - 13), SkinSettings.Kind.PERSISTENT);
          return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_STRING : SKIN_STRING, skinOffset));
        }
        else if (strTest.Substring(0, 15) == "skin.setstring(")
        {
          // this condition uses GUIPropertyManager.Parse, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] { ' ' });
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] { ' ' });
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset;
          int pos = strTestKeepCase.IndexOf(",");
          if (pos >= 0)
          {
            skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(15, pos - 15), SkinSettings.Kind.PERSISTENT);
            int valueString =
              ConditionalStringParameter(strTestKeepCase.Substring(pos + 1, strTestKeepCase.Length - (pos + 2)));
            return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_STRING : SKIN_STRING, skinOffset, valueString));
          }
          skinOffset = SkinSettings.TranslateSkinString(strTestKeepCase.Substring(15, strTestKeepCase.Length - 16), SkinSettings.Kind.PERSISTENT);
          return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_STRING : SKIN_STRING, skinOffset));
        }
        else if (strTest.Substring(0, 13) == "skin.setbool(")
        {
          // this condition uses GUIPropertyManager.Parse, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] { ' ' });
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] { ' ' });
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset;
          int pos = strTestKeepCase.IndexOf(",");
          if (pos >= 0)
          {
            skinOffset = SkinSettings.TranslateSkinBool(strTestKeepCase.Substring(13, pos - 13), SkinSettings.Kind.PERSISTENT);
            int valueString =
              ConditionalStringParameter(strTestKeepCase.Substring(pos + 1, strTestKeepCase.Length - (pos + 2)));
            return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_BOOL : SKIN_BOOL, skinOffset, valueString));
          }
          skinOffset = SkinSettings.TranslateSkinBool(strTestKeepCase.Substring(13, strTestKeepCase.Length - 14), SkinSettings.Kind.PERSISTENT);
          return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_BOOL : SKIN_BOOL, skinOffset));
        }
        else if (strTest.Substring(0, 19) == "skin.togglesetting(")
        {
          // this condition uses GUIPropertyManager, which is case sensitive.
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] { ' ' });
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] { ' ' });
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int skinOffset = SkinSettings.TranslateSkinBool(strTestKeepCase.Substring(19, strTestKeepCase.Length - 20), SkinSettings.Kind.PERSISTENT);
          return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_BOOL : SKIN_BOOL, skinOffset));
        }
        else if (strTest.Substring(0, 14) == "skin.hastheme(")
        {
          string strTestKeepCase = strCondition;
          strTestKeepCase = strTestKeepCase.TrimStart(new char[] { ' ' });
          strTestKeepCase = strTestKeepCase.TrimEnd(new char[] { ' ' });
          if (bNegate)
          {
            strTestKeepCase = strTestKeepCase.Remove(0, 1);
          }

          int compareString =
            ConditionalStringParameter(strTestKeepCase.Substring(14, strTestKeepCase.Length - 15));
          return AddMultiInfo(new GUIInfo(bNegate ? -SKIN_THEME : SKIN_THEME, 0, compareString));
        }
      }
      else if (strCategory == "window")
      {
        if (strTest == "window.isosdvisible")
        {
          ret = WINDOW_IS_OSD_VISIBLE;
        }
        else if (strTest == "window.ispauseosdvisible")
        {
          ret = WINDOW_IS_PAUSE_OSD_VISIBLE;
        }
        else if (strTest.Substring(0, 16) == "window.isactive(")
        {
          int winID = TranslateWindowString(strTest.Substring(16, strTest.Length - 17));
          if (winID != (int)GUIWindow.Window.WINDOW_INVALID)
          {
            ret = winID;
          }
        }
        else if (strTest == "window.ismedia")
        {
          return WINDOW_IS_MEDIA;
        }
        else if (strTest.Substring(0, 17) == "window.istopmost(")
        {
          int winID = TranslateWindowString(strTest.Substring(17, strTest.Length - 18));
          if (winID != (int)GUIWindow.Window.WINDOW_INVALID)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -WINDOW_IS_TOPMOST : WINDOW_IS_TOPMOST, winID, 0));
          }
        }
        else if (strTest.Substring(0, 17) == "window.isvisible(")
        {
          int winID = TranslateWindowString(strTest.Substring(17, strTest.Length - 18));
          if (winID != (int)GUIWindow.Window.WINDOW_INVALID)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -WINDOW_IS_VISIBLE : WINDOW_IS_VISIBLE, winID, 0));
          }
        }
        else if (strTest.Substring(0, 16) == "window.previous(")
        {
          int winID = TranslateWindowString(strTest.Substring(16, strTest.Length - 17));
          if (winID != (int)GUIWindow.Window.WINDOW_INVALID)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -WINDOW_PREVIOUS : WINDOW_PREVIOUS, winID, 0));
          }
        }
        else if (strTest.Substring(0, 12) == "window.next(")
        {
          int winID = TranslateWindowString(strTest.Substring(12, strTest.Length - 13));
          if (winID != (int)GUIWindow.Window.WINDOW_INVALID)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -WINDOW_NEXT : WINDOW_NEXT, winID, 0));
          }
        }
      }
      else if (strCategory == "plugin")
      {
        if (strTest.Substring(0, 17) == "plugin.isenabled(")
        {
          // use original condition, because plugin Name is case sensitive
          string pluginName = strCondition;
          pluginName = pluginName.TrimStart(new char[] {' '});
          pluginName = pluginName.TrimEnd(new char[] {' '});
          if (bNegate)
          {
            pluginName = pluginName.Remove(0, 1);
          }

          pluginName = pluginName.Substring(17, strTest.Length - 18);

          if (pluginName != string.Empty)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -PLUGIN_IS_ENABLED : PLUGIN_IS_ENABLED, pluginName));
          }
        }
      }
      else if (strCategory == "control")
      {
        if (strTest.Substring(0, 17) == "control.hasfocus(")
        {
          int controlID = Int32.Parse(strTest.Substring(17, strTest.Length - 18));
          if (controlID != 0)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -CONTROL_HAS_FOCUS : CONTROL_HAS_FOCUS, controlID, 0));
          }
        }
        else if (strTest.Substring(0, 18) == "control.isvisible(")
        {
          int controlID = Int32.Parse(strTest.Substring(18, strTest.Length - 19));
          if (controlID != 0)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -CONTROL_IS_VISIBLE : CONTROL_IS_VISIBLE, controlID, 0));
          }
        }
        else if (strTest.Substring(0, 17) == "control.hasthumb(")
        {
          int controlID = Int32.Parse(strTest.Substring(17, strTest.Length - 18));
          if (controlID != 0)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -CONTROL_HAS_THUMB : CONTROL_HAS_THUMB, controlID, 0));
          }
        }
        else if (strTest.Substring(0, 16) == "control.hastext(")
        {
          int controlID = Int32.Parse(strTest.Substring(16, strTest.Length - 17));
          if (controlID != 0)
          {
            return AddMultiInfo(new GUIInfo(bNegate ? -CONTROL_HAS_TEXT : CONTROL_HAS_TEXT, controlID, 0));
          }
        }
      }
      else if (strCategory == "facadeview")
      {
        if (strTest == "facadeview.album")
        {
          ret = FACADEVIEW_ALBUM;
        }
        else if (strTest == "facadeview.filmstrip")
        {
          ret = FACADEVIEW_FILMSTRIP;
        }
        else if (strTest == "facadeview.largeicons")
        {
          ret = FACADEVIEW_LARGEICONS;
        }
        else if (strTest == "facadeview.list")
        {
          ret = FACADEVIEW_LIST;
        }
        else if (strTest == "facadeview.playlist")
        {
          ret = FACADEVIEW_PLAYLIST;
        }
        else if (strTest == "facadeview.smallicons")
        {
          ret = FACADEVIEW_SMALLICONS;
        }
        else if (strTest == "facadeview.coverflow")
        {
          ret = FACADEVIEW_COVERFLOW;
        }
      }
      else if (strTest.Length >= 13 && strTest.Substring(0, 13) == "controlgroup(")
      {
        int groupPos = strTest.IndexOf(")");
        int groupID = Int32.Parse(strTest.Substring(13, groupPos - 13));
        int controlID = 0;
        int controlPos = strTest.IndexOf(".hasfocus(");
        if (controlPos > 0)
        {
          controlID = Int32.Parse(strTest.Substring(controlPos + 10, strTest.Length - controlPos - 11));
        }
        if (groupID != 0)
        {
          return
            AddMultiInfo(new GUIInfo(bNegate ? -CONTROL_GROUP_HAS_FOCUS : CONTROL_GROUP_HAS_FOCUS, groupID, controlID));
        }
      }
      else if (strTest.Length >= 24 && strTest.Substring(0, 24) == "buttonscroller.hasfocus(")
      {
        int controlID = Int32.Parse(strTest.Substring(24, strTest.Length - 24));
        if (controlID != 0)
        {
          return AddMultiInfo(new GUIInfo(bNegate ? -BUTTON_SCROLLER_HAS_ICON : BUTTON_SCROLLER_HAS_ICON, controlID, 0));
        }
      }

      return bNegate ? -ret : ret;
    }
Exemplo n.º 18
0
 private static int AddMultiInfo(GUIInfo info)
 {
   // check to see if we have this info already
   for (int i = 0; i < m_multiInfo.Count; i++)
   {
     if (m_multiInfo[i].Equals(info))
     {
       return i + MULTI_INFO_START;
     }
   }
   // return the new offset
   m_multiInfo.Add(info);
   return m_multiInfo.Count + MULTI_INFO_START - 1;
 }