From 2bab53794c21d24a6357025e14fa5031aa26e251 Mon Sep 17 00:00:00 2001 From: kiri_feather Date: Wed, 1 Dec 2010 09:14:29 +0000 Subject: [PATCH] =?utf8?q?UserStream=E3=83=96=E3=83=A9=E3=83=B3=E3=83=81?= =?utf8?q?=E3=82=92=E3=83=9E=E3=83=BC=E3=82=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.sourceforge.jp/svnroot/tween/trunk@1145 e39ad16e-3079-482e-bb30-4b4d378143b6 --- Tween/Connection/HttpConnectionBasic.vb | 49 + Tween/Connection/HttpConnectionOAuth.vb | 48 + Tween/Connection/HttpTwitter.vb | 83 +- Tween/Connection/IHttpConnection.vb | 9 +- Tween/DataModel.vb | 218 +++ Tween/MyCommon.vb | 1 + Tween/Tween.Designer.vb | 132 +- Tween/Tween.resx | 2445 +++++++++++++++---------------- Tween/Tween.vb | 175 +++ Tween/Tween.vbproj | 7 + Tween/Twitter.vb | 848 ++++++++--- 11 files changed, 2493 insertions(+), 1522 deletions(-) create mode 100644 Tween/DataModel.vb diff --git a/Tween/Connection/HttpConnectionBasic.vb b/Tween/Connection/HttpConnectionBasic.vb index 1f6e8fc0..4cb0da06 100644 --- a/Tween/Connection/HttpConnectionBasic.vb +++ b/Tween/Connection/HttpConnectionBasic.vb @@ -26,6 +26,12 @@ Public Class HttpConnectionBasic ''' Private credential As String = "" + + ''' + '''認証完了時の応答からuserIdentKey情報に基づいて取得するユーザー情報 + ''' + Private streamReq As HttpWebRequest = Nothing + ''' '''BASIC認証で指定のURLとHTTP通信を行い、結果を返す ''' @@ -98,6 +104,49 @@ Public Class HttpConnectionBasic Return code End Function + ''' + '''OAuth認証で指定のURLとHTTP通信を行い、ストリームを返す + ''' + '''HTTP通信メソッド(GET/HEAD/POST/PUT/DELETE) + '''通信先URI + '''GET時のクエリ、またはPOST時のエンティティボディ + '''[OUT]HTTP応答のボディストリーム + '''[IN/OUT]HTTP応答のヘッダ情報。必要なヘッダ名を事前に設定しておくこと + '''HTTP応答のステータスコード + Public Function GetContent(ByVal method As String, _ + ByVal requestUri As Uri, _ + ByVal param As Dictionary(Of String, String), _ + ByRef content As Stream) As HttpStatusCode Implements IHttpConnection.GetContent + '認証済かチェック + If String.IsNullOrEmpty(Me.credential) Then Return HttpStatusCode.Unauthorized + + streamReq = CreateRequest(method, requestUri, param, False) + + 'BASIC認証用ヘッダを付加 + AppendApiInfo(streamReq) + + Try + Dim webRes As HttpWebResponse = CType(streamReq.GetResponse(), HttpWebResponse) + content = webRes.GetResponseStream() + Return webRes.StatusCode + Catch ex As WebException + If ex.Status = WebExceptionStatus.ProtocolError Then + Dim res As HttpWebResponse = DirectCast(ex.Response, HttpWebResponse) + Return res.StatusCode + End If + Throw ex + End Try + + End Function + + Public Sub RequestAbort() Implements IHttpConnection.RequestAbort + Try + If streamReq IsNot Nothing Then + streamReq.Abort() + End If + Catch ex As Exception + End Try + End Sub ''' '''BASIC認証とREST APIで必要なヘッダを付加 diff --git a/Tween/Connection/HttpConnectionOAuth.vb b/Tween/Connection/HttpConnectionOAuth.vb index e0ba8323..f329af8b 100644 --- a/Tween/Connection/HttpConnectionOAuth.vb +++ b/Tween/Connection/HttpConnectionOAuth.vb @@ -57,6 +57,11 @@ Public Class HttpConnectionOAuth Private authorizedUsername As String = "" ''' + '''認証完了時の応答からuserIdentKey情報に基づいて取得するユーザー情報 + ''' + Private streamReq As HttpWebRequest = Nothing + + ''' '''OAuth認証で指定のURLとHTTP通信を行い、結果を返す ''' '''HTTP通信メソッド(GET/HEAD/POST/PUT/DELETE) @@ -129,6 +134,49 @@ Public Class HttpConnectionOAuth Return code End Function + ''' + '''OAuth認証で指定のURLとHTTP通信を行い、ストリームを返す + ''' + '''HTTP通信メソッド(GET/HEAD/POST/PUT/DELETE) + '''通信先URI + '''GET時のクエリ、またはPOST時のエンティティボディ + '''[OUT]HTTP応答のボディストリーム + '''HTTP応答のステータスコード + Public Function GetContent(ByVal method As String, _ + ByVal requestUri As Uri, _ + ByVal param As Dictionary(Of String, String), _ + ByRef content As Stream) As HttpStatusCode Implements IHttpConnection.GetContent + '認証済かチェック + If String.IsNullOrEmpty(token) Then Return HttpStatusCode.Unauthorized + + streamReq = CreateRequest(method, requestUri, param, False) + 'OAuth認証ヘッダを付加 + AppendOAuthInfo(streamReq, param, token, tokenSecret) + + Try + Dim webRes As HttpWebResponse = CType(streamReq.GetResponse(), HttpWebResponse) + content = webRes.GetResponseStream() + Return webRes.StatusCode + Catch ex As WebException + If ex.Status = WebExceptionStatus.ProtocolError Then + Dim res As HttpWebResponse = DirectCast(ex.Response, HttpWebResponse) + Return res.StatusCode + End If + Throw ex + End Try + + End Function + + Public Sub RequestAbort() Implements IHttpConnection.RequestAbort + Try + If streamReq IsNot Nothing Then + streamReq.Abort() + End If + Catch ex As Exception + End Try + End Sub + + #Region "認証処理" ''' '''OAuth認証の開始要求(リクエストトークン取得)。PIN入力用の前段 diff --git a/Tween/Connection/HttpTwitter.vb b/Tween/Connection/HttpTwitter.vb index e7f4a40f..95b770a9 100644 --- a/Tween/Connection/HttpTwitter.vb +++ b/Tween/Connection/HttpTwitter.vb @@ -1,7 +1,10 @@ Imports System.Net Imports System.IO +Imports System.Web +Imports System.Threading Public Class HttpTwitter + Implements ICloneable 'OAuth関連 ''' @@ -33,10 +36,6 @@ Public Class HttpTwitter End Enum Private connectionType As AuthMethod = AuthMethod.Basic - Public Sub New() - TwitterApiInfo.Initialize() - End Sub - Public Sub Initialize(ByVal accessToken As String, _ ByVal accessTokenSecret As String, _ ByVal username As String) @@ -51,7 +50,6 @@ Public Class HttpTwitter tk = accessToken tks = accessTokenSecret un = username - TwitterApiInfo.Initialize() End If con.Initialize(ConsumerKey, ConsumerSecret, accessToken, accessTokenSecret, username, "screen_name") httpCon = con @@ -68,7 +66,6 @@ Public Class HttpTwitter ' 以前の認証状態よりひとつでも変化があったらhttpヘッダより読み取ったカウントは初期化 un = username pw = password - TwitterApiInfo.Initialize() End If con.Initialize(username, password) httpCon = con @@ -321,8 +318,32 @@ Public Class HttpTwitter param.Add("since_id", since_id.ToString()) End If + param.Add("include_entities", "true") + Return httpCon.GetContent(GetMethod, _ - CreateTwitterUri("/1/statuses/home_timeline.xml"), _ + CreateTwitterUri("/1/statuses/home_timeline.json"), _ + param, _ + content, _ + TwitterApiInfo.HttpHeaders, _ + AddressOf GetApiCallback) + End Function + + Public Function PublicTimeline(ByVal count As Integer, ByVal max_id As Long, ByVal since_id As Long, ByRef content As String) As HttpStatusCode + Dim param As New Dictionary(Of String, String) + If count > 0 Then + param.Add("count", count.ToString()) + End If + If max_id > 0 Then + param.Add("max_id", max_id.ToString()) + End If + If since_id > 0 Then + param.Add("since_id", since_id.ToString()) + End If + + param.Add("include_entities", "true") + + Return httpCon.GetContent(GetMethod, _ + CreateTwitterUri("/1/statuses/public_timeline.json"), _ param, _ content, _ TwitterApiInfo.HttpHeaders, _ @@ -341,8 +362,10 @@ Public Class HttpTwitter param.Add("since_id", since_id.ToString()) End If + param.Add("include_entities", "true") + Return httpCon.GetContent(GetMethod, _ - CreateTwitterUri("/1/statuses/mentions.xml"), _ + CreateTwitterUri("/1/statuses/mentions.json"), _ param, _ content, _ TwitterApiInfo.HttpHeaders, _ @@ -362,7 +385,7 @@ Public Class HttpTwitter End If Return httpCon.GetContent(GetMethod, _ - CreateTwitterUri("/1/direct_messages.xml"), _ + CreateTwitterUri("/1/direct_messages.json"), _ Nothing, _ content, _ TwitterApiInfo.HttpHeaders, _ @@ -382,7 +405,7 @@ Public Class HttpTwitter End If Return httpCon.GetContent(GetMethod, _ - CreateTwitterUri("/1/direct_messages/sent.xml"), _ + CreateTwitterUri("/1/direct_messages/sent.json"), _ Nothing, _ content, _ TwitterApiInfo.HttpHeaders, _ @@ -394,7 +417,7 @@ Public Class HttpTwitter If count <> 20 Then param.Add("count", count.ToString()) Return httpCon.GetContent(GetMethod, _ - CreateTwitterUri("/1/favorites.xml"), _ + CreateTwitterUri("/1/favorites.json"), _ param, _ content, _ TwitterApiInfo.HttpHeaders, _ @@ -632,9 +655,8 @@ Public Class HttpTwitter #Region "Proxy API" Private Shared _twitterUrl As String = "api.twitter.com" - 'Private TwitterUrl As String = "sorayukigtap.appspot.com/api" Private Shared _TwitterSearchUrl As String = "search.twitter.com" - 'Private TwitterSearchUrl As String = "sorayukigtap.appspot.com/search" + Private Shared _twitterStreamUrl As String = "userstream.twitter.com" Private Function CreateTwitterUri(ByVal path As String) As Uri Return New Uri(String.Format("{0}{1}{2}", _protocol, _twitterUrl, path)) @@ -644,6 +666,10 @@ Public Class HttpTwitter Return New Uri(String.Format("{0}{1}{2}", _protocol, _TwitterSearchUrl, path)) End Function + Private Function CreateTwitterStreamUri(ByVal path As String) As Uri + Return New Uri(String.Format("{0}{1}{2}", "https://", _twitterStreamUrl, path)) + End Function + Public Shared WriteOnly Property TwitterUrl() As String Set(ByVal value As String) _twitterUrl = value @@ -663,4 +689,35 @@ Public Class HttpTwitter TwitterApiInfo.ParseHttpHeaders(TwitterApiInfo.HttpHeaders) End If End Sub + + Public Function UserStream(ByRef content As Stream, ByVal allAtReplies As Boolean, ByVal trackwords As String) As HttpStatusCode + Dim param As New Dictionary(Of String, String) + + If allAtReplies Then + param.Add("replies", "all") + End If + + If Not String.IsNullOrEmpty(trackwords) Then + param.Add("track", trackwords) + End If + + Return httpCon.GetContent(GetMethod, _ + CreateTwitterStreamUri("/2/user.json"), _ + param, _ + content) + End Function + + Public Sub RequestAbort() + httpCon.RequestAbort() + End Sub + + Public Function Clone() As Object Implements System.ICloneable.Clone + Dim myCopy As New HttpTwitter + If Me.connectionType = AuthMethod.Basic Then + myCopy.Initialize(Me.AuthenticatedUsername, Me.Password) + Else + myCopy.Initialize(Me.AccessToken, Me.AccessTokenSecret, Me.AuthenticatedUsername) + End If + Return myCopy + End Function End Class diff --git a/Tween/Connection/IHttpConnection.vb b/Tween/Connection/IHttpConnection.vb index 1ae85715..fba58bf3 100644 --- a/Tween/Connection/IHttpConnection.vb +++ b/Tween/Connection/IHttpConnection.vb @@ -6,6 +6,11 @@ Public Interface IHttpConnection Function GetContent(ByVal method As String, _ ByVal requestUri As Uri, _ ByVal param As Dictionary(Of String, String), _ + ByRef content As Stream) As HttpStatusCode + + Function GetContent(ByVal method As String, _ + ByVal requestUri As Uri, _ + ByVal param As Dictionary(Of String, String), _ ByRef content As String, _ ByVal headerInfo As Dictionary(Of String, String), _ ByVal callback As CallbackDelegate) As HttpStatusCode @@ -18,9 +23,11 @@ Public Interface IHttpConnection ByVal headerInfo As Dictionary(Of String, String), _ ByVal callback As CallbackDelegate) As HttpStatusCode + Sub RequestAbort() + Function Authenticate(ByVal url As Uri, ByVal username As String, ByVal password As String) As HttpStatusCode - ReadOnly Property AuthUsername() As String +ReadOnly Property AuthUsername() As String ''' ''' APIメソッドの処理が終了し呼び出し元へ戻る直前に呼ばれるデリゲート ''' diff --git a/Tween/DataModel.vb b/Tween/DataModel.vb new file mode 100644 index 00000000..1199f468 --- /dev/null +++ b/Tween/DataModel.vb @@ -0,0 +1,218 @@ +Imports System.Runtime.InteropServices +Imports System.Runtime.Serialization + +Public Class TwitterDataModel + + _ + Public Class Urls + Public Urls As String + Public Indices(2) As Integer + End Class + + _ + Public Class Hashtags + Public Indices(2) As Integer + Public Text As String + End Class + + _ + Public Class UserMentions + Public Indices(2) As Integer + Public ScreenName As String + Public Name As String + Public Id As Int64 + End Class + + _ + Public Class Entities + Public Urls() As Urls + Public Hashtags() As Hashtags + Public UserMentions() As UserMentions + End Class + + _ + Public Class User + Public StatusesCount As Int64 + Public ProfileSidebarFillColor As String + Public ShowAllInlineMedia As Boolean + Public ProfileUseBackgroundImage As Boolean + Public ContributorsEnabled As Boolean + Public ProfileSidebarBorderColor As String + Public Location As String + Public GeoEnabled As Boolean + Public Description As String + Public FriendsCount As Integer + Public Verified As Boolean + Public FavouritesCount As Integer + Public CreatedAt As String + Public ProfileBackgroundColor As String + Public FollowRequestSent As String + Public TimeZone As String + Public FollowersCount As Integer + Public Url As String + Public ProfileImageUrl As String + Public Notifications As String + Public ProfileTextColor As String + Public [Protected] As Boolean + Public IdStr As String + Public Lang As String + Public ProfileBackgroundImageUrl As String + Public ScreenName As String + Public Name As String + Public Following As String + Public ProfileLinkColor As String + Public Id As Int64 + Public ListedCount As Integer + Public ProfileBackgroundTile As Boolean + Public UtcOffset As String + Public Place As Place + End Class + + _ + Public Class Coordinates + Public Type As String + Public Coordinates(2) As Double + End Class + + _ + Public Class Geo + Public Type As String + Public Coordinates(2) As Double + End Class + + _ + Public Class BoundingBox + Public Type As String + Public Coordinates As Double()()() + End Class + + _ + Public Class Attributes + Public StreetAddress As String + End Class + + _ + Public Class Place + Public Url As String + Public BoundingBox As BoundingBox + Public StreetAddress As String + Public FullName As String + Public Name As String + ' Public attributes As attributes + Public CountryCode As String + Public Id As String + Public Country As String + Public PlaceType As String + End Class + + _ + Public Class RetweetedStatus + Public Coordinates As Coordinates + Public Geo As Geo + Public InReplyToUserId As String + Public Source As String + Public User As User + Public InReplyToScreenName As String + Public CreatedAt As String + Public Contributors As Integer() + Public Favorited As Boolean + Public Truncated As Boolean + Public Id As Int64 + Public Annotations As String + Public Place As Place + Public InReplyToStatusId As String + Public Text As String + End Class + + _ + Public Class Status + Public InReplyToStatusIdStr As String + Public Contributors As Integer() + Public InReplyToScreenName As String + Public InReplyToStatusId As String + Public InReplyToUserIdStr As String + Public RetweetCount As String + Public CreatedAt As String + Public Geo As Geo + Public Retweeted As Boolean + Public InReplyToUserId As String + Public Source As String + Public IdStr As String + Public Coordinates As Coordinates + Public Truncated As Boolean + Public Place As Place + Public User As User + Public RetweetedStatus As RetweetedStatus + Public Id As Int64 + Public Favorited As Boolean + Public Text As String + End Class + + _ + Public Class Directmessage + Public CreatedAt As String + Public SenderId As Int64 + Public SenderScreenName As String + Public Sender As User + Public IdStr As String + Public Recipient As User + Public RecipientScreenName As String + Public RecipientId As Int64 + Public Id As Int64 + Public Text As String + End Class + + _ + Public Class Friendsevent + Public Friends As Int64() + End Class + + _ + Public Class DeletedStatusContent + Public Id As Int64 + Public UserId As Int64 + End Class + + _ + Public Class DeletedStatus + Public Status As DeletedStatusContent + End Class + + _ + Public Class DeleteEvent + Public [Event] As DeletedStatus + End Class + + _ + Public Class DeletedDirectmessage + Public Directmessage As DeletedStatusContent + End Class + + _ + Public Class DeleteDirectmessageEvent + Public [Event] As DeletedDirectmessage + End Class + _ + Public Class DirectmessageEvent + Public Directmessage As Directmessage + End Class + + _ + Public Class TrackCount + Public Track As Integer + End Class + + _ + Public Class LimitEvent + Public Limit As TrackCount + End Class + + _ + Public Class EventData + Public Target As User + Public TargetObject As Status + Public CreatedAt As String + Public [Event] As String + Public Source As User + End Class +End Class diff --git a/Tween/MyCommon.vb b/Tween/MyCommon.vb index 702552d6..3b5c6d21 100644 --- a/Tween/MyCommon.vb +++ b/Tween/MyCommon.vb @@ -117,6 +117,7 @@ Public Module MyCommon PublicSearch '公式検索 List 'Lists Related '関連発言 + UserStream 'UserStream ''' ErrorState 'エラー表示のみで後処理終了(認証エラー時など) End Enum diff --git a/Tween/Tween.Designer.vb b/Tween/Tween.Designer.vb index 342d6b70..132affbf 100644 --- a/Tween/Tween.Designer.vb +++ b/Tween/Tween.Designer.vb @@ -149,12 +149,13 @@ Partial Class TweenMain Me.RtUnOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.QtOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator25 = New System.Windows.Forms.ToolStripSeparator() + Me.FavOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FavoriteRetweetMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FavoriteRetweetUnofficialMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator38 = New System.Windows.Forms.ToolStripSeparator() - Me.FavOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.UnFavOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator38 = New System.Windows.Forms.ToolStripSeparator() Me.ShowProfMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ShowRelatedStatusesMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.OpenOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.OpenHomeOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.OpenFavOpMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -212,6 +213,12 @@ Partial Class TweenMain Me.HashManageToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.RtCountMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ListManageToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.MenuItemUserStream = New System.Windows.Forms.ToolStripMenuItem() + Me.PauseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.StopToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator40 = New System.Windows.Forms.ToolStripSeparator() + Me.TrackToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.AllrepliesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.MenuItemHelp = New System.Windows.Forms.ToolStripMenuItem() Me.MatomeMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShortcutKeyListMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -224,6 +231,7 @@ Partial Class TweenMain Me.DebugModeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DumpPostClassToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.TraceOutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.CacheInfoMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ContextMenuOperate = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ReplyStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ReplyAllStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -232,12 +240,13 @@ Partial Class TweenMain Me.ReTweetStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.QuoteStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator39 = New System.Windows.Forms.ToolStripSeparator() + Me.FavAddToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FavoriteRetweetContextMenu = New System.Windows.Forms.ToolStripMenuItem() Me.FavoriteRetweetUnofficialContextMenu = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() - Me.FavAddToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FavRemoveToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() Me.ShowProfileMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ShowRelatedStatusesMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem6 = New System.Windows.Forms.ToolStripMenuItem() Me.MoveToHomeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.MoveToFavToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -275,9 +284,6 @@ Partial Class TweenMain Me.TimerRefreshIcon = New System.Windows.Forms.Timer(Me.components) Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog() Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) - Me.ShowRelatedStatusesMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.CacheInfoMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ShowRelatedStatusesMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripContainer1.BottomToolStripPanel.SuspendLayout() Me.ToolStripContainer1.ContentPanel.SuspendLayout() Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() @@ -374,6 +380,7 @@ Partial Class TweenMain ' Me.ContextMenuPostMode.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItemUrlMultibyteSplit, Me.ToolStripMenuItemApiCommandEvasion, Me.ToolStripMenuItemUrlAutoShorten, Me.IdeographicSpaceToSpaceToolStripMenuItem, Me.MultiLineMenuItem, Me.ToolStripFocusLockMenuItem, Me.ToolStripSeparator35, Me.ImageSelectMenuItem, Me.ToolStripSeparator8, Me.HashToggleMenuItem, Me.HashManageMenuItem}) Me.ContextMenuPostMode.Name = "ContextMenuStripPostMode" + Me.ContextMenuPostMode.OwnerItem = Me.HashStripSplitButton resources.ApplyResources(Me.ContextMenuPostMode, "ContextMenuPostMode") ' 'ToolStripMenuItemUrlMultibyteSplit @@ -919,7 +926,7 @@ Partial Class TweenMain 'MenuStrip1 ' resources.ApplyResources(Me.MenuStrip1, "MenuStrip1") - Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuItemFile, Me.MenuItemEdit, Me.MenuItemOperate, Me.MenuItemTab, Me.MenuItemCommand, Me.MenuItemHelp}) + Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuItemFile, Me.MenuItemEdit, Me.MenuItemOperate, Me.MenuItemTab, Me.MenuItemCommand, Me.MenuItemUserStream, Me.MenuItemHelp}) Me.MenuStrip1.Name = "MenuStrip1" Me.MenuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional ' @@ -1079,6 +1086,11 @@ Partial Class TweenMain Me.ToolStripSeparator25.Name = "ToolStripSeparator25" resources.ApplyResources(Me.ToolStripSeparator25, "ToolStripSeparator25") ' + 'FavOpMenuItem + ' + Me.FavOpMenuItem.Name = "FavOpMenuItem" + resources.ApplyResources(Me.FavOpMenuItem, "FavOpMenuItem") + ' 'FavoriteRetweetMenuItem ' Me.FavoriteRetweetMenuItem.Name = "FavoriteRetweetMenuItem" @@ -1089,26 +1101,26 @@ Partial Class TweenMain Me.FavoriteRetweetUnofficialMenuItem.Name = "FavoriteRetweetUnofficialMenuItem" resources.ApplyResources(Me.FavoriteRetweetUnofficialMenuItem, "FavoriteRetweetUnofficialMenuItem") ' - 'ToolStripSeparator38 - ' - Me.ToolStripSeparator38.Name = "ToolStripSeparator38" - resources.ApplyResources(Me.ToolStripSeparator38, "ToolStripSeparator38") - ' - 'FavOpMenuItem - ' - Me.FavOpMenuItem.Name = "FavOpMenuItem" - resources.ApplyResources(Me.FavOpMenuItem, "FavOpMenuItem") - ' 'UnFavOpMenuItem ' Me.UnFavOpMenuItem.Name = "UnFavOpMenuItem" resources.ApplyResources(Me.UnFavOpMenuItem, "UnFavOpMenuItem") ' + 'ToolStripSeparator38 + ' + Me.ToolStripSeparator38.Name = "ToolStripSeparator38" + resources.ApplyResources(Me.ToolStripSeparator38, "ToolStripSeparator38") + ' 'ShowProfMenuItem ' Me.ShowProfMenuItem.Name = "ShowProfMenuItem" resources.ApplyResources(Me.ShowProfMenuItem, "ShowProfMenuItem") ' + 'ShowRelatedStatusesMenuItem2 + ' + Me.ShowRelatedStatusesMenuItem2.Name = "ShowRelatedStatusesMenuItem2" + resources.ApplyResources(Me.ShowRelatedStatusesMenuItem2, "ShowRelatedStatusesMenuItem2") + ' 'OpenOpMenuItem ' Me.OpenOpMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.OpenHomeOpMenuItem, Me.OpenFavOpMenuItem, Me.OpenStatusOpMenuItem, Me.OpenRepSourceOpMenuItem, Me.OpenFavotterOpMenuItem, Me.OpenUrlOpMenuItem, Me.OpenRterHomeMenuItem}) @@ -1404,6 +1416,39 @@ Partial Class TweenMain Me.ListManageToolStripMenuItem.Name = "ListManageToolStripMenuItem" resources.ApplyResources(Me.ListManageToolStripMenuItem, "ListManageToolStripMenuItem") ' + 'MenuItemUserStream + ' + Me.MenuItemUserStream.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PauseToolStripMenuItem, Me.StopToolStripMenuItem, Me.ToolStripSeparator40, Me.TrackToolStripMenuItem, Me.AllrepliesToolStripMenuItem}) + resources.ApplyResources(Me.MenuItemUserStream, "MenuItemUserStream") + Me.MenuItemUserStream.Name = "MenuItemUserStream" + ' + 'PauseToolStripMenuItem + ' + resources.ApplyResources(Me.PauseToolStripMenuItem, "PauseToolStripMenuItem") + Me.PauseToolStripMenuItem.Name = "PauseToolStripMenuItem" + ' + 'StopToolStripMenuItem + ' + Me.StopToolStripMenuItem.Name = "StopToolStripMenuItem" + resources.ApplyResources(Me.StopToolStripMenuItem, "StopToolStripMenuItem") + ' + 'ToolStripSeparator40 + ' + Me.ToolStripSeparator40.Name = "ToolStripSeparator40" + resources.ApplyResources(Me.ToolStripSeparator40, "ToolStripSeparator40") + ' + 'TrackToolStripMenuItem + ' + Me.TrackToolStripMenuItem.CheckOnClick = True + Me.TrackToolStripMenuItem.Name = "TrackToolStripMenuItem" + resources.ApplyResources(Me.TrackToolStripMenuItem, "TrackToolStripMenuItem") + ' + 'AllrepliesToolStripMenuItem + ' + Me.AllrepliesToolStripMenuItem.CheckOnClick = True + Me.AllrepliesToolStripMenuItem.Name = "AllrepliesToolStripMenuItem" + resources.ApplyResources(Me.AllrepliesToolStripMenuItem, "AllrepliesToolStripMenuItem") + ' 'MenuItemHelp ' Me.MenuItemHelp.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MatomeMenuItem, Me.ShortcutKeyListMenuItem, Me.ToolStripSeparator16, Me.VerUpMenuItem, Me.ToolStripSeparator14, Me.ApiInfoMenuItem, Me.ToolStripSeparator7, Me.AboutMenuItem, Me.DebugModeToolStripMenuItem}) @@ -1468,6 +1513,11 @@ Partial Class TweenMain Me.TraceOutToolStripMenuItem.Name = "TraceOutToolStripMenuItem" resources.ApplyResources(Me.TraceOutToolStripMenuItem, "TraceOutToolStripMenuItem") ' + 'CacheInfoMenuItem + ' + Me.CacheInfoMenuItem.Name = "CacheInfoMenuItem" + resources.ApplyResources(Me.CacheInfoMenuItem, "CacheInfoMenuItem") + ' 'ContextMenuOperate ' Me.ContextMenuOperate.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReplyStripMenuItem, Me.ReplyAllStripMenuItem, Me.DMStripMenuItem, Me.ReTweetOriginalStripMenuItem, Me.ReTweetStripMenuItem, Me.QuoteStripMenuItem, Me.ToolStripSeparator39, Me.FavAddToolStripMenuItem, Me.FavoriteRetweetContextMenu, Me.FavoriteRetweetUnofficialContextMenu, Me.FavRemoveToolStripMenuItem, Me.ToolStripSeparator2, Me.ShowProfileMenuItem, Me.ShowRelatedStatusesMenuItem, Me.ToolStripMenuItem6, Me.ToolStripMenuItem7, Me.ListManageUserContextToolStripMenuItem2, Me.ToolStripSeparator4, Me.ToolStripMenuItem11, Me.JumpUnreadMenuItem, Me.ToolStripSeparator10, Me.SelectAllMenuItem, Me.DeleteStripMenuItem, Me.RefreshStripMenuItem, Me.RefreshMoreStripMenuItem}) @@ -1510,6 +1560,11 @@ Partial Class TweenMain Me.ToolStripSeparator39.Name = "ToolStripSeparator39" resources.ApplyResources(Me.ToolStripSeparator39, "ToolStripSeparator39") ' + 'FavAddToolStripMenuItem + ' + Me.FavAddToolStripMenuItem.Name = "FavAddToolStripMenuItem" + resources.ApplyResources(Me.FavAddToolStripMenuItem, "FavAddToolStripMenuItem") + ' 'FavoriteRetweetContextMenu ' Me.FavoriteRetweetContextMenu.Name = "FavoriteRetweetContextMenu" @@ -1520,26 +1575,26 @@ Partial Class TweenMain Me.FavoriteRetweetUnofficialContextMenu.Name = "FavoriteRetweetUnofficialContextMenu" resources.ApplyResources(Me.FavoriteRetweetUnofficialContextMenu, "FavoriteRetweetUnofficialContextMenu") ' - 'ToolStripSeparator2 - ' - Me.ToolStripSeparator2.Name = "ToolStripSeparator2" - resources.ApplyResources(Me.ToolStripSeparator2, "ToolStripSeparator2") - ' - 'FavAddToolStripMenuItem - ' - Me.FavAddToolStripMenuItem.Name = "FavAddToolStripMenuItem" - resources.ApplyResources(Me.FavAddToolStripMenuItem, "FavAddToolStripMenuItem") - ' 'FavRemoveToolStripMenuItem ' Me.FavRemoveToolStripMenuItem.Name = "FavRemoveToolStripMenuItem" resources.ApplyResources(Me.FavRemoveToolStripMenuItem, "FavRemoveToolStripMenuItem") ' + 'ToolStripSeparator2 + ' + Me.ToolStripSeparator2.Name = "ToolStripSeparator2" + resources.ApplyResources(Me.ToolStripSeparator2, "ToolStripSeparator2") + ' 'ShowProfileMenuItem ' Me.ShowProfileMenuItem.Name = "ShowProfileMenuItem" resources.ApplyResources(Me.ShowProfileMenuItem, "ShowProfileMenuItem") ' + 'ShowRelatedStatusesMenuItem + ' + Me.ShowRelatedStatusesMenuItem.Name = "ShowRelatedStatusesMenuItem" + resources.ApplyResources(Me.ShowRelatedStatusesMenuItem, "ShowRelatedStatusesMenuItem") + ' 'ToolStripMenuItem6 ' Me.ToolStripMenuItem6.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MoveToHomeToolStripMenuItem, Me.MoveToFavToolStripMenuItem, Me.StatusOpenMenuItem, Me.RepliedStatusOpenMenuItem, Me.FavorareMenuItem, Me.OpenURLMenuItem, Me.MoveToRTHomeMenuItem}) @@ -1724,21 +1779,6 @@ Partial Class TweenMain ' Me.OpenFileDialog1.FileName = "OpenFileDialog1" ' - 'ShowRelatedStatusesMenuItem - ' - Me.ShowRelatedStatusesMenuItem.Name = "ShowRelatedStatusesMenuItem" - resources.ApplyResources(Me.ShowRelatedStatusesMenuItem, "ShowRelatedStatusesMenuItem") - ' - 'CacheInfoMenuItem - ' - Me.CacheInfoMenuItem.Name = "CacheInfoMenuItem" - resources.ApplyResources(Me.CacheInfoMenuItem, "CacheInfoMenuItem") - ' - 'ShowRelatedStatusesMenuItem2 - ' - Me.ShowRelatedStatusesMenuItem2.Name = "ShowRelatedStatusesMenuItem2" - resources.ApplyResources(Me.ShowRelatedStatusesMenuItem2, "ShowRelatedStatusesMenuItem2") - ' 'TweenMain ' Me.AllowDrop = True @@ -2042,5 +2082,11 @@ Partial Class TweenMain Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator Friend WithEvents ShowRelatedStatusesMenuItem2 As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ShowRelatedStatusesMenuItem As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents MenuItemUserStream As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents PauseToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents StopToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator40 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TrackToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents AllrepliesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem End Class diff --git a/Tween/Tween.resx b/Tween/Tween.resx index 45ee44c0..e274b2c2 100644 --- a/Tween/Tween.resx +++ b/Tween/Tween.resx @@ -130,7 +130,7 @@ - 243, 22 + 435, 22 ToolStripStatusLabel1 @@ -138,12 +138,6 @@ MiddleLeft - - 77, 22 - - - API ???/??? - 71, 22 @@ -159,9 +153,81 @@ 2, 22 - + 263, 17 + + 280, 22 + + + URLからの全角文字列の切り離し + + + 280, 22 + + + APIコマンドを回避する + + + 280, 22 + + + 自動的にURLを短縮する + + + 280, 22 + + + 全角スペースを半角スペースにする + + + Ctrl+Y + + + 280, 22 + + + 発言欄複数行入力(&M) + + + 280, 22 + + + フォーカスを発言欄へロックする + + + 277, 6 + + + Ctrl+Shift+P + + + 280, 22 + + + 投稿画像選択(&P) + + + 277, 6 + + + Ctrl+Shift+T + + + 280, 22 + + + ハッシュタグ自動付加 + + + Ctrl+T + + + 280, 22 + + + ハッシュタグ設定 + 281, 214 @@ -181,7 +247,7 @@ 0, 0 - 457, 27 + 574, 27 0 @@ -222,6 +288,105 @@ Horizontal + + Bottom + + + 130, 99 + + + 226, 22 + + + タブ作成(&N)... + + + 226, 22 + + + タブ名の変更(&R) + + + 223, 6 + + + 226, 22 + + + 未読管理(&U) + + + 226, 22 + + + 新着通知表示(&Q) + + + 121, 26 + + + 再生するwavファイルを指定してください + + + 223, 6 + + + 226, 22 + + + 振り分けルール編集(&F)... + + + 223, 6 + + + 226, 22 + + + このタブの発言をクリア(&C) + + + 223, 6 + + + 226, 22 + + + タブ削除(&D) + + + 227, 212 + + + ContextMenuTabProperty + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fill + + + 17, 99 + + + 16, 16 + + + Disable + + + 0, 0 + + + 0, 0, 0, 0 + + + 570, 220 + + + 0 + ListTab @@ -241,7 +406,7 @@ 0, 0 - 453, 164 + 570, 220 0 @@ -261,6 +426,24 @@ True + + Fill + + + Off + + + 0, 0 + + + 570, 192 + + + Zoom + + + 5 + ImageSelectedPicture @@ -273,1358 +456,1043 @@ 0 - - ImagePathPanel - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageSelectionPanel - - - 1 - - + Fill - - 0, 0 + + 57, 3 - - 453, 164 + + 278, 19 - + 1 - - False + + ImagefilePathText - - ImageSelectionPanel + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ImagePathPanel - - SplitContainer1.Panel1 + + 0 - - 1 + + Right - - Fill + + Off - - 0, 0 + + 335, 3 - - 453, 164 + + 22, 22 - + 2 - - False + + ... - - ProfilePanel + + FilePickButton - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - SplitContainer1.Panel1 - - - 2 + + ImagePathPanel - - SplitContainer1.Panel1 + + 1 - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Right - - SplitContainer1 + + Off - - 0 + + 357, 3 - - Fill + + 57, 22 - - 0, 0 + + 3 - - Fill + + 投稿先 - - 0, 0 + + MiddleRight - - Horizontal + + Label2 - - 4 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - UserPicture + + ImagePathPanel - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 - - TableLayoutPanel1 + + Right - - 0 + + TwitPic - - DateTimeLabel + + TwitVideo - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 414, 3 - - TableLayoutPanel1 + + 97, 20 - - 3 + + 4 - - SourceLinkLabel + + ImageServiceCombo - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TableLayoutPanel1 + + ImagePathPanel - - 4 + + 3 - - Fill + + Right - - 0, 0 + + Off - - 2 + + 511, 3 - - 453, 99 + + 56, 22 - - 1 + + 5 - - TableLayoutPanel1 + + Cancel - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ImageCancelButton - - SplitContainer2.Panel1 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + ImagePathPanel - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="UserPicture" Row="0" RowSpan="2" Column="0" ColumnSpan="1" /><Control Name="NameLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="PostBrowser" Row="1" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="DateTimeLabel" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="SourceLinkLabel" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="Absolute,56,Percent,100,Absolute,120,AutoSize,0" /><Rows Styles="Absolute,17,Percent,100" /></TableLayoutSettings> + + 4 - - SplitContainer2.Panel1 + + Left - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Off - - SplitContainer2 + + 3, 3 - - 0 + + 54, 22 - + 0 - - Fill + + ファイル - - 0, 0 + + MiddleLeft - - 365, 19 + + Label1 - - 1 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - StatusText + + ImagePathPanel - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 5 - - SplitContainer2.Panel2 + + Bottom - - 0 + + 0, 192 - - Right + + 3, 3, 3, 3 - - Off + + 570, 28 - - 365, 0 + + 0 - - 44, 25 + + ImagePathPanel - - 0 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 999 + + ImageSelectionPanel - - MiddleCenter + + 1 - - lblLen + + Fill - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0, 0 - - SplitContainer2.Panel2 + + 570, 220 - + 1 - - Right - - - Off + + False - - 409, 0 + + ImageSelectionPanel - - 44, 25 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 2 + + SplitContainer1.Panel1 - - Post + + 1 - - PostButton + + Fill - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0, 0 - - SplitContainer2.Panel2 + + 570, 220 - + 2 - - SplitContainer2.Panel2 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + False - - SplitContainer2 - - - 1 - - - 19 + + ProfilePanel - - 453, 126 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 99 + + SplitContainer1.Panel1 - + 2 - - 1 - - - SplitContainer2 - - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SplitContainer3.Panel1 - - - 0 - - - SplitContainer3.Panel1 + + SplitContainer1.Panel1 - + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - SplitContainer3 + + SplitContainer1 - + 0 - + Fill - - Off - - + 0, 0 - - 77, 126 - - - Zoom - - - 1 + + Fill - - PreviewPicture + + 0, 0 - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Horizontal - - SplitContainer3.Panel2 + + 4 - - 0 + + 635, 58 + + + 238, 22 - - Right + + フォローする(&F) - - Off + + 238, 22 - - 77, 0 + + フォロー解除(&N) - - 17, 126 + + 238, 22 - - 0 + + 相互フォロー状態表示(&H) - - PreviewScrollBar + + 238, 22 - - System.Windows.Forms.VScrollBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + リスト管理(&L) - - SplitContainer3.Panel2 + + 235, 6 - - 1 + + 238, 22 - - SplitContainer3.Panel2 + + プロフィール表示(&P) - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 238, 22 - - SplitContainer3 + + このユーザーの発言を検索(&S) - - 1 + + 235, 6 - - 453, 126 + + 238, 22 - - 355 + + IconName - - 2 + + 238, 22 - - SplitContainer3 + + 保存(&I)... - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 239, 192 - - SplitContainer1.Panel2 + + ContextMenuUserPicture - - 0 + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - SplitContainer1.Panel2 + + Off - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3, 3 - - SplitContainer1 + + 50, 50 - - 1 + + Zoom - - 23 + + 5 - - 457, 300 + + UserPicture - - 168 + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 2 + + TableLayoutPanel1 - + 0 - - SplitContainer1 - - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - ToolStripContainer1.ContentPanel + + Fill - - 0 + + MS UI Gothic, 9pt, style=Bold - - 457, 300 + + Off - - ToolStripContainer1.ContentPanel + + 59, 3 - - System.Windows.Forms.ToolStripContentPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3, 3, 3, 0 - - ToolStripContainer1 + + 323, 14 - + 0 - - Fill + + LblName - - ToolStripContainer1.LeftToolStripPanel + + MiddleLeft - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + NameLabel - - ToolStripContainer1 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + TableLayoutPanel1 + + 1 - - 0, 0 + + 480, 17 + + + 180, 22 - - ToolStripContainer1.RightToolStripPanel + + Google(&G) - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 180, 22 - - ToolStripContainer1 - - - 2 - - - 457, 353 - - - 0 - - - ToolStripContainer1 - - - 143, 17 - - - None - - - 0, 0 - - - 457, 26 - - - 0 + + Wikipedia(&W) - - MenuStrip1 + + 180, 22 - - MenuStrip1 + + Twitter検索(&Y) - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 180, 22 - - ToolStripContainer1.TopToolStripPanel + + Twitter Search(&S) - - 0 + + 180, 22 - - ToolStripContainer1.TopToolStripPanel + + 現在のタブ(&L) - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 238, 22 - - ToolStripContainer1 + + 選択文字列で検索(&S) - - 3 + + 235, 6 - - ToolStripContainer1 + + 238, 22 - - System.Windows.Forms.ToolStripContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 選択文字列をコピー(&C) - - $this + + False - - 6 + + 238, 22 - - 280, 22 + + URLをコピー(&U) - - URLからの全角文字列の切り離し + + 238, 22 - - 280, 22 + + すべて選択(&A) - - APIコマンドを回避する + + 235, 6 - - 280, 22 + + 238, 22 - - 自動的にURLを短縮する + + フォローする(&F) - - 280, 22 + + 238, 22 - - 全角スペースを半角スペースにする + + フォロー解除(&N) - - Ctrl+Y + + 238, 22 - - 280, 22 + + 相互フォロー状態表示(&R) - - 発言欄複数行入力(&M) + + 238, 22 - - 280, 22 + + 全ユーザーのフォロー状態(&A) - - フォーカスを発言欄へロックする + + 235, 6 - - 277, 6 + + 238, 22 - - Ctrl+Shift+P + + プロフィール表示(&P) - - 280, 22 + + 238, 22 - - 投稿画像選択(&P) + + このユーザーの発言を検索(&F) - - 277, 6 + + 235, 6 - - Ctrl+Shift+T + + 238, 22 - - 280, 22 + + ID振分ルール作成(&I) - - ハッシュタグ自動付加 + + 238, 22 - - Ctrl+T + + リスト管理(&L) - - 280, 22 + + 235, 6 - - ハッシュタグ設定 + + 238, 22 - - Bottom + + ハッシュタグを固定(&H) - - 130, 99 - - - 227, 212 + + 239, 320 - - ContextMenuTabProperty + + ContextMenuPostBrowser - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Fill - - 17, 99 - - - 16, 16 - - - Disable - - - 0, 0 - - - 0, 0, 0, 0 - - - 453, 164 - - - 0 - - - ListTab - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TimelinePanel - - - 0 - - - 226, 22 - - - タブ作成(&N)... - - - 226, 22 - - - タブ名の変更(&R) - - - 223, 6 - - - 226, 22 - - - 未読管理(&U) - - - 226, 22 - - - 新着通知表示(&Q) - - - 121, 26 - - - 再生するwavファイルを指定してください - - - 223, 6 - - - 226, 22 + + 59, 20 - - 振り分けルール編集(&F)... + + 508, 68 - - 223, 6 + + 6 - - 226, 22 + + PostBrowser - - このタブの発言をクリア(&C) + + System.Windows.Forms.WebBrowser, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 223, 6 + + TableLayoutPanel1 - - 226, 22 + + 2 - - タブ削除(&D) + + Top, Bottom, Right - - Fill + + True - + Off - - 0, 0 - - - 453, 136 - - - Zoom - - - 5 - - - ImageSelectedPicture - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageSelectionPanel - - - 0 - - - ImagefilePathText - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImagePathPanel - - - 0 - - - FilePickButton + + 464, 3 - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3, 3, 3, 0 - - ImagePathPanel + + 38, 14 - + 1 - - Label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImagePathPanel - - - 2 - - - ImageServiceCombo - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImagePathPanel - - - 3 - - - ImageCancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImagePathPanel - - - 4 - - + Label1 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImagePathPanel - - - 5 - - - Bottom - - - 0, 136 - - - 3, 3, 3, 3 - - - 453, 28 - - - 0 - - - ImagePathPanel - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ImageSelectionPanel - - - 1 - - - Fill - - - 57, 3 - - - 161, 19 - - - 1 - - - Right - - - Off - - - 218, 3 - - - 22, 22 - - - 2 - - - ... - - - Right - - - Off - - - 240, 3 - - - 57, 22 - - - 3 - - - 投稿先 - - + MiddleRight - - Right - - - TwitPic - - - TwitVideo - - - 297, 3 - - - 97, 20 - - - 4 - - - Right - - - Off + + DateTimeLabel - - 394, 3 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 56, 22 + + TableLayoutPanel1 - - 5 + + 3 - - Cancel + + Top, Bottom, Left, Right - - Left + + True - + Off - - 3, 3 + + 508, 3 - - 54, 22 + + 3, 3, 3, 0 - - 0 + + 59, 14 - - ファイル + + 7 - - MiddleLeft + + LinkLabel1 - - 635, 58 - - - 239, 192 + + MiddleRight - - ContextMenuUserPicture + + SourceLinkLabel - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Off + + TableLayoutPanel1 - - 3, 3 + + 4 - - 50, 50 + + Fill - - Zoom + + 0, 0 - - 5 + + 2 - - UserPicture + + 570, 91 - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1 - + TableLayoutPanel1 - + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + SplitContainer2.Panel1 + + 0 - - 238, 22 + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="UserPicture" Row="0" RowSpan="2" Column="0" ColumnSpan="1" /><Control Name="NameLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="PostBrowser" Row="1" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="DateTimeLabel" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="SourceLinkLabel" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="Absolute,56,Percent,100,Absolute,120,AutoSize,0" /><Rows Styles="Absolute,17,Percent,100" /></TableLayoutSettings> - - フォローする(&F) + + SplitContainer2.Panel1 - - 238, 22 + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - フォロー解除(&N) + + SplitContainer2 - - 238, 22 + + 0 - - 相互フォロー状態表示(&H) + + 0 - - 238, 22 + + Fill - - リスト管理(&L) + + 0, 0 - - 235, 6 + + 482, 19 - - 238, 22 + + 1 - - プロフィール表示(&P) + + StatusText - - 238, 22 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - このユーザーの発言を検索(&S) + + SplitContainer2.Panel2 - - 235, 6 + + 0 - - 238, 22 + + Right - - IconName + + Off - - 238, 22 + + 482, 0 - - 保存(&I)... + + 44, 25 - - True + + 0 - - Fill + + 999 - - MS UI Gothic, 9pt, style=Bold + + MiddleCenter - - Off + + lblLen - - 59, 3 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3, 3, 3, 0 + + SplitContainer2.Panel2 - - 206, 14 + + 1 - - 0 + + Right - - LblName + + Off - - MiddleLeft + + 526, 0 - - NameLabel + + 44, 25 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 - - TableLayoutPanel1 + + Post - - 1 + + PostButton - - 480, 17 - - - 239, 320 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ContextMenuPostBrowser + + SplitContainer2.Panel2 - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 - - Fill + + SplitContainer2.Panel2 - - 59, 20 + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 391, 76 + + SplitContainer2 - - 6 + + 1 - - PostBrowser + + 19 - - System.Windows.Forms.WebBrowser, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 570, 118 - - TableLayoutPanel1 + + 91 - + 2 - - 238, 22 + + 1 - - 選択文字列で検索(&S) + + SplitContainer2 - - 180, 22 + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + SplitContainer3.Panel1 - - Google(&G) + + 0 - - 180, 22 + + SplitContainer3.Panel1 - - Wikipedia(&W) + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 180, 22 + + SplitContainer3 - - Twitter検索(&Y) + + 0 - - 180, 22 + + Fill - - Twitter Search(&S) + + Off - - 180, 22 + + 0, 0 - - 現在のタブ(&L) + + 194, 120 - - 235, 6 + + Zoom - - 238, 22 + + 1 - - 選択文字列をコピー(&C) + + PreviewPicture - - False + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 238, 22 + + SplitContainer3.Panel2 - - URLをコピー(&U) + + 0 - - 238, 22 + + Right - - すべて選択(&A) + + Off - - 235, 6 + + 194, 0 - - 238, 22 + + 17, 120 - - フォローする(&F) + + 0 - - 238, 22 + + PreviewScrollBar - - フォロー解除(&N) + + System.Windows.Forms.VScrollBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 238, 22 + + SplitContainer3.Panel2 - - 相互フォロー状態表示(&R) + + 1 - - 238, 22 + + SplitContainer3.Panel2 - - 全ユーザーのフォロー状態(&A) + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 235, 6 + + SplitContainer3 - - 238, 22 + + 1 - - プロフィール表示(&P) + + 570, 118 - - 238, 22 + + 355 - - このユーザーの発言を検索(&F) + + 2 - - 235, 6 + + SplitContainer3 - - 238, 22 + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ID振分ルール作成(&I) + + SplitContainer1.Panel2 - - 238, 22 + + 0 - - リスト管理(&L) + + SplitContainer1.Panel2 - - 235, 6 + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 238, 22 + + SplitContainer1 - - ハッシュタグを固定(&H) + + 1 - - Top, Bottom, Right + + 23 - - True + + 574, 348 - - Off + + 224 - - 347, 3 + + 2 - - 3, 3, 3, 0 + + 0 - - 38, 14 + + SplitContainer1 - - 1 + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Label1 + + ToolStripContainer1.ContentPanel - - MiddleRight + + 0 - - DateTimeLabel + + 574, 348 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ToolStripContainer1.ContentPanel - - TableLayoutPanel1 + + System.Windows.Forms.ToolStripContentPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3 + + ToolStripContainer1 - - Top, Bottom, Left, Right + + 0 - - True + + Fill - - Off + + ToolStripContainer1.LeftToolStripPanel - - 391, 3 + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3, 3, 3, 0 + + ToolStripContainer1 - - 59, 14 + + 1 - - 7 + + 0, 0 - - LinkLabel1 + + ToolStripContainer1.RightToolStripPanel - - MiddleRight + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - SourceLinkLabel + + ToolStripContainer1 - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 - - TableLayoutPanel1 + + 574, 401 - - 4 + + 0 - - 85, 22 + + ToolStripContainer1 - - ファイル(&F) + + 143, 17 + + + None 189, 22 @@ -1671,11 +1539,11 @@ 終了(&X) - - 61, 22 + + 85, 22 - - 編集(&E) + + ファイル(&F) 259, 22 @@ -1746,11 +1614,11 @@ 抽出条件入力(&Q) - - 63, 22 + + 61, 22 - - 操作(&O) + + 編集(&E) Ctrl+R @@ -1809,6 +1677,15 @@ 313, 6 + + Ctrl+S + + + 316, 22 + + + Fav追加(&F) + Ctrl+Alt+S @@ -1827,18 +1704,6 @@ Fav追加+Retweet(Unofficial) - - 313, 6 - - - Ctrl+S - - - 316, 22 - - - Fav追加(&F) - Ctrl+Shift+S @@ -1848,6 +1713,9 @@ Fav削除(&V) + + 313, 6 + @@ -1860,11 +1728,11 @@ プロフィール表示 - + 316, 22 - - 開く(&O) + + 関連発言表示(&G) Ctrl+H @@ -1929,11 +1797,11 @@ RTした人のホームを開く(&R) - + 316, 22 - - 振り分けルール作成(&C) + + 開く(&O) 227, 22 @@ -1947,6 +1815,12 @@ ID振り分けルール作成(&I) + + 316, 22 + + + 振り分けルール作成(&C) + 316, 22 @@ -1956,12 +1830,6 @@ 313, 6 - - 316, 22 - - - 未読状態変更(&H) - Ctrl+B @@ -1980,6 +1848,12 @@ 未読にする(&U) + + 316, 22 + + + 未読状態変更(&H) + 316, 22 @@ -2025,11 +1899,11 @@ 前データを取得(&I) - - 62, 22 + + 63, 22 - - タブ(&T) + + 操作(&O) 226, 22 @@ -2091,17 +1965,11 @@ タブ削除(&D) - - 98, 22 - - - その他機能(&C) - - - 280, 22 + + 62, 22 - - 入力欄のURLを短縮変換 + + タブ(&T) Ctrl+L @@ -2151,6 +2019,12 @@ j.mp + + 280, 22 + + + 入力欄のURLを短縮変換 + 280, 22 @@ -2226,11 +2100,50 @@ リスト編集 - - 75, 22 + + 98, 22 - - ヘルプ(&H) + + その他機能(&C) + + + False + + + 144, 22 + + + Pause + + + 144, 22 + + + Stop + + + 141, 6 + + + 144, 22 + + + Track + + + 144, 22 + + + All @replies + + + False + + + 91, 22 + + + UserStream F1 @@ -2274,182 +2187,167 @@ Tweenについて(&A)... - - 232, 22 - - - アイコンキャッシュ使用状況 - - - 227, 22 - - - デバッグモード - - - False - - 179, 22 + 232, 22 PostClassのダンプ - 179, 22 + 232, 22 TraceOut出力 - - 443, 58 - - - 243, 22 - - - @返信(&R) + + 232, 22 - - 243, 22 + + アイコンキャッシュ使用状況 - - @返信ALL(&E) + + 227, 22 - - 243, 22 + + デバッグモード - - DM送信(&M) + + False - - 243, 22 + + 75, 22 - - Re&tweet + + ヘルプ(&H) - - 243, 22 + + 0, 0 - - Retweet(U&nofficial) + + 574, 26 - - 243, 22 + + 0 - - &Quote + + MenuStrip1 - - 240, 6 + + MenuStrip1 - - 243, 22 + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Fav追加(&F) + + ToolStripContainer1.TopToolStripPanel - - 243, 22 + + 0 - - Fav追加+Retweet + + ToolStripContainer1.TopToolStripPanel - - 243, 22 + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Fav追加+Retweet(Unofficial) + + ToolStripContainer1 - - 243, 22 + + 3 - - Fav削除(&V) + + ToolStripContainer1 - - 240, 6 + + System.Windows.Forms.ToolStripContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 243, 22 + + $this - - プロフィール表示 + + 6 - + + 443, 58 + + 243, 22 - - 関連発言表示(&G) + + @返信(&R) - + 243, 22 - - 開く(&O) + + @返信ALL(&E) - + 243, 22 - - 振り分けルール作成(&C) + + DM送信(&M) - + 243, 22 - - リスト管理(&L) - - - 240, 6 + + Re&tweet - + 243, 22 - - 未読状態変更(&H) + + Retweet(U&nofficial) - + 243, 22 - - 未読へジャンプ(&J) + + &Quote - + 240, 6 - + 243, 22 - - 全て選択(&A) + + Fav追加(&F) - + 243, 22 - - 削除(&D) + + Fav追加+Retweet - + 243, 22 - - 更新(&U) + + Fav追加+Retweet(Unofficial) - + 243, 22 - - 前データを取得(&I) + + Fav削除(&V) - - 244, 512 + + 240, 6 - - ContextMenuOperate + + 243, 22 - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + プロフィール表示 + + + 243, 22 + + + 関連発言表示(&G) 230, 22 @@ -2493,6 +2391,12 @@ RTした人のホームを開く(&R) + + 243, 22 + + + 開く(&O) + 239, 22 @@ -2505,6 +2409,21 @@ ID振り分けルール作成... + + 243, 22 + + + 振り分けルール作成(&C) + + + 243, 22 + + + リスト管理(&L) + + + 240, 6 + 154, 22 @@ -2517,18 +2436,57 @@ 未読にする - - 276, 58 - - - 190, 154 + + 243, 22 - - ContextMenuFile + + 未読状態変更(&H) - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 243, 22 + + + 未読へジャンプ(&J) + + + 240, 6 + + + 243, 22 + + + 全て選択(&A) + + + 243, 22 + + + 削除(&D) + + + 243, 22 + + + 更新(&U) + + + 243, 22 + + + 前データを取得(&I) + + + 244, 490 + + + ContextMenuOperate + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 276, 58 + 189, 22 @@ -2577,6 +2535,15 @@ 終了(&X) + + 190, 154 + + + ContextMenuFile + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 155, 58 @@ -2595,13 +2562,7 @@ 750, 95 - - 316, 22 - - - 関連発言表示(&G) - - + True @@ -2611,7 +2572,7 @@ 6, 12 - 457, 353 + 574, 401 Off @@ -2638,7 +2599,7 @@ ToolStripStatusLabel1 - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 HashStripSplitButton @@ -3082,7 +3043,7 @@ CopyUserIdStripMenuItem - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ToolStripSeparator6 @@ -3168,28 +3129,22 @@ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + FavOpMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + FavoriteRetweetMenuItem - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 FavoriteRetweetUnofficialMenuItem - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ToolStripSeparator38 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - FavOpMenuItem - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -3198,12 +3153,24 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ToolStripSeparator38 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ShowProfMenuItem System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ShowRelatedStatusesMenuItem2 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + OpenOpMenuItem @@ -3546,6 +3513,42 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + MenuItemUserStream + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + PauseToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + StopToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ToolStripSeparator40 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TrackToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AllrepliesToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MenuItemHelp @@ -3618,6 +3621,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + CacheInfoMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ReplyStripMenuItem @@ -3658,30 +3667,24 @@ ToolStripSeparator39 - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FavAddToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 FavoriteRetweetContextMenu - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 FavoriteRetweetUnofficialContextMenu - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ToolStripSeparator2 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - FavAddToolStripMenuItem - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -3690,12 +3693,24 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ToolStripSeparator2 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ShowProfileMenuItem System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ShowRelatedStatusesMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ToolStripMenuItem6 @@ -3912,24 +3927,6 @@ System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ShowRelatedStatusesMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ShowRelatedStatusesMenuItem2 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CacheInfoMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - TweenMain diff --git a/Tween/Tween.vb b/Tween/Tween.vb index af2b3472..79527651 100644 --- a/Tween/Tween.vb +++ b/Tween/Tween.vb @@ -8274,6 +8274,16 @@ RETRY: End If End If _initial = False + AddHandler tw.NewPostFromStream, AddressOf tw_NewPostFromStream + AddHandler tw.UserStreamStarted, AddressOf tw_UserStreamStarted + AddHandler tw.UserStreamStopped, AddressOf tw_UserStreamStopped + AddHandler tw.UserStreamPaused, AddressOf tw_UserStreamPaused + AddHandler tw.PostDeleted, AddressOf tw_PostDeleted + PauseToolStripMenuItem.Text = "&Pause" + PauseToolStripMenuItem.Enabled = False + StopToolStripMenuItem.Text = "&Start" + StopToolStripMenuItem.Enabled = True + tw.StartUserStream() TimerTimeline.Enabled = True End Sub @@ -9740,4 +9750,169 @@ RETRY: buf.AppendFormat("キャッシュエントリ破棄数 : {0}" + vbCrLf, DirectCast(TIconDic, ImageDictionary).CacheRemoveCount) MessageBox.Show(buf.ToString, "アイコンキャッシュ使用状況") End Sub + + Private Sub tw_PostDeleted(ByVal id As Long) + Try + If InvokeRequired Then + Invoke(New Action(Of Long)(AddressOf tw_PostDeleted), id) + Exit Sub + End If + Catch ex As ObjectDisposedException + Exit Sub + End Try + + _statuses.RemovePost(id) + + If _curTab Is Nothing OrElse _curList Is Nothing Then Exit Sub + + Dim fidx As Integer + If _curList.FocusedItem IsNot Nothing Then + fidx = _curList.FocusedItem.Index + ElseIf _curList.TopItem IsNot Nothing Then + fidx = _curList.TopItem.Index + Else + fidx = 0 + End If + + _itemCache = Nothing 'キャッシュ破棄 + _postCache = Nothing + _curPost = Nothing + _curItemIndex = -1 + For Each tb As TabPage In ListTab.TabPages + DirectCast(tb.Tag, DetailsListView).VirtualListSize = _statuses.Tabs(tb.Text).AllCount + If _curTab.Equals(tb) Then + _curList.SelectedIndices.Clear() + If _statuses.Tabs(tb.Text).AllCount > 0 Then + If _statuses.Tabs(tb.Text).AllCount - 1 > fidx AndAlso fidx > -1 Then + _curList.SelectedIndices.Add(fidx) + Else + _curList.SelectedIndices.Add(_statuses.Tabs(tb.Text).AllCount - 1) + End If + 'If _curList.SelectedIndices.Count > 0 Then + ' _curList.EnsureVisible(_curList.SelectedIndices(0)) + ' _curList.FocusedItem = _curList.Items(_curList.SelectedIndices(0)) + 'End If + End If + End If + If _statuses.Tabs(tb.Text).UnreadCount = 0 Then + If SettingDialog.TabIconDisp Then + If tb.ImageIndex = 0 Then tb.ImageIndex = -1 'タブアイコン + End If + End If + Next + If Not SettingDialog.TabIconDisp Then ListTab.Refresh() + End Sub + + Private Sub tw_NewPostFromStream() + If SettingDialog.ReadOldPosts Then + _statuses.SetRead() '新着時未読クリア + End If + + Dim rsltAddCount As Integer = _statuses.DistributePosts() + SyncLock _syncObject + Dim tm As Date = Now + If _tlTimestamps.ContainsKey(tm) Then + _tlTimestamps(tm) += rsltAddCount + Else + _tlTimestamps.Add(Now, rsltAddCount) + End If + Dim oneHour As Date = Now.Subtract(New TimeSpan(1, 0, 0)) + Dim keys As New List(Of Date) + _tlCount = 0 + For Each key As Date In _tlTimestamps.Keys + If key.CompareTo(oneHour) < 0 Then + keys.Add(key) + Else + _tlCount += _tlTimestamps(key) + End If + Next + For Each key As Date In keys + _tlTimestamps.Remove(key) + Next + keys.Clear() + + 'Static before As DateTime = Now + 'If before.Subtract(Now).Seconds > -5 Then Exit Sub + 'before = Now + End SyncLock + + Try + If InvokeRequired AndAlso Not IsDisposed Then + Invoke(New MethodInvoker(AddressOf RefreshTimeline)) + Exit Sub + End If + Catch ex As ObjectDisposedException + Exit Sub + End Try + End Sub + Private Sub tw_UserStreamStarted() + If InvokeRequired Then + Invoke(New MethodInvoker(AddressOf tw_UserStreamStarted)) + Exit Sub + End If + + MenuItemUserStream.Text = "&UserStream ▶" + MenuItemUserStream.Enabled = True + PauseToolStripMenuItem.Text = "&Pause" + PauseToolStripMenuItem.Enabled = True + StopToolStripMenuItem.Text = "&Stop" + StopToolStripMenuItem.Enabled = True + + StatusLabel.Text = "UserStream Started." + End Sub + + Private Sub tw_UserStreamStopped() + If InvokeRequired Then + Invoke(New MethodInvoker(AddressOf tw_UserStreamStopped)) + Exit Sub + End If + + MenuItemUserStream.Text = "&UserStream ■" + MenuItemUserStream.Enabled = True + PauseToolStripMenuItem.Text = "&Pause" + PauseToolStripMenuItem.Enabled = False + StopToolStripMenuItem.Text = "&Start" + StopToolStripMenuItem.Enabled = True + + StatusLabel.Text = "UserStream Stopped." + End Sub + + Private Sub tw_UserStreamPaused() + If InvokeRequired Then + Invoke(New MethodInvoker(AddressOf tw_UserStreamPaused)) + Exit Sub + End If + + MenuItemUserStream.Text = "&UserStream ||" + MenuItemUserStream.Enabled = True + PauseToolStripMenuItem.Text = "&Resume" + PauseToolStripMenuItem.Enabled = True + StopToolStripMenuItem.Text = "&Stop" + StopToolStripMenuItem.Enabled = True + + StatusLabel.Text = "UserStream Paused." + End Sub + + Private Sub PauseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PauseToolStripMenuItem.Click + MenuItemUserStream.Enabled = False + tw.PauseUserStream() + End Sub + + Private Sub StopToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StopToolStripMenuItem.Click + MenuItemUserStream.Enabled = False + tw.StartUserStream() + End Sub + + Private Sub TrackToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackToolStripMenuItem.Click + Static track As String + track = InputBox("追跡するキーワードを入力してください") + tw.StopUserStream() + tw.StartUserStream(AllrepliesToolStripMenuItem.Checked, track) + TrackToolStripMenuItem.Checked = Not String.IsNullOrEmpty(track) + End Sub + + Private Sub AllrepliesToolStripMenuItem_CheckStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AllrepliesToolStripMenuItem.CheckStateChanged + tw.StopUserStream() + tw.StartUserStream(AllrepliesToolStripMenuItem.Checked, "") + End Sub End Class diff --git a/Tween/Tween.vbproj b/Tween/Tween.vbproj index b21777b4..f866dc72 100644 --- a/Tween/Tween.vbproj +++ b/Tween/Tween.vbproj @@ -89,6 +89,9 @@ x86 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + + On + @@ -128,6 +131,7 @@ + Component @@ -531,6 +535,9 @@ true + + +