svnno****@sourc*****
svnno****@sourc*****
2011年 1月 13日 (木) 23:03:38 JST
Revision: 1351 http://sourceforge.jp/projects/tween/svn/view?view=rev&revision=1351 Author: syo68k Date: 2011-01-13 23:03:38 +0900 (Thu, 13 Jan 2011) Log Message: ----------- DynamicQueryをマージ Modified Paths: -------------- trunk/LICENSE.ja.txt trunk/LICENSE.txt trunk/Tween/FilterDialog.Designer.vb trunk/Tween/FilterDialog.resx trunk/Tween/FilterDialog.vb trunk/Tween/MyLists.vb trunk/Tween/StatusDictionary.vb trunk/Tween/Tween.vb trunk/Tween/Tween.vbproj trunk/Tween/Twitter.vb trunk/Tween.sln Added Paths: ----------- trunk/Microsoft Public License.txt trunk/Tween/Dynamic.vb trunk/Tween/DynamicQuery.txt Property Changed: ---------------- trunk/ -------------- next part -------------- Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo - /branches/tm:782-794 /branches/editlist:667-697 /branches/SettingDialog:1216-1230 /branches/panelswitch:447-572 /branches/APIchangeevent:723-746 /branches/UserStream:1077-1144 /branches/FixedImage:787-910 + /branches/APIchangeevent:723-746 /branches/FixedImage:787-910 /branches/SettingDialog:1216-1230 /branches/UserStream:1077-1144 /branches/editlist:667-697 /branches/panelswitch:447-572 /branches/query:1307-1350 /branches/tm:782-794 Modified: trunk/LICENSE.ja.txt =================================================================== --- trunk/LICENSE.ja.txt 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/LICENSE.ja.txt 2011-01-13 14:03:38 UTC (rev 1351) @@ -25,6 +25,18 @@ によってライセンスされていません。上記のファイルに対する問い合わせは、 Tween の著作者ではなくアイコンの著者にお問い合わせください。 + +また、Tweenディレクトリの以下のファイル: + Dynamic.vb +はMicrosoftによって作成され、Microsoft Public License(Ms-PL)に基づき配布されます。 +Copyright © Microsoft Corporation. All Rights Reserved. +This code released under the terms of the Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.) + +このファイルの入手元は次のURIです: +http://code.msdn.microsoft.com/vb2010samples +Microsoft Public License(Ms-PL)の原文は次のURIへ: +http://opensource.org/licenses/ms-pl.html + 謝辞終わり。 GNU General Public License (GPL) (GNU 一般公衆利用許諾書) の非公式な Modified: trunk/LICENSE.txt =================================================================== --- trunk/LICENSE.txt 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/LICENSE.txt 2011-01-13 14:03:38 UTC (rev 1351) @@ -24,6 +24,53 @@ Please inquire about these files not to copyright holders of Tween, but to the author of the icons. +In this software, below files in Tween directory: + Dynamic.vb +is made by Microsoft Corporation, and distributed on Microsoft Public License(Ms-PL). + + +Microsoft Public License (Ms-PL) + +This license governs use of the accompanying software. If you use the software, you accept this +license. If you do not accept the license, do not use the software. + +1. Definitions +The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning +here as under U.S. copyright law. +A "contribution" is the original software, or any additions or changes to the software. +A "contributor" is any person that distributes its contribution under this license. +"Licensed patents" are a contributor's patent claims that read directly on its contribution. + +2. Grant of Rights +(A) Copyright Grant- Subject to the terms of this license, including the license conditions and +limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free +copyright license to reproduce its contribution, prepare derivative works of its contribution, and +distribute its contribution or any derivative works that you create. +(B) Patent Grant- Subject to the terms of this license, including the license conditions and +limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free +license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or +otherwise dispose of its contribution in the software or derivative works of the contribution in the + software. + +3. Conditions and Limitations +(A) No Trademark License- This license does not grant you rights to use any contributors' name, +logo, or trademarks. +(B) If you bring a patent claim against any contributor over patents that you claim are infringed by + the software, your patent license from such contributor to the software ends automatically. +(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, + and attribution notices that are present in the software. +(D) If you distribute any portion of the software in source code form, you may do so only under this + license by including a complete copy of this license with your distribution. If you distribute any +portion of the software in compiled or object code form, you may only do so under a license that +complies with this license. +(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no +express warranties, guarantees or conditions. You may have additional consumer rights under your +local laws which this license cannot change. To the extent permitted under your local laws, the +contributors exclude the implied warranties of merchantability, fitness for a particular purpose and + non-infringement. + + + END OF ACKNOWLEDGEMENT. BELOW IS THE LICENSE OF CODES OF THE SOFTWARE. @@ -702,3 +749,4 @@ Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>. + Copied: trunk/Microsoft Public License.txt (from rev 1350, branches/query/Microsoft Public License.txt) =================================================================== --- trunk/Microsoft Public License.txt (rev 0) +++ trunk/Microsoft Public License.txt 2011-01-13 14:03:38 UTC (rev 1351) @@ -0,0 +1,39 @@ +Microsoft Public License (Ms-PL) + +This license governs use of the accompanying software. If you use the software, you accept this +license. If you do not accept the license, do not use the software. + +1. Definitions +The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning +here as under U.S. copyright law. +A "contribution" is the original software, or any additions or changes to the software. +A "contributor" is any person that distributes its contribution under this license. +"Licensed patents" are a contributor's patent claims that read directly on its contribution. + +2. Grant of Rights +(A) Copyright Grant- Subject to the terms of this license, including the license conditions and +limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free +copyright license to reproduce its contribution, prepare derivative works of its contribution, and +distribute its contribution or any derivative works that you create. +(B) Patent Grant- Subject to the terms of this license, including the license conditions and +limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free +license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or +otherwise dispose of its contribution in the software or derivative works of the contribution in the + software. + +3. Conditions and Limitations +(A) No Trademark License- This license does not grant you rights to use any contributors' name, +logo, or trademarks. +(B) If you bring a patent claim against any contributor over patents that you claim are infringed by + the software, your patent license from such contributor to the software ends automatically. +(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, + and attribution notices that are present in the software. +(D) If you distribute any portion of the software in source code form, you may do so only under this + license by including a complete copy of this license with your distribution. If you distribute any +portion of the software in compiled or object code form, you may only do so under a license that +complies with this license. +(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no +express warranties, guarantees or conditions. You may have additional consumer rights under your +local laws which this license cannot change. To the extent permitted under your local laws, the +contributors exclude the implied warranties of merchantability, fitness for a particular purpose and + non-infringement. \ No newline at end of file Copied: trunk/Tween/Dynamic.vb (from rev 1350, branches/query/Tween/Dynamic.vb) =================================================================== --- trunk/Tween/Dynamic.vb (rev 0) +++ trunk/Tween/Dynamic.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -0,0 +1,1949 @@ +' Copyright © Microsoft Corporation. All Rights Reserved. +' This code released under the terms of the +' Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.) +' +Option Strict On +Option Explicit On + +Imports System.Collections.Generic +Imports System.Text +Imports System.Linq +Imports System.Linq.Expressions +Imports System.Reflection +Imports System.Reflection.Emit +Imports System.Threading +Imports System.Runtime.CompilerServices +Imports System.Text.RegularExpressions + + +Public Module DynamicQueryable + + Const Id As String = "DynamicQueryModule Copyright © Microsoft Corporation. All Rights Reserved." + _ + " This code released under the terms of the Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.) " + + <Extension()> _ + Public Function Where(Of T)(ByVal source As IQueryable(Of T), ByVal predicate As String, ByVal ParamArray values() As Object) As IQueryable(Of T) + Return DirectCast(Where(DirectCast(source, IQueryable), predicate, values), IQueryable(Of T)) + End Function + + <Extension()> _ + Public Function Where(ByVal source As IQueryable, ByVal predicate As String, ByVal ParamArray values() As Object) As IQueryable + If source Is Nothing Then Throw New ArgumentNullException("source") + If predicate Is Nothing Then Throw New ArgumentNullException("predicate") + Dim lambda As LambdaExpression = DynamicExpression.ParseLambda(source.ElementType, GetType(Boolean), predicate, values) + Return source.Provider.CreateQuery( _ + Expression.Call( _ + GetType(Queryable), "Where", _ + New Type() {source.ElementType}, _ + source.Expression, Expression.Quote(lambda))) + End Function + + <Extension()> _ + Public Function [Select](ByVal source As IQueryable, ByVal selector As String, ByVal ParamArray values() As Object) As IQueryable + If source Is Nothing Then Throw New ArgumentNullException("source") + If selector Is Nothing Then Throw New ArgumentNullException("selector") + Dim lambda As LambdaExpression = DynamicExpression.ParseLambda(source.ElementType, Nothing, selector, values) + Return source.Provider.CreateQuery( _ + Expression.Call( _ + GetType(Queryable), "Select", _ + New Type() {source.ElementType, lambda.Body.Type}, _ + source.Expression, Expression.Quote(lambda))) + End Function + + <Extension()> _ + Public Function OrderBy(Of T)(ByVal source As IQueryable(Of T), ByVal ordering As String, ByVal ParamArray values() As Object) As IQueryable(Of T) + Return DirectCast(OrderBy(DirectCast(source, IQueryable), ordering, values), IQueryable(Of T)) + End Function + + <Extension()> _ + Public Function OrderBy(ByVal source As IQueryable, ByVal ordering As String, ByVal ParamArray values() As Object) As IQueryable + If (source Is Nothing) Then Throw New ArgumentNullException("source") + If (ordering Is Nothing) Then Throw New ArgumentNullException("ordering") + Dim parameters = New ParameterExpression() { _ + Expression.Parameter(source.ElementType, "")} + Dim parser As New ExpressionParser(parameters, ordering, values) + Dim orderings As IEnumerable(Of DynamicOrdering) = parser.ParseOrdering() + Dim queryExpr As Expression = source.Expression + Dim methodAsc = "OrderBy" + Dim methodDesc = "OrderByDescending" + For Each o As DynamicOrdering In orderings + queryExpr = Expression.Call( _ + GetType(Queryable), If(o.Ascending, methodAsc, methodDesc), _ + New Type() {source.ElementType, o.Selector.Type}, _ + queryExpr, Expression.Quote(Expression.Lambda(o.Selector, parameters))) + methodAsc = "ThenBy" + methodDesc = "ThenByDescending" + Next o + Return source.Provider.CreateQuery(queryExpr) + End Function + + <Extension()> _ + Public Function Take(ByVal source As IQueryable, ByVal count As Integer) As IQueryable + If (source Is Nothing) Then Throw New ArgumentNullException("source") + Return source.Provider.CreateQuery( _ + Expression.Call( _ + GetType(Queryable), "Take", _ + New Type() {source.ElementType}, _ + source.Expression, Expression.Constant(count))) + End Function + + <Extension()> _ + Public Function Skip(ByVal source As IQueryable, ByVal count As Integer) As IQueryable + If (source Is Nothing) Then Throw New ArgumentNullException("source") + Return source.Provider.CreateQuery( _ + Expression.Call( _ + GetType(Queryable), "Skip", _ + New Type() {source.ElementType}, _ + source.Expression, Expression.Constant(count))) + End Function + + <Extension()> _ + Public Function GroupBy(ByVal source As IQueryable, ByVal keySelector As String, ByVal elementSelector As String, ByVal ParamArray values() As Object) As IQueryable + If (source Is Nothing) Then Throw New ArgumentNullException("source") + If (keySelector Is Nothing) Then Throw New ArgumentNullException("keySelector") + If (elementSelector Is Nothing) Then Throw New ArgumentNullException("elementSelector") + Dim keyLambda As LambdaExpression = DynamicExpression.ParseLambda(source.ElementType, Nothing, keySelector, values) + Dim elementLambda As LambdaExpression = DynamicExpression.ParseLambda(source.ElementType, Nothing, elementSelector, values) + Return source.Provider.CreateQuery( _ + Expression.Call( _ + GetType(Queryable), "GroupBy", _ + New Type() {source.ElementType, keyLambda.Body.Type, elementLambda.Body.Type}, _ + source.Expression, Expression.Quote(keyLambda), Expression.Quote(elementLambda))) + End Function + + <Extension()> _ + Public Function Any(ByVal source As IQueryable) As Boolean + If (source Is Nothing) Then Throw New ArgumentNullException("source") + Return CBool(source.Provider.Execute( _ + Expression.Call( _ + GetType(Queryable), "Any", _ + New Type() {source.ElementType}, source.Expression))) + End Function + + <Extension()> _ + Public Function Count(ByVal source As IQueryable) As Integer + If (source Is Nothing) Then Throw New ArgumentNullException("source") + Return CInt(source.Provider.Execute( _ + Expression.Call( _ + GetType(Queryable), "Count", _ + New Type() {source.ElementType}, source.Expression))) + End Function +End Module + +Public MustInherit Class DynamicClass + Public Overrides Function ToString() As String + Dim props = Me.GetType().GetProperties(BindingFlags.Instance Or BindingFlags.Public) + Dim sb As New StringBuilder() + sb.Append("{") + For i As Integer = 0 To props.Length - 1 + If (i > 0) Then sb.Append(", ") + sb.Append(props(i).Name) + sb.Append("=") + sb.Append(props(i).GetValue(Me, Nothing)) + Next i + + sb.Append("}") + + Return sb.ToString() + End Function +End Class + +Public Class DynamicProperty + Private _name As String + Private _type As Type + + Public Sub New(ByVal name As String, ByVal type As Type) + If (name Is Nothing) Then Throw New ArgumentNullException("name") + If (type Is Nothing) Then Throw New ArgumentNullException("type") + Me._name = name + Me._type = type + End Sub + + Public ReadOnly Property Name() As String + Get + Return _name + End Get + End Property + + Public ReadOnly Property Type() As Type + Get + Return _type + End Get + End Property +End Class + +Public Module DynamicExpression + Public Function Parse(ByVal resultType As Type, ByVal expression As String, ByVal ParamArray values() As Object) As Expression + Dim parser As New ExpressionParser(Nothing, expression, values) + Return parser.Parse(resultType) + End Function + + Public Function ParseLambda(ByVal itType As Type, ByVal resultType As Type, ByVal expressionStr As String, ByVal ParamArray values() As Object) As LambdaExpression + Return ParseLambda(New ParameterExpression() {Expression.Parameter(itType, "")}, resultType, expressionStr, values) + End Function + + Public Function ParseLambda(ByVal parameters() As ParameterExpression, ByVal resultType As Type, ByVal expressionStr As String, ByVal ParamArray values() As Object) As LambdaExpression + Dim parser As New ExpressionParser(parameters, expressionStr, values) + Return Expression.Lambda(parser.Parse(resultType), parameters) + End Function + + Public Function ParseLambda(Of T, S)(ByVal expression As String, ByVal ParamArray values() As Object) As Expression(Of Func(Of T, S)) + Return DirectCast(ParseLambda(GetType(T), GetType(S), expression, values), Expression(Of Func(Of T, S))) + End Function + + Public Function CreateClass(ByVal ParamArray properties() As DynamicProperty) As Type + Return ClassFactory.Instance.GetDynamicClass(properties) + End Function + + Public Function CreateClass(ByVal properties As IEnumerable(Of DynamicProperty)) As Type + Return ClassFactory.Instance.GetDynamicClass(properties) + End Function +End Module + +Friend Class DynamicOrdering + Public Selector As Expression + Public Ascending As Boolean +End Class + +Friend Class Signature : Implements IEquatable(Of Signature) + Public properties() As DynamicProperty + Public hashCode As Integer + + Public Sub New(ByVal properties As IEnumerable(Of DynamicProperty)) + Me.properties = properties.ToArray() + hashCode = 0 + For Each p As DynamicProperty In Me.properties + hashCode = hashCode Xor p.Name.GetHashCode() Xor p.Type.GetHashCode() + Next p + End Sub + + Public Overrides Function GetHashCode() As Integer + Return hashCode + End Function + + Public Overrides Function Equals(ByVal obj As Object) As Boolean + Dim cast = TryCast(obj, Signature) + Return If(cast IsNot Nothing, Equals(cast), False) + End Function + + Public Overloads Function Equals(ByVal other As Signature) As Boolean Implements IEquatable(Of Signature).Equals + If (properties.Length <> other.properties.Length) Then Return False + For i As Integer = 0 To properties.Length - 1 + If (properties(i).Name <> other.properties(i).Name OrElse _ + Not properties(i).Type.Equals(other.properties(i).Type)) Then + Return False + End If + Next i + Return True + End Function +End Class + +Friend Class ClassFactory + Public Shared ReadOnly Instance As New ClassFactory() + + Shared Sub New() + ' Trigger lazy initialization of static fields + End Sub + + Private [module] As ModuleBuilder + Private classes As Dictionary(Of Signature, Type) + Private classCount As Integer + Private rwLock As ReaderWriterLock + + Private Sub New() + Dim name As New AssemblyName("DynamicClasses") + Dim assembly As AssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run) +#If ENABLE_LINQ_PARTIAL_TRUST Then + call new ReflectionPermission(PermissionState.Unrestricted).Assert() +#End If + Try + [module] = assembly.DefineDynamicModule("Module") + Finally +#If ENABLE_LINQ_PARTIAL_TRUST Then + PermissionSet.RevertAssert() +#End If + End Try + classes = New Dictionary(Of Signature, Type)() + rwLock = New ReaderWriterLock() + End Sub + + Public Function GetDynamicClass(ByVal properties As IEnumerable(Of DynamicProperty)) As Type + rwLock.AcquireReaderLock(Timeout.Infinite) + + Try + Dim signature As New Signature(properties) + Dim type As Type = Nothing + If Not classes.TryGetValue(signature, type) Then + type = CreateDynamicClass(signature.properties) + classes.Add(signature, type) + End If + Return type + Finally + rwLock.ReleaseReaderLock() + End Try + End Function + + Private Function CreateDynamicClass(ByVal properties() As DynamicProperty) As Type + Dim cookie As LockCookie = rwLock.UpgradeToWriterLock(Timeout.Infinite) + Try + Dim typeName = "DynamicClass" & (classCount + 1) +#If ENABLE_LINQ_PARTIAL_TRUST Then + Call New ReflectionPermission(PermissionState.Unrestricted).Assert() +#End If + Try + Dim tb As TypeBuilder = Me.module.DefineType(typeName, TypeAttributes.Class Or _ + TypeAttributes.Public, GetType(DynamicClass)) + Dim fields() As FieldInfo = GenerateProperties(tb, properties) + GenerateEquals(tb, fields) + GenerateGetHashCode(tb, fields) + Dim result As Type = tb.CreateType() + classCount += 1 + Return result + Finally +#If ENABLE_LINQ_PARTIAL_TRUST Then + PermissionSet.RevertAssert() +#End If + End Try + Finally + rwLock.DowngradeFromWriterLock(cookie) + End Try + End Function + + Private Function GenerateProperties(ByVal tb As TypeBuilder, ByVal properties() As DynamicProperty) As FieldInfo() + Dim fields(properties.Length - 1) As FieldInfo + + For i As Integer = 0 To properties.Length - 1 + Dim dp As DynamicProperty = properties(i) + Dim fb As FieldBuilder = tb.DefineField("_" & dp.Name, dp.Type, FieldAttributes.Private) + Dim pb As PropertyBuilder = tb.DefineProperty(dp.Name, PropertyAttributes.HasDefault, dp.Type, Nothing) + Dim mbGet As MethodBuilder = tb.DefineMethod("get_" + dp.Name, _ + MethodAttributes.Public Or MethodAttributes.SpecialName Or MethodAttributes.HideBySig, _ + dp.Type, System.Type.EmptyTypes) + Dim genGet As ILGenerator = mbGet.GetILGenerator() + genGet.Emit(OpCodes.Ldarg_0) + genGet.Emit(OpCodes.Ldfld, fb) + genGet.Emit(OpCodes.Ret) + Dim mbSet As MethodBuilder = tb.DefineMethod("set_" & dp.Name, _ + MethodAttributes.Public Or MethodAttributes.SpecialName Or MethodAttributes.HideBySig, _ + Nothing, New Type() {dp.Type}) + Dim genSet As ILGenerator = mbSet.GetILGenerator() + genSet.Emit(OpCodes.Ldarg_0) + genSet.Emit(OpCodes.Ldarg_1) + genSet.Emit(OpCodes.Stfld, fb) + genSet.Emit(OpCodes.Ret) + pb.SetGetMethod(mbGet) + pb.SetSetMethod(mbSet) + fields(i) = fb + Next i + + Return fields + End Function + + Private Sub GenerateEquals(ByVal tb As TypeBuilder, ByVal fields As FieldInfo()) + Dim mb As MethodBuilder = tb.DefineMethod("Equals", _ + MethodAttributes.Public Or MethodAttributes.ReuseSlot Or _ + MethodAttributes.Virtual Or MethodAttributes.HideBySig, _ + GetType(Boolean), New Type() {GetType(Object)}) + Dim gen As ILGenerator = mb.GetILGenerator() + Dim other As LocalBuilder = gen.DeclareLocal(tb) + Dim [next] As Label = gen.DefineLabel() + gen.Emit(OpCodes.Ldarg_1) + gen.Emit(OpCodes.Isinst, tb) + gen.Emit(OpCodes.Stloc, other) + gen.Emit(OpCodes.Ldloc, other) + gen.Emit(OpCodes.Brtrue_S, [next]) + gen.Emit(OpCodes.Ldc_I4_0) + gen.Emit(OpCodes.Ret) + gen.MarkLabel([next]) + For Each field As FieldInfo In fields + Dim ft As Type = field.FieldType + Dim ct As Type = GetType(EqualityComparer(Of Object)).GetGenericTypeDefinition().MakeGenericType(ft) + [next] = gen.DefineLabel() + gen.EmitCall(OpCodes.Call, ct.GetMethod("get_Default"), Nothing) + gen.Emit(OpCodes.Ldarg_0) + gen.Emit(OpCodes.Ldfld, field) + gen.Emit(OpCodes.Ldloc, other) + gen.Emit(OpCodes.Ldfld, field) + gen.EmitCall(OpCodes.Callvirt, ct.GetMethod("Equals", New Type() {ft, ft}), Nothing) + gen.Emit(OpCodes.Brtrue_S, [next]) + gen.Emit(OpCodes.Ldc_I4_0) + gen.Emit(OpCodes.Ret) + gen.MarkLabel([next]) + Next + gen.Emit(OpCodes.Ldc_I4_1) + gen.Emit(OpCodes.Ret) + End Sub + + Private Sub GenerateGetHashCode(ByVal tb As TypeBuilder, ByVal fields As FieldInfo()) + Dim mb As MethodBuilder = tb.DefineMethod("GetHashCode", _ + MethodAttributes.Public Or MethodAttributes.ReuseSlot Or _ + MethodAttributes.Virtual Or MethodAttributes.HideBySig, _ + GetType(Integer), System.Type.EmptyTypes) + Dim gen As ILGenerator = mb.GetILGenerator() + gen.Emit(OpCodes.Ldc_I4_0) + For Each field As FieldInfo In fields + Dim ft As Type = field.FieldType + Dim ct As Type = GetType(EqualityComparer(Of Object)).GetGenericTypeDefinition().MakeGenericType(ft) + gen.EmitCall(OpCodes.Call, ct.GetMethod("get_Default"), Nothing) + gen.Emit(OpCodes.Ldarg_0) + gen.Emit(OpCodes.Ldfld, field) + gen.EmitCall(OpCodes.Callvirt, ct.GetMethod("GetHashCode", New Type() {ft}), Nothing) + gen.Emit(OpCodes.Xor) + Next + gen.Emit(OpCodes.Ret) + End Sub +End Class + +Public NotInheritable Class ParseException : Inherits Exception + Private positionValue As Integer + + Public Sub New(ByVal message As String, ByVal position As Integer) + MyBase.New(message) + Me.positionValue = position + End Sub + + Public ReadOnly Property Position() As Integer + Get + Return positionValue + End Get + End Property + + Public Overrides Function ToString() As String + Return String.Format(Res.ParseExceptionFormat, Message, Position) + End Function +End Class + +Class ExpressionParser + Structure Token + Public id As TokenId + Public text As String + Public pos As Integer + End Structure + + Enum TokenId + Unknown + [End] + Identifier + StringLiteral + IntegerLiteral + RealLiteral + Exclamation + Percent + Amphersand + OpenParen + CloseParen + Asterisk + Plus + Comma + Minus + Dot + Slash + Colon + LessThan + Equal + GreaterThan + Question + OpenBracket + CloseBracket + Bar + ExclamationEqual + DoubleAmphersand + LessThanEqual + LessGreater + DoubleEqual + GreaterThanEqual + DoubleBar + End Enum + + Interface ILogicalSignatures + Sub F(ByVal x As Boolean, ByVal y As Boolean) + Sub F(ByVal x? As Boolean, ByVal y? As Boolean) + End Interface + + Interface IArithmeticSignatures + Sub F(ByVal x As Integer, ByVal y As Integer) + Sub F(ByVal x As UInteger, ByVal y As UInteger) + Sub F(ByVal x As Long, ByVal y As Long) + Sub F(ByVal x As ULong, ByVal y As ULong) + Sub F(ByVal x As Single, ByVal y As Single) + Sub F(ByVal x As Double, ByVal y As Double) + Sub F(ByVal x As Decimal, ByVal y As Decimal) + Sub F(ByVal x? As Integer, ByVal y? As Integer) + Sub F(ByVal x? As UInteger, ByVal y? As UInteger) + Sub F(ByVal x? As Long, ByVal y? As Long) + Sub F(ByVal x? As ULong, ByVal y? As ULong) + Sub F(ByVal x? As Single, ByVal y? As Single) + Sub F(ByVal x? As Double, ByVal y? As Double) + Sub F(ByVal x? As Decimal, ByVal y? As Decimal) + End Interface + + Interface IRelationalSignatures : Inherits IArithmeticSignatures + Overloads Sub F(ByVal x As String, ByVal y As String) + Overloads Sub F(ByVal x As Char, ByVal y As Char) + Overloads Sub F(ByVal x As DateTime, ByVal y As DateTime) + Overloads Sub F(ByVal x As TimeSpan, ByVal y As TimeSpan) + Overloads Sub F(ByVal x? As Char, ByVal y? As Char) + Overloads Sub F(ByVal x? As DateTime, ByVal y? As DateTime) + Overloads Sub F(ByVal x? As TimeSpan, ByVal y? As TimeSpan) + End Interface + + Interface IEqualitySignatures : Inherits IRelationalSignatures + Overloads Sub F(ByVal x As Boolean, ByVal y As Boolean) + Overloads Sub F(ByVal x? As Boolean, ByVal y? As Boolean) + End Interface + + Interface IAddSignatures : Inherits IArithmeticSignatures + Overloads Sub F(ByVal x As DateTime, ByVal y As TimeSpan) + Overloads Sub F(ByVal x As TimeSpan, ByVal y As TimeSpan) + Overloads Sub F(ByVal x? As DateTime, ByVal y? As TimeSpan) + Overloads Sub F(ByVal x? As TimeSpan, ByVal y? As TimeSpan) + End Interface + + Interface ISubtractSignatures : Inherits IAddSignatures + Overloads Sub F(ByVal x As DateTime, ByVal y As DateTime) + Overloads Sub F(ByVal x? As DateTime, ByVal y? As DateTime) + End Interface + + Interface INegationSignatures + Sub F(ByVal x As Integer) + Sub F(ByVal x As Long) + Sub F(ByVal x As Single) + Sub F(ByVal x As Double) + Sub F(ByVal x As Decimal) + Sub F(ByVal x As Integer?) + Sub F(ByVal x As Long?) + Sub F(ByVal x As Single?) + Sub F(ByVal x As Double?) + Sub F(ByVal x As Decimal?) + End Interface + + Interface INotSignatures + Sub F(ByVal x As Boolean) + Sub F(ByVal x? As Boolean) + End Interface + + Interface IEnumerableSignatures + Sub Where(ByVal predicate As Boolean) + Sub Any() + Sub Any(ByVal predicate As Boolean) + Sub All(ByVal predicate As Boolean) + Sub Count() + Sub Count(ByVal predicate As Boolean) + Sub Min(ByVal selector As Object) + Sub Max(ByVal selector As Object) + Sub Sum(ByVal selector As Integer) + Sub Sum(ByVal selector? As Integer) + Sub Sum(ByVal selector As Long) + Sub Sum(ByVal selector? As Long) + Sub Sum(ByVal selector As Single) + Sub Sum(ByVal selector? As Single) + Sub Sum(ByVal selector As Double) + Sub Sum(ByVal selector? As Double) + Sub Sum(ByVal selector As Decimal) + Sub Sum(ByVal selector? As Decimal) + Sub Average(ByVal selector As Integer) + Sub Average(ByVal selector? As Integer) + Sub Average(ByVal selector As Long) + Sub Average(ByVal selector? As Long) + Sub Average(ByVal selector As Single) + Sub Average(ByVal selector? As Single) + Sub Average(ByVal selector As Double) + Sub Average(ByVal selector? As Double) + Sub Average(ByVal selector As Decimal) + Sub Average(ByVal selector? As Decimal) + End Interface + + Shared ReadOnly predefinedTypes As Type() = { _ + GetType(Object), _ + GetType(Boolean), _ + GetType(Char), _ + GetType(String), _ + GetType(SByte), _ + GetType(Byte), _ + GetType(Int16), _ + GetType(UInt16), _ + GetType(Int32), _ + GetType(UInt32), _ + GetType(Int64), _ + GetType(UInt64), _ + GetType(Single), _ + GetType(Double), _ + GetType(Decimal), _ + GetType(DateTime), _ + GetType(TimeSpan), _ + GetType(Guid), _ + GetType(Math), _ + GetType(Convert), _ + GetType(Regex) _ + } + + Shared ReadOnly trueLiteral As Expression = Expression.Constant(True) + Shared ReadOnly falseLiteral As Expression = Expression.Constant(False) + Shared ReadOnly nullLiteral As Expression = Expression.Constant(Nothing) + + Shared ReadOnly keywordIt As String = "it" + Shared ReadOnly keywordIif As String = "iif" + Shared ReadOnly keywordNew As String = "new" + + Shared keywords As Dictionary(Of String, Object) + + Dim symbols As Dictionary(Of String, Object) + Dim externals As IDictionary(Of String, Object) + Dim literals As Dictionary(Of Expression, String) + Dim it As ParameterExpression + Dim text As String + Dim textPos As Integer + Dim textLen As Integer + Dim ch As Char + Dim tokenVal As Token + + Public Sub New(ByVal parameters As ParameterExpression(), ByVal expression As String, ByVal values As Object()) + If expression Is Nothing Then Throw New ArgumentNullException("expression") + If keywords Is Nothing Then keywords = CreateKeywords() + symbols = New Dictionary(Of String, Object)(StringComparer.OrdinalIgnoreCase) + literals = New Dictionary(Of Expression, String)() + If parameters IsNot Nothing Then ProcessParameters(parameters) + If values IsNot Nothing Then ProcessValues(values) + text = expression + textLen = text.Length + SetTextPos(0) + NextToken() + End Sub + + Sub ProcessParameters(ByVal parameters As ParameterExpression()) + For Each pe As ParameterExpression In parameters + If Not String.IsNullOrEmpty(pe.Name) Then + AddSymbol(pe.Name, pe) + End If + Next + + If (parameters.Length = 1 AndAlso String.IsNullOrEmpty(parameters(0).Name)) Then + it = parameters(0) + End If + End Sub + + Sub ProcessValues(ByVal values As Object()) + For i As Integer = 0 To values.Length - 1 + Dim value As Object = values(i) + If i = values.Length - 1 AndAlso TryCast(value, IDictionary(Of String, Object)) IsNot Nothing Then + externals = DirectCast(value, IDictionary(Of String, Object)) + Else + AddSymbol("@" & i.ToString(System.Globalization.CultureInfo.InvariantCulture), value) + End If + Next + End Sub + + Sub AddSymbol(ByVal name As String, ByVal value As Object) + If (symbols.ContainsKey(name)) Then + Throw ParseError(Res.DuplicateIdentifier, name) + End If + symbols.Add(name, value) + End Sub + + Public Function Parse(ByVal resultType As Type) As Expression + Dim exprPos As Integer = tokenVal.pos + Dim expr As Expression = ParseExpression() + If resultType IsNot Nothing Then + expr = PromoteExpression(expr, resultType, True) + If expr Is Nothing Then + Throw ParseError(exprPos, Res.ExpressionTypeMismatch, GetTypeName(resultType)) + End If + End If + ValidateToken(TokenId.End, Res.SyntaxError) + Return expr + End Function + + Public Function ParseOrdering() As IEnumerable(Of DynamicOrdering) + Dim orderings As List(Of DynamicOrdering) = New List(Of DynamicOrdering)() + Do + Dim expr As Expression = ParseExpression() + Dim ascending As Boolean = True + If TokenIdentifierIs("asc") OrElse TokenIdentifierIs("ascending") Then + NextToken() + ElseIf TokenIdentifierIs("desc") OrElse TokenIdentifierIs("descending") Then + NextToken() + ascending = False + End If + orderings.Add(New DynamicOrdering() With {.Selector = expr, .Ascending = ascending}) + If tokenVal.id <> TokenId.Comma Then Exit Do + NextToken() + Loop + ValidateToken(TokenId.End, Res.SyntaxError) + Return orderings + End Function + '#pragma warning restore 0219 + + ' ?: operator + Function ParseExpression() As Expression + Dim errorPos As Integer = tokenVal.pos + Dim expr As Expression = ParseLogicalOr() + If tokenVal.id = TokenId.Question Then + NextToken() + Dim expr1 As Expression = ParseExpression() + ValidateToken(TokenId.Colon, Res.ColonExpected) + NextToken() + Dim expr2 As Expression = ParseExpression() + expr = GenerateConditional(expr, expr1, expr2, errorPos) + End If + Return expr + End Function + + ' ||, or,orelse operator + Function ParseLogicalOr() As Expression + Dim left As Expression = ParseLogicalAnd() + Do While tokenVal.id = TokenId.DoubleBar OrElse TokenIdentifierIs("or") OrElse TokenIdentifierIs("orelse") + Dim op As Token = tokenVal + NextToken() + Dim right As Expression = ParseLogicalAnd() + CheckAndPromoteOperands(GetType(ILogicalSignatures), op.text, left, right, op.pos) + left = Expression.OrElse(left, right) + Loop + Return left + End Function + + ' &&, and, andalso operator + Function ParseLogicalAnd() As Expression + Dim left As Expression = ParseComparison() + Do While tokenVal.id = TokenId.DoubleAmphersand OrElse TokenIdentifierIs("and") OrElse TokenIdentifierIs("andalso") + Dim op As Token = tokenVal + NextToken() + Dim right As Expression = ParseComparison() + CheckAndPromoteOperands(GetType(ILogicalSignatures), op.text, left, right, op.pos) + left = Expression.AndAlso(left, right) + Loop + Return left + End Function + + ' =, ==, !=, <>, >, >=, <, <= operators + Function ParseComparison() As Expression + Dim left As Expression = ParseAdditive() + Do While tokenVal.id = TokenId.Equal OrElse tokenVal.id = TokenId.DoubleEqual OrElse _ + tokenVal.id = TokenId.ExclamationEqual OrElse tokenVal.id = TokenId.LessGreater OrElse _ + tokenVal.id = TokenId.GreaterThan OrElse tokenVal.id = TokenId.GreaterThanEqual OrElse _ + tokenVal.id = TokenId.LessThan OrElse tokenVal.id = TokenId.LessThanEqual + Dim op As Token = tokenVal + NextToken() + Dim right As Expression = ParseAdditive() + Dim isEquality As Boolean = (op.id = TokenId.Equal OrElse op.id = TokenId.DoubleEqual OrElse _ + op.id = TokenId.ExclamationEqual OrElse op.id = TokenId.LessGreater) + If isEquality AndAlso Not left.Type.IsValueType AndAlso Not right.Type.IsValueType Then + If Not left.Type.Equals(right.Type) Then + If left.Type.IsAssignableFrom(right.Type) Then + right = Expression.Convert(right, left.Type) + ElseIf right.Type.IsAssignableFrom(left.Type) Then + left = Expression.Convert(left, right.Type) + Else + Throw IncompatibleOperandsError(op.text, left, right, op.pos) + End If + End If + ElseIf IsEnumType(left.Type) OrElse IsEnumType(right.Type) Then + If Not left.Type.Equals(right.Type) Then + Dim e As Expression = PromoteExpression(right, left.Type, True) + If e IsNot Nothing Then + right = e + Else + e = PromoteExpression(left, right.Type, True) + If e Is Nothing Then + Throw IncompatibleOperandsError(op.text, left, right, op.pos) + End If + left = e + End If + End If + Else + CheckAndPromoteOperands(If(isEquality, GetType(IEqualitySignatures), GetType(IRelationalSignatures)), _ + op.text, left, right, op.pos) + End If + Select Case op.id + Case TokenId.Equal, TokenId.DoubleEqual + left = GenerateEqual(left, right) + Case TokenId.ExclamationEqual, TokenId.LessGreater + left = GenerateNotEqual(left, right) + Case TokenId.GreaterThan + left = GenerateGreaterThan(left, right) + Case TokenId.GreaterThanEqual + left = GenerateGreaterThanEqual(left, right) + Case TokenId.LessThan + left = GenerateLessThan(left, right) + Case TokenId.LessThanEqual + left = GenerateLessThanEqual(left, right) + End Select + Loop + Return left + End Function + + ' +, -, & operators + Function ParseAdditive() As Expression + Dim left = ParseMultiplicative() + Do While tokenVal.id = TokenId.Plus OrElse tokenVal.id = TokenId.Minus OrElse _ + tokenVal.id = TokenId.Amphersand + Dim op = tokenVal + NextToken() + Dim right = ParseMultiplicative() + Select Case op.id + Case TokenId.Plus + If left.Type.Equals(GetType(String)) OrElse right.Type.Equals(GetType(String)) Then + GoTo amphersand + End If + CheckAndPromoteOperands(GetType(IAddSignatures), op.text, left, right, op.pos) + left = GenerateAdd(left, right) + Case TokenId.Minus + CheckAndPromoteOperands(GetType(ISubtractSignatures), op.text, left, right, op.pos) + left = GenerateSubtract(left, right) + Case TokenId.Amphersand +amphersand: + left = GenerateStringConcat(left, right) + End Select + Loop + Return left + End Function + + ' *, /, %, mod operators + Function ParseMultiplicative() As Expression + Dim left = ParseUnary() + Do While tokenVal.id = TokenId.Asterisk OrElse tokenVal.id = TokenId.Slash OrElse _ + tokenVal.id = TokenId.Percent OrElse TokenIdentifierIs("mod") + Dim op = tokenVal + NextToken() + Dim right = ParseUnary() + CheckAndPromoteOperands(GetType(IArithmeticSignatures), op.text, left, right, op.pos) + Select Case op.id + Case TokenId.Asterisk + left = Expression.Multiply(left, right) + Case TokenId.Slash + left = Expression.Divide(left, right) + Case TokenId.Percent, TokenId.Identifier + left = Expression.Modulo(left, right) + End Select + Loop + Return left + End Function + + ' -, !, not unary operators + Function ParseUnary() As Expression + If tokenVal.id = TokenId.Minus OrElse tokenVal.id = TokenId.Exclamation OrElse _ + TokenIdentifierIs("not") Then + + Dim op = tokenVal + NextToken() + If op.id = TokenId.Minus AndAlso (tokenVal.id = TokenId.IntegerLiteral OrElse _ + tokenVal.id = TokenId.RealLiteral) Then + tokenVal.text = "-" & tokenVal.text + tokenVal.pos = op.pos + Return ParsePrimary() + End If + Dim expr = ParseUnary() + If op.id = TokenId.Minus Then + CheckAndPromoteOperand(GetType(INegationSignatures), op.text, expr, op.pos) + expr = Expression.Negate(expr) + Else + CheckAndPromoteOperand(GetType(INotSignatures), op.text, expr, op.pos) + expr = Expression.Not(expr) + End If + Return expr + End If + Return ParsePrimary() + End Function + + Function ParsePrimary() As Expression + Dim expr = ParsePrimaryStart() + Do + If tokenVal.id = TokenId.Dot Then + NextToken() + expr = ParseMemberAccess(Nothing, expr) + ElseIf tokenVal.id = TokenId.OpenBracket Then + expr = ParseElementAccess(expr) + Else + Exit Do + End If + Loop + Return expr + End Function + + Function ParsePrimaryStart() As Expression + Select Case tokenVal.id + Case TokenId.Identifier + Return ParseIdentifier() + Case TokenId.StringLiteral + Return ParseStringLiteral() + Case TokenId.IntegerLiteral + Return ParseIntegerLiteral() + Case TokenId.RealLiteral + Return ParseRealLiteral() + Case TokenId.OpenParen + Return ParseParenExpression() + Case Else + Throw ParseError(Res.ExpressionExpected) + End Select + End Function + + Function ParseStringLiteral() As Expression + ValidateToken(TokenId.StringLiteral) + + Dim quote = tokenVal.text(0) + Dim s = tokenVal.text.Substring(1, tokenVal.text.Length - 2) + Dim start = 0 + + Do + Dim i = s.IndexOf(quote, start) + If i < 0 Then Exit Do + s = s.Remove(i, 1) + start = i + 1 + Loop + + If quote = "'" Then + If s.Length <> 1 Then + Throw ParseError(Res.InvalidCharacterLiteral) + End If + NextToken() + Return CreateLiteral(s(0), s) + End If + NextToken() + Return CreateLiteral(s, s) + End Function + + Function ParseIntegerLiteral() As Expression + ValidateToken(TokenId.IntegerLiteral) + Dim text = tokenVal.text + If text(0) <> "-" Then + Dim value As ULong = 0 + If Not UInt64.TryParse(text, value) Then + Throw ParseError(Res.InvalidIntegerLiteral, text) + End If + + NextToken() + If value <= CULng(Int32.MaxValue) Then Return CreateLiteral(CInt(value), text) + If value <= CULng(UInt32.MaxValue) Then Return CreateLiteral(CUInt(value), text) + If value <= CULng(Int64.MaxValue) Then Return CreateLiteral(CLng(value), text) + Return CreateLiteral(value, text) + Else + Dim value As Long = 0 + If Not Int64.TryParse(text, value) Then + Throw ParseError(Res.InvalidIntegerLiteral, text) + End If + NextToken() + If (value >= Int32.MinValue AndAlso value <= Int32.MaxValue) Then + Return CreateLiteral(CInt(value), text) + End If + Return CreateLiteral(value, text) + End If + End Function + + Function ParseRealLiteral() As Expression + ValidateToken(TokenId.RealLiteral) + Dim text = tokenVal.text + Dim value As Object = Nothing + Dim last = text(text.Length - 1) + If last = "f" Or last = "F" Then + Dim f As Single + If Single.TryParse(text.Substring(0, text.Length - 1), f) Then value = f + + Else + Dim d As Double + If Double.TryParse(text, d) Then value = d + End If + + If value Is Nothing Then Throw ParseError(Res.InvalidRealLiteral, text) + NextToken() + Return CreateLiteral(value, text) + End Function + + Function CreateLiteral(ByVal value As Object, ByVal text As String) As Expression + Dim expr = Expression.Constant(value) + literals.Add(expr, text) + Return expr + End Function + + Function ParseParenExpression() As Expression + ValidateToken(TokenId.OpenParen, Res.OpenParenExpected) + NextToken() + Dim e = ParseExpression() + ValidateToken(TokenId.CloseParen, Res.CloseParenOrOperatorExpected) + NextToken() + Return e + End Function + + Function ParseIdentifier() As Expression + ValidateToken(TokenId.Identifier) + Dim value As Object = Nothing + If keywords.TryGetValue(tokenVal.text, value) Then + If TryCast(value, Type) IsNot Nothing Then Return ParseTypeAccess(DirectCast(value, Type)) + If value Is keywordIt Then Return ParseIt() + If value Is keywordIif Then Return ParseIif() + If value Is keywordNew Then Return ParseNew() + NextToken() + Return DirectCast(value, Expression) + End If + + If symbols.TryGetValue(tokenVal.text, value) OrElse _ + externals IsNot Nothing AndAlso externals.TryGetValue(tokenVal.text, value) Then + Dim expr = TryCast(value, Expression) + If expr Is Nothing Then + expr = Expression.Constant(value) + Else + Dim lambda = TryCast(expr, LambdaExpression) + If lambda IsNot Nothing Then Return ParseLambdaInvocation(lambda) + End If + NextToken() + Return expr + End If + If it IsNot Nothing Then Return ParseMemberAccess(Nothing, it) + Throw ParseError(Res.UnknownIdentifier, tokenVal.text) + End Function + + Function ParseIt() As Expression + If it Is Nothing Then Throw ParseError(Res.NoItInScope) + NextToken() + Return it + End Function + + Function ParseIif() As Expression + Dim errorPos = tokenVal.pos + NextToken() + Dim args As Expression() = ParseArgumentList() + If args.Length <> 3 Then + Throw ParseError(errorPos, Res.IifRequiresThreeArgs) + End If + Return GenerateConditional(args(0), args(1), args(2), errorPos) + End Function + + Function GenerateConditional(ByVal test As Expression, ByVal expr1 As Expression, ByVal expr2 As Expression, ByVal errorPos As Integer) As Expression + If Not test.Type.Equals(GetType(Boolean)) Then + Throw ParseError(errorPos, Res.FirstExprMustBeBool) + End If + If Not expr1.Type.Equals(expr2.Type) Then + Dim expr1as2 As Expression = If(Not expr2.Equals(nullLiteral), PromoteExpression(expr1, expr2.Type, True), Nothing) + Dim expr2as1 As Expression = If(Not expr1.Equals(nullLiteral), PromoteExpression(expr2, expr1.Type, True), Nothing) + If expr1as2 IsNot Nothing And expr2as1 Is Nothing Then + expr1 = expr1as2 + ElseIf expr2as1 IsNot Nothing And expr1as2 Is Nothing Then + expr2 = expr2as1 + Else + Dim type1 = If(Not expr1.Equals(nullLiteral), expr1.Type.Name, "null") + Dim type2 = If(Not expr2.Equals(nullLiteral), expr2.Type.Name, "null") + If expr1as2 IsNot Nothing And expr2as1 IsNot Nothing Then + Throw ParseError(errorPos, Res.BothTypesConvertToOther, type1, type2) + End If + Throw ParseError(errorPos, Res.NeitherTypeConvertsToOther, type1, type2) + End If + End If + Return Expression.Condition(test, expr1, expr2) + End Function + + Function ParseNew() As Expression + NextToken() + ValidateToken(TokenId.OpenParen, Res.OpenParenExpected) + NextToken() + Dim properties As New List(Of DynamicProperty)() + Dim expressions As New List(Of Expression)() + Do + Dim exprPos = tokenVal.pos + Dim expr = ParseExpression() + Dim propName As String + If TokenIdentifierIs("as") Then + NextToken() + propName = GetIdentifier() + NextToken() + Else + Dim [me] As MemberExpression = TryCast(expr, MemberExpression) + If [me] Is Nothing Then Throw ParseError(exprPos, Res.MissingAsClause) + propName = [me].Member.Name + End If + expressions.Add(expr) + properties.Add(New DynamicProperty(propName, expr.Type)) + If tokenVal.id <> TokenId.Comma Then Exit Do + NextToken() + Loop + ValidateToken(TokenId.CloseParen, Res.CloseParenOrCommaExpected) + NextToken() + Dim type As Type = DynamicExpression.CreateClass(properties) + Dim bindings(properties.Count - 1) As MemberBinding + For i As Integer = 0 To bindings.Length - 1 + bindings(i) = Expression.Bind(type.GetProperty(properties(i).Name), expressions(i)) + Next + Return Expression.MemberInit(Expression.[New](type), bindings) + End Function + + Function ParseLambdaInvocation(ByVal lambda As LambdaExpression) As Expression + Dim errorPos = tokenVal.pos + NextToken() + Dim args As Expression() = ParseArgumentList() + Dim method As MethodBase = Nothing + If FindMethod(lambda.Type, "Invoke", False, args, method) <> 1 Then + Throw ParseError(errorPos, Res.ArgsIncompatibleWithLambda) + End If + Return Expression.Invoke(lambda, args) + End Function + + Function ParseTypeAccess(ByVal type As Type) As Expression + Dim errorPos = tokenVal.pos + NextToken() + + If tokenVal.id = TokenId.Question Then + If (Not type.IsValueType) OrElse IsNullableType(type) Then + Throw ParseError(errorPos, Res.TypeHasNoNullableForm, GetTypeName(type)) + End If + type = GetType(Nullable(Of Integer)).GetGenericTypeDefinition().MakeGenericType(type) + NextToken() + End If + If tokenVal.id = TokenId.OpenParen Then + Dim args As Expression() = ParseArgumentList() + Dim method As MethodBase = Nothing + Select Case FindBestMethod(type.GetConstructors(), args, method) + Case 0 + If args.Length = 1 Then + Return GenerateConversion(args(0), type, errorPos) + End If + Throw ParseError(errorPos, Res.NoMatchingConstructor, GetTypeName(type)) + Case 1 + Return Expression.[New](DirectCast(method, ConstructorInfo), args) + Case Else + Throw ParseError(errorPos, Res.AmbiguousConstructorInvocation, GetTypeName(type)) + End Select + End If + ValidateToken(TokenId.Dot, Res.DotOrOpenParenExpected) + NextToken() + Return ParseMemberAccess(type, Nothing) + End Function + + Function GenerateConversion(ByVal expr As Expression, ByVal type As Type, ByVal errorPos As Integer) As Expression + Dim exprType = expr.Type + If exprType.Equals(type) Then Return expr + If exprType.IsValueType AndAlso type.IsValueType Then + If (IsNullableType(exprType) OrElse IsNullableType(type)) AndAlso _ + GetNonNullableType(exprType).Equals(GetNonNullableType(type)) Then + + Return Expression.Convert(expr, type) + End If + If (IsNumericType(exprType) OrElse IsEnumType(exprType)) AndAlso _ + (IsNumericType(type) OrElse IsEnumType(type)) Then + + Return Expression.ConvertChecked(expr, type) + End If + End If + If exprType.IsAssignableFrom(type) OrElse type.IsAssignableFrom(exprType) OrElse _ + exprType.IsInterface OrElse type.IsInterface Then + Return Expression.Convert(expr, type) + End If + Throw ParseError(errorPos, Res.CannotConvertValue, _ + GetTypeName(exprType), GetTypeName(type)) + End Function + + + Function ParseMemberAccess(ByVal type As Type, ByVal instance As Expression) As Expression + If instance IsNot Nothing Then type = instance.Type + Dim errorPos = tokenVal.pos + Dim id = GetIdentifier() + NextToken() + If tokenVal.id = TokenId.OpenParen Then + If instance IsNot Nothing AndAlso Not type.Equals(GetType(String)) Then + Dim enumerableType As Type = FindGenericType(GetType(IEnumerable(Of Object)).GetGenericTypeDefinition(), type) + If enumerableType IsNot Nothing Then + Dim elementType As Type = enumerableType.GetGenericArguments()(0) + Return ParseAggregate(instance, elementType, id, errorPos) + End If + End If + Dim args As Expression() = ParseArgumentList() + Dim mb As MethodBase = Nothing + Select Case FindMethod(type, id, instance Is Nothing, args, mb) + Case 0 + Throw ParseError(errorPos, Res.NoApplicableMethod, id, GetTypeName(type)) + Case 1 + Dim method = DirectCast(mb, MethodInfo) + If (Not IsPredefinedType(method.DeclaringType)) Then + Throw ParseError(errorPos, Res.MethodsAreInaccessible, GetTypeName(method.DeclaringType)) + End If + If method.ReturnType.Equals(GetType(Void)) Then + Throw ParseError(errorPos, Res.MethodIsVoid, id, GetTypeName(method.DeclaringType)) + End If + Return Expression.Call(instance, DirectCast(method, MethodInfo), args) + Case Else + Throw ParseError(errorPos, Res.AmbiguousMethodInvocation, id, GetTypeName(type)) + End Select + Else + Dim member As MemberInfo = FindPropertyOrField(type, id, instance Is Nothing) + If member Is Nothing Then + Throw ParseError(errorPos, Res.UnknownPropertyOrField, id, GetTypeName(type)) + End If + Return If(TryCast(member, PropertyInfo) IsNot Nothing, _ + Expression.Property(instance, DirectCast(member, PropertyInfo)), _ + Expression.Field(instance, DirectCast(member, FieldInfo))) + End If + End Function + + Shared Function FindGenericType(ByVal generic As Type, ByVal type As Type) As Type + Do While type IsNot Nothing AndAlso Not type.Equals(GetType(Object)) + If type.IsGenericType AndAlso type.GetGenericTypeDefinition().Equals(generic) Then Return type + If generic.IsInterface Then + For Each intfType As Type In type.GetInterfaces() + Dim found As Type = FindGenericType(generic, intfType) + If found IsNot Nothing Then Return found + Next + End If + type = type.BaseType + Loop + Return Nothing + End Function + + Function ParseAggregate(ByVal instance As Expression, ByVal elementType As Type, ByVal methodName As String, ByVal errorPos As Integer) As Expression + Dim outerIt As ParameterExpression = it + Dim innerIt As ParameterExpression = Expression.Parameter(elementType, "") + it = innerIt + Dim args As Expression() = ParseArgumentList() + it = outerIt + Dim signature As MethodBase = Nothing + If FindMethod(GetType(IEnumerableSignatures), methodName, False, args, signature) <> 1 Then + Throw ParseError(errorPos, Res.NoApplicableAggregate, methodName) + End If + Dim typeArgs As Type() + If signature.Name = "Min" OrElse signature.Name = "Max" Then + typeArgs = New Type() {elementType, args(0).Type} + Else + typeArgs = New Type() {elementType} + End If + + If args.Length = 0 Then + args = New Expression() {instance} + Else + args = New Expression() {instance, Expression.Lambda(args(0), innerIt)} + End If + Return Expression.Call(GetType(Enumerable), signature.Name, typeArgs, args) + End Function + + Function ParseArgumentList() As Expression() + ValidateToken(TokenId.OpenParen, Res.OpenParenExpected) + NextToken() + Dim args As Expression() = If(tokenVal.id <> TokenId.CloseParen, ParseArguments(), New Expression(-1) {}) + ValidateToken(TokenId.CloseParen, Res.CloseParenOrCommaExpected) + NextToken() + Return args + End Function + + Function ParseArguments() As Expression() + Dim argList As New List(Of Expression)() + Do + argList.Add(ParseExpression()) + If tokenVal.id <> TokenId.Comma Then Exit Do + NextToken() + Loop + Return argList.ToArray() + End Function + + Function ParseElementAccess(ByVal expr As Expression) As Expression + Dim errorPos As Integer = tokenVal.pos + ValidateToken(TokenId.OpenBracket, Res.OpenParenExpected) + NextToken() + Dim args As Expression() = ParseArguments() + ValidateToken(TokenId.CloseBracket, Res.CloseBracketOrCommaExpected) + NextToken() + If expr.Type.IsArray Then + If expr.Type.GetArrayRank() <> 1 OrElse args.Length <> 1 Then + Throw ParseError(errorPos, Res.CannotIndexMultiDimArray) + End If + Dim index As Expression = PromoteExpression(args(0), GetType(Integer), True) + If index Is Nothing Then + Throw ParseError(errorPos, Res.InvalidIndex) + End If + Return Expression.ArrayIndex(expr, index) + Else + Dim mb As MethodBase = Nothing + Select Case FindIndexer(expr.Type, args, mb) + Case 0 + Throw ParseError(errorPos, Res.NoApplicableIndexer, GetTypeName(expr.Type)) + Case 1 + Return Expression.Call(expr, DirectCast(mb, MethodInfo), args) + Case Else + Throw ParseError(errorPos, Res.AmbiguousIndexerInvocation, GetTypeName(expr.Type)) + End Select + End If + End Function + + Shared Function IsPredefinedType(ByVal type As Type) As Boolean + For Each t As Type In predefinedTypes + If t.Equals(type) Then Return True + Next + + Return False + End Function + + Shared Function IsNullableType(ByVal type As Type) As Boolean + Return type.IsGenericType AndAlso type.GetGenericTypeDefinition().Equals(GetType(Nullable(Of Integer)).GetGenericTypeDefinition()) + End Function + + Shared Function GetNonNullableType(ByVal type As Type) As Type + Return If(IsNullableType(type), type.GetGenericArguments()(0), type) + End Function + + Shared Function GetTypeName(ByVal type As Type) As String + Dim baseType = GetNonNullableType(type) + Dim s = baseType.Name + If Not type.Equals(baseType) Then s &= "?" + Return s + End Function + + Shared Function IsNumericType(ByVal type As Type) As Boolean + Return GetNumericTypeKind(type) <> 0 + End Function + + Shared Function IsSignedIntegralType(ByVal type As Type) As Boolean + Return GetNumericTypeKind(type) = 2 + End Function + + Shared Function IsUnsignedIntegralType(ByVal type As Type) As Boolean + Return GetNumericTypeKind(type) = 3 + End Function + + Shared Function GetNumericTypeKind(ByVal type As Type) As Integer + type = GetNonNullableType(type) + If type.IsEnum Then Return 0 + Select Case type.GetTypeCode(type) + Case TypeCode.Char, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return 1 + Case TypeCode.SByte, TypeCode.Int16, TypeCode.Int32, TypeCode.Int64 + Return 2 + Case TypeCode.Byte, TypeCode.UInt16, TypeCode.UInt32, TypeCode.UInt64 + Return 3 + Case Else + Return 0 + End Select + End Function + + Shared Function IsEnumType(ByVal type As Type) As Boolean + Return GetNonNullableType(type).IsEnum + End Function + + Sub CheckAndPromoteOperand(ByVal signatures As Type, ByVal opName As String, ByRef expr As Expression, ByVal errorPos As Integer) + Dim args As Expression() = New Expression() {expr} + Dim method As MethodBase = Nothing + If FindMethod(signatures, "F", False, args, method) <> 1 Then + Throw ParseError(errorPos, Res.IncompatibleOperand, opName, GetTypeName(args(0).Type)) + End If + expr = args(0) + End Sub + + Sub CheckAndPromoteOperands(ByVal signatures As Type, ByVal opName As String, ByRef left As Expression, ByRef right As Expression, ByVal errorPos As Integer) + Dim args As Expression() = New Expression() {left, right} + Dim method As MethodBase = Nothing + If FindMethod(signatures, "F", False, args, method) <> 1 Then + Throw IncompatibleOperandsError(opName, left, right, errorPos) + End If + left = args(0) + right = args(1) + End Sub + + Function IncompatibleOperandsError(ByVal opName As String, ByVal left As Expression, ByVal right As Expression, ByVal pos As Integer) As Exception + Return ParseError(pos, Res.IncompatibleOperands, opName, GetTypeName(left.Type), GetTypeName(right.Type)) + End Function + + Function FindPropertyOrField(ByVal type As Type, ByVal memberName As String, ByVal staticAccess As Boolean) As MemberInfo + Dim flags As BindingFlags = BindingFlags.Public Or BindingFlags.DeclaredOnly Or _ + If(staticAccess, BindingFlags.Static, BindingFlags.Instance) + For Each t As Type In SelfAndBaseTypes(type) + Dim members As MemberInfo() = t.FindMembers(MemberTypes.Property Or MemberTypes.Field, _ + flags, type.FilterNameIgnoreCase, memberName) + If members.Length <> 0 Then Return members(0) + Next + Return Nothing + End Function + + Function FindMethod(ByVal type As Type, ByVal methodName As String, ByVal staticAccess As Boolean, ByVal args As Expression(), ByRef method As MethodBase) As Integer + Dim flags As BindingFlags = BindingFlags.Public Or BindingFlags.DeclaredOnly Or _ + If(staticAccess, BindingFlags.Static, BindingFlags.Instance) + For Each t As Type In SelfAndBaseTypes(type) + Dim members As MemberInfo() = t.FindMembers(MemberTypes.Method, _ + flags, type.FilterNameIgnoreCase, methodName) + Dim count As Integer = FindBestMethod(members.Cast(Of MethodBase)(), args, method) + If count <> 0 Then Return count + Next + method = Nothing + Return 0 + End Function + + Function FindIndexer(ByVal type As Type, ByVal args As Expression(), ByRef method As MethodBase) As Integer + For Each t As Type In SelfAndBaseTypes(type) + Dim members As MemberInfo() = t.GetDefaultMembers() + If members.Length <> 0 Then + Dim methods As IEnumerable(Of MethodBase) = members. _ + OfType(Of PropertyInfo)(). _ + Select(Function(p) DirectCast(p.GetGetMethod(), MethodBase)). _ + Where(Function(m) m IsNot Nothing) + Dim count As Integer = FindBestMethod(methods, args, method) + If count <> 0 Then Return count + End If + Next + method = Nothing + Return 0 + End Function + + Shared Function SelfAndBaseTypes(ByVal type As Type) As IEnumerable(Of Type) + If type.IsInterface Then + Dim types As New List(Of Type)() + AddInterface(types, type) + Return types + End If + Return SelfAndBaseClasses(type) + End Function + + Shared Function SelfAndBaseClasses(ByVal type As Type) As IEnumerable(Of Type) + Dim results As New LinkedList(Of Type)() + + Do While type IsNot Nothing + results.AddLast(type) + type = type.BaseType + Loop + + Return results + End Function + + Shared Sub AddInterface(ByVal types As List(Of Type), ByVal type As Type) + If Not types.Contains(type) Then + types.Add(type) + End If + For Each t As Type In type.GetInterfaces() + AddInterface(types, t) + Next + End Sub + + Class MethodData + Public MethodBase As MethodBase + Public Parameters As ParameterInfo() + Public Args As Expression() + End Class + + Function FindBestMethod(ByVal methods As IEnumerable(Of MethodBase), ByVal args As Expression(), ByRef method As MethodBase) As Integer + Dim applicable As MethodData() = methods. _ + Select(Function(m) New MethodData With {.MethodBase = m, .Parameters = m.GetParameters()}). _ + Where(Function(m) IsApplicable(m, args)). _ + ToArray() + If applicable.Length > 1 Then + applicable = applicable. _ + Where(Function(m) applicable.All(Function(n) m Is n OrElse IsBetterThan(args, m, n))). _ + ToArray() + End If + If applicable.Length = 1 Then + Dim md As MethodData = applicable(0) + For i As Integer = 0 To args.Length - 1 + args(i) = md.Args(i) + Next + method = md.MethodBase + Else + method = Nothing + End If + Return applicable.Length + End Function + + Function IsApplicable(ByVal method As MethodData, ByVal args As Expression()) As Boolean + If method.Parameters.Length <> args.Length Then Return False + Dim promotedArgs As Expression() = New Expression(args.Length - 1) {} + + For i As Integer = 0 To args.Length - 1 + Dim pi As ParameterInfo = method.Parameters(i) + If pi.IsOut Then Return False + Dim promoted As Expression = PromoteExpression(args(i), pi.ParameterType, False) + If promoted Is Nothing Then Return False + promotedArgs(i) = promoted + Next i + method.Args = promotedArgs + + Return True + End Function + + Function PromoteExpression(ByVal expr As Expression, ByVal type As Type, ByVal exact As Boolean) As Expression + If expr.Type.Equals(type) Then Return expr + If TryCast(expr, ConstantExpression) IsNot Nothing Then + Dim ce = DirectCast(expr, ConstantExpression) + If ce.Equals(nullLiteral) Then + If Not type.IsValueType OrElse IsNullableType(type) Then + Return Expression.Constant(Nothing, type) + End If + Else + Dim text As String = Nothing + If literals.TryGetValue(ce, text) Then + Dim target As Type = GetNonNullableType(type) + Dim value As Object = Nothing + Select Case type.GetTypeCode(ce.Type) + Case TypeCode.Int32, TypeCode.UInt32, TypeCode.Int64, TypeCode.UInt64 + value = ParseNumber(text, target) + Case TypeCode.Double + If target.Equals(GetType(Decimal)) Then value = ParseNumber(text, target) + Case TypeCode.String + value = ParseEnum(text, target) + End Select + If value IsNot Nothing Then Return Expression.Constant(value, type) + End If + End If + End If + + If IsCompatibleWith(expr.Type, type) Then + If type.IsValueType OrElse exact Then Return Expression.Convert(expr, type) + Return expr + End If + Return Nothing + End Function + + Shared Function ParseNumber(ByVal text As String, ByVal type As Type) As Object + Select Case type.GetTypeCode(GetNonNullableType(type)) + Case TypeCode.SByte + Dim sb As SByte + If SByte.TryParse(text, sb) Then Return sb + Case TypeCode.Byte + Dim b As Byte + If Byte.TryParse(text, b) Then Return b + Case TypeCode.Int16 + Dim s As Short + If Short.TryParse(text, s) Then Return s + Case TypeCode.UInt16 + Dim us As UShort + If UShort.TryParse(text, us) Then Return us + Case TypeCode.Int32 + Dim i As Integer + If Integer.TryParse(text, i) Then Return i + Case TypeCode.UInt32 + Dim ui As UInteger + If UInteger.TryParse(text, ui) Then Return ui + Case TypeCode.Int64 + Dim l As Long + If Long.TryParse(text, l) Then Return l + Case TypeCode.UInt64 + Dim ul As ULong + If ULong.TryParse(text, ul) Then Return ul + Case TypeCode.Single + Dim f As Single + If Single.TryParse(text, f) Then Return f + Case TypeCode.Double + Dim d As Double + If Double.TryParse(text, d) Then Return d + Case TypeCode.Decimal + Dim e As Decimal + If Decimal.TryParse(text, e) Then Return e + End Select + Return Nothing + End Function + + Shared Function ParseEnum(ByVal name As String, ByVal type As Type) As Object + If type.IsEnum Then + Dim memberInfos As MemberInfo() = type.FindMembers(MemberTypes.Field, _ + BindingFlags.Public Or BindingFlags.DeclaredOnly Or BindingFlags.Static, _ + type.FilterNameIgnoreCase, name) + If memberInfos.Length <> 0 Then Return DirectCast(memberInfos(0), FieldInfo).GetValue(Nothing) + End If + Return Nothing + End Function + + Shared Function IsCompatibleWith(ByVal source As Type, ByVal target As Type) As Boolean + If source.Equals(target) Then Return True + If Not target.IsValueType Then Return target.IsAssignableFrom(source) + Dim st As Type = GetNonNullableType(source) + Dim tt As Type = GetNonNullableType(target) + If Not st.Equals(source) AndAlso tt.Equals(target) Then Return False + Dim sc As TypeCode = If(st.IsEnum, TypeCode.Object, System.Type.GetTypeCode(st)) + Dim tc As TypeCode = If(tt.IsEnum, TypeCode.Object, System.Type.GetTypeCode(tt)) + + Select Case sc + Case TypeCode.SByte + Select Case tc + Case TypeCode.SByte, TypeCode.Int16, TypeCode.Int32, TypeCode.Int64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.Byte + Select Case tc + Case TypeCode.Byte, TypeCode.Int16, TypeCode.UInt16, TypeCode.Int32, TypeCode.UInt32, TypeCode.Int64, TypeCode.UInt64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.Int16 + Select Case tc + Case TypeCode.Int16, TypeCode.Int32, TypeCode.Int64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.UInt16 + Select Case tc + Case TypeCode.UInt16, TypeCode.Int32, TypeCode.UInt32, TypeCode.Int64, TypeCode.UInt64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.Int32 + Select Case tc + Case TypeCode.Int32, TypeCode.Int64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.UInt32 + Select Case tc + Case TypeCode.UInt32, TypeCode.Int64, TypeCode.UInt64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.Int64 + Select Case tc + Case TypeCode.Int64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.UInt64 + Select Case tc + Case TypeCode.UInt64, TypeCode.Single, TypeCode.Double, TypeCode.Decimal + Return True + End Select + Case TypeCode.Single + Select Case tc + Case TypeCode.Single, TypeCode.Double + Return True + End Select + Case Else + If st.Equals(tt) Then Return True + End Select + Return False + End Function + + Shared Function IsBetterThan(ByVal args As Expression(), ByVal m1 As MethodData, ByVal m2 As MethodData) As Boolean + Dim better = False + For i As Integer = 0 To args.Length - 1 + Dim c As Integer = CompareConversions(args(i).Type, _ + m1.Parameters(i).ParameterType, _ + m2.Parameters(i).ParameterType) + If c < 0 Then Return False + If c > 0 Then better = True + Next i + Return better + End Function + + ' Return 1 if s -> t1 is a better conversion than s -> t2 + ' Return -1 if s -> t2 is a better conversion than s -> t1 + ' Return 0 if neither conversion is better + Shared Function CompareConversions(ByVal s As Type, ByVal t1 As Type, ByVal t2 As Type) As Integer + If t1.Equals(t2) Then Return 0 + If s.Equals(t1) Then Return 1 + If s.Equals(t2) Then Return -1 + Dim t1t2 As Boolean = IsCompatibleWith(t1, t2) + Dim t2t1 As Boolean = IsCompatibleWith(t2, t1) + If t1t2 AndAlso Not t2t1 Then Return 1 + If t2t1 AndAlso Not t1t2 Then Return -1 + If IsSignedIntegralType(t1) AndAlso IsUnsignedIntegralType(t2) Then Return 1 + If IsSignedIntegralType(t2) AndAlso IsUnsignedIntegralType(t1) Then Return -1 + Return 0 + End Function + + Function GenerateEqual(ByVal left As Expression, ByVal right As Expression) As Expression + Return Expression.Equal(left, right) + End Function + + Function GenerateNotEqual(ByVal left As Expression, ByVal right As Expression) As Expression + Return Expression.NotEqual(left, right) + End Function + + Function GenerateGreaterThan(ByVal left As Expression, ByVal right As Expression) As Expression + If left.Type.Equals(GetType(String)) Then + Return Expression.GreaterThan( _ + GenerateStaticMethodCall("Compare", left, right), _ + Expression.Constant(0)) + End If + Return Expression.GreaterThan(left, right) + End Function + + Function GenerateGreaterThanEqual(ByVal left As Expression, ByVal right As Expression) As Expression + If left.Type.Equals(GetType(String)) Then + Return Expression.GreaterThanOrEqual( _ + GenerateStaticMethodCall("Compare", left, right), _ + Expression.Constant(0)) + End If + Return Expression.GreaterThanOrEqual(left, right) + End Function + + Function GenerateLessThan(ByVal left As Expression, ByVal right As Expression) As Expression + If left.Type.Equals(GetType(String)) Then + Return Expression.LessThan( _ + GenerateStaticMethodCall("Compare", left, right), _ + Expression.Constant(0)) + End If + Return Expression.LessThan(left, right) + End Function + + Function GenerateLessThanEqual(ByVal left As Expression, ByVal right As Expression) As Expression + If left.Type.Equals(GetType(String)) Then + Return Expression.LessThanOrEqual( _ + GenerateStaticMethodCall("Compare", left, right), _ + Expression.Constant(0)) + End If + Return Expression.LessThanOrEqual(left, right) + End Function + + Function GenerateAdd(ByVal left As Expression, ByVal right As Expression) As Expression + If left.Type.Equals(GetType(String)) AndAlso right.Type.Equals(GetType(String)) Then + Return GenerateStaticMethodCall("Concat", left, right) + End If + Return Expression.Add(left, right) + End Function + + Function GenerateSubtract(ByVal left As Expression, ByVal right As expression) As Expression + Return Expression.Subtract(left, right) + End Function + + Function GenerateStringConcat(ByVal left As Expression, ByVal right As Expression) As Expression + Return Expression.Call( _ + Nothing, _ + GetType(String).GetMethod("Concat", New Type() {GetType(Object), GetType(Object)}), _ + New Expression() {left, right}) + End Function + + Function GetStaticMethod(ByVal methodName As String, ByVal left As expression, ByVal right As expression) As MethodInfo + Return left.Type.GetMethod(methodName, New Type() {left.Type, right.Type}) + End Function + + Function GenerateStaticMethodCall(ByVal methodName As String, ByVal left As Expression, ByVal right As Expression) As Expression + Return Expression.Call(Nothing, GetStaticMethod(methodName, left, right), New Expression() {left, right}) + End Function + + Sub SetTextPos(ByVal pos As Integer) + textPos = pos + ch = If(textPos < textLen, text(textPos), ChrW(0)) + End Sub + + Sub NextChar() + If textPos < textLen Then textPos += 1 + ch = If(textPos < textLen, text(textPos), ChrW(0)) + End Sub + + Sub NextToken() + Do While Char.IsWhiteSpace(ch) + NextChar() + Loop + + Dim t As TokenId + Dim tokenPos = textPos + Select Case ch + Case "!"c + NextChar() + If ch = "=" Then + NextChar() + t = TokenId.ExclamationEqual + Else + t = TokenId.Exclamation + End If + Case "%"c + NextChar() + t = TokenId.Percent + Case "&"c + NextChar() + If ch = "&" Then + NextChar() + t = TokenId.DoubleAmphersand + Else + t = TokenId.Amphersand + End If + Case "("c + NextChar() + t = TokenId.OpenParen + Case ")"c + NextChar() + t = TokenId.CloseParen + Case "*"c + NextChar() + t = TokenId.Asterisk + Case "+"c + NextChar() + t = TokenId.Plus + Case ","c + NextChar() + t = TokenId.Comma + Case "-"c + NextChar() + t = TokenId.Minus + Case "."c + NextChar() + t = TokenId.Dot + Case "/"c + NextChar() + t = TokenId.Slash + Case ":"c + NextChar() + t = TokenId.Colon + Case "<"c + NextChar() + If ch = "=" Then + NextChar() + t = TokenId.LessThanEqual + ElseIf ch = ">" Then + NextChar() + t = TokenId.LessGreater + Else + t = TokenId.LessThan + End If + Case "="c + NextChar() + If ch = "=" Then + NextChar() + t = TokenId.DoubleEqual + Else + t = TokenId.Equal + End If + Case ">"c + NextChar() + If ch = "=" Then + NextChar() + t = TokenId.GreaterThanEqual + Else + t = TokenId.GreaterThan + End If + Case "?"c + NextChar() + t = TokenId.Question + Case "["c + NextChar() + t = TokenId.OpenBracket + Case "]"c + NextChar() + t = TokenId.CloseBracket + Case "|"c + NextChar() + If ch = "|" Then + NextChar() + t = TokenId.DoubleBar + Else + t = TokenId.Bar + End If + Case "'"c, """"c + Dim quote = ch + Do + NextChar() + Do While textPos < textLen AndAlso ch <> quote + NextChar() + Loop + If textPos = textLen Then Throw ParseError(textPos, Res.UnterminatedStringLiteral) + NextChar() + Loop While ch = quote + t = TokenId.StringLiteral + Case Else + If Char.IsLetter(ch) OrElse ch = "@" OrElse ch = "_" Then + Do + NextChar() + Loop While Char.IsLetterOrDigit(ch) OrElse ch = "_" + t = TokenId.Identifier + Exit Select + End If + + If Char.IsDigit(ch) Then + t = TokenId.IntegerLiteral + Do + NextChar() + Loop While Char.IsDigit(ch) + If ch = "." Then + t = TokenId.RealLiteral + NextChar() + ValidateDigit() + Do + NextChar() + Loop While Char.IsDigit(ch) + End If + If ch = "E" OrElse ch = "e" Then + t = TokenId.RealLiteral + NextChar() + If ch = "+" OrElse ch = "-" Then NextChar() + ValidateDigit() + Do + NextChar() + Loop While Char.IsDigit(ch) + End If + If ch = "F" Or ch = "f" Then NextChar() + Exit Select + End If + If textPos = textLen Then + t = TokenId.End + Exit Select + End If + Throw ParseError(textPos, Res.InvalidCharacter, ch) + End Select + tokenVal.id = t + tokenVal.text = text.Substring(tokenPos, textPos - tokenPos) + tokenVal.pos = tokenPos + End Sub + + Function TokenIdentifierIs(ByVal id As String) As Boolean + Return tokenVal.id = TokenId.Identifier AndAlso String.Equals(id, tokenVal.text, StringComparison.OrdinalIgnoreCase) + End Function + + Function GetIdentifier() As String + ValidateToken(TokenId.Identifier, Res.IdentifierExpected) + Dim id = tokenVal.text + If id.Length > 1 AndAlso id(0) = "@" Then id = id.Substring(1) + Return id + End Function + + Sub ValidateDigit() + If Not Char.IsDigit(ch) Then Throw ParseError(textPos, Res.DigitExpected) + End Sub + + Sub ValidateToken(ByVal t As TokenId, ByVal errorMessage As String) + If tokenVal.id <> t Then Throw ParseError(errorMessage) + End Sub + + Sub ValidateToken(ByVal t As TokenId) + If tokenVal.id <> t Then Throw ParseError(Res.SyntaxError) + End Sub + + Overloads Function ParseError(ByVal format As String, ByVal ParamArray args As Object()) As Exception + Return ParseError(tokenVal.pos, format, args) + End Function + + Overloads Function ParseError(ByVal pos As Integer, ByVal format As String, ByVal ParamArray args As Object()) As Exception + Return New ParseException(String.Format(System.Globalization.CultureInfo.CurrentCulture, format, args), pos) + End Function + + Shared Function CreateKeywords() As Dictionary(Of String, Object) + Dim d As New Dictionary(Of String, Object)(StringComparer.OrdinalIgnoreCase) + + d.Add("true", trueLiteral) + d.Add("false", falseLiteral) + d.Add("null", nullLiteral) + d.Add(keywordIt, keywordIt) + d.Add(keywordIif, keywordIif) + d.Add(keywordNew, keywordNew) + + For Each type As Type In predefinedTypes + d.Add(type.Name, type) + Next + + Return d + End Function +End Class + +Class Res + Public Const DuplicateIdentifier As String = "The identifier '{0}' was defined more than once" + Public Const ExpressionTypeMismatch As String = "Expression of type '{0}' expected" + Public Const ExpressionExpected As String = "Expression expected" + Public Const InvalidCharacterLiteral As String = "Character literal must contain exactly one character" + Public Const InvalidIntegerLiteral As String = "Invalid integer literal '{0}'" + Public Const InvalidRealLiteral As String = "Invalid real literal '{0}'" + Public Const UnknownIdentifier As String = "Unknown identifier '{0}'" + Public Const NoItInScope As String = "No 'it' is in scope" + Public Const IifRequiresThreeArgs As String = "The 'iif' function requires three arguments" + Public Const FirstExprMustBeBool As String = "The first expression must be of type 'Boolean'" + Public Const BothTypesConvertToOther As String = "Both of the types '{0}' and '{1}' convert to the other" + Public Const NeitherTypeConvertsToOther As String = "Neither of the types '{0}' and '{1}' converts to the other" + Public Const MissingAsClause As String = "Expression is missing an 'as' clause" + Public Const ArgsIncompatibleWithLambda As String = "Argument list incompatible with lambda expression" + Public Const TypeHasNoNullableForm As String = "Type '{0}' has no nullable form" + Public Const NoMatchingConstructor As String = "No matching constructor in type '{0}'" + Public Const AmbiguousConstructorInvocation As String = "Ambiguous invocation of '{0}' constructor" + Public Const CannotConvertValue As String = "A value of type '{0}' cannot be converted to type '{1}'" + Public Const NoApplicableMethod As String = "No applicable method '{0}' exists in type '{1}'" + Public Const MethodsAreInaccessible As String = "Methods on type '{0}' are not accessible" + Public Const MethodIsVoid As String = "Method '{0}' in type '{1}' does not return a value" + Public Const AmbiguousMethodInvocation As String = "Ambiguous invocation of method '{0}' in type '{1}'" + Public Const UnknownPropertyOrField As String = "No property or field '{0}' exists in type '{1}'" + Public Const NoApplicableAggregate As String = "No applicable aggregate method '{0}' exists" + Public Const CannotIndexMultiDimArray As String = "Indexing of multi-dimensional arrays is not supported" + Public Const InvalidIndex As String = "Array index must be an integer expression" + Public Const NoApplicableIndexer As String = "No applicable indexer exists in type '{0}'" + Public Const AmbiguousIndexerInvocation As String = "Ambiguous invocation of indexer in type '{0}'" + Public Const IncompatibleOperand As String = "Operator '{0}' incompatible with operand type '{1}'" + Public Const IncompatibleOperands As String = "Operator '{0}' incompatible with operand types '{1}' and '{2}'" + Public Const UnterminatedStringLiteral As String = "Unterminated string literal" + Public Const InvalidCharacter As String = "Syntax error '{0}'" + Public Const DigitExpected As String = "Digit expected" + Public Const SyntaxError As String = "Syntax error" + Public Const TokenExpected As String = "{0} expected" + Public Const ParseExceptionFormat As String = "{0} (at index {1})" + Public Const ColonExpected As String = "':' expected" + Public Const OpenParenExpected As String = "'(' expected" + Public Const CloseParenOrOperatorExpected As String = "')' or operator expected" + Public Const CloseParenOrCommaExpected As String = "')' or ',' expected" + Public Const DotOrOpenParenExpected As String = "'.' or '(' expected" + Public Const OpenBracketExpected As String = "'[' expected" + Public Const CloseBracketOrCommaExpected As String = "']' or ',' expected" + Public Const IdentifierExpected As String = "Identifier expected" +End Class \ No newline at end of file Copied: trunk/Tween/DynamicQuery.txt (from rev 1350, branches/query/Tween/DynamicQuery.txt) =================================================================== (Binary files differ) Modified: trunk/Tween/FilterDialog.Designer.vb =================================================================== --- trunk/Tween/FilterDialog.Designer.vb 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/FilterDialog.Designer.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -87,6 +87,8 @@ Me.GroupTab = New System.Windows.Forms.GroupBox() Me.LabelTabType = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label() + Me.CheckExLambDa = New System.Windows.Forms.CheckBox() + Me.CheckLambda = New System.Windows.Forms.CheckBox() Me.EditFilterGroup.SuspendLayout() Me.GroupExclude.SuspendLayout() Me.GroupMatch.SuspendLayout() @@ -104,8 +106,8 @@ ' 'ListFilters ' + Me.ListFilters.FormattingEnabled = True resources.ApplyResources(Me.ListFilters, "ListFilters") - Me.ListFilters.FormattingEnabled = True Me.ListFilters.Name = "ListFilters" Me.ListFilters.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended ' @@ -128,7 +130,7 @@ ' 'GroupExclude ' - resources.ApplyResources(Me.GroupExclude, "GroupExclude") + Me.GroupExclude.Controls.Add(Me.CheckExLambDa) Me.GroupExclude.Controls.Add(Me.TextExSource) Me.GroupExclude.Controls.Add(Me.Label12) Me.GroupExclude.Controls.Add(Me.CheckExRetweet) @@ -144,6 +146,7 @@ Me.GroupExclude.Controls.Add(Me.ExUID) Me.GroupExclude.Controls.Add(Me.ExMSG1) Me.GroupExclude.Controls.Add(Me.ExMSG2) + resources.ApplyResources(Me.GroupExclude, "GroupExclude") Me.GroupExclude.Name = "GroupExclude" Me.GroupExclude.TabStop = False ' @@ -217,9 +220,9 @@ ' 'ExUID ' - resources.ApplyResources(Me.ExUID, "ExUID") Me.ExUID.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend Me.ExUID.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource + resources.ApplyResources(Me.ExUID, "ExUID") Me.ExUID.Name = "ExUID" ' 'ExMSG1 @@ -234,7 +237,7 @@ ' 'GroupMatch ' - resources.ApplyResources(Me.GroupMatch, "GroupMatch") + Me.GroupMatch.Controls.Add(Me.CheckLambda) Me.GroupMatch.Controls.Add(Me.TextSource) Me.GroupMatch.Controls.Add(Me.Label5) Me.GroupMatch.Controls.Add(Me.CheckRetweet) @@ -250,6 +253,7 @@ Me.GroupMatch.Controls.Add(Me.UID) Me.GroupMatch.Controls.Add(Me.MSG1) Me.GroupMatch.Controls.Add(Me.MSG2) + resources.ApplyResources(Me.GroupMatch, "GroupMatch") Me.GroupMatch.Name = "GroupMatch" Me.GroupMatch.TabStop = False ' @@ -323,9 +327,9 @@ ' 'UID ' - resources.ApplyResources(Me.UID, "UID") Me.UID.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend Me.UID.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource + resources.ApplyResources(Me.UID, "UID") Me.UID.Name = "UID" ' 'MSG1 @@ -340,10 +344,10 @@ ' 'GroupBox1 ' - resources.ApplyResources(Me.GroupBox1, "GroupBox1") Me.GroupBox1.Controls.Add(Me.CheckMark) Me.GroupBox1.Controls.Add(Me.OptCopy) Me.GroupBox1.Controls.Add(Me.OptMove) + resources.ApplyResources(Me.GroupBox1, "GroupBox1") Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.TabStop = False ' @@ -438,8 +442,8 @@ ' 'ListTabs ' + Me.ListTabs.FormattingEnabled = True resources.ApplyResources(Me.ListTabs, "ListTabs") - Me.ListTabs.FormattingEnabled = True Me.ListTabs.Name = "ListTabs" ' 'ButtonAddTab @@ -474,8 +478,8 @@ ' 'ComboSound ' + Me.ComboSound.FormattingEnabled = True resources.ApplyResources(Me.ComboSound, "ComboSound") - Me.ComboSound.FormattingEnabled = True Me.ComboSound.Name = "ComboSound" ' 'Label10 @@ -497,7 +501,6 @@ ' 'GroupTab ' - resources.ApplyResources(Me.GroupTab, "GroupTab") Me.GroupTab.Controls.Add(Me.LabelTabType) Me.GroupTab.Controls.Add(Me.Label13) Me.GroupTab.Controls.Add(Me.ListTabs) @@ -510,6 +513,7 @@ Me.GroupTab.Controls.Add(Me.ComboSound) Me.GroupTab.Controls.Add(Me.CheckManageRead) Me.GroupTab.Controls.Add(Me.CheckNotifyNew) + resources.ApplyResources(Me.GroupTab, "GroupTab") Me.GroupTab.Name = "GroupTab" Me.GroupTab.TabStop = False ' @@ -523,6 +527,18 @@ resources.ApplyResources(Me.Label13, "Label13") Me.Label13.Name = "Label13" ' + 'CheckExLambDa + ' + resources.ApplyResources(Me.CheckExLambDa, "CheckExLambDa") + Me.CheckExLambDa.Name = "CheckExLambDa" + Me.CheckExLambDa.UseVisualStyleBackColor = True + ' + 'CheckLambda + ' + resources.ApplyResources(Me.CheckLambda, "CheckLambda") + Me.CheckLambda.Name = "CheckLambda" + Me.CheckLambda.UseVisualStyleBackColor = True + ' 'FilterDialog ' resources.ApplyResources(Me, "$this") @@ -615,5 +631,7 @@ Friend WithEvents ButtonRuleCopy As System.Windows.Forms.Button Friend WithEvents LabelTabType As System.Windows.Forms.Label Friend WithEvents Label13 As System.Windows.Forms.Label + Friend WithEvents CheckExLambDa As System.Windows.Forms.CheckBox + Friend WithEvents CheckLambda As System.Windows.Forms.CheckBox End Class Modified: trunk/Tween/FilterDialog.resx =================================================================== --- trunk/Tween/FilterDialog.resx 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/FilterDialog.resx 2011-01-13 14:03:38 UTC (rev 1351) @@ -118,1677 +118,1746 @@ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> - <data name="Label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="ButtonClose.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> + <value>Bottom, Right</value> </data> - <data name=">>ButtonRenameTab.Parent" xml:space="preserve"> - <value>GroupTab</value> - </data> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> - <data name="ButtonAddTab.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 237</value> + <data name="ButtonClose.Location" type="System.Drawing.Point, System.Drawing"> + <value>682, 553</value> </data> - <data name="RadioExPLUS.Text" xml:space="preserve"> - <value>単一条件</value> - </data> - <data name=">>CheckMark.ZOrder" xml:space="preserve"> - <value>0</value> - </data> - <data name="ButtonUp.Size" type="System.Drawing.Size, System.Drawing"> - <value>34, 23</value> - </data> - <data name="Label6.Location" type="System.Drawing.Point, System.Drawing"> - <value>87, 14</value> - </data> <data name="ButtonClose.Size" type="System.Drawing.Size, System.Drawing"> <value>75, 23</value> </data> - <data name="Label7.Size" type="System.Drawing.Size, System.Drawing"> - <value>29, 12</value> - </data> - <data name="RadioExAnd.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 28</value> - </data> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> - <data name="CheckExRegex.TabIndex" type="System.Int32, mscorlib"> - <value>11</value> + <data name="ButtonClose.TabIndex" type="System.Int32, mscorlib"> + <value>2</value> </data> - <data name=">>Label1.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name="ButtonClose.Text" xml:space="preserve"> + <value>閉じる(&C)</value> </data> - <data name="ButtonOK.TabIndex" type="System.Int32, mscorlib"> - <value>4</value> + <data name=">>ButtonClose.Name" xml:space="preserve"> + <value>ButtonClose</value> </data> - <data name=">>CheckExURL.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ButtonClose.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>RadioPLUS.ZOrder" xml:space="preserve"> - <value>7</value> + <data name=">>ButtonClose.Parent" xml:space="preserve"> + <value>$this</value> </data> - <data name="CheckRetweet.Size" type="System.Drawing.Size, System.Drawing"> - <value>84, 16</value> + <data name=">>ButtonClose.ZOrder" xml:space="preserve"> + <value>2</value> </data> - <data name="RadioExAnd.Size" type="System.Drawing.Size, System.Drawing"> - <value>71, 16</value> - </data> - <data name="Label2.Location" type="System.Drawing.Point, System.Drawing"> - <value>87, 51</value> - </data> - <data name="Label13.AutoSize" type="System.Boolean, mscorlib"> + <data name="ListFilters.HorizontalScrollbar" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>GroupExclude.Parent" xml:space="preserve"> - <value>EditFilterGroup</value> + <data name="ListFilters.ItemHeight" type="System.Int32, mscorlib"> + <value>12</value> </data> - <data name=">>Label4.ZOrder" xml:space="preserve"> - <value>11</value> + <data name="ListFilters.Location" type="System.Drawing.Point, System.Drawing"> + <value>9, 19</value> </data> - <data name="Label13.TabIndex" type="System.Int32, mscorlib"> - <value>10</value> + <data name="ListFilters.Size" type="System.Drawing.Size, System.Drawing"> + <value>597, 184</value> </data> - <data name="Label8.Location" type="System.Drawing.Point, System.Drawing"> - <value>187, 14</value> + <data name="ListFilters.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> </data> - <data name="CheckExRetweet.Text" xml:space="preserve"> - <value>公式RTのみ</value> + <data name=">>ListFilters.Name" xml:space="preserve"> + <value>ListFilters</value> </data> - <data name="GroupTab.TabIndex" type="System.Int32, mscorlib"> - <value>0</value> + <data name=">>ListFilters.Type" xml:space="preserve"> + <value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonEdit.Name" xml:space="preserve"> - <value>ButtonEdit</value> + <data name=">>ListFilters.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name="Label1.Location" type="System.Drawing.Point, System.Drawing"> - <value>187, 14</value> + <data name=">>ListFilters.ZOrder" xml:space="preserve"> + <value>4</value> </data> - <data name=">>Label5.ZOrder" xml:space="preserve"> - <value>1</value> + <data name="EditFilterGroup.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> + <value>Top, Bottom, Left, Right</value> </data> - <data name=">>ButtonCancel.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="Label11.Location" type="System.Drawing.Point, System.Drawing"> + <value>436, 152</value> </data> - <data name=">>Label13.Name" xml:space="preserve"> - <value>Label13</value> + <data name="Label11.Size" type="System.Drawing.Size, System.Drawing"> + <value>157, 74</value> </data> - <data name="Label6.Text" xml:space="preserve"> - <value>ユーザーID</value> + <data name="Label11.TabIndex" type="System.Int32, mscorlib"> + <value>3</value> </data> - <data name=">>ButtonUp.Name" xml:space="preserve"> - <value>ButtonUp</value> + <data name="Label11.Text" xml:space="preserve"> + <value>除外ルールのみ設定すると、タブ全体への除外設定となります。</value> </data> - <data name="ButtonUp.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 207</value> + <data name=">>Label11.Name" xml:space="preserve"> + <value>Label11</value> </data> - <data name=">>Label12.ZOrder" xml:space="preserve"> - <value>1</value> + <data name=">>Label11.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>LabelTabType.Name" xml:space="preserve"> - <value>LabelTabType</value> + <data name=">>Label11.Parent" xml:space="preserve"> + <value>EditFilterGroup</value> </data> - <data name=">>GroupTab.ZOrder" xml:space="preserve"> + <data name=">>Label11.ZOrder" xml:space="preserve"> <value>0</value> </data> - <data name=">>ButtonRuleUp.Name" xml:space="preserve"> - <value>ButtonRuleUp</value> + <data name="CheckExLambDa.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>CheckExCaseSensitive.Name" xml:space="preserve"> - <value>CheckExCaseSensitive</value> + <data name="CheckExLambDa.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="ButtonCancel.TabIndex" type="System.Int32, mscorlib"> - <value>5</value> + <data name="CheckExLambDa.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 106</value> </data> - <data name="ListFilters.Size" type="System.Drawing.Size, System.Drawing"> - <value>597, 184</value> + <data name="CheckExLambDa.Size" type="System.Drawing.Size, System.Drawing"> + <value>63, 16</value> </data> - <data name=">>GroupExclude.Type" xml:space="preserve"> - <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckExLambDa.TabIndex" type="System.Int32, mscorlib"> + <value>15</value> </data> - <data name="ListTabs.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 18</value> + <data name="CheckExLambDa.Text" xml:space="preserve"> + <value>ラムダ式</value> </data> - <data name="ButtonClose.Text" xml:space="preserve"> - <value>閉じる(&C)</value> + <data name=">>CheckExLambDa.Name" xml:space="preserve"> + <value>CheckExLambDa</value> </data> - <data name="ButtonEdit.Text" xml:space="preserve"> - <value>編集(&E)</value> + <data name=">>CheckExLambDa.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label1.TabIndex" type="System.Int32, mscorlib"> - <value>4</value> + <data name=">>CheckExLambDa.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name="RadioExPLUS.TabIndex" type="System.Int32, mscorlib"> - <value>6</value> + <data name=">>CheckExLambDa.ZOrder" xml:space="preserve"> + <value>0</value> </data> - <data name="GroupBox2.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name="TextExSource.Location" type="System.Drawing.Point, System.Drawing"> + <value>89, 93</value> </data> - <data name=">>OptCopy.Name" xml:space="preserve"> - <value>OptCopy</value> + <data name="TextExSource.Size" type="System.Drawing.Size, System.Drawing"> + <value>96, 19</value> </data> - <data name=">>CheckExRegex.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="TextExSource.TabIndex" type="System.Int32, mscorlib"> + <value>10</value> </data> - <data name="ExMSG1.Size" type="System.Drawing.Size, System.Drawing"> - <value>103, 19</value> + <data name=">>TextExSource.Name" xml:space="preserve"> + <value>TextExSource</value> </data> - <data name="OptMove.Location" type="System.Drawing.Point, System.Drawing"> - <value>15, 18</value> + <data name=">>TextExSource.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label13.Text" xml:space="preserve"> - <value>タブの種類</value> + <data name=">>TextExSource.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name="CheckExRegex.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <data name=">>TextExSource.ZOrder" xml:space="preserve"> + <value>1</value> + </data> + <data name="Label12.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> + </data> + <data name="Label12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <value>NoControl</value> </data> - <data name=">>ButtonCancel.ZOrder" xml:space="preserve"> - <value>4</value> + <data name="Label12.Location" type="System.Drawing.Point, System.Drawing"> + <value>43, 96</value> </data> - <data name="CheckExCaseSensitive.Size" type="System.Drawing.Size, System.Drawing"> - <value>102, 16</value> + <data name="Label12.Size" type="System.Drawing.Size, System.Drawing"> + <value>40, 12</value> </data> - <data name="Label3.Text" xml:space="preserve"> - <value>AND</value> + <data name="Label12.TabIndex" type="System.Int32, mscorlib"> + <value>9</value> </data> - <data name="ButtonRenameTab.Text" xml:space="preserve"> - <value>タブ名変更</value> + <data name="Label12.Text" xml:space="preserve"> + <value>Source</value> </data> - <data name=">>Label4.Name" xml:space="preserve"> - <value>Label4</value> + <data name=">>Label12.Name" xml:space="preserve"> + <value>Label12</value> </data> - <data name=">>ButtonCancel.Parent" xml:space="preserve"> - <value>EditFilterGroup</value> + <data name=">>Label12.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonAddTab.ZOrder" xml:space="preserve"> - <value>4</value> + <data name=">>Label12.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>ButtonRuleMove.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label12.ZOrder" xml:space="preserve"> + <value>2</value> </data> - <data name=">>Label7.ZOrder" xml:space="preserve"> - <value>10</value> + <data name="CheckExRetweet.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>Label6.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name="CheckExRetweet.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>CheckManageRead.ZOrder" xml:space="preserve"> - <value>10</value> + <data name="CheckExRetweet.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 84</value> </data> - <data name="ButtonRuleDown.Font" type="System.Drawing.Font, System.Drawing"> - <value>Marlett, 9pt, style=Bold</value> + <data name="CheckExRetweet.Size" type="System.Drawing.Size, System.Drawing"> + <value>84, 16</value> </data> - <data name=">>RadioAND.Type" xml:space="preserve"> - <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckExRetweet.TabIndex" type="System.Int32, mscorlib"> + <value>14</value> </data> - <data name="ButtonUp.Text" xml:space="preserve"> - <value>5</value> + <data name="CheckExRetweet.Text" xml:space="preserve"> + <value>公式RTのみ</value> </data> - <data name="ButtonNew.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name=">>CheckExRetweet.Name" xml:space="preserve"> + <value>CheckExRetweet</value> </data> - <data name=">>Label5.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name=">>CheckExRetweet.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckExRetweet.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>CheckExRetweet.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>ButtonRenameTab.Name" xml:space="preserve"> - <value>ButtonRenameTab</value> + <data name=">>CheckExRetweet.ZOrder" xml:space="preserve"> + <value>3</value> </data> - <data name=">>ButtonOK.Name" xml:space="preserve"> - <value>ButtonOK</value> + <data name="CheckExCaseSensitive.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="Label9.Size" type="System.Drawing.Size, System.Drawing"> - <value>114, 12</value> + <data name="CheckExCaseSensitive.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>CheckRetweet.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckExCaseSensitive.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 62</value> </data> - <data name=">>UID.Name" xml:space="preserve"> - <value>UID</value> + <data name="CheckExCaseSensitive.Size" type="System.Drawing.Size, System.Drawing"> + <value>102, 16</value> </data> - <data name="ButtonDelete.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name="CheckExCaseSensitive.TabIndex" type="System.Int32, mscorlib"> + <value>13</value> </data> - <data name=">>CheckCaseSensitive.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckExCaseSensitive.Text" xml:space="preserve"> + <value>大/小文字区別</value> </data> - <data name=">>Label5.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>CheckExCaseSensitive.Name" xml:space="preserve"> + <value>CheckExCaseSensitive</value> </data> - <data name="Label10.TabIndex" type="System.Int32, mscorlib"> - <value>8</value> + <data name=">>CheckExCaseSensitive.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>RadioExPLUS.Parent" xml:space="preserve"> + <data name=">>CheckExCaseSensitive.Parent" xml:space="preserve"> <value>GroupExclude</value> </data> - <data name=">>ButtonDown.Name" xml:space="preserve"> - <value>ButtonDown</value> + <data name=">>CheckExCaseSensitive.ZOrder" xml:space="preserve"> + <value>4</value> </data> - <data name="$this.Text" xml:space="preserve"> - <value>振り分けルール</value> + <data name="RadioExAnd.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="ButtonCancel.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name="RadioExAnd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="ButtonUp.Font" type="System.Drawing.Font, System.Drawing"> - <value>Marlett, 9pt, style=Bold</value> + <data name="RadioExAnd.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 28</value> </data> - <data name=">>CheckManageRead.Name" xml:space="preserve"> - <value>CheckManageRead</value> + <data name="RadioExAnd.Size" type="System.Drawing.Size, System.Drawing"> + <value>71, 16</value> </data> - <data name="ButtonRuleDown.Location" type="System.Drawing.Point, System.Drawing"> - <value>131, 209</value> + <data name="RadioExAnd.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> </data> - <data name=">>Label9.ZOrder" xml:space="preserve"> - <value>9</value> + <data name="RadioExAnd.Text" xml:space="preserve"> + <value>複合条件</value> </data> - <data name=">>GroupBox2.ZOrder" xml:space="preserve"> - <value>1</value> + <data name=">>RadioExAnd.Name" xml:space="preserve"> + <value>RadioExAnd</value> </data> - <data name=">>TextSource.ZOrder" xml:space="preserve"> - <value>0</value> + <data name=">>RadioExAnd.Type" xml:space="preserve"> + <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="RadioAND.Text" xml:space="preserve"> - <value>複合条件</value> + <data name=">>RadioExAnd.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>CheckRegex.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name=">>RadioExAnd.ZOrder" xml:space="preserve"> + <value>5</value> </data> - <data name="GroupTab.Text" xml:space="preserve"> - <value>タブ</value> + <data name="Label1.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="TextExSource.Location" type="System.Drawing.Point, System.Drawing"> - <value>89, 89</value> + <data name="Label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>UID.ZOrder" xml:space="preserve"> - <value>12</value> + <data name="Label1.Location" type="System.Drawing.Point, System.Drawing"> + <value>187, 14</value> </data> - <data name="GroupMatch.Text" xml:space="preserve"> - <value>マッチルール</value> + <data name="Label1.Size" type="System.Drawing.Size, System.Drawing"> + <value>53, 12</value> </data> - <data name=">>ButtonRenameTab.ZOrder" xml:space="preserve"> - <value>8</value> + <data name="Label1.TabIndex" type="System.Int32, mscorlib"> + <value>4</value> </data> - <data name=">>Label6.Type" xml:space="preserve"> + <data name="Label1.Text" xml:space="preserve"> + <value>発言内容</value> + </data> + <data name=">>Label1.Name" xml:space="preserve"> + <value>Label1</value> + </data> + <data name=">>Label1.Type" xml:space="preserve"> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>RadioExAnd.Type" xml:space="preserve"> - <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label1.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>ButtonOK.ZOrder" xml:space="preserve"> - <value>5</value> + <data name=">>Label1.ZOrder" xml:space="preserve"> + <value>6</value> </data> - <data name=">>Label4.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckExURL.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="CheckCaseSensitive.Size" type="System.Drawing.Size, System.Drawing"> - <value>102, 16</value> + <data name="CheckExURL.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>GroupTab.Parent" xml:space="preserve"> - <value>$this</value> + <data name="CheckExURL.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 40</value> </data> - <data name="CheckRegex.Text" xml:space="preserve"> - <value>正規表現</value> + <data name="CheckExURL.Size" type="System.Drawing.Size, System.Drawing"> + <value>70, 16</value> </data> <data name="CheckExURL.TabIndex" type="System.Int32, mscorlib"> <value>12</value> </data> - <data name="Label9.Text" xml:space="preserve"> - <value>ユーザーIDか発言内容</value> + <data name="CheckExURL.Text" xml:space="preserve"> + <value>URL検索</value> </data> - <data name="MSG2.Location" type="System.Drawing.Point, System.Drawing"> - <value>89, 64</value> + <data name=">>CheckExURL.Name" xml:space="preserve"> + <value>CheckExURL</value> </data> - <data name="ButtonRuleUp.Size" type="System.Drawing.Size, System.Drawing"> - <value>34, 23</value> + <data name=">>CheckExURL.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonRenameTab.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>CheckExURL.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>ExMSG2.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>CheckExURL.ZOrder" xml:space="preserve"> + <value>7</value> </data> - <data name=">>ButtonClose.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </data> - <data name=">>UID.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </data> - <data name="Label2.AutoSize" type="System.Boolean, mscorlib"> + <data name="RadioExPLUS.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name="Label2.TabIndex" type="System.Int32, mscorlib"> - <value>7</value> + <data name="RadioExPLUS.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="Label10.Text" xml:space="preserve"> - <value>新着サウンド</value> + <data name="RadioExPLUS.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 65</value> </data> - <data name=">>CheckNotifyNew.Name" xml:space="preserve"> - <value>CheckNotifyNew</value> + <data name="RadioExPLUS.Size" type="System.Drawing.Size, System.Drawing"> + <value>71, 16</value> </data> - <data name=">>CheckExURL.ZOrder" xml:space="preserve"> + <data name="RadioExPLUS.TabIndex" type="System.Int32, mscorlib"> <value>6</value> </data> - <data name="GroupTab.Size" type="System.Drawing.Size, System.Drawing"> - <value>127, 459</value> + <data name="RadioExPLUS.Text" xml:space="preserve"> + <value>単一条件</value> </data> - <data name=">>TextExSource.ZOrder" xml:space="preserve"> - <value>0</value> + <data name=">>RadioExPLUS.Name" xml:space="preserve"> + <value>RadioExPLUS</value> </data> - <data name=">>TextSource.Name" xml:space="preserve"> - <value>TextSource</value> + <data name=">>RadioExPLUS.Type" xml:space="preserve"> + <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label12.TabIndex" type="System.Int32, mscorlib"> - <value>9</value> + <data name=">>RadioExPLUS.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name="RadioAND.TabIndex" type="System.Int32, mscorlib"> - <value>0</value> + <data name=">>RadioExPLUS.ZOrder" xml:space="preserve"> + <value>8</value> </data> - <data name="ButtonUp.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name="CheckExRegex.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="CheckRetweet.Text" xml:space="preserve"> - <value>公式RTのみ</value> + <data name="CheckExRegex.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>Label1.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckExRegex.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 18</value> </data> - <data name="ListTabs.TabIndex" type="System.Int32, mscorlib"> - <value>0</value> + <data name="CheckExRegex.Size" type="System.Drawing.Size, System.Drawing"> + <value>72, 16</value> </data> - <data name=">>CheckNotifyNew.Type" xml:space="preserve"> + <data name="CheckExRegex.TabIndex" type="System.Int32, mscorlib"> + <value>11</value> + </data> + <data name="CheckExRegex.Text" xml:space="preserve"> + <value>正規表現</value> + </data> + <data name=">>CheckExRegex.Name" xml:space="preserve"> + <value>CheckExRegex</value> + </data> + <data name=">>CheckExRegex.Type" xml:space="preserve"> <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label5.AutoSize" type="System.Boolean, mscorlib"> + <data name=">>CheckExRegex.Parent" xml:space="preserve"> + <value>GroupExclude</value> + </data> + <data name=">>CheckExRegex.ZOrder" xml:space="preserve"> + <value>9</value> + </data> + <data name="Label2.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>CheckExURL.Name" xml:space="preserve"> - <value>CheckExURL</value> + <data name="Label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="ButtonEdit.TabIndex" type="System.Int32, mscorlib"> - <value>4</value> + <data name="Label2.Location" type="System.Drawing.Point, System.Drawing"> + <value>87, 51</value> </data> - <data name="CheckRegex.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="Label2.Size" type="System.Drawing.Size, System.Drawing"> + <value>114, 12</value> </data> - <data name="Label7.TabIndex" type="System.Int32, mscorlib"> - <value>3</value> + <data name="Label2.TabIndex" type="System.Int32, mscorlib"> + <value>7</value> </data> - <data name="Label7.Location" type="System.Drawing.Point, System.Drawing"> - <value>156, 29</value> + <data name="Label2.Text" xml:space="preserve"> + <value>ユーザーIDか発言内容</value> </data> - <data name=">>ListTabs.Type" xml:space="preserve"> - <value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label2.Name" xml:space="preserve"> + <value>Label2</value> </data> - <data name="CheckRetweet.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>Label2.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="OptCopy.Text" xml:space="preserve"> - <value>Recentからコピーする</value> + <data name=">>Label2.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name="GroupMatch.Location" type="System.Drawing.Point, System.Drawing"> - <value>6, 18</value> + <data name=">>Label2.ZOrder" xml:space="preserve"> + <value>10</value> </data> - <data name="ExMSG2.Size" type="System.Drawing.Size, System.Drawing"> - <value>204, 19</value> + <data name="Label3.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="CheckExURL.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 40</value> + <data name="Label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="TextSource.Size" type="System.Drawing.Size, System.Drawing"> - <value>96, 19</value> + <data name="Label3.Location" type="System.Drawing.Point, System.Drawing"> + <value>156, 29</value> </data> - <data name=">>ButtonRuleDown.ZOrder" xml:space="preserve"> - <value>2</value> + <data name="Label3.Size" type="System.Drawing.Size, System.Drawing"> + <value>29, 12</value> </data> - <data name=">>Label12.Name" xml:space="preserve"> - <value>Label12</value> + <data name="Label3.TabIndex" type="System.Int32, mscorlib"> + <value>3</value> </data> - <data name=">>Label7.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="Label3.Text" xml:space="preserve"> + <value>AND</value> </data> - <data name=">>GroupBox1.Type" xml:space="preserve"> - <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label3.Name" xml:space="preserve"> + <value>Label3</value> </data> - <data name="Label6.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name=">>Label3.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>TextExSource.Parent" xml:space="preserve"> + <data name=">>Label3.Parent" xml:space="preserve"> <value>GroupExclude</value> </data> - <data name="ButtonOK.Location" type="System.Drawing.Point, System.Drawing"> - <value>436, 234</value> + <data name=">>Label3.ZOrder" xml:space="preserve"> + <value>11</value> </data> - <data name="CheckExRetweet.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 84</value> + <data name="Label4.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>ButtonNew.Name" xml:space="preserve"> - <value>ButtonNew</value> + <data name="Label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="GroupMatch.Size" type="System.Drawing.Size, System.Drawing"> - <value>424, 116</value> + <data name="Label4.Location" type="System.Drawing.Point, System.Drawing"> + <value>87, 14</value> </data> - <data name=">>Label1.ZOrder" xml:space="preserve"> - <value>5</value> + <data name="Label4.Size" type="System.Drawing.Size, System.Drawing"> + <value>56, 12</value> </data> - <data name=">>ExMSG2.ZOrder" xml:space="preserve"> - <value>14</value> + <data name="Label4.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> </data> - <data name=">>ButtonClose.Name" xml:space="preserve"> - <value>ButtonClose</value> + <data name="Label4.Text" xml:space="preserve"> + <value>ユーザーID</value> </data> - <data name=">>Label3.Name" xml:space="preserve"> - <value>Label3</value> + <data name=">>Label4.Name" xml:space="preserve"> + <value>Label4</value> </data> - <data name="ButtonDown.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>Label4.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckManageRead.TabIndex" type="System.Int32, mscorlib"> - <value>6</value> + <data name=">>Label4.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name="UID.Location" type="System.Drawing.Point, System.Drawing"> + <data name=">>Label4.ZOrder" xml:space="preserve"> + <value>12</value> + </data> + <data name="ExUID.Location" type="System.Drawing.Point, System.Drawing"> <value>89, 26</value> </data> - <data name=">>ButtonClose.ZOrder" xml:space="preserve"> + <data name="ExUID.Size" type="System.Drawing.Size, System.Drawing"> + <value>61, 19</value> + </data> + <data name="ExUID.TabIndex" type="System.Int32, mscorlib"> <value>2</value> </data> - <data name=">>$this.Type" xml:space="preserve"> - <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ExUID.Name" xml:space="preserve"> + <value>ExUID</value> </data> - <data name="Label10.Location" type="System.Drawing.Point, System.Drawing"> - <value>6, 412</value> + <data name=">>ExUID.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ExMSG1.Name" xml:space="preserve"> - <value>ExMSG1</value> + <data name=">>ExUID.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name="ButtonRuleMove.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name=">>ExUID.ZOrder" xml:space="preserve"> + <value>13</value> </data> - <data name="OptMove.Size" type="System.Drawing.Size, System.Drawing"> - <value>120, 16</value> + <data name="ExMSG1.Location" type="System.Drawing.Point, System.Drawing"> + <value>189, 26</value> </data> - <data name=">>GroupBox1.Parent" xml:space="preserve"> - <value>EditFilterGroup</value> + <data name="ExMSG1.Size" type="System.Drawing.Size, System.Drawing"> + <value>103, 19</value> </data> - <data name="ButtonRuleUp.Location" type="System.Drawing.Point, System.Drawing"> - <value>90, 209</value> + <data name="ExMSG1.TabIndex" type="System.Int32, mscorlib"> + <value>5</value> </data> - <data name="Label4.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name=">>ExMSG1.Name" xml:space="preserve"> + <value>ExMSG1</value> </data> - <data name=">>MSG1.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name=">>ExMSG1.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonAddTab.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ExMSG1.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>ComboSound.Type" xml:space="preserve"> - <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ExMSG1.ZOrder" xml:space="preserve"> + <value>14</value> </data> - <data name=">>Label3.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ExMSG2.Location" type="System.Drawing.Point, System.Drawing"> + <value>89, 64</value> </data> - <data name=">>GroupExclude.Name" xml:space="preserve"> - <value>GroupExclude</value> + <data name="ExMSG2.Size" type="System.Drawing.Size, System.Drawing"> + <value>204, 19</value> </data> - <data name=">>ButtonCancel.Name" xml:space="preserve"> - <value>ButtonCancel</value> + <data name="ExMSG2.TabIndex" type="System.Int32, mscorlib"> + <value>8</value> </data> - <data name="ButtonRuleMove.Text" xml:space="preserve"> - <value>移動</value> + <data name=">>ExMSG2.Name" xml:space="preserve"> + <value>ExMSG2</value> </data> - <data name="CheckURL.Size" type="System.Drawing.Size, System.Drawing"> - <value>70, 16</value> + <data name=">>ExMSG2.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="EditFilterGroup.Text" xml:space="preserve"> - <value>ルール編集</value> + <data name=">>ExMSG2.Parent" xml:space="preserve"> + <value>GroupExclude</value> </data> - <data name=">>MSG1.ZOrder" xml:space="preserve"> - <value>13</value> + <data name=">>ExMSG2.ZOrder" xml:space="preserve"> + <value>15</value> </data> - <data name="Label10.Size" type="System.Drawing.Size, System.Drawing"> - <value>66, 12</value> + <data name="GroupExclude.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 152</value> </data> - <data name="Label8.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="GroupExclude.Size" type="System.Drawing.Size, System.Drawing"> + <value>424, 134</value> </data> - <data name="Label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="GroupExclude.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> </data> - <data name=">>Label3.ZOrder" xml:space="preserve"> - <value>10</value> + <data name="GroupExclude.Text" xml:space="preserve"> + <value>除外ルール</value> </data> - <data name=">>Label2.Parent" xml:space="preserve"> + <data name=">>GroupExclude.Name" xml:space="preserve"> <value>GroupExclude</value> </data> - <data name="ButtonDown.Font" type="System.Drawing.Font, System.Drawing"> - <value>Marlett, 9pt, style=Bold</value> + <data name=">>GroupExclude.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>EditFilterGroup.Name" xml:space="preserve"> + <data name=">>GroupExclude.Parent" xml:space="preserve"> <value>EditFilterGroup</value> </data> - <data name=">>ListTabs.ZOrder" xml:space="preserve"> - <value>2</value> + <data name=">>GroupExclude.ZOrder" xml:space="preserve"> + <value>1</value> </data> - <data name=">>CheckMark.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckLambda.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>EditFilterGroup.ZOrder" xml:space="preserve"> - <value>8</value> + <data name="CheckLambda.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>Label6.Name" xml:space="preserve"> - <value>Label6</value> + <data name="CheckLambda.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 106</value> </data> - <data name="CheckNotifyNew.Size" type="System.Drawing.Size, System.Drawing"> - <value>96, 16</value> + <data name="CheckLambda.Size" type="System.Drawing.Size, System.Drawing"> + <value>63, 16</value> </data> - <data name="ExMSG2.TabIndex" type="System.Int32, mscorlib"> - <value>8</value> + <data name="CheckLambda.TabIndex" type="System.Int32, mscorlib"> + <value>15</value> </data> - <data name=">>CheckExRegex.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name="CheckLambda.Text" xml:space="preserve"> + <value>ラムダ式</value> </data> - <data name=">>ButtonEdit.ZOrder" xml:space="preserve"> - <value>5</value> + <data name=">>CheckLambda.Name" xml:space="preserve"> + <value>CheckLambda</value> </data> - <data name=">>ButtonAddTab.Name" xml:space="preserve"> - <value>ButtonAddTab</value> + <data name=">>CheckLambda.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="ButtonRuleCopy.Text" xml:space="preserve"> - <value>コピー</value> + <data name=">>CheckLambda.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>ButtonRuleDown.Name" xml:space="preserve"> - <value>ButtonRuleDown</value> + <data name=">>CheckLambda.ZOrder" xml:space="preserve"> + <value>0</value> </data> - <data name=">>CheckRegex.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="TextSource.Location" type="System.Drawing.Point, System.Drawing"> + <value>89, 93</value> </data> - <data name=">>ButtonRuleUp.ZOrder" xml:space="preserve"> - <value>3</value> + <data name="TextSource.Size" type="System.Drawing.Size, System.Drawing"> + <value>96, 19</value> </data> - <data name="CheckExURL.Size" type="System.Drawing.Size, System.Drawing"> - <value>70, 16</value> + <data name="TextSource.TabIndex" type="System.Int32, mscorlib"> + <value>10</value> </data> - <data name="EditFilterGroup.Location" type="System.Drawing.Point, System.Drawing"> - <value>9, 238</value> + <data name=">>TextSource.Name" xml:space="preserve"> + <value>TextSource</value> </data> - <data name="CheckExRegex.Text" xml:space="preserve"> - <value>正規表現</value> + <data name=">>TextSource.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label4.Location" type="System.Drawing.Point, System.Drawing"> - <value>87, 14</value> + <data name=">>TextSource.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>GroupBox2.Name" xml:space="preserve"> - <value>GroupBox2</value> + <data name=">>TextSource.ZOrder" xml:space="preserve"> + <value>1</value> </data> - <data name="RadioExPLUS.AutoSize" type="System.Boolean, mscorlib"> + <data name="Label5.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>MSG1.Name" xml:space="preserve"> - <value>MSG1</value> + <data name="Label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="ButtonRuleCopy.Location" type="System.Drawing.Point, System.Drawing"> - <value>261, 209</value> + <data name="Label5.Location" type="System.Drawing.Point, System.Drawing"> + <value>43, 96</value> </data> - <data name="GroupBox1.Size" type="System.Drawing.Size, System.Drawing"> - <value>155, 98</value> + <data name="Label5.Size" type="System.Drawing.Size, System.Drawing"> + <value>40, 12</value> </data> - <data name="Label8.TabIndex" type="System.Int32, mscorlib"> - <value>4</value> + <data name="Label5.TabIndex" type="System.Int32, mscorlib"> + <value>9</value> </data> - <data name="ButtonDeleteTab.Text" xml:space="preserve"> - <value>タブ削除</value> + <data name="Label5.Text" xml:space="preserve"> + <value>Source</value> </data> - <data name="Label3.Location" type="System.Drawing.Point, System.Drawing"> - <value>156, 29</value> + <data name=">>Label5.Name" xml:space="preserve"> + <value>Label5</value> </data> - <data name="EditFilterGroup.TabIndex" type="System.Int32, mscorlib"> - <value>8</value> + <data name=">>Label5.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckNotifyNew.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>Label5.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>GroupMatch.ZOrder" xml:space="preserve"> + <data name=">>Label5.ZOrder" xml:space="preserve"> <value>2</value> </data> - <data name="ButtonRenameTab.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> - </data> - <data name="Label13.Size" type="System.Drawing.Size, System.Drawing"> - <value>56, 12</value> - </data> - <data name="ButtonRuleMove.Location" type="System.Drawing.Point, System.Drawing"> - <value>342, 209</value> - </data> - <data name="CheckCaseSensitive.AutoSize" type="System.Boolean, mscorlib"> + <data name="CheckRetweet.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name="ButtonDelete.Location" type="System.Drawing.Point, System.Drawing"> - <value>531, 210</value> - </data> - <data name="CheckNotifyNew.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <data name="CheckRetweet.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <value>NoControl</value> </data> - <data name="RadioExAnd.TabIndex" type="System.Int32, mscorlib"> - <value>0</value> + <data name="CheckRetweet.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 84</value> </data> - <data name="ButtonDown.Text" xml:space="preserve"> - <value>6</value> + <data name="CheckRetweet.Size" type="System.Drawing.Size, System.Drawing"> + <value>84, 16</value> </data> - <data name="ButtonEdit.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name="CheckRetweet.TabIndex" type="System.Int32, mscorlib"> + <value>14</value> </data> - <data name="ListTabs.ItemHeight" type="System.Int32, mscorlib"> - <value>12</value> + <data name="CheckRetweet.Text" xml:space="preserve"> + <value>公式RTのみ</value> </data> - <data name=">>TextExSource.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>CheckRetweet.Name" xml:space="preserve"> + <value>CheckRetweet</value> </data> - <data name="CheckRetweet.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>CheckRetweet.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="ExMSG1.TabIndex" type="System.Int32, mscorlib"> - <value>5</value> + <data name=">>CheckRetweet.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>ButtonOK.Parent" xml:space="preserve"> - <value>EditFilterGroup</value> + <data name=">>CheckRetweet.ZOrder" xml:space="preserve"> + <value>3</value> </data> - <data name=">>ButtonUp.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name="CheckCaseSensitive.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> <data name="CheckCaseSensitive.Location" type="System.Drawing.Point, System.Drawing"> <value>299, 62</value> </data> - <data name="RadioExAnd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="CheckCaseSensitive.Size" type="System.Drawing.Size, System.Drawing"> + <value>102, 16</value> </data> - <data name="Label4.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="CheckCaseSensitive.TabIndex" type="System.Int32, mscorlib"> + <value>13</value> </data> - <data name=">>Label8.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckCaseSensitive.Text" xml:space="preserve"> + <value>大/小文字区別</value> </data> - <data name="ButtonAddTab.TabIndex" type="System.Int32, mscorlib"> - <value>3</value> + <data name=">>CheckCaseSensitive.Name" xml:space="preserve"> + <value>CheckCaseSensitive</value> </data> - <data name=">>CheckURL.ZOrder" xml:space="preserve"> - <value>6</value> + <data name=">>CheckCaseSensitive.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ListTabs.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name=">>CheckCaseSensitive.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> + <data name=">>CheckCaseSensitive.ZOrder" xml:space="preserve"> + <value>4</value> + </data> + <data name="RadioAND.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> + </data> <data name="RadioAND.Location" type="System.Drawing.Point, System.Drawing"> <value>8, 28</value> </data> - <data name=">>ButtonDelete.Parent" xml:space="preserve"> - <value>GroupBox2</value> + <data name="RadioAND.Size" type="System.Drawing.Size, System.Drawing"> + <value>71, 16</value> </data> - <data name=">>CheckExRegex.Name" xml:space="preserve"> - <value>CheckExRegex</value> + <data name="RadioAND.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> </data> - <data name="ButtonRuleUp.Font" type="System.Drawing.Font, System.Drawing"> - <value>Marlett, 9pt, style=Bold</value> + <data name="RadioAND.Text" xml:space="preserve"> + <value>複合条件</value> </data> - <data name=">>OptCopy.ZOrder" xml:space="preserve"> - <value>1</value> + <data name=">>RadioAND.Name" xml:space="preserve"> + <value>RadioAND</value> </data> - <data name="ButtonRenameTab.TabIndex" type="System.Int32, mscorlib"> + <data name=">>RadioAND.Type" xml:space="preserve"> + <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>RadioAND.Parent" xml:space="preserve"> + <value>GroupMatch</value> + </data> + <data name=">>RadioAND.ZOrder" xml:space="preserve"> <value>5</value> </data> - <data name="CheckURL.AutoSize" type="System.Boolean, mscorlib"> + <data name="Label8.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>GroupTab.Type" xml:space="preserve"> - <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="Label8.Location" type="System.Drawing.Point, System.Drawing"> + <value>187, 14</value> </data> - <data name=">>Label9.Name" xml:space="preserve"> - <value>Label9</value> + <data name="Label8.Size" type="System.Drawing.Size, System.Drawing"> + <value>53, 12</value> </data> - <data name="GroupExclude.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name="Label8.TabIndex" type="System.Int32, mscorlib"> + <value>4</value> </data> - <data name="ButtonDeleteTab.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 266</value> + <data name="Label8.Text" xml:space="preserve"> + <value>発言内容</value> </data> - <data name=">>GroupBox2.Type" xml:space="preserve"> - <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label8.Name" xml:space="preserve"> + <value>Label8</value> </data> - <data name="Label7.AutoSize" type="System.Boolean, mscorlib"> + <data name=">>Label8.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>Label8.Parent" xml:space="preserve"> + <value>GroupMatch</value> + </data> + <data name=">>Label8.ZOrder" xml:space="preserve"> + <value>6</value> + </data> + <data name="CheckURL.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name="GroupBox2.Location" type="System.Drawing.Point, System.Drawing"> - <value>142, 9</value> + <data name="CheckURL.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 40</value> </data> + <data name="CheckURL.Size" type="System.Drawing.Size, System.Drawing"> + <value>70, 16</value> + </data> + <data name="CheckURL.TabIndex" type="System.Int32, mscorlib"> + <value>12</value> + </data> + <data name="CheckURL.Text" xml:space="preserve"> + <value>URL検索</value> + </data> <data name=">>CheckURL.Name" xml:space="preserve"> <value>CheckURL</value> </data> - <data name=">>Label1.Name" xml:space="preserve"> - <value>Label1</value> + <data name=">>CheckURL.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonUp.ZOrder" xml:space="preserve"> - <value>5</value> + <data name=">>CheckURL.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>CheckExRetweet.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name=">>CheckURL.ZOrder" xml:space="preserve"> + <value>7</value> </data> - <data name="ComboSound.Size" type="System.Drawing.Size, System.Drawing"> - <value>113, 20</value> + <data name="RadioPLUS.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="Label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="RadioPLUS.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 65</value> </data> - <data name=">>ButtonAddTab.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name="RadioPLUS.Size" type="System.Drawing.Size, System.Drawing"> + <value>71, 16</value> </data> - <data name=">>CheckRegex.ZOrder" xml:space="preserve"> - <value>8</value> + <data name="RadioPLUS.TabIndex" type="System.Int32, mscorlib"> + <value>6</value> </data> - <data name="CheckExRetweet.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="RadioPLUS.Text" xml:space="preserve"> + <value>単一条件</value> </data> - <data name=">>RadioExAnd.Name" xml:space="preserve"> - <value>RadioExAnd</value> + <data name=">>RadioPLUS.Name" xml:space="preserve"> + <value>RadioPLUS</value> </data> - <data name="ButtonRuleUp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>RadioPLUS.Type" xml:space="preserve"> + <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label12.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>RadioPLUS.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>GroupMatch.Parent" xml:space="preserve"> - <value>EditFilterGroup</value> + <data name=">>RadioPLUS.ZOrder" xml:space="preserve"> + <value>8</value> </data> - <data name="CheckExURL.Text" xml:space="preserve"> - <value>URL検索</value> + <data name="CheckRegex.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>CheckExRegex.ZOrder" xml:space="preserve"> - <value>8</value> + <data name="CheckRegex.Location" type="System.Drawing.Point, System.Drawing"> + <value>299, 18</value> </data> - <data name=">>ExMSG1.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckRegex.Size" type="System.Drawing.Size, System.Drawing"> + <value>72, 16</value> </data> - <data name=">>GroupBox2.Parent" xml:space="preserve"> - <value>$this</value> + <data name="CheckRegex.TabIndex" type="System.Int32, mscorlib"> + <value>11</value> </data> - <data name=">>Label10.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name="CheckRegex.Text" xml:space="preserve"> + <value>正規表現</value> </data> - <data name="GroupExclude.Text" xml:space="preserve"> - <value>除外ルール</value> + <data name=">>CheckRegex.Name" xml:space="preserve"> + <value>CheckRegex</value> </data> - <data name=">>CheckExRetweet.Type" xml:space="preserve"> + <data name=">>CheckRegex.Type" xml:space="preserve"> <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="ButtonDelete.Text" xml:space="preserve"> - <value>削除(&D)</value> + <data name=">>CheckRegex.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>Label10.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>CheckRegex.ZOrder" xml:space="preserve"> + <value>9</value> </data> - <data name=">>MSG2.ZOrder" xml:space="preserve"> - <value>14</value> + <data name="Label9.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>Label13.ZOrder" xml:space="preserve"> - <value>1</value> + <data name="Label9.Location" type="System.Drawing.Point, System.Drawing"> + <value>87, 51</value> </data> - <data name="CheckCaseSensitive.Text" xml:space="preserve"> - <value>大/小文字区別</value> + <data name="Label9.Size" type="System.Drawing.Size, System.Drawing"> + <value>114, 12</value> </data> - <data name=">>OptCopy.Parent" xml:space="preserve"> - <value>GroupBox1</value> + <data name="Label9.TabIndex" type="System.Int32, mscorlib"> + <value>7</value> </data> - <data name="ListFilters.TabIndex" type="System.Int32, mscorlib"> - <value>0</value> + <data name="Label9.Text" xml:space="preserve"> + <value>ユーザーIDか発言内容</value> </data> - <data name=">>CheckCaseSensitive.Parent" xml:space="preserve"> + <data name=">>Label9.Name" xml:space="preserve"> + <value>Label9</value> + </data> + <data name=">>Label9.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>Label9.Parent" xml:space="preserve"> <value>GroupMatch</value> </data> - <data name="Label9.TabIndex" type="System.Int32, mscorlib"> - <value>7</value> + <data name=">>Label9.ZOrder" xml:space="preserve"> + <value>10</value> </data> - <data name="ExUID.Size" type="System.Drawing.Size, System.Drawing"> - <value>61, 19</value> + <data name="Label7.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="CheckMark.Location" type="System.Drawing.Point, System.Drawing"> - <value>44, 62</value> + <data name="Label7.Location" type="System.Drawing.Point, System.Drawing"> + <value>156, 29</value> </data> - <data name="RadioExPLUS.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 65</value> + <data name="Label7.Size" type="System.Drawing.Size, System.Drawing"> + <value>29, 12</value> </data> - <data name="Label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="Label7.TabIndex" type="System.Int32, mscorlib"> + <value>3</value> </data> - <data name=">>ListFilters.Parent" xml:space="preserve"> - <value>GroupBox2</value> + <data name="Label7.Text" xml:space="preserve"> + <value>AND</value> </data> - <data name=">>GroupMatch.Type" xml:space="preserve"> - <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label7.Name" xml:space="preserve"> + <value>Label7</value> </data> - <data name="RadioAND.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>Label7.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label11.Text" xml:space="preserve"> - <value>除外ルールのみ設定すると、タブ全体への除外設定となります。</value> + <data name=">>Label7.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>Label11.Parent" xml:space="preserve"> - <value>EditFilterGroup</value> + <data name=">>Label7.ZOrder" xml:space="preserve"> + <value>11</value> </data> - <data name="CheckManageRead.AutoSize" type="System.Boolean, mscorlib"> + <data name="Label6.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>CheckExRetweet.ZOrder" xml:space="preserve"> - <value>2</value> + <data name="Label6.Location" type="System.Drawing.Point, System.Drawing"> + <value>87, 14</value> </data> - <data name=">>ButtonRuleDown.Parent" xml:space="preserve"> - <value>GroupBox2</value> + <data name="Label6.Size" type="System.Drawing.Size, System.Drawing"> + <value>56, 12</value> </data> - <data name="Label3.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="Label6.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> </data> - <data name="Label2.Size" type="System.Drawing.Size, System.Drawing"> - <value>114, 12</value> + <data name="Label6.Text" xml:space="preserve"> + <value>ユーザーID</value> </data> - <data name="ButtonDelete.TabIndex" type="System.Int32, mscorlib"> - <value>7</value> + <data name=">>Label6.Name" xml:space="preserve"> + <value>Label6</value> </data> - <data name="OptCopy.Size" type="System.Drawing.Size, System.Drawing"> - <value>123, 16</value> + <data name=">>Label6.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>MSG2.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>Label6.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name="GroupBox1.Location" type="System.Drawing.Point, System.Drawing"> - <value>436, 18</value> + <data name=">>Label6.ZOrder" xml:space="preserve"> + <value>12</value> </data> - <data name="Label11.Location" type="System.Drawing.Point, System.Drawing"> - <value>436, 152</value> + <data name="UID.Location" type="System.Drawing.Point, System.Drawing"> + <value>89, 26</value> </data> - <data name=">>ButtonDelete.Name" xml:space="preserve"> - <value>ButtonDelete</value> + <data name="UID.Size" type="System.Drawing.Size, System.Drawing"> + <value>61, 19</value> </data> - <data name=">>RadioAND.Parent" xml:space="preserve"> - <value>GroupMatch</value> - </data> - <data name="ButtonRuleUp.TabIndex" type="System.Int32, mscorlib"> + <data name="UID.TabIndex" type="System.Int32, mscorlib"> <value>2</value> </data> - <data name="ExMSG2.Location" type="System.Drawing.Point, System.Drawing"> - <value>89, 64</value> + <data name=">>UID.Name" xml:space="preserve"> + <value>UID</value> </data> - <data name="CheckRegex.TabIndex" type="System.Int32, mscorlib"> - <value>11</value> + <data name=">>UID.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>TextExSource.Name" xml:space="preserve"> - <value>TextExSource</value> + <data name=">>UID.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name="ListFilters.Location" type="System.Drawing.Point, System.Drawing"> - <value>9, 19</value> + <data name=">>UID.ZOrder" xml:space="preserve"> + <value>13</value> </data> - <data name="CheckMark.Size" type="System.Drawing.Size, System.Drawing"> - <value>70, 16</value> + <data name="MSG1.Location" type="System.Drawing.Point, System.Drawing"> + <value>189, 26</value> </data> - <data name="ComboSound.TabIndex" type="System.Int32, mscorlib"> - <value>9</value> + <data name="MSG1.Size" type="System.Drawing.Size, System.Drawing"> + <value>103, 19</value> </data> - <data name=">>CheckExURL.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name="MSG1.TabIndex" type="System.Int32, mscorlib"> + <value>5</value> </data> - <data name="CheckExCaseSensitive.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>MSG1.Name" xml:space="preserve"> + <value>MSG1</value> </data> - <data name="ButtonNew.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name=">>MSG1.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckExCaseSensitive.Text" xml:space="preserve"> - <value>大/小文字区別</value> + <data name=">>MSG1.Parent" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>ButtonEdit.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>MSG1.ZOrder" xml:space="preserve"> + <value>14</value> </data> - <data name="CheckManageRead.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 371</value> + <data name="MSG2.Location" type="System.Drawing.Point, System.Drawing"> + <value>89, 64</value> </data> - <data name="RadioAND.Size" type="System.Drawing.Size, System.Drawing"> - <value>71, 16</value> + <data name="MSG2.Size" type="System.Drawing.Size, System.Drawing"> + <value>204, 19</value> </data> - <data name="MSG1.Location" type="System.Drawing.Point, System.Drawing"> - <value>189, 26</value> + <data name="MSG2.TabIndex" type="System.Int32, mscorlib"> + <value>8</value> </data> - <data name="CheckNotifyNew.Text" xml:space="preserve"> - <value>新着通知表示</value> + <data name=">>MSG2.Name" xml:space="preserve"> + <value>MSG2</value> </data> - <data name="OptCopy.TabIndex" type="System.Int32, mscorlib"> - <value>1</value> + <data name=">>MSG2.Type" xml:space="preserve"> + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonRuleCopy.Parent" xml:space="preserve"> - <value>GroupBox2</value> - </data> - <data name=">>CheckRetweet.Parent" xml:space="preserve"> + <data name=">>MSG2.Parent" xml:space="preserve"> <value>GroupMatch</value> </data> - <data name="RadioPLUS.Size" type="System.Drawing.Size, System.Drawing"> - <value>71, 16</value> + <data name=">>MSG2.ZOrder" xml:space="preserve"> + <value>15</value> </data> - <data name=">>Label2.ZOrder" xml:space="preserve"> - <value>9</value> + <data name="GroupMatch.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 18</value> </data> - <data name="CheckExRegex.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="GroupMatch.Size" type="System.Drawing.Size, System.Drawing"> + <value>424, 128</value> </data> <data name="GroupMatch.TabIndex" type="System.Int32, mscorlib"> <value>0</value> </data> - <data name=">>ExMSG1.ZOrder" xml:space="preserve"> - <value>13</value> + <data name="GroupMatch.Text" xml:space="preserve"> + <value>マッチルール</value> </data> - <data name="CheckExURL.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>GroupMatch.Name" xml:space="preserve"> + <value>GroupMatch</value> </data> - <data name=">>CheckExCaseSensitive.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name=">>GroupMatch.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonDeleteTab.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name=">>GroupMatch.Parent" xml:space="preserve"> + <value>EditFilterGroup</value> </data> - <data name=">>ExUID.ZOrder" xml:space="preserve"> - <value>12</value> + <data name=">>GroupMatch.ZOrder" xml:space="preserve"> + <value>2</value> </data> - <data name="ListFilters.HorizontalScrollbar" type="System.Boolean, mscorlib"> + <data name="CheckMark.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> + <data name="CheckMark.Location" type="System.Drawing.Point, System.Drawing"> + <value>44, 62</value> + </data> + <data name="CheckMark.Size" type="System.Drawing.Size, System.Drawing"> + <value>70, 16</value> + </data> <data name="CheckMark.TabIndex" type="System.Int32, mscorlib"> <value>2</value> </data> - <data name=">>ButtonDown.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckMark.Text" xml:space="preserve"> + <value>マークする</value> </data> - <data name="Label4.Size" type="System.Drawing.Size, System.Drawing"> - <value>56, 12</value> + <data name=">>CheckMark.Name" xml:space="preserve"> + <value>CheckMark</value> </data> - <data name="GroupBox1.Text" xml:space="preserve"> - <value>マッチ時の追加動作(&E)</value> + <data name=">>CheckMark.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckExCaseSensitive.TabIndex" type="System.Int32, mscorlib"> - <value>13</value> + <data name=">>CheckMark.Parent" xml:space="preserve"> + <value>GroupBox1</value> </data> - <data name=">>ButtonDeleteTab.Name" xml:space="preserve"> - <value>ButtonDeleteTab</value> + <data name=">>CheckMark.ZOrder" xml:space="preserve"> + <value>0</value> </data> - <data name="GroupExclude.Location" type="System.Drawing.Point, System.Drawing"> - <value>6, 140</value> - </data> - <data name="Label9.AutoSize" type="System.Boolean, mscorlib"> + <data name="OptCopy.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>RadioExPLUS.ZOrder" xml:space="preserve"> - <value>7</value> + <data name="OptCopy.Location" type="System.Drawing.Point, System.Drawing"> + <value>15, 40</value> </data> - <data name="OptMove.TabIndex" type="System.Int32, mscorlib"> - <value>0</value> + <data name="OptCopy.Size" type="System.Drawing.Size, System.Drawing"> + <value>123, 16</value> </data> - <data name=">>ComboSound.ZOrder" xml:space="preserve"> - <value>9</value> + <data name="OptCopy.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> </data> - <data name="ButtonAddTab.Text" xml:space="preserve"> - <value>タブ作成</value> + <data name="OptCopy.Text" xml:space="preserve"> + <value>Recentからコピーする</value> </data> - <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> - <value>766, 553</value> + <data name=">>OptCopy.Name" xml:space="preserve"> + <value>OptCopy</value> </data> - <data name="Label9.Location" type="System.Drawing.Point, System.Drawing"> - <value>87, 51</value> + <data name=">>OptCopy.Type" xml:space="preserve"> + <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>Label3.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name=">>OptCopy.Parent" xml:space="preserve"> + <value>GroupBox1</value> </data> - <data name="ButtonRuleDown.Text" xml:space="preserve"> - <value>6</value> + <data name=">>OptCopy.ZOrder" xml:space="preserve"> + <value>1</value> </data> - <data name=">>TextSource.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </data> - <data name="CheckExCaseSensitive.AutoSize" type="System.Boolean, mscorlib"> + <data name="OptMove.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>Label5.Name" xml:space="preserve"> - <value>Label5</value> + <data name="OptMove.Location" type="System.Drawing.Point, System.Drawing"> + <value>15, 18</value> </data> - <data name="CheckExRegex.Size" type="System.Drawing.Size, System.Drawing"> - <value>72, 16</value> + <data name="OptMove.Size" type="System.Drawing.Size, System.Drawing"> + <value>120, 16</value> </data> - <data name="GroupBox2.Text" xml:space="preserve"> - <value>振り分けルール</value> + <data name="OptMove.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> </data> - <data name=">>ButtonRuleCopy.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="OptMove.Text" xml:space="preserve"> + <value>Recentから移動する</value> </data> - <data name=">>CheckURL.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>OptMove.Name" xml:space="preserve"> + <value>OptMove</value> </data> - <data name="ButtonRuleDown.TabIndex" type="System.Int32, mscorlib"> - <value>3</value> - </data> - <data name=">>ListFilters.ZOrder" xml:space="preserve"> - <value>4</value> - </data> <data name=">>OptMove.Type" xml:space="preserve"> <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>GroupExclude.ZOrder" xml:space="preserve"> - <value>1</value> + <data name=">>OptMove.Parent" xml:space="preserve"> + <value>GroupBox1</value> </data> - <data name="ButtonDown.TabIndex" type="System.Int32, mscorlib"> + <data name=">>OptMove.ZOrder" xml:space="preserve"> <value>2</value> </data> - <data name="CheckExRegex.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 18</value> + <data name="GroupBox1.Location" type="System.Drawing.Point, System.Drawing"> + <value>436, 18</value> </data> - <data name=">>CheckRegex.Name" xml:space="preserve"> - <value>CheckRegex</value> + <data name="GroupBox1.Size" type="System.Drawing.Size, System.Drawing"> + <value>155, 98</value> </data> - <data name="CheckExURL.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="GroupBox1.TabIndex" type="System.Int32, mscorlib"> + <value>2</value> </data> - <data name=">>RadioPLUS.Type" xml:space="preserve"> - <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="GroupBox1.Text" xml:space="preserve"> + <value>マッチ時の追加動作(&E)</value> </data> - <data name="ButtonDown.Location" type="System.Drawing.Point, System.Drawing"> - <value>87, 207</value> + <data name=">>GroupBox1.Name" xml:space="preserve"> + <value>GroupBox1</value> </data> - <data name=">>ExMSG2.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name=">>GroupBox1.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="LabelTabType.Size" type="System.Drawing.Size, System.Drawing"> - <value>76, 12</value> + <data name=">>GroupBox1.Parent" xml:space="preserve"> + <value>EditFilterGroup</value> </data> - <data name="Label4.Text" xml:space="preserve"> - <value>ユーザーID</value> + <data name=">>GroupBox1.ZOrder" xml:space="preserve"> + <value>3</value> </data> - <data name="TextSource.Location" type="System.Drawing.Point, System.Drawing"> - <value>89, 89</value> + <data name="ButtonCancel.Location" type="System.Drawing.Point, System.Drawing"> + <value>516, 264</value> </data> - <data name=">>ExUID.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name="ButtonCancel.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> </data> - <data name=">>RadioAND.Name" xml:space="preserve"> - <value>RadioAND</value> + <data name="ButtonCancel.TabIndex" type="System.Int32, mscorlib"> + <value>5</value> </data> - <data name=">>Label6.ZOrder" xml:space="preserve"> - <value>11</value> + <data name="ButtonCancel.Text" xml:space="preserve"> + <value>キャンセル</value> </data> - <data name="ComboSound.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 427</value> + <data name=">>ButtonCancel.Name" xml:space="preserve"> + <value>ButtonCancel</value> </data> - <data name="CheckRetweet.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 84</value> + <data name=">>ButtonCancel.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="GroupBox2.Size" type="System.Drawing.Size, System.Drawing"> - <value>612, 508</value> + <data name=">>ButtonCancel.Parent" xml:space="preserve"> + <value>EditFilterGroup</value> </data> - <data name=">>TextSource.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name=">>ButtonCancel.ZOrder" xml:space="preserve"> + <value>4</value> </data> - <data name=">>$this.Name" xml:space="preserve"> - <value>FilterDialog</value> + <data name="ButtonOK.Location" type="System.Drawing.Point, System.Drawing"> + <value>438, 264</value> </data> - <data name=">>MSG2.Name" xml:space="preserve"> - <value>MSG2</value> + <data name="ButtonOK.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> </data> - <data name=">>ButtonOK.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonOK.TabIndex" type="System.Int32, mscorlib"> + <value>4</value> </data> - <data name="CheckRegex.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 18</value> + <data name="ButtonOK.Text" xml:space="preserve"> + <value>OK</value> </data> - <data name=">>OptMove.Parent" xml:space="preserve"> - <value>GroupBox1</value> + <data name=">>ButtonOK.Name" xml:space="preserve"> + <value>ButtonOK</value> </data> - <data name=">>ExUID.Name" xml:space="preserve"> - <value>ExUID</value> + <data name=">>ButtonOK.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label11.Size" type="System.Drawing.Size, System.Drawing"> - <value>157, 74</value> + <data name=">>ButtonOK.Parent" xml:space="preserve"> + <value>EditFilterGroup</value> </data> - <data name="LabelTabType.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>ButtonOK.ZOrder" xml:space="preserve"> + <value>5</value> </data> - <data name="Label1.Size" type="System.Drawing.Size, System.Drawing"> - <value>53, 12</value> + <data name="EditFilterGroup.Location" type="System.Drawing.Point, System.Drawing"> + <value>9, 238</value> </data> - <data name=">>CheckRetweet.ZOrder" xml:space="preserve"> - <value>2</value> + <data name="EditFilterGroup.Size" type="System.Drawing.Size, System.Drawing"> + <value>600, 293</value> </data> - <data name="MSG2.TabIndex" type="System.Int32, mscorlib"> + <data name="EditFilterGroup.TabIndex" type="System.Int32, mscorlib"> <value>8</value> </data> - <data name=">>ListTabs.Name" xml:space="preserve"> - <value>ListTabs</value> + <data name="EditFilterGroup.Text" xml:space="preserve"> + <value>ルール編集</value> </data> - <data name=">>ButtonClose.Parent" xml:space="preserve"> - <value>$this</value> + <data name=">>EditFilterGroup.Name" xml:space="preserve"> + <value>EditFilterGroup</value> </data> - <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> - <value>6, 12</value> + <data name=">>EditFilterGroup.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>Label12.Parent" xml:space="preserve"> - <value>GroupExclude</value> - </data> <data name=">>EditFilterGroup.Parent" xml:space="preserve"> <value>GroupBox2</value> </data> - <data name="OptCopy.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>EditFilterGroup.ZOrder" xml:space="preserve"> + <value>8</value> </data> - <data name="LabelTabType.Text" xml:space="preserve"> - <value>LabelTabType</value> + <data name="ButtonNew.Location" type="System.Drawing.Point, System.Drawing"> + <value>9, 209</value> </data> - <data name=">>GroupMatch.Name" xml:space="preserve"> - <value>GroupMatch</value> + <data name="ButtonNew.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> </data> - <data name="ListFilters.ItemHeight" type="System.Int32, mscorlib"> - <value>12</value> + <data name="ButtonNew.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> </data> - <data name="Label11.TabIndex" type="System.Int32, mscorlib"> - <value>3</value> + <data name="ButtonNew.Text" xml:space="preserve"> + <value>新規(&N)</value> </data> - <data name=">>Label12.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ButtonNew.Name" xml:space="preserve"> + <value>ButtonNew</value> </data> - <data name="EditFilterGroup.Size" type="System.Drawing.Size, System.Drawing"> - <value>597, 263</value> + <data name=">>ButtonNew.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label6.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>ButtonNew.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name="Label12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>ButtonNew.ZOrder" xml:space="preserve"> + <value>7</value> </data> - <data name="ButtonNew.Location" type="System.Drawing.Point, System.Drawing"> - <value>9, 209</value> + <data name="ButtonDelete.Location" type="System.Drawing.Point, System.Drawing"> + <value>531, 210</value> </data> - <data name="RadioExAnd.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="ButtonDelete.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> </data> - <data name="CheckNotifyNew.TabIndex" type="System.Int32, mscorlib"> + <data name="ButtonDelete.TabIndex" type="System.Int32, mscorlib"> <value>7</value> </data> - <data name="RadioPLUS.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 65</value> + <data name="ButtonDelete.Text" xml:space="preserve"> + <value>削除(&D)</value> </data> - <data name=">>ButtonRuleUp.Type" xml:space="preserve"> + <data name=">>ButtonDelete.Name" xml:space="preserve"> + <value>ButtonDelete</value> + </data> + <data name=">>ButtonDelete.Type" xml:space="preserve"> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="MSG2.Size" type="System.Drawing.Size, System.Drawing"> - <value>204, 19</value> + <data name=">>ButtonDelete.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name=">>Label13.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name=">>ButtonDelete.ZOrder" xml:space="preserve"> + <value>6</value> </data> - <data name=">>ButtonDelete.Type" xml:space="preserve"> + <data name="ButtonEdit.Location" type="System.Drawing.Point, System.Drawing"> + <value>173, 209</value> + </data> + <data name="ButtonEdit.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> + </data> + <data name="ButtonEdit.TabIndex" type="System.Int32, mscorlib"> + <value>4</value> + </data> + <data name="ButtonEdit.Text" xml:space="preserve"> + <value>編集(&E)</value> + </data> + <data name=">>ButtonEdit.Name" xml:space="preserve"> + <value>ButtonEdit</value> + </data> + <data name=">>ButtonEdit.Type" xml:space="preserve"> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>CheckNotifyNew.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name=">>ButtonEdit.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name="ButtonCancel.Location" type="System.Drawing.Point, System.Drawing"> - <value>516, 234</value> + <data name=">>ButtonEdit.ZOrder" xml:space="preserve"> + <value>5</value> </data> - <data name="CheckManageRead.Text" xml:space="preserve"> - <value>未読管理</value> + <data name="GroupBox2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> + <value>Top, Bottom, Left, Right</value> </data> - <data name=">>UID.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name="ButtonRuleMove.Location" type="System.Drawing.Point, System.Drawing"> + <value>342, 209</value> </data> - <data name=">>Label9.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRuleMove.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> </data> <data name="ButtonRuleMove.TabIndex" type="System.Int32, mscorlib"> <value>6</value> </data> - <data name="RadioExPLUS.Size" type="System.Drawing.Size, System.Drawing"> - <value>71, 16</value> + <data name="ButtonRuleMove.Text" xml:space="preserve"> + <value>移動</value> </data> - <data name="Label1.Text" xml:space="preserve"> - <value>発言内容</value> + <data name=">>ButtonRuleMove.Name" xml:space="preserve"> + <value>ButtonRuleMove</value> </data> - <data name=">>ButtonRuleCopy.Name" xml:space="preserve"> - <value>ButtonRuleCopy</value> + <data name=">>ButtonRuleMove.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>RadioExPLUS.Name" xml:space="preserve"> - <value>RadioExPLUS</value> + <data name=">>ButtonRuleMove.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name="RadioPLUS.TabIndex" type="System.Int32, mscorlib"> - <value>6</value> + <data name=">>ButtonRuleMove.ZOrder" xml:space="preserve"> + <value>0</value> </data> - <data name=">>ButtonDeleteTab.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRuleCopy.Location" type="System.Drawing.Point, System.Drawing"> + <value>261, 209</value> </data> - <data name=">>LabelTabType.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRuleCopy.Size" type="System.Drawing.Size, System.Drawing"> + <value>75, 23</value> </data> - <data name="Label6.Size" type="System.Drawing.Size, System.Drawing"> - <value>56, 12</value> + <data name="ButtonRuleCopy.TabIndex" type="System.Int32, mscorlib"> + <value>5</value> </data> - <data name=">>CheckExCaseSensitive.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRuleCopy.Text" xml:space="preserve"> + <value>コピー</value> </data> - <data name="Label5.Location" type="System.Drawing.Point, System.Drawing"> - <value>43, 92</value> + <data name=">>ButtonRuleCopy.Name" xml:space="preserve"> + <value>ButtonRuleCopy</value> </data> - <data name="ButtonRuleDown.Size" type="System.Drawing.Size, System.Drawing"> - <value>34, 23</value> + <data name=">>ButtonRuleCopy.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckExCaseSensitive.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 62</value> + <data name=">>ButtonRuleCopy.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> - <value>CenterParent</value> + <data name=">>ButtonRuleCopy.ZOrder" xml:space="preserve"> + <value>1</value> </data> - <data name=">>ButtonRuleMove.ZOrder" xml:space="preserve"> - <value>0</value> + <data name="ButtonRuleDown.Font" type="System.Drawing.Font, System.Drawing"> + <value>Marlett, 9pt, style=Bold</value> </data> - <data name="Label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <data name="ButtonRuleDown.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <value>NoControl</value> </data> - <data name="CheckNotifyNew.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 393</value> + <data name="ButtonRuleDown.Location" type="System.Drawing.Point, System.Drawing"> + <value>131, 209</value> </data> - <data name=">>Label7.Name" xml:space="preserve"> - <value>Label7</value> + <data name="ButtonRuleDown.Size" type="System.Drawing.Size, System.Drawing"> + <value>34, 23</value> </data> - <data name="Label12.Location" type="System.Drawing.Point, System.Drawing"> - <value>43, 92</value> + <data name="ButtonRuleDown.TabIndex" type="System.Int32, mscorlib"> + <value>3</value> </data> - <data name="GroupTab.Location" type="System.Drawing.Point, System.Drawing"> - <value>6, 9</value> + <data name="ButtonRuleDown.Text" xml:space="preserve"> + <value>6</value> </data> - <data name="CheckManageRead.Size" type="System.Drawing.Size, System.Drawing"> - <value>72, 16</value> + <data name=">>ButtonRuleDown.Name" xml:space="preserve"> + <value>ButtonRuleDown</value> </data> - <data name="Label7.Text" xml:space="preserve"> - <value>AND</value> - </data> - <data name=">>ButtonNew.Type" xml:space="preserve"> + <data name=">>ButtonRuleDown.Type" xml:space="preserve"> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="RadioExPLUS.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name=">>ButtonRuleDown.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name="ButtonRuleCopy.TabIndex" type="System.Int32, mscorlib"> - <value>5</value> + <data name=">>ButtonRuleDown.ZOrder" xml:space="preserve"> + <value>2</value> </data> - <data name="ExUID.Location" type="System.Drawing.Point, System.Drawing"> - <value>89, 26</value> + <data name="ButtonRuleUp.Font" type="System.Drawing.Font, System.Drawing"> + <value>Marlett, 9pt, style=Bold</value> </data> - <data name=">>EditFilterGroup.Type" xml:space="preserve"> - <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRuleUp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>MSG2.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name="ButtonRuleUp.Location" type="System.Drawing.Point, System.Drawing"> + <value>90, 209</value> </data> - <data name=">>OptMove.Name" xml:space="preserve"> - <value>OptMove</value> + <data name="ButtonRuleUp.Size" type="System.Drawing.Size, System.Drawing"> + <value>34, 23</value> </data> - <data name=">>CheckManageRead.Type" xml:space="preserve"> - <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRuleUp.TabIndex" type="System.Int32, mscorlib"> + <value>2</value> </data> <data name="ButtonRuleUp.Text" xml:space="preserve"> <value>5</value> </data> - <data name="ButtonEdit.Location" type="System.Drawing.Point, System.Drawing"> - <value>173, 209</value> + <data name=">>ButtonRuleUp.Name" xml:space="preserve"> + <value>ButtonRuleUp</value> </data> - <data name="RadioExAnd.Text" xml:space="preserve"> - <value>複合条件</value> + <data name=">>ButtonRuleUp.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonRuleCopy.ZOrder" xml:space="preserve"> - <value>1</value> + <data name=">>ButtonRuleUp.Parent" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name=">>ButtonUp.Type" xml:space="preserve"> - <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ButtonRuleUp.ZOrder" xml:space="preserve"> + <value>3</value> </data> - <data name="MSG1.TabIndex" type="System.Int32, mscorlib"> - <value>5</value> + <data name="GroupBox2.Location" type="System.Drawing.Point, System.Drawing"> + <value>142, 9</value> </data> - <data name="Label3.Size" type="System.Drawing.Size, System.Drawing"> - <value>29, 12</value> + <data name="GroupBox2.Size" type="System.Drawing.Size, System.Drawing"> + <value>615, 538</value> </data> - <data name=">>Label11.ZOrder" xml:space="preserve"> - <value>0</value> + <data name="GroupBox2.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> </data> - <data name=">>Label4.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name="GroupBox2.Text" xml:space="preserve"> + <value>振り分けルール</value> </data> - <data name=">>LabelTabType.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name=">>GroupBox2.Name" xml:space="preserve"> + <value>GroupBox2</value> </data> - <data name=">>RadioExPLUS.Type" xml:space="preserve"> - <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>GroupBox2.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="ExUID.TabIndex" type="System.Int32, mscorlib"> - <value>2</value> + <data name=">>GroupBox2.Parent" xml:space="preserve"> + <value>$this</value> </data> - <data name=">>ButtonRuleMove.Name" xml:space="preserve"> - <value>ButtonRuleMove</value> + <data name=">>GroupBox2.ZOrder" xml:space="preserve"> + <value>1</value> </data> - <data name="MSG1.Size" type="System.Drawing.Size, System.Drawing"> - <value>103, 19</value> + <data name="ListTabs.ItemHeight" type="System.Int32, mscorlib"> + <value>12</value> </data> - <data name="CheckRegex.Size" type="System.Drawing.Size, System.Drawing"> - <value>72, 16</value> + <data name="ListTabs.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 18</value> </data> - <data name="Label8.Size" type="System.Drawing.Size, System.Drawing"> - <value>53, 12</value> + <data name="ListTabs.Size" type="System.Drawing.Size, System.Drawing"> + <value>113, 184</value> </data> - <data name=">>ButtonRuleMove.Parent" xml:space="preserve"> - <value>GroupBox2</value> + <data name="ListTabs.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> </data> - <data name="CheckCaseSensitive.TabIndex" type="System.Int32, mscorlib"> - <value>13</value> + <data name=">>ListTabs.Name" xml:space="preserve"> + <value>ListTabs</value> </data> - <data name=">>Label10.Name" xml:space="preserve"> - <value>Label10</value> + <data name=">>ListTabs.Type" xml:space="preserve"> + <value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>ButtonDown.ZOrder" xml:space="preserve"> - <value>3</value> + <data name=">>ListTabs.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name=">>OptCopy.Type" xml:space="preserve"> - <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name=">>ListTabs.ZOrder" xml:space="preserve"> + <value>2</value> </data> - <data name="Label13.Location" type="System.Drawing.Point, System.Drawing"> - <value>6, 327</value> + <data name="ButtonAddTab.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 237</value> </data> - <data name="Label3.TabIndex" type="System.Int32, mscorlib"> + <data name="ButtonAddTab.Size" type="System.Drawing.Size, System.Drawing"> + <value>113, 23</value> + </data> + <data name="ButtonAddTab.TabIndex" type="System.Int32, mscorlib"> <value>3</value> </data> - <data name=">>ButtonRuleUp.Parent" xml:space="preserve"> - <value>GroupBox2</value> + <data name="ButtonAddTab.Text" xml:space="preserve"> + <value>タブ作成</value> </data> - <data name="TextSource.TabIndex" type="System.Int32, mscorlib"> - <value>10</value> + <data name=">>ButtonAddTab.Name" xml:space="preserve"> + <value>ButtonAddTab</value> </data> - <data name="ButtonDown.Size" type="System.Drawing.Size, System.Drawing"> - <value>34, 23</value> + <data name=">>ButtonAddTab.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>Label8.ZOrder" xml:space="preserve"> - <value>5</value> + <data name=">>ButtonAddTab.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name="RadioPLUS.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>ButtonAddTab.ZOrder" xml:space="preserve"> + <value>4</value> </data> - <data name="TextExSource.Size" type="System.Drawing.Size, System.Drawing"> - <value>96, 19</value> + <data name="ButtonDeleteTab.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name="Label12.Size" type="System.Drawing.Size, System.Drawing"> - <value>40, 12</value> + <data name="ButtonDeleteTab.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 266</value> </data> - <data name=">>ListFilters.Type" xml:space="preserve"> - <value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonDeleteTab.Size" type="System.Drawing.Size, System.Drawing"> + <value>113, 23</value> </data> - <data name="Label2.Text" xml:space="preserve"> - <value>ユーザーIDか発言内容</value> + <data name="ButtonDeleteTab.TabIndex" type="System.Int32, mscorlib"> + <value>4</value> </data> - <data name=">>ButtonEdit.Parent" xml:space="preserve"> - <value>GroupBox2</value> + <data name="ButtonDeleteTab.Text" xml:space="preserve"> + <value>タブ削除</value> </data> - <data name=">>CheckManageRead.Parent" xml:space="preserve"> - <value>GroupTab</value> + <data name=">>ButtonDeleteTab.Name" xml:space="preserve"> + <value>ButtonDeleteTab</value> </data> - <data name="ButtonClose.TabIndex" type="System.Int32, mscorlib"> - <value>2</value> + <data name=">>ButtonDeleteTab.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>Label2.Name" xml:space="preserve"> - <value>Label2</value> + <data name=">>ButtonDeleteTab.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name="GroupExclude.Size" type="System.Drawing.Size, System.Drawing"> - <value>424, 116</value> + <data name=">>ButtonDeleteTab.ZOrder" xml:space="preserve"> + <value>6</value> </data> - <data name=">>Label11.Name" xml:space="preserve"> - <value>Label11</value> + <data name="ButtonRenameTab.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>MSG1.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonRenameTab.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 295</value> </data> - <data name=">>Label10.ZOrder" xml:space="preserve"> - <value>7</value> + <data name="ButtonRenameTab.Size" type="System.Drawing.Size, System.Drawing"> + <value>113, 23</value> </data> - <data name=">>CheckMark.Name" xml:space="preserve"> - <value>CheckMark</value> + <data name="ButtonRenameTab.TabIndex" type="System.Int32, mscorlib"> + <value>5</value> </data> - <data name=">>RadioPLUS.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name="ButtonRenameTab.Text" xml:space="preserve"> + <value>タブ名変更</value> </data> - <data name="ButtonOK.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name=">>ButtonRenameTab.Name" xml:space="preserve"> + <value>ButtonRenameTab</value> </data> - <data name=">>OptMove.ZOrder" xml:space="preserve"> - <value>2</value> + <data name=">>ButtonRenameTab.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>CheckCaseSensitive.Name" xml:space="preserve"> - <value>CheckCaseSensitive</value> + <data name=">>ButtonRenameTab.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name=">>LabelTabType.ZOrder" xml:space="preserve"> - <value>0</value> + <data name=">>ButtonRenameTab.ZOrder" xml:space="preserve"> + <value>8</value> </data> - <data name=">>CheckRetweet.Name" xml:space="preserve"> - <value>CheckRetweet</value> + <data name="CheckManageRead.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name=">>Label7.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name="CheckManageRead.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 371</value> </data> - <data name="Label1.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="CheckManageRead.Size" type="System.Drawing.Size, System.Drawing"> + <value>72, 16</value> </data> - <data name=">>ButtonDeleteTab.ZOrder" xml:space="preserve"> + <data name="CheckManageRead.TabIndex" type="System.Int32, mscorlib"> <value>6</value> </data> - <data name="Label8.Text" xml:space="preserve"> - <value>発言内容</value> + <data name="CheckManageRead.Text" xml:space="preserve"> + <value>未読管理</value> </data> - <data name="ButtonAddTab.Size" type="System.Drawing.Size, System.Drawing"> - <value>113, 23</value> + <data name=">>CheckManageRead.Name" xml:space="preserve"> + <value>CheckManageRead</value> </data> - <data name="Label10.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name=">>CheckManageRead.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckExRetweet.TabIndex" type="System.Int32, mscorlib"> - <value>14</value> + <data name=">>CheckManageRead.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name="ButtonDeleteTab.Size" type="System.Drawing.Size, System.Drawing"> - <value>113, 23</value> + <data name=">>CheckManageRead.ZOrder" xml:space="preserve"> + <value>10</value> </data> - <data name="ButtonDeleteTab.TabIndex" type="System.Int32, mscorlib"> - <value>4</value> + <data name="CheckNotifyNew.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="ButtonRuleCopy.Size" type="System.Drawing.Size, System.Drawing"> - <value>75, 23</value> + <data name="CheckNotifyNew.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> </data> - <data name=">>ExMSG2.Name" xml:space="preserve"> - <value>ExMSG2</value> + <data name="CheckNotifyNew.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 393</value> </data> - <data name=">>ExUID.Type" xml:space="preserve"> - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="CheckNotifyNew.Size" type="System.Drawing.Size, System.Drawing"> + <value>96, 16</value> </data> - <data name=">>RadioAND.ZOrder" xml:space="preserve"> - <value>4</value> + <data name="CheckNotifyNew.TabIndex" type="System.Int32, mscorlib"> + <value>7</value> </data> - <data name="ButtonRenameTab.Location" type="System.Drawing.Point, System.Drawing"> - <value>8, 295</value> + <data name="CheckNotifyNew.Text" xml:space="preserve"> + <value>新着通知表示</value> </data> - <data name="ButtonNew.Text" xml:space="preserve"> - <value>新規(&N)</value> + <data name=">>CheckNotifyNew.Name" xml:space="preserve"> + <value>CheckNotifyNew</value> </data> - <data name=">>Label8.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name=">>CheckNotifyNew.Type" xml:space="preserve"> + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="CheckMark.Text" xml:space="preserve"> - <value>マークする</value> + <data name=">>CheckNotifyNew.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name=">>GroupBox1.Name" xml:space="preserve"> - <value>GroupBox1</value> + <data name=">>CheckNotifyNew.ZOrder" xml:space="preserve"> + <value>11</value> </data> - <data name="ButtonRuleDown.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> - <value>NoControl</value> + <data name="ComboSound.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 427</value> </data> - <data name="Label5.Size" type="System.Drawing.Size, System.Drawing"> - <value>40, 12</value> + <data name="ComboSound.Size" type="System.Drawing.Size, System.Drawing"> + <value>113, 20</value> </data> - <data name=">>Label9.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name="ComboSound.TabIndex" type="System.Int32, mscorlib"> + <value>9</value> </data> - <data name=">>CheckURL.Parent" xml:space="preserve"> - <value>GroupMatch</value> + <data name=">>ComboSound.Name" xml:space="preserve"> + <value>ComboSound</value> </data> - <data name=">>RadioExAnd.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name=">>ComboSound.Type" xml:space="preserve"> + <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> <data name=">>ComboSound.Parent" xml:space="preserve"> <value>GroupTab</value> </data> - <data name="UID.Size" type="System.Drawing.Size, System.Drawing"> - <value>61, 19</value> + <data name=">>ComboSound.ZOrder" xml:space="preserve"> + <value>9</value> </data> - <data name=">>Label11.Type" xml:space="preserve"> + <data name="Label10.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> + </data> + <data name="Label10.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 412</value> + </data> + <data name="Label10.Size" type="System.Drawing.Size, System.Drawing"> + <value>66, 12</value> + </data> + <data name="Label10.TabIndex" type="System.Int32, mscorlib"> + <value>8</value> + </data> + <data name="Label10.Text" xml:space="preserve"> + <value>新着サウンド</value> + </data> + <data name=">>Label10.Name" xml:space="preserve"> + <value>Label10</value> + </data> + <data name=">>Label10.Type" xml:space="preserve"> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="Label12.Text" xml:space="preserve"> - <value>Source</value> + <data name=">>Label10.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name="CheckExRetweet.Size" type="System.Drawing.Size, System.Drawing"> - <value>84, 16</value> + <data name=">>Label10.ZOrder" xml:space="preserve"> + <value>7</value> </data> - <data name="UID.TabIndex" type="System.Int32, mscorlib"> - <value>2</value> + <data name="ButtonUp.Font" type="System.Drawing.Font, System.Drawing"> + <value>Marlett, 9pt, style=Bold</value> </data> - <data name=">>ButtonDelete.ZOrder" xml:space="preserve"> - <value>6</value> + <data name="ButtonUp.Location" type="System.Drawing.Point, System.Drawing"> + <value>8, 207</value> </data> - <data name=">>ButtonRuleDown.Type" xml:space="preserve"> + <data name="ButtonUp.Size" type="System.Drawing.Size, System.Drawing"> + <value>34, 23</value> + </data> + <data name="ButtonUp.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> + </data> + <data name="ButtonUp.Text" xml:space="preserve"> + <value>5</value> + </data> + <data name=">>ButtonUp.Name" xml:space="preserve"> + <value>ButtonUp</value> + </data> + <data name=">>ButtonUp.Type" xml:space="preserve"> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>Label8.Name" xml:space="preserve"> - <value>Label8</value> + <data name=">>ButtonUp.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name="ExMSG1.Location" type="System.Drawing.Point, System.Drawing"> - <value>189, 26</value> + <data name=">>ButtonUp.ZOrder" xml:space="preserve"> + <value>5</value> </data> - <data name=">>RadioExAnd.ZOrder" xml:space="preserve"> - <value>4</value> + <data name="ButtonDown.Font" type="System.Drawing.Font, System.Drawing"> + <value>Marlett, 9pt, style=Bold</value> </data> - <data name="ButtonDeleteTab.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <data name="ButtonDown.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <value>NoControl</value> </data> - <data name="CheckMark.AutoSize" type="System.Boolean, mscorlib"> - <value>True</value> + <data name="ButtonDown.Location" type="System.Drawing.Point, System.Drawing"> + <value>87, 207</value> </data> - <data name=">>Label13.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonDown.Size" type="System.Drawing.Size, System.Drawing"> + <value>34, 23</value> </data> - <data name=">>Label2.Type" xml:space="preserve"> - <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <data name="ButtonDown.TabIndex" type="System.Int32, mscorlib"> + <value>2</value> </data> + <data name="ButtonDown.Text" xml:space="preserve"> + <value>6</value> + </data> + <data name=">>ButtonDown.Name" xml:space="preserve"> + <value>ButtonDown</value> + </data> + <data name=">>ButtonDown.Type" xml:space="preserve"> + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> <data name=">>ButtonDown.Parent" xml:space="preserve"> <value>GroupTab</value> </data> - <data name="Label5.TabIndex" type="System.Int32, mscorlib"> - <value>9</value> + <data name=">>ButtonDown.ZOrder" xml:space="preserve"> + <value>3</value> </data> - <data name="OptMove.AutoSize" type="System.Boolean, mscorlib"> + <data name="LabelTabType.AutoSize" type="System.Boolean, mscorlib"> <value>True</value> </data> - <data name=">>CheckNotifyNew.ZOrder" xml:space="preserve"> - <value>11</value> + <data name="LabelTabType.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 344</value> </data> - <data name=">>ExMSG1.Parent" xml:space="preserve"> - <value>GroupExclude</value> + <data name="LabelTabType.Size" type="System.Drawing.Size, System.Drawing"> + <value>76, 12</value> </data> - <data name="ButtonRenameTab.Size" type="System.Drawing.Size, System.Drawing"> - <value>113, 23</value> - </data> - <data name="OptMove.Text" xml:space="preserve"> - <value>Recentから移動する</value> - </data> <data name="LabelTabType.TabIndex" type="System.Int32, mscorlib"> <value>11</value> </data> - <data name="CheckRetweet.TabIndex" type="System.Int32, mscorlib"> - <value>14</value> + <data name="LabelTabType.Text" xml:space="preserve"> + <value>LabelTabType</value> </data> - <data name="ButtonClose.Location" type="System.Drawing.Point, System.Drawing"> - <value>679, 523</value> + <data name=">>LabelTabType.Name" xml:space="preserve"> + <value>LabelTabType</value> </data> - <data name=">>ComboSound.Name" xml:space="preserve"> - <value>ComboSound</value> + <data name=">>LabelTabType.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="ButtonCancel.Text" xml:space="preserve"> - <value>キャンセル</value> + <data name=">>LabelTabType.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name="Label5.Text" xml:space="preserve"> - <value>Source</value> + <data name=">>LabelTabType.ZOrder" xml:space="preserve"> + <value>0</value> </data> - <data name=">>CheckExRetweet.Name" xml:space="preserve"> - <value>CheckExRetweet</value> + <data name="Label13.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> </data> - <data name="CheckURL.TabIndex" type="System.Int32, mscorlib"> - <value>12</value> + <data name="Label13.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 327</value> </data> - <data name="CheckURL.Location" type="System.Drawing.Point, System.Drawing"> - <value>299, 40</value> + <data name="Label13.Size" type="System.Drawing.Size, System.Drawing"> + <value>56, 12</value> </data> - <data name="GroupBox1.TabIndex" type="System.Int32, mscorlib"> - <value>2</value> + <data name="Label13.TabIndex" type="System.Int32, mscorlib"> + <value>10</value> </data> - <data name=">>ListFilters.Name" xml:space="preserve"> - <value>ListFilters</value> + <data name="Label13.Text" xml:space="preserve"> + <value>タブの種類</value> </data> - <data name=">>GroupBox1.ZOrder" xml:space="preserve"> - <value>3</value> + <data name=">>Label13.Name" xml:space="preserve"> + <value>Label13</value> </data> - <data name="OptCopy.Location" type="System.Drawing.Point, System.Drawing"> - <value>15, 40</value> + <data name=">>Label13.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name=">>CheckExCaseSensitive.ZOrder" xml:space="preserve"> - <value>3</value> + <data name=">>Label13.Parent" xml:space="preserve"> + <value>GroupTab</value> </data> - <data name=">>RadioPLUS.Name" xml:space="preserve"> - <value>RadioPLUS</value> + <data name=">>Label13.ZOrder" xml:space="preserve"> + <value>1</value> </data> - <data name="CheckURL.Text" xml:space="preserve"> - <value>URL検索</value> + <data name="GroupTab.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 9</value> </data> - <data name=">>CheckMark.Parent" xml:space="preserve"> - <value>GroupBox1</value> + <data name="GroupTab.Size" type="System.Drawing.Size, System.Drawing"> + <value>127, 459</value> </data> - <data name=">>ButtonNew.ZOrder" xml:space="preserve"> - <value>7</value> + <data name="GroupTab.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> </data> - <data name=">>CheckCaseSensitive.ZOrder" xml:space="preserve"> - <value>3</value> + <data name="GroupTab.Text" xml:space="preserve"> + <value>タブ</value> </data> - <data name=">>ButtonNew.Parent" xml:space="preserve"> - <value>GroupBox2</value> - </data> <data name=">>GroupTab.Name" xml:space="preserve"> <value>GroupTab</value> </data> - <data name="ButtonOK.Text" xml:space="preserve"> - <value>OK</value> + <data name=">>GroupTab.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> - <data name="LabelTabType.Location" type="System.Drawing.Point, System.Drawing"> - <value>6, 344</value> + <data name=">>GroupTab.Parent" xml:space="preserve"> + <value>$this</value> </data> - <data name="RadioPLUS.Text" xml:space="preserve"> - <value>単一条件</value> + <data name=">>GroupTab.ZOrder" xml:space="preserve"> + <value>0</value> </data> - <data name="ListTabs.Size" type="System.Drawing.Size, System.Drawing"> - <value>113, 184</value> - </data> - <data name="TextExSource.TabIndex" type="System.Int32, mscorlib"> - <value>10</value> - </data> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>39</value> </metadata> + <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> + <value>6, 12</value> + </data> + <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> + <value>769, 583</value> + </data> + <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> + <value>CenterParent</value> + </data> + <data name="$this.Text" xml:space="preserve"> + <value>振り分けルール</value> + </data> + <data name=">>$this.Name" xml:space="preserve"> + <value>FilterDialog</value> + </data> + <data name=">>$this.Type" xml:space="preserve"> + <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> </root> \ No newline at end of file Modified: trunk/Tween/FilterDialog.vb =================================================================== --- trunk/Tween/FilterDialog.vb 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/FilterDialog.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -22,6 +22,7 @@ ' Boston, MA 02110-1301, USA. Imports System.Collections.Specialized +Imports System.Linq.Expressions Public Class FilterDialog @@ -155,6 +156,7 @@ CheckURL.Checked = False CheckCaseSensitive.Checked = False CheckRetweet.Checked = False + CheckLambda.Checked = False RadioExAnd.Checked = True RadioExPLUS.Checked = False @@ -172,6 +174,7 @@ CheckExURL.Checked = False CheckExCaseSensitive.Checked = False CheckExRetweet.Checked = False + CheckExLambDa.Checked = False OptCopy.Checked = True CheckMark.Checked = True @@ -208,6 +211,7 @@ CheckURL.Checked = False CheckCaseSensitive.Checked = False CheckRetweet.Checked = False + CheckLambda.Checked = False RadioExAnd.Checked = True RadioExPLUS.Checked = False @@ -222,6 +226,7 @@ CheckExURL.Checked = False CheckExCaseSensitive.Checked = False CheckExRetweet.Checked = False + CheckExLambDa.Checked = False OptCopy.Checked = True CheckMark.Checked = True @@ -348,6 +353,7 @@ CheckURL.Checked = fc.SearchUrl CheckCaseSensitive.Checked = fc.CaseSensitive CheckRetweet.Checked = fc.IsRt + CheckLambda.Checked = fc.UseLambda If fc.ExSearchBoth Then RadioExAnd.Checked = True @@ -384,6 +390,7 @@ CheckExURL.Checked = fc.ExSearchUrl CheckExCaseSensitive.Checked = fc.ExCaseSensitive CheckExRetweet.Checked = fc.IsExRt + CheckExLambDa.Checked = fc.ExUseLambda If fc.MoveFrom Then OptMove.Checked = True @@ -412,6 +419,7 @@ CheckURL.Checked = False CheckCaseSensitive.Checked = False CheckRetweet.Checked = False + CheckLambda.Checked = False RadioExAnd.Checked = True RadioExPLUS.Checked = False @@ -426,6 +434,7 @@ CheckExURL.Checked = False CheckExCaseSensitive.Checked = False CheckExRetweet.Checked = False + CheckExLambDa.Checked = False OptCopy.Checked = True CheckMark.Checked = True @@ -485,7 +494,7 @@ End If ft.Source = TextSource.Text.Trim - If CheckRegex.Checked Then + If CheckRegex.Checked OrElse CheckLambda.Checked Then ft.BodyFilter.Add(bdy) Else Dim bf() As String = bdy.Trim.Split(Chr(32)) @@ -498,6 +507,7 @@ ft.SearchUrl = CheckURL.Checked ft.CaseSensitive = CheckCaseSensitive.Checked ft.IsRt = CheckRetweet.Checked + ft.UseLambda = CheckLambda.Checked bdy = "" If RadioExAnd.Checked Then @@ -511,7 +521,7 @@ End If ft.ExSource = TextExSource.Text.Trim - If CheckExRegex.Checked Then + If CheckExRegex.Checked OrElse CheckExLambDa.Checked Then ft.ExBodyFilter.Add(bdy) Else Dim bf() As String = bdy.Trim.Split(Chr(32)) @@ -524,6 +534,7 @@ ft.ExSearchUrl = CheckExURL.Checked ft.ExCaseSensitive = CheckExCaseSensitive.Checked ft.IsExRt = CheckExRetweet.Checked + ft.ExUseLambda = CheckExLambDa.Checked If _mode = EDITMODE.AddNew Then If Not _sts.Tabs(ListTabs.SelectedItem.ToString()).AddFilter(ft) Then @@ -548,60 +559,71 @@ End If End Sub + Private Function IsValidLambdaExp(ByVal text As String) As Boolean + If text = "" Then Return True + Try + Dim expr As LambdaExpression + expr = ParseLambda(Of PostClass, Boolean)(text, New PostClass) + Catch ex As ParseException + MessageBox.Show("構文エラー:" + ex.Message, "ラムダ式構文チェック", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) + Return False + End Try + Return True + End Function + + Private Function IsValidRegexp(ByVal text As String) As Boolean + Try + Dim rgx As New System.Text.RegularExpressions.Regex(text) + Catch ex As Exception + MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) + Return False + End Try + Return True + End Function + Private Function CheckMatchRule(ByRef isBlank As Boolean) As Boolean isBlank = False TextSource.Text = TextSource.Text.Trim() If RadioAND.Checked Then MSG1.Text = MSG1.Text.Trim UID.Text = UID.Text.Trim() - If Not CheckRegex.Checked Then MSG1.Text = MSG1.Text.Replace(" ", " ") + If Not CheckRegex.Checked AndAlso Not CheckLambda.Checked Then MSG1.Text = MSG1.Text.Replace(" ", " ") If UID.Text = "" AndAlso MSG1.Text = "" AndAlso TextSource.Text = "" AndAlso CheckRetweet.Checked = False Then isBlank = True Return True End If - If CheckRegex.Checked Then - If UID.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(UID.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If CheckLambda.Checked Then + If Not IsValidLambdaExp(UID.Text) Then + Return False End If - If MSG1.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(MSG1.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If Not IsValidLambdaExp(MSG1.Text) Then + Return False End If + ElseIf CheckRegex.Checked Then + If Not IsValidRegexp(UID.Text) Then + Return False + End If + If Not IsValidRegexp(MSG1.Text) Then + Return False + End If End If Else MSG2.Text = MSG2.Text.Trim - If Not CheckRegex.Checked Then MSG2.Text = MSG2.Text.Replace(" ", " ") + If Not CheckRegex.Checked AndAlso Not CheckLambda.Checked Then MSG2.Text = MSG2.Text.Replace(" ", " ") If MSG2.Text = "" AndAlso TextSource.Text = "" AndAlso CheckRetweet.Checked = False Then isBlank = True Return True End If - If CheckRegex.Checked AndAlso MSG2.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(MSG2.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If CheckLambda.Checked AndAlso Not IsValidLambdaExp(MSG2.Text) Then + Return False + ElseIf CheckRegex.Checked AndAlso Not IsValidRegexp(MSG2.Text) Then + Return False End If End If - If CheckRegex.Checked AndAlso TextSource.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(TextSource.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If CheckRegex.Checked AndAlso Not IsValidRegexp(TextSource.Text) Then + Return False End If Return True End Function @@ -611,54 +633,43 @@ TextExSource.Text = TextExSource.Text.Trim If RadioExAnd.Checked Then ExMSG1.Text = ExMSG1.Text.Trim - If Not CheckExRegex.Checked Then ExMSG1.Text = ExMSG1.Text.Replace(" ", " ") + If Not CheckExRegex.Checked AndAlso Not CheckExLambDa.Checked Then ExMSG1.Text = ExMSG1.Text.Replace(" ", " ") ExUID.Text = ExUID.Text.Trim() If ExUID.Text = "" AndAlso ExMSG1.Text = "" AndAlso TextExSource.Text = "" AndAlso CheckExRetweet.Checked = False Then isBlank = True Return True End If - If CheckExRegex.Checked Then - If ExUID.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(ExUID.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If CheckExLambDa.Checked Then + If Not IsValidLambdaExp(ExUID.Text) Then + Return False End If - If ExMSG1.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(ExMSG1.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If Not IsValidLambdaExp(ExMSG1.Text) Then + Return False End If + ElseIf CheckExRegex.Checked Then + If Not IsValidRegexp(ExUID.Text) Then + Return False + End If + If Not IsValidRegexp(ExMSG1.Text) Then + Return False + End If End If Else ExMSG2.Text = ExMSG2.Text.Trim - If Not CheckExRegex.Checked Then ExMSG2.Text = ExMSG2.Text.Replace(" ", " ") + If Not CheckExRegex.Checked AndAlso Not CheckExLambDa.Checked Then ExMSG2.Text = ExMSG2.Text.Replace(" ", " ") If ExMSG2.Text = "" AndAlso TextExSource.Text = "" AndAlso CheckExRetweet.Checked = False Then isBlank = True Return True End If - If CheckExRegex.Checked AndAlso ExMSG2.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(ExMSG2.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If CheckExLambDa.Checked AndAlso Not IsValidLambdaExp(ExMSG2.Text) Then + Return False + ElseIf CheckExRegex.Checked AndAlso Not IsValidRegexp(ExMSG2.Text) Then + Return False End If End If - If CheckExRegex.Checked AndAlso TextExSource.Text <> "" Then - Try - Dim rgx As New System.Text.RegularExpressions.Regex(TextExSource.Text) - Catch ex As Exception - MessageBox.Show(My.Resources.ButtonOK_ClickText3 + ex.Message, My.Resources.ButtonOK_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) - Return False - End Try + If CheckExRegex.Checked AndAlso Not IsValidRegexp(TextExSource.Text) Then + Return False End If Return True @@ -677,13 +688,6 @@ End Sub Private Sub FilterDialog_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown -#If 0 Then - If e.KeyCode = Keys.Enter Then - If EditFilterGroup.Enabled Then - ButtonOK_Click(Nothing, Nothing) - End If - End If -#End If If e.KeyCode = Keys.Escape Then If EditFilterGroup.Enabled Then ButtonCancel_Click(Nothing, Nothing) Modified: trunk/Tween/MyLists.vb =================================================================== --- trunk/Tween/MyLists.vb 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/MyLists.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -50,8 +50,8 @@ Dim listNewistPostCreatedAt As DateTime = DateTime.MinValue For Each post As PostClass In listPost - If post.Uid > 0 AndAlso Not listPostUserIDs.Contains(post.Uid) Then - listPostUserIDs.Add(post.Uid) + If post.UserId > 0 AndAlso Not listPostUserIDs.Contains(post.UserId) Then + listPostUserIDs.Add(post.UserId) End If If post.Name IsNot Nothing AndAlso Not listPostUserNames.Contains(post.Name) Then listPostUserNames.Add(post.Name) Modified: trunk/Tween/StatusDictionary.vb =================================================================== --- trunk/Tween/StatusDictionary.vb 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/StatusDictionary.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -23,10 +23,13 @@ Imports System.Collections.Generic Imports System.Collections.ObjectModel +Imports System.Linq.Expressions Imports Tween.TweenCustomControl Imports System.Text.RegularExpressions Imports System.Web.HttpUtility Imports System.Text +Imports System.Linq +Imports System.Linq.Expressions.DynamicExpression Public NotInheritable Class PostClass Implements ICloneable @@ -45,19 +48,20 @@ Private _IsOWL As Boolean Private _IsMark As Boolean Private _InReplyToUser As String - Private _InReplyToId As Long + Private _InReplyToStatusId As Long Private _Source As String Private _SourceHtml As String Private _ReplyToList As New List(Of String) Private _IsMe As Boolean Private _IsDm As Boolean Private _statuses As Statuses = Statuses.None - Private _Uid As Long + Private _UserId As Long Private _FilterHit As Boolean Private _RetweetedBy As String = "" Private _RetweetedId As Long = 0 - Private _searchTabName As String = "" - Private _isDeleted As Boolean = False + Private _SearchTabName As String = "" + Private _IsDeleted As Boolean = False + Private _InReplyToUserId As Long = 0 <FlagsAttribute()> _ Private Enum Statuses @@ -83,13 +87,13 @@ ByVal IsOwl As Boolean, _ ByVal IsMark As Boolean, _ ByVal InReplyToUser As String, _ - ByVal InReplyToId As Long, _ + ByVal InReplyToStatusId As Long, _ ByVal Source As String, _ ByVal SourceHtml As String, _ ByVal ReplyToList As List(Of String), _ ByVal IsMe As Boolean, _ ByVal IsDm As Boolean, _ - ByVal Uid As Long, _ + ByVal userId As Long, _ ByVal FilterHit As Boolean, _ ByVal RetweetedBy As String, _ ByVal RetweetedId As Long) @@ -108,13 +112,13 @@ _IsOWL = IsOwl _IsMark = IsMark _InReplyToUser = InReplyToUser - _InReplyToId = InReplyToId + _InReplyToStatusId = InReplyToStatusId _Source = Source _SourceHtml = SourceHtml _ReplyToList = ReplyToList _IsMe = IsMe _IsDm = IsDm - _Uid = Uid + _UserId = userId _FilterHit = FilterHit _RetweetedBy = RetweetedBy _RetweetedId = RetweetedId @@ -265,14 +269,23 @@ _InReplyToUser = value End Set End Property - Public Property InReplyToId() As Long + Public Property InReplyToStatusId() As Long Get - Return _InReplyToId + Return _InReplyToStatusId End Get Set(ByVal value As Long) - _InReplyToId = value + _InReplyToStatusId = value End Set End Property + + Public Property InReplyToUserId() As Long + Get + Return _inReplyToUserId + End Get + Set(ByVal value As Long) + _inReplyToUserId = value + End Set + End Property Public Property Source() As String Get Return _Source @@ -313,17 +326,17 @@ _IsDm = value End Set End Property - Public ReadOnly Property StatusIndex() As Integer + 'Public ReadOnly Property StatusIndex() As Integer + ' Get + ' Return _statuses + ' End Get + 'End Property + Public Property UserId() As Long Get - Return _statuses + Return _UserId End Get - End Property - Public Property Uid() As Long - Get - Return _Uid - End Get Set(ByVal value As Long) - _Uid = value + _UserId = value End Set End Property Public Property FilterHit() As Boolean @@ -352,24 +365,25 @@ End Property Public Property RelTabName() As String Get - Return _searchTabName + Return _SearchTabName End Get Set(ByVal value As String) - _searchTabName = value + _SearchTabName = value End Set End Property Public Property IsDeleted As Boolean Get - Return _isDeleted + Return _IsDeleted End Get Set(ByVal value As Boolean) If value Then - Me.InReplyToId = 0 + Me.InReplyToStatusId = 0 Me.InReplyToUser = "" + Me.InReplyToUserId = 0 Me.IsReply = False Me.ReplyToList = New List(Of String) End If - _isDeleted = value + _IsDeleted = value End Set End Property Public Property FavoritedCount As Integer @@ -1020,13 +1034,13 @@ item.IsOwl, _ item.IsMark, _ item.InReplyToUser, _ - item.InReplyToId, _ + item.InReplyToStatusId, _ item.Source, _ item.SourceHtml, _ item.ReplyToList, _ item.IsMe, _ item.IsDm, _ - item.Uid, _ + item.UserId, _ item.FilterHit, _ "", _ 0 _ @@ -1465,11 +1479,11 @@ SyncLock LockObj If follower.Count > 0 Then For Each post As PostClass In _statuses.Values - 'If post.Uid = 0 OrElse post.IsDm Then Continue For + 'If post.UserId = 0 OrElse post.IsDm Then Continue For If post.IsMe Then post.IsOwl = False Else - post.IsOwl = Not follower.Contains(post.Uid) + post.IsOwl = Not follower.Contains(post.UserId) End If Next Else @@ -1878,6 +1892,7 @@ original.UseRegex = modified.UseRegex original.CaseSensitive = modified.CaseSensitive original.IsRt = modified.IsRt + original.UseLambda = modified.UseLambda original.Source = modified.Source original.ExBodyFilter = modified.ExBodyFilter original.ExNameFilter = modified.ExNameFilter @@ -1886,6 +1901,7 @@ original.ExUseRegex = modified.ExUseRegex original.ExCaseSensitive = modified.ExCaseSensitive original.IsExRt = modified.IsExRt + original.ExUseLambda = modified.ExUseLambda original.ExSource = modified.ExSource original.MoveFrom = modified.MoveFrom original.SetMark = modified.SetMark @@ -2001,6 +2017,8 @@ Private _exSource As String = "" Private _moveFrom As Boolean = False Private _setMark As Boolean = True + Private _useLambda As Boolean = False + Private _exuseLambda As Boolean = False Public Sub New() @@ -2044,6 +2062,9 @@ If _isRt Then fs.Append("RT/") End If + If _useLambda Then + fs.Append("LambdaExp/") + End If If Not String.IsNullOrEmpty(_source) Then fs.AppendFormat("Src…{0}/", _source) End If @@ -2087,6 +2108,9 @@ If _isExRt Then fs.Append("RT/") End If + If _exuseLambda Then + fs.Append("LambdaExp/") + End If If Not String.IsNullOrEmpty(_exSource) Then fs.AppendFormat("Src…{0}/", _exSource) End If @@ -2245,6 +2269,24 @@ End Set End Property + Public Property UseLambda() As Boolean + Get + Return _useLambda + End Get + Set(ByVal value As Boolean) + _useLambda = value + End Set + End Property + + Public Property ExUseLambda() As Boolean + Get + Return _exuseLambda + End Get + Set(ByVal value As Boolean) + _exuseLambda = value + End Set + End Property + Public Property UseRegex() As Boolean Get Return _useRegex @@ -2303,6 +2345,14 @@ Return MakeSummary() End Function + Public Function ExecuteLambdaExpression(ByVal expr As String, ByVal post As PostClass) As Boolean + Dim dlg As [Delegate] + Dim exp As LambdaExpression + exp = ParseLambda(Of PostClass, Boolean)(expr, post) + dlg = exp.Compile() + Return DirectCast(dlg.DynamicInvoke(post), Boolean) + End Function + Public Function IsHit(ByVal post As PostClass) As HITRESULT Dim bHit As Boolean = True Dim tBody As String @@ -2336,40 +2386,48 @@ (Not String.IsNullOrEmpty(post.RetweetedBy) AndAlso Regex.IsMatch(post.RetweetedBy, _name, rgOpt)) ) ) Then + If _useLambda Then + If Not ExecuteLambdaExpression(_body.Item(0), post) Then bHit = False + Else + For Each fs As String In _body + If _useRegex Then + If Not Regex.IsMatch(tBody, fs, rgOpt) Then bHit = False + Else + If _caseSensitive Then + If Not tBody.Contains(fs) Then bHit = False + Else + If Not tBody.ToLower().Contains(fs.ToLower()) Then bHit = False + End If + End If + If Not bHit Then Exit For + Next + End If + Else + bHit = False + End If + Else + If _useLambda Then + If Not ExecuteLambdaExpression(_body.Item(0), post) Then bHit = False + Else For Each fs As String In _body If _useRegex Then - If Not Regex.IsMatch(tBody, fs, rgOpt) Then bHit = False + If Not (Regex.IsMatch(post.Name, fs, rgOpt) OrElse + (Not String.IsNullOrEmpty(post.RetweetedBy) AndAlso Regex.IsMatch(post.RetweetedBy, fs, rgOpt)) OrElse + Regex.IsMatch(tBody, fs, rgOpt)) Then bHit = False Else If _caseSensitive Then - If Not tBody.Contains(fs) Then bHit = False + If Not (post.Name.Contains(fs) OrElse _ + post.RetweetedBy.Contains(fs) OrElse _ + tBody.Contains(fs)) Then bHit = False Else - If Not tBody.ToLower().Contains(fs.ToLower()) Then bHit = False + If Not (post.Name.ToLower().Contains(fs.ToLower()) OrElse _ + post.RetweetedBy.ToLower().Contains(fs.ToLower()) OrElse _ + tBody.ToLower().Contains(fs.ToLower())) Then bHit = False End If End If If Not bHit Then Exit For Next - Else - bHit = False End If - Else - For Each fs As String In _body - If _useRegex Then - If Not (Regex.IsMatch(post.Name, fs, rgOpt) OrElse - (Not String.IsNullOrEmpty(post.RetweetedBy) AndAlso Regex.IsMatch(post.RetweetedBy, fs, rgOpt)) OrElse - Regex.IsMatch(tBody, fs, rgOpt)) Then bHit = False - Else - If _caseSensitive Then - If Not (post.Name.Contains(fs) OrElse _ - post.RetweetedBy.Contains(fs) OrElse _ - tBody.Contains(fs)) Then bHit = False - Else - If Not (post.Name.ToLower().Contains(fs.ToLower()) OrElse _ - post.RetweetedBy.ToLower().Contains(fs.ToLower()) OrElse _ - tBody.ToLower().Contains(fs.ToLower())) Then bHit = False - End If - End If - If Not bHit Then Exit For - Next End If If _isRt Then If post.RetweetedId = 0 Then bHit = False @@ -2413,41 +2471,49 @@ ) ) Then If _exbody.Count > 0 Then - For Each fs As String In _exbody - If _exuseRegex Then - If Regex.IsMatch(tBody, fs, rgOpt) Then exFlag = True - Else - If _excaseSensitive Then - If tBody.Contains(fs) Then exFlag = True + If _exuseLambda Then + If ExecuteLambdaExpression(_exbody.Item(0), post) Then exFlag = True + Else + For Each fs As String In _exbody + If _exuseRegex Then + If Regex.IsMatch(tBody, fs, rgOpt) Then exFlag = True Else - If tBody.ToLower().Contains(fs.ToLower()) Then exFlag = True + If _excaseSensitive Then + If tBody.Contains(fs) Then exFlag = True + Else + If tBody.ToLower().Contains(fs.ToLower()) Then exFlag = True + End If End If - End If - If exFlag Then Exit For - Next + If exFlag Then Exit For + Next + End If Else exFlag = True End If End If Else - For Each fs As String In _exbody - If _exuseRegex Then - If Regex.IsMatch(post.Name, fs, rgOpt) OrElse - (Not String.IsNullOrEmpty(post.RetweetedBy) AndAlso Regex.IsMatch(post.RetweetedBy, fs, rgOpt)) OrElse - Regex.IsMatch(tBody, fs, rgOpt) Then exFlag = True - Else - If _excaseSensitive Then - If post.Name.Contains(fs) OrElse _ - post.RetweetedBy.Contains(fs) OrElse _ - tBody.Contains(fs) Then exFlag = True + If _exuseLambda Then + If ExecuteLambdaExpression(_exbody.Item(0), post) Then exFlag = True + Else + For Each fs As String In _exbody + If _exuseRegex Then + If Regex.IsMatch(post.Name, fs, rgOpt) OrElse + (Not String.IsNullOrEmpty(post.RetweetedBy) AndAlso Regex.IsMatch(post.RetweetedBy, fs, rgOpt)) OrElse + Regex.IsMatch(tBody, fs, rgOpt) Then exFlag = True Else - If post.Name.ToLower().Contains(fs.ToLower()) OrElse _ - post.RetweetedBy.ToLower().Contains(fs.ToLower()) OrElse _ - tBody.ToLower().Contains(fs.ToLower()) Then exFlag = True + If _excaseSensitive Then + If post.Name.Contains(fs) OrElse _ + post.RetweetedBy.Contains(fs) OrElse _ + tBody.Contains(fs) Then exFlag = True + Else + If post.Name.ToLower().Contains(fs.ToLower()) OrElse _ + post.RetweetedBy.ToLower().Contains(fs.ToLower()) OrElse _ + tBody.ToLower().Contains(fs.ToLower()) Then exFlag = True + End If End If - End If - If exFlag Then Exit For - Next + If exFlag Then Exit For + Next + End If End If End If If _isExRt Then @@ -2501,20 +2567,22 @@ If Me.ExBodyFilter(i) <> other.ExBodyFilter(i) Then Return False Next - Return (Me.MoveFrom = other.MoveFrom) And _ - (Me.SetMark = other.SetMark) And _ - (Me.NameFilter = other.NameFilter) And _ - (Me.SearchBoth = other.SearchBoth) And _ - (Me.SearchUrl = other.SearchUrl) And _ - (Me.UseRegex = other.UseRegex) And _ - (Me.ExNameFilter = other.ExNameFilter) And _ - (Me.ExSearchBoth = other.ExSearchBoth) And _ - (Me.ExSearchUrl = other.ExSearchUrl) And _ - (Me.ExUseRegex = other.ExUseRegex) And _ - (Me.IsRt = other.IsRt) And _ - (Me.Source = other.Source) And _ - (Me.IsExRt = other.IsExRt) And _ - (Me.ExSource = other.ExSource) + Return (Me.MoveFrom = other.MoveFrom) And + (Me.SetMark = other.SetMark) And + (Me.NameFilter = other.NameFilter) And + (Me.SearchBoth = other.SearchBoth) And + (Me.SearchUrl = other.SearchUrl) And + (Me.UseRegex = other.UseRegex) And + (Me.ExNameFilter = other.ExNameFilter) And + (Me.ExSearchBoth = other.ExSearchBoth) And + (Me.ExSearchUrl = other.ExSearchUrl) And + (Me.ExUseRegex = other.ExUseRegex) And + (Me.IsRt = other.IsRt) And + (Me.Source = other.Source) And + (Me.IsExRt = other.IsExRt) And + (Me.ExSource = other.ExSource) And + (Me.UseLambda = other.UseLambda) And + (Me.ExUseLambda = other.ExUseLambda) End Function Public Function CopyTo(ByVal destination As FiltersClass) As FiltersClass @@ -2545,6 +2613,8 @@ destination.Source = Me.Source destination.IsExRt = Me.IsExRt destination.ExSource = Me.ExSource + destination.UseLambda = Me.UseLambda + destination.ExUseLambda = Me.ExUseLambda Return destination End Function @@ -2554,22 +2624,24 @@ End Function Public Overrides Function GetHashCode() As Integer - Return Me.MoveFrom.GetHashCode Xor _ - Me.SetMark.GetHashCode Xor _ - Me.BodyFilter.GetHashCode Xor _ - Me.NameFilter.GetHashCode Xor _ - Me.SearchBoth.GetHashCode Xor _ - Me.SearchUrl.GetHashCode Xor _ - Me.UseRegex.GetHashCode Xor _ - Me.ExBodyFilter.GetHashCode Xor _ - Me.ExNameFilter.GetHashCode Xor _ - Me.ExSearchBoth.GetHashCode Xor _ - Me.ExSearchUrl.GetHashCode Xor _ - Me.ExUseRegex.GetHashCode Xor _ - Me.IsRt.GetHashCode Xor _ - Me.Source.GetHashCode Xor _ - Me.IsExRt.GetHashCode Xor _ - Me.ExSource.GetHashCode + Return Me.MoveFrom.GetHashCode Xor + Me.SetMark.GetHashCode Xor + Me.BodyFilter.GetHashCode Xor + Me.NameFilter.GetHashCode Xor + Me.SearchBoth.GetHashCode Xor + Me.SearchUrl.GetHashCode Xor + Me.UseRegex.GetHashCode Xor + Me.ExBodyFilter.GetHashCode Xor + Me.ExNameFilter.GetHashCode Xor + Me.ExSearchBoth.GetHashCode Xor + Me.ExSearchUrl.GetHashCode Xor + Me.ExUseRegex.GetHashCode Xor + Me.IsRt.GetHashCode Xor + Me.Source.GetHashCode Xor + Me.IsExRt.GetHashCode Xor + Me.ExSource.GetHashCode Xor + Me.UseLambda.GetHashCode Xor + Me.ExUseLambda.GetHashCode End Function End Class Modified: trunk/Tween/Tween.vb =================================================================== --- trunk/Tween/Tween.vb 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/Tween.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -1441,7 +1441,7 @@ Private Sub NotifyNewPosts(ByVal notifyPosts() As PostClass, ByVal soundFile As String, ByVal addCount As Integer, ByVal newMentions As Boolean) If notifyPosts IsNot Nothing AndAlso _ - notifyPosts.All(Function(post) post.Uid.ToString() = tw.UserIdNo OrElse post.Name = tw.Username) Then + notifyPosts.All(Function(post) post.UserId.ToString() = tw.UserIdNo OrElse post.Name = tw.Username) Then Exit Sub End If @@ -1622,7 +1622,7 @@ Private Function JudgeColor(ByVal BasePost As PostClass, ByVal TargetPost As PostClass) As Color Dim cl As Color - If TargetPost.Id = BasePost.InReplyToId Then + If TargetPost.Id = BasePost.InReplyToStatusId Then '@先 cl = _clAtTo ElseIf TargetPost.IsMe Then @@ -2771,7 +2771,7 @@ End If If _statuses.Tabs(ListTab.SelectedTab.Text).TabType = TabUsageType.PublicSearch _ OrElse Not Me.ExistCurrentPost _ - OrElse Not _curPost.InReplyToId > 0 Then + OrElse Not _curPost.InReplyToStatusId > 0 Then RepliedStatusOpenMenuItem.Enabled = False Else RepliedStatusOpenMenuItem.Enabled = True @@ -4737,7 +4737,7 @@ sb.AppendFormat("Id : {0}<br>", _curPost.Id.ToString) 'sb.AppendFormat("ImageIndex : {0}<br>", _curPost.ImageIndex.ToString) sb.AppendFormat("ImageUrl : {0}<br>", _curPost.ImageUrl) - sb.AppendFormat("InReplyToId : {0}<br>", _curPost.InReplyToId.ToString) + sb.AppendFormat("InReplyToStatusId : {0}<br>", _curPost.InReplyToStatusId.ToString) sb.AppendFormat("InReplyToUser : {0}<br>", _curPost.InReplyToUser) sb.AppendFormat("IsDM : {0}<br>", _curPost.IsDm.ToString) sb.AppendFormat("IsFav : {0}<br>", _curPost.IsFav.ToString) @@ -4758,7 +4758,7 @@ sb.AppendFormat("(PlainText) : <xmp>{0}</xmp><br>", _curPost.OriginalData) sb.AppendFormat("PDate : {0}<br>", _curPost.PDate.ToString) sb.AppendFormat("Source : {0}<br>", _curPost.Source) - sb.AppendFormat("Uid : {0}<br>", _curPost.Uid) + sb.AppendFormat("UserId : {0}<br>", _curPost.UserId) sb.AppendFormat("FilterHit : {0}<br>", _curPost.FilterHit) sb.AppendFormat("RetweetedBy : {0}<br>", _curPost.RetweetedBy) sb.AppendFormat("RetweetedId : {0}<br>", _curPost.RetweetedId) @@ -5694,11 +5694,11 @@ Dim curTabClass As TabClass = _statuses.Tabs(_curTab.Text) - If curTabClass.TabType = TabUsageType.PublicSearch AndAlso _curPost.InReplyToId = 0 AndAlso _curPost.Data.Contains("@") Then + If curTabClass.TabType = TabUsageType.PublicSearch AndAlso _curPost.InReplyToStatusId = 0 AndAlso _curPost.Data.Contains("@") Then Dim post As PostClass = Nothing Dim r As String = tw.GetStatusApi(False, _curPost.Id, post) If r = "" AndAlso post IsNot Nothing Then - _curPost.InReplyToId = post.InReplyToId + _curPost.InReplyToStatusId = post.InReplyToStatusId _curPost.InReplyToUser = post.InReplyToUser _curPost.IsReply = post.IsReply _itemCache = Nothing @@ -5708,16 +5708,16 @@ End If End If - If Not (Me.ExistCurrentPost AndAlso _curPost.InReplyToUser IsNot Nothing AndAlso _curPost.InReplyToId > 0) Then Return + If Not (Me.ExistCurrentPost AndAlso _curPost.InReplyToUser IsNot Nothing AndAlso _curPost.InReplyToStatusId > 0) Then Return If replyChains Is Nothing OrElse (replyChains.Count > 0 AndAlso replyChains.Peek().InReplyToId <> _curPost.Id) Then replyChains = New Stack(Of ReplyChain) End If - replyChains.Push(New ReplyChain(_curPost.Id, _curPost.InReplyToId, _curTab)) + replyChains.Push(New ReplyChain(_curPost.Id, _curPost.InReplyToStatusId, _curTab)) Dim inReplyToIndex As Integer Dim inReplyToTabName As String - Dim inReplyToId As Long = _curPost.InReplyToId + Dim inReplyToId As Long = _curPost.InReplyToStatusId Dim inReplyToUser As String = _curPost.InReplyToUser Dim curTabPosts As Dictionary(Of Long, PostClass) @@ -5741,7 +5741,7 @@ inReplyToIndex = inReplyPost.Index Catch ex As InvalidOperationException Dim post As PostClass = Nothing - Dim r As String = tw.GetStatusApi(False, _curPost.InReplyToId, post) + Dim r As String = tw.GetStatusApi(False, _curPost.InReplyToStatusId, post) If r = "" AndAlso post IsNot Nothing Then post.IsRead = True _statuses.AddPost(post) @@ -5781,10 +5781,10 @@ Dim curTabPosts As Dictionary(Of Long, PostClass) = DirectCast(IIf(curTabClass.IsInnerStorageTabType, curTabClass.Posts, _statuses.Posts), Dictionary(Of Long, PostClass)) If parallel Then - If _curPost.InReplyToId <> 0 Then + If _curPost.InReplyToStatusId <> 0 Then Dim posts = From t In _statuses.Tabs From p In DirectCast(IIf(t.Value.IsInnerStorageTabType, t.Value.Posts, _statuses.Posts), Dictionary(Of Long, PostClass)) - Where p.Value.Id <> _curPost.Id AndAlso p.Value.InReplyToId = _curPost.InReplyToId + Where p.Value.Id <> _curPost.Id AndAlso p.Value.InReplyToStatusId = _curPost.InReplyToStatusId Let indexOf = t.Value.IndexOf(p.Value.Id) Where indexOf > -1 Order By IIf(isForward, indexOf, indexOf * -1) @@ -5813,7 +5813,7 @@ If replyChains Is Nothing OrElse replyChains.Count < 1 Then Dim posts = From t In _statuses.Tabs From p In DirectCast(IIf(t.Value.IsInnerStorageTabType, t.Value.Posts, _statuses.Posts), Dictionary(Of Long, PostClass)) - Where p.Value.InReplyToId = _curPost.Id + Where p.Value.InReplyToStatusId = _curPost.Id Let indexOf = t.Value.IndexOf(p.Value.Id) Where indexOf > -1 Order By indexOf @@ -7458,22 +7458,22 @@ End Sub Private Sub doRepliedStatusOpen() - If Me.ExistCurrentPost AndAlso _curPost.InReplyToUser IsNot Nothing AndAlso _curPost.InReplyToId > 0 Then + If Me.ExistCurrentPost AndAlso _curPost.InReplyToUser IsNot Nothing AndAlso _curPost.InReplyToStatusId > 0 Then If My.Computer.Keyboard.ShiftKeyDown Then - OpenUriAsync("http://twitter.com/" + _curPost.InReplyToUser + "/status/" + _curPost.InReplyToId.ToString()) + OpenUriAsync("http://twitter.com/" + _curPost.InReplyToUser + "/status/" + _curPost.InReplyToStatusId.ToString()) Exit Sub End If - If _statuses.ContainsKey(_curPost.InReplyToId) Then - Dim repPost As PostClass = _statuses.Item(_curPost.InReplyToId) + If _statuses.ContainsKey(_curPost.InReplyToStatusId) Then + Dim repPost As PostClass = _statuses.Item(_curPost.InReplyToStatusId) MessageBox.Show(repPost.Name + " / " + repPost.Nickname + " (" + repPost.PDate.ToString() + ")" + Environment.NewLine + repPost.Data) Else For Each tb As TabClass In _statuses.GetTabsByType(TabUsageType.Lists Or TabUsageType.PublicSearch) - If tb Is Nothing OrElse Not tb.Contains(_curPost.InReplyToId) Then Exit For - Dim repPost As PostClass = _statuses.Item(_curPost.InReplyToId) + If tb Is Nothing OrElse Not tb.Contains(_curPost.InReplyToStatusId) Then Exit For + Dim repPost As PostClass = _statuses.Item(_curPost.InReplyToStatusId) MessageBox.Show(repPost.Name + " / " + repPost.Nickname + " (" + repPost.PDate.ToString() + ")" + Environment.NewLine + repPost.Data) Exit Sub Next - OpenUriAsync("http://twitter.com/" + _curPost.InReplyToUser + "/status/" + _curPost.InReplyToId.ToString()) + OpenUriAsync("http://twitter.com/" + _curPost.InReplyToUser + "/status/" + _curPost.InReplyToStatusId.ToString()) End If End If End Sub @@ -9182,7 +9182,7 @@ End If If _statuses.Tabs(ListTab.SelectedTab.Text).TabType = TabUsageType.PublicSearch _ OrElse Not Me.ExistCurrentPost _ - OrElse Not _curPost.InReplyToId > 0 Then + OrElse Not _curPost.InReplyToStatusId > 0 Then OpenRepSourceOpMenuItem.Enabled = False Else OpenRepSourceOpMenuItem.Enabled = True Modified: trunk/Tween/Tween.vbproj =================================================================== --- trunk/Tween/Tween.vbproj 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/Tween.vbproj 2011-01-13 14:03:38 UTC (rev 1351) @@ -142,6 +142,7 @@ <Compile Include="DetailsListView.vb"> <SubType>Component</SubType> </Compile> + <Compile Include="Dynamic.vb" /> <Compile Include="EventViewerDialog.Designer.vb"> <DependentUpon>EventViewerDialog.vb</DependentUpon> </Compile> @@ -492,6 +493,7 @@ <None Include="Resources\4r.ico" /> </ItemGroup> <ItemGroup> + <Content Include="DynamicQuery.txt" /> <Content Include="Resources\1o.ico" /> <Content Include="tips.txt" /> <None Include="Resources\5g.ico" /> Modified: trunk/Tween/Twitter.vb =================================================================== --- trunk/Tween/Twitter.vb 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween/Twitter.vb 2011-01-13 14:03:38 UTC (rev 1351) @@ -1459,14 +1459,15 @@ 'Source取得(htmlの場合は、中身を取り出し) post.Source = retweeted.Source 'Reply先 - Long.TryParse(retweeted.InReplyToStatusId, post.InReplyToId) + Long.TryParse(retweeted.InReplyToStatusId, post.InReplyToStatusId) post.InReplyToUser = retweeted.InReplyToScreenName + Long.TryParse(status.InReplyToUserId, post.InReplyToUserId) post.IsFav = TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).Contains(post.RetweetedId) '以下、ユーザー情報 Dim user As TwitterDataModel.User = retweeted.User - post.Uid = user.Id + post.UserId = user.Id post.Name = user.ScreenName post.Nickname = user.Name post.ImageUrl = user.ProfileImageUrl @@ -1481,21 +1482,22 @@ post.Data = status.Text 'Source取得(htmlの場合は、中身を取り出し) post.Source = status.Source - Long.TryParse(status.InReplyToStatusId, post.InReplyToId) + Long.TryParse(status.InReplyToStatusId, post.InReplyToStatusId) post.InReplyToUser = status.InReplyToScreenName + Long.TryParse(status.InReplyToUserId, post.InReplyToUserId) post.IsFav = status.Favorited '以下、ユーザー情報 Dim user As TwitterDataModel.User = status.User - post.Uid = user.Id + post.UserId = user.Id post.Name = user.ScreenName post.Nickname = user.Name post.ImageUrl = user.ProfileImageUrl post.IsProtect = user.Protected post.IsMe = post.Name.ToLower.Equals(_uid) - If post.IsMe Then _UserIdNo = post.Uid.ToString + If post.IsMe Then _UserIdNo = post.UserId.ToString End If 'HTMLに整形 post.OriginalData = CreateHtmlAnchor(post.Data, post.ReplyToList) @@ -1510,7 +1512,7 @@ If post.IsMe Then post.IsOwl = False Else - If followerId.Count > 0 Then post.IsOwl = Not followerId.Contains(post.Uid) + If followerId.Count > 0 Then post.IsOwl = Not followerId.Contains(post.UserId) End If post.IsDm = False @@ -1564,8 +1566,13 @@ Dim res As HttpStatusCode Dim content As String = "" Dim page As Integer = 0 + Dim count As Integer = AppendSettingDialog.Instance.CountApi Dim count As Integer If AppendSettingDialog.Instance.UseAdditionalCount Then + If more AndAlso AppendSettingDialog.Instance.MoreCountApi <> 0 Then + count = AppendSettingDialog.Instance.MoreCountApi + ElseIf startup AndAlso AppendSettingDialog.Instance.FirstCountApi <> 0 Then + count = AppendSettingDialog.Instance.FirstCountApi count = AppendSettingDialog.Instance.ListCountApi If count = 0 Then If more AndAlso AppendSettingDialog.Instance.MoreCountApi <> 0 Then @@ -1607,10 +1614,10 @@ Dim tmpPost As PostClass = relPosts(0) Dim lastPost As PostClass = Nothing Do While tmpPost IsNot Nothing - If tmpPost.InReplyToId = 0 Then Return Nothing + If tmpPost.InReplyToStatusId = 0 Then Return Nothing lastPost = tmpPost Dim replyToPost = From p In relPosts - Where p.Id = tmpPost.InReplyToId + Where p.Id = tmpPost.InReplyToStatusId Select p tmpPost = replyToPost.FirstOrDefault() Loop @@ -1620,10 +1627,10 @@ Public Function GetRelatedResult(ByVal read As Boolean, ByVal tab As TabClass) As String Dim rslt As String = "" Dim relPosts As New List(Of PostClass) - If tab.RelationTargetPost.Data.Contains("@") AndAlso tab.RelationTargetPost.InReplyToId = 0 Then + If tab.RelationTargetPost.Data.Contains("@") AndAlso tab.RelationTargetPost.InReplyToStatusId = 0 Then '検索結果対応 Dim p As PostClass = TabInformations.GetInstance.Item(tab.RelationTargetPost.Id) - If p IsNot Nothing AndAlso p.InReplyToId > 0 Then + If p IsNot Nothing AndAlso p.InReplyToStatusId > 0 Then tab.RelationTargetPost = p Else rslt = Me.GetStatusApi(read, tab.RelationTargetPost.Id, p) @@ -1692,8 +1699,8 @@ Dim replyToItem As PostClass = Nothing Dim replyToUserName As String = targetItem.InReplyToUser - If targetItem.InReplyToId > 0 AndAlso TabInformations.GetInstance.Item(targetItem.InReplyToId) IsNot Nothing Then - replyToItem = TabInformations.GetInstance.Item(targetItem.InReplyToId).Copy + If targetItem.InReplyToStatusId > 0 AndAlso TabInformations.GetInstance.Item(targetItem.InReplyToStatusId) IsNot Nothing Then + replyToItem = TabInformations.GetInstance.Item(targetItem.InReplyToStatusId).Copy replyToItem.IsRead = read If replyToItem.IsMe AndAlso Not read AndAlso _readOwnPost Then replyToItem.IsRead = True replyToItem.RelTabName = tab.TabName @@ -1704,7 +1711,7 @@ For Each result As TwitterDataModel.RelatedTweet In relatedData.Results Dim item As PostClass = CreatePostsFromStatusData(result.Status) If item Is Nothing Then Continue For - If targetItem.InReplyToId = item.Id Then + If targetItem.InReplyToStatusId = item.Id Then replyToItem = Nothing replyAdded = True End If @@ -1717,10 +1724,10 @@ Next If replyToItem IsNot Nothing Then relatedPosts.Add(replyToItem) - ElseIf targetItem.InReplyToId > 0 AndAlso Not replyAdded Then + ElseIf targetItem.InReplyToStatusId > 0 AndAlso Not replyAdded Then Dim p As PostClass = Nothing Dim rslt As String = "" - rslt = GetStatusApi(read, targetItem.InReplyToId, p) + rslt = GetStatusApi(read, targetItem.InReplyToStatusId, p) If String.IsNullOrEmpty(rslt) Then p.IsRead = read p.RelTabName = tab.TabName @@ -1801,13 +1808,14 @@ post.Data = xentry.Item("title").InnerText 'Source取得(htmlの場合は、中身を取り出し) post.Source = xentry.Item("twitter:source").InnerText - post.InReplyToId = 0 + post.InReplyToStatusId = 0 post.InReplyToUser = "" + post.InReplyToUserId = 0 post.IsFav = False '以下、ユーザー情報 Dim xUentry As XmlElement = CType(xentry.SelectSingleNode("./search:author", nsmgr), XmlElement) - post.Uid = 0 + post.UserId = 0 post.Name = xUentry.Item("name").InnerText.Split(" "c)(0).Trim post.Nickname = xUentry.Item("name").InnerText.Substring(post.Name.Length).Trim If post.Nickname.Length > 2 Then @@ -1929,7 +1937,7 @@ End If End If - post.Uid = user.Id + post.UserId = user.Id post.Name = user.ScreenName post.Nickname = user.Name post.ImageUrl = user.ProfileImageUrl @@ -2061,13 +2069,14 @@ 'Source取得(htmlの場合は、中身を取り出し) post.Source = retweeted.Source 'Reply先 - Long.TryParse(retweeted.InReplyToStatusId, post.InReplyToId) + Long.TryParse(retweeted.InReplyToStatusId, post.InReplyToStatusId) post.InReplyToUser = retweeted.InReplyToScreenName + Long.TryParse(retweeted.InReplyToUserId, post.InReplyToUserId) post.IsFav = retweeted.Favorited '以下、ユーザー情報 Dim user As TwitterDataModel.User = retweeted.User - post.Uid = user.Id + post.UserId = user.Id post.Name = user.ScreenName post.Nickname = user.Name post.ImageUrl = user.ProfileImageUrl @@ -2084,20 +2093,21 @@ post.Data = status.Text 'Source取得(htmlの場合は、中身を取り出し) post.Source = status.Source - Long.TryParse(status.InReplyToStatusId, post.InReplyToId) + Long.TryParse(status.InReplyToStatusId, post.InReplyToStatusId) post.InReplyToUser = status.InReplyToScreenName + Long.TryParse(status.InReplyToUserId, post.InReplyToUserId) post.IsFav = status.Favorited '以下、ユーザー情報 Dim user As TwitterDataModel.User = status.User - post.Uid = user.Id + post.UserId = user.Id post.Name = user.ScreenName post.Nickname = user.Name post.ImageUrl = user.ProfileImageUrl post.IsProtect = user.Protected post.IsMe = post.Name.ToLower.Equals(_uid) - If post.IsMe Then _UserIdNo = post.Uid.ToString + If post.IsMe Then _UserIdNo = post.UserId.ToString End If 'HTMLに整形 post.OriginalData = CreateHtmlAnchor(post.Data, post.ReplyToList) @@ -2113,7 +2123,7 @@ If post.IsMe Then post.IsOwl = False Else - If followerId.Count > 0 Then post.IsOwl = Not followerId.Contains(post.Uid) + If followerId.Count > 0 Then post.IsOwl = Not followerId.Contains(post.UserId) End If post.IsDm = False Modified: trunk/Tween.sln =================================================================== --- trunk/Tween.sln 2011-01-13 13:46:48 UTC (rev 1350) +++ trunk/Tween.sln 2011-01-13 14:03:38 UTC (rev 1351) @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Basic Express 2010 +# Visual Studio 2010 Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Tween", "Tween\Tween.vbproj", "{41B54F21-5442-47D4-80F0-872D56D9E1FD}" EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TweenUp", "TweenUp\TweenUp.vbproj", "{EF3CD31B-6669-4932-A0E0-1EA44E4BCE89}"