Enhanced after version 14 (#30)

* Add log tab
* Merge control mesg & duty log
* Fix ping (calc loss)
* Add current connection in ping tab. Able to copy by double clicking item
* Log font has moved to config
* Add debug enable on config + save
* Display ping failed reason (debug enable)
* Handled copy exception
* New content list in duty tab
* Show loss rate option in ping tab
* Rename Chinese packet info file (No data)
* Bigger UI font
This commit is contained in:
ksh 2021-08-14 23:35:53 +09:00 committed by GitHub
parent 7ece3cf30f
commit cbfa535d20
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 3560 additions and 1142 deletions

View file

@ -6,8 +6,8 @@ LANG=日本語
2=FFXIV プラグインが見つからないんです! 2=FFXIV プラグインが見つからないんです!
3=FFXIV プラグインを見つかりました! 3=FFXIV プラグインを見つかりました!
4=FFXIV ドユーティー・コンテンツ: {0} 4=FFXIV ドユーティー・コンテンツ: {0}
5=ACT 情報: {0} ({1}) 5=ACT 情報: {0}
6=FFXIV プラグイン情報: {0} ({1}) 6=FFXIV プラグイン情報: {0}
7=データが壊れました: {0} 7=データが壊れました: {0}
8=分析できません! 8=分析できません!
9=アンノウン・コンテンツ: {0} 9=アンノウン・コンテンツ: {0}
@ -16,7 +16,7 @@ LANG=日本語
12=アンノウン・フェイト: {0} 12=アンノウン・フェイト: {0}
13=データが読めないんです! 13=データが読めないんです!
14=データ・ファイルが見つからないんです! {0} 14=データ・ファイルが見つからないんです! {0}
20=ドユーティー・コンテンツ情報: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6}) 20=ドユーティー・コンテンツ情報: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5}
21=ルーレット 21=ルーレット
22=インスタンス 22=インスタンス
23=フェイト 23=フェイト
@ -25,13 +25,18 @@ LANG=日本語
26=基本 26=基本
27=なし 27=なし
28=パケット・データが見つからないんです! {0} 28=パケット・データが見つからないんです! {0}
29=パケット情報: {0} "{1}" ({2}) 29=パケット情報: {0} "{1}"
30=Webサービスにエラーが発生しました。 30=Webサービスにエラーが発生しました。
31=コンテンツ・データのアップデートが失敗しました。 31=コンテンツ・データのアップデートが失敗しました。
32=パケット・データのアップデートが失敗しまし。 32=パケット・データのアップデートが失敗しまし。
33=パケット・アップデート: {0} "{1}" 33=パケット・アップデート: {0} "{1}"
35=クリップボードエラーです!
36=ウィンドウ制御エラーです!
37=デバッグ
38=マッチング
39=待機
99=Duty Content プラグイン {0} 99=DutyContent プラグイン {0}
101=WAVEファイルを選んでください 101=WAVEファイルを選んでください
102=WAVファイル (*.wav)|*.wav|全て (*.*)|*.* 102=WAVファイル (*.wav)|*.wav|全て (*.*)|*.*
@ -54,13 +59,13 @@ LANG=日本語
213=使用する 213=使用する
214=使用しない 214=使用しない
215=※プラグイン再起動が必要です 215=※プラグイン再起動が必要です
216=ログフォント
300=コンテンツ 300=コンテンツ
301=コンテンツ 301=コンテンツ
302=設定 302=設定
303=パゲット 303=パゲット
304=データ 304=データ
305=ログフォント
306=オーバレイ・オン 306=オーバレイ・オン
307=透明度 307=透明度
308=サウンド・オン 308=サウンド・オン
@ -82,15 +87,6 @@ LANG=日本語
324=状態 324=状態
325=人数 325=人数
326=進行度 326=進行度
327=ピン
328=ピン使用
329=速度色
330=ナイス
331=いい
332=ふつう
333=わるい
334=グラフ
335=クライアントの接触がない場合のDC選択
336=パケット 336=パケット
337=カストム・パケット 337=カストム・パケット
338=Discordのウェブフックお知らせ 338=Discordのウェブフックお知らせ
@ -98,7 +94,26 @@ LANG=日本語
340=テスト&& お知らせ保存 340=テスト&& お知らせ保存
341=TTS使用 341=TTS使用
342=正しいDiscordのウェブフックURLを入力してください 342=正しいDiscordのウェブフックURLを入力してください
343=現在アドレス
400=ピン
401=ピン使用
402=速度色
403=ナイス
404=いい
405=ふつう
406=わるい
407=グラフ
408=クライアントの接触がない場合のDC選択
409=現在アドレス
410=グラフタイプ
411=線形
412=湾曲
413=損失率を示す
500=ログ
501=コピー
502=全て消す
503=自動的にスクロール
10001="{0}" 発生! 10001="{0}" 発生!
10002=待機: {0} 10002=待機: {0}

View file

@ -6,8 +6,8 @@ LANG=한국어(액토즈)
2=FFXIV 플러그인이 없어요! 2=FFXIV 플러그인이 없어요!
3=FFXIV 플러그인을 찾았어요! 3=FFXIV 플러그인을 찾았어요!
4=FFXIV 듀티 콘텐츠: {0} 4=FFXIV 듀티 콘텐츠: {0}
5=ACT 정보: {0} ({1}) 5=ACT 정보: {0}
6=FFXIV 플러그인 정보: {0} ({1}) 6=FFXIV 플러그인 정보: {0}
7=잘못된 데이터: {0} 7=잘못된 데이터: {0}
8=분석할 수 없어요 8=분석할 수 없어요
9=알수없는 임무: {0} 9=알수없는 임무: {0}
@ -16,7 +16,7 @@ LANG=한국어(액토즈)
12=알수없는 돌발: {0} 12=알수없는 돌발: {0}
13=데이터를 읽을 수가 없어요! 13=데이터를 읽을 수가 없어요!
14=데이터 파일이 없어요! {0} 14=데이터 파일이 없어요! {0}
20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6}) 20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5}
21=무작위 임무 21=무작위 임무
22=인스턴스 22=인스턴스
23=돌발 23=돌발
@ -25,11 +25,16 @@ LANG=한국어(액토즈)
26=기본 26=기본
27=없음 27=없음
28=패킷 파일이 없어요! {0} 28=패킷 파일이 없어요! {0}
29=패킷 정보: {0} "{1}" ({2}) 29=패킷 정보: {0} "{1}"
30=웹 요청중 에러 발생 30=웹 요청중 에러 발생
31=임무 데이터 업데이트중 에러 발생 31=임무 데이터 업데이트중 에러 발생
32=패킷 데이터 업데이트중 에러 발생 32=패킷 데이터 업데이트중 에러 발생
33=패킷을 업데이트 했습니다: {0} "{1}" 33=패킷을 업데이트 했습니다: {0} "{1}"
35=클립보드를 사용할 수 없습니다!
36=윈도우 컨트롤에 오류가 있습니다!
37=디버그
38=매칭
39=찾습니다
99=듀티 콘텐츠 플러그인 {0} 99=듀티 콘텐츠 플러그인 {0}
@ -54,13 +59,13 @@ LANG=한국어(액토즈)
213=사용함 213=사용함
214=사용안함 214=사용안함
215=※플러그인 재기동이 필요합니다 215=※플러그인 재기동이 필요합니다
216=로그 글꼴
300=임무 300=임무
301=콘텐츠 301=콘텐츠
302=설정 302=설정
303=패킷 303=패킷
304=데이터셋 304=데이터셋
305=로그 글꼴
306=오버레이 보기 306=오버레이 보기
307=투명도 307=투명도
308=소리 듣기 308=소리 듣기
@ -82,15 +87,6 @@ LANG=한국어(액토즈)
324=상태 324=상태
325=사람수 325=사람수
326=진행도 326=진행도
327=핑
328=핑 사용
329=속도별 색깔
330=매우 좋음
331=좋음
332=보통
333=나쁨
334=그래프 보기
335=클라이언트의 접속이 없을때 사용할 DC 선택
336=패킷 336=패킷
337=커스텀 패킷 337=커스텀 패킷
338=디스코드 웹훅 알림 338=디스코드 웹훅 알림
@ -98,7 +94,26 @@ LANG=한국어(액토즈)
340=테스트 && 알림설정 저장 340=테스트 && 알림설정 저장
341=말하기 사용 341=말하기 사용
342=올바른 디스코드 웹훅 주소를 입력해주세요. 342=올바른 디스코드 웹훅 주소를 입력해주세요.
343=연결된 IP주소
400=핑
401=핑 사용
402=속도별 색깔
403=매우 좋음
404=좋음
405=보통
406=나쁨
407=그래프 보기
408=클라이언트의 접속이 없을때 사용할 DC 선택
409=연결된 IP주소
410=그래프 모양
411=선형
412=곡선
413=손실율 표시
500=로그
501=복사
502=모두 지우기
503=자동으로 스크롤
10001="{0}" 발생했어요! 10001="{0}" 발생했어요!
10002=찾습니다: {0} 10002=찾습니다: {0}

View file

@ -6,8 +6,8 @@ LANG=한국어
2=FFXIV 플러그인이 없어요! 2=FFXIV 플러그인이 없어요!
3=FFXIV 플러그인을 찾았어요! 3=FFXIV 플러그인을 찾았어요!
4=FFXIV 듀티 콘텐츠: {0} 4=FFXIV 듀티 콘텐츠: {0}
5=ACT 정보: {0} ({1}) 5=ACT 정보: {0}
6=FFXIV 플러그인 정보: {0} ({1}) 6=FFXIV 플러그인 정보: {0}
7=잘못된 데이터: {0} 7=잘못된 데이터: {0}
8=분석할 수 없어요 8=분석할 수 없어요
9=알수없는 듀티: {0} 9=알수없는 듀티: {0}
@ -16,20 +16,25 @@ LANG=한국어
12=알수없는 페이트: {0} 12=알수없는 페이트: {0}
13=데이터를 읽을 수가 없어요! 13=데이터를 읽을 수가 없어요!
14=데이터 파일이 없어요! {0} 14=데이터 파일이 없어요! {0}
20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6}) 20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5}
21=루렛 21=루렛
22=인스턴스 22=인스턴스
23=페이트 23=페이트
24=스커미시 24=스커미시
25=크리티컬 인게이지먼트 25=인게이지먼트
26=기본 26=기본
27=없음 27=없음
28=패킷 파일이 없어요! {0} 28=패킷 파일이 없어요! {0}
29=패킷 정보: {0} "{1}" ({2}) 29=패킷 정보: {0} "{1}"
30=웹 요청중 에러 발생 30=웹 요청중 에러 발생
31=임무 데이터 업데이트중 에러 발생 31=임무 데이터 업데이트중 에러 발생
32=패킷 데이터 업데이트중 에러 발생 32=패킷 데이터 업데이트중 에러 발생
33=새 패킷 업데이트: {0} "{1}" 33=새 패킷 업데이트: {0} "{1}"
35=클립보드를 사용할 수 없습니다!
36=윈도우 컨트롤에 오류가 있습니다!
37=디버그
38=매칭
39=찾아요
99=듀티 콘텐츠 플러그인 {0} 99=듀티 콘텐츠 플러그인 {0}
@ -54,13 +59,13 @@ LANG=한국어
213=보이기 213=보이기
214=감추기 214=감추기
215=※플러그인을 다시 실행해야합니다 215=※플러그인을 다시 실행해야합니다
216=로그 글꼴
300=듀티 300=듀티
301=콘텐츠 301=콘텐츠
302=설정 302=설정
303=패킷 303=패킷
304=데이터셋 304=데이터셋
305=로그 글꼴
306=오버레이 보기 306=오버레이 보기
307=투명도 307=투명도
308=소리 듣기 308=소리 듣기
@ -82,15 +87,6 @@ LANG=한국어
324=상태 324=상태
325=사람수 325=사람수
326=진행도 326=진행도
327=핑
328=핑 사용
329=속도별 색깔
330=매우 좋음
331=좋음
332=보통
333=나쁨
334=그래프 보기
335=클라이언트의 접속이 없을때 사용할 DC 선택
336=패킷 336=패킷
337=커스텀 패킷 337=커스텀 패킷
338=디스코드 Webhook 알림 338=디스코드 Webhook 알림
@ -98,7 +94,26 @@ LANG=한국어
340=테스트 && 알림설정 저장 340=테스트 && 알림설정 저장
341=TTS 사용 341=TTS 사용
342=올바른 디스코드 Webhook을 입력해주세요. 342=올바른 디스코드 Webhook을 입력해주세요.
343=현재 연결 IP
400=핑
401=핑 사용
402=속도별 색깔
403=매우 좋음
404=좋음
405=보통
406=나쁨
407=그래프 보기
408=클라이언트의 접속이 없을때 사용할 DC 선택
409=현재 연결 IP
410=그래프 모양
411=선형
412=곡선
413=손실율 표시
500=로그
501=복사
502=모두 지우기
503=자동으로 스크롤
10001="{0}" 떠스요! 10001="{0}" 떠스요!
10002=찾아요: {0} 10002=찾아요: {0}

View file

@ -12,7 +12,7 @@ namespace DutyContent
{ {
class DcConfig class DcConfig
{ {
public static int PluginTag => 14; public static int PluginTag => 15;
public static Version PluginVersion => System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; public static Version PluginVersion => System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
public static bool PluginEnable { get; set; } public static bool PluginEnable { get; set; }
@ -33,6 +33,7 @@ namespace DutyContent
public static int LastUpdatedPlugin { get; set; } = 0; public static int LastUpdatedPlugin { get; set; } = 0;
public static string UiFontFamily { get; set; } = "Microsoft Sans Serif"; public static string UiFontFamily { get; set; } = "Microsoft Sans Serif";
public static bool StatusBar { get; set; } = false; public static bool StatusBar { get; set; } = false;
public static bool DebugEnable { get; set; } = false;
// //
public static string BuildDataFileName(string header, string context, string ext) public static string BuildDataFileName(string header, string context, string ext)
@ -75,6 +76,7 @@ namespace DutyContent
sw.WriteLine("LastUpdatedPlugin={0}", LastUpdatedPlugin); sw.WriteLine("LastUpdatedPlugin={0}", LastUpdatedPlugin);
sw.WriteLine("UiFontFamily={0}", UiFontFamily); sw.WriteLine("UiFontFamily={0}", UiFontFamily);
sw.WriteLine("StatusBar={0}", StatusBar); sw.WriteLine("StatusBar={0}", StatusBar);
sw.WriteLine("DebugEnable={0}", DebugEnable);
sw.WriteLine(); sw.WriteLine();
Duty.InternalSaveStream(sw); Duty.InternalSaveStream(sw);
@ -97,6 +99,7 @@ namespace DutyContent
LastUpdatedPlugin = ThirdParty.Converter.ToInt(db["LastUpdatedPlugin"]); LastUpdatedPlugin = ThirdParty.Converter.ToInt(db["LastUpdatedPlugin"]);
UiFontFamily = db.Get("UiFontFamily", UiFontFamily); UiFontFamily = db.Get("UiFontFamily", UiFontFamily);
StatusBar = ThirdParty.Converter.ToBool(db["StatusBar"], StatusBar); StatusBar = ThirdParty.Converter.ToBool(db["StatusBar"], StatusBar);
DebugEnable = ThirdParty.Converter.ToBool(db["DebugEnable"], DebugEnable);
Duty.InternalReadFromDb(db); Duty.InternalReadFromDb(db);
} }
@ -107,16 +110,16 @@ namespace DutyContent
if (string.IsNullOrWhiteSpace(Language)) if (string.IsNullOrWhiteSpace(Language))
{ {
if (!is_in_init) if (!is_in_init)
MesgLog.Initialize(Properties.Resources.DefaultMessage); Locale.Initialize(Properties.Resources.DefaultMessage);
} }
else else
{ {
string filename = BuildLangFileName(Language); string filename = BuildLangFileName(Language);
if (File.Exists(filename)) if (File.Exists(filename))
MesgLog.LoadFile(filename); Locale.LoadFile(filename);
else else
MesgLog.Initialize(Properties.Resources.DefaultMessage); Locale.Initialize(Properties.Resources.DefaultMessage);
} }
} }
@ -139,7 +142,7 @@ namespace DutyContent
if (!File.Exists(filename)) if (!File.Exists(filename))
{ {
MesgLog.E(27, " "); Logger.E(27, " ");
return false; return false;
} }
} }
@ -150,8 +153,7 @@ namespace DutyContent
// load. if file not exist, create new one with default value // load. if file not exist, create new one with default value
Packet.Load(filename); Packet.Load(filename);
Logger.Write(Packet.GetInformation());
MesgLog.I(29, Packet.Version, Packet.Description, filename);
return true; return true;
} }
@ -160,13 +162,13 @@ namespace DutyContent
public class PacketConfig public class PacketConfig
{ {
// Packet // Packet
public long Version { get; set; } = 2005551; public long Version { get; set; } = 2005580;
public string Description { get; set; } = "5.55 HotFix"; public string Description { get; set; } = "5.58 (JP/NA/EU/OC)";
public ushort OpFate { get; set; } = 858; public ushort OpFate { get; set; } = 788;
public ushort OpDuty { get; set; } = 271; public ushort OpDuty { get; set; } = 676;
public ushort OpMatch { get; set; } = 220; public ushort OpMatch { get; set; } = 428;
public ushort OpInstance { get; set; } = 923; public ushort OpInstance { get; set; } = 234;
public ushort OpSouthernBozja { get; set; } = 584; public ushort OpCe { get; set; } = 269;
// packet version structure // packet version structure
// 0 - Service area (1:Custom, 2:Global, 3:Korea) // 0 - Service area (1:Custom, 2:Global, 3:Korea)
@ -197,7 +199,7 @@ namespace DutyContent
OpDuty = right.OpDuty; OpDuty = right.OpDuty;
OpMatch = right.OpMatch; OpMatch = right.OpMatch;
OpInstance = right.OpInstance; OpInstance = right.OpInstance;
OpSouthernBozja = right.OpSouthernBozja; OpCe = right.OpCe;
} }
else else
{ {
@ -205,10 +207,22 @@ namespace DutyContent
OpDuty = 0; OpDuty = 0;
OpMatch = 0; OpMatch = 0;
OpInstance = 0; OpInstance = 0;
OpSouthernBozja = 0; OpCe = 0;
} }
} }
//
public string GetInformation()
{
return Locale.Text(29, Version, Description);
}
//
public override string ToString()
{
return GetInformation();
}
// //
public bool Save(string filename) public bool Save(string filename)
{ {
@ -227,7 +241,7 @@ namespace DutyContent
sw.WriteLine("OpDuty={0}", OpDuty); sw.WriteLine("OpDuty={0}", OpDuty);
sw.WriteLine("OpMatch={0}", OpMatch); sw.WriteLine("OpMatch={0}", OpMatch);
sw.WriteLine("OpInstance={0}", OpInstance); sw.WriteLine("OpInstance={0}", OpInstance);
sw.WriteLine("OpSouthernBozja={0}", OpSouthernBozja); sw.WriteLine("OpSouthernBozja={0}", OpCe);
sw.WriteLine(); sw.WriteLine();
} }
@ -242,7 +256,7 @@ namespace DutyContent
OpDuty = ThirdParty.Converter.ToUshort(db["OpDuty"], OpDuty); OpDuty = ThirdParty.Converter.ToUshort(db["OpDuty"], OpDuty);
OpMatch = ThirdParty.Converter.ToUshort(db["OpMatch"], OpMatch); OpMatch = ThirdParty.Converter.ToUshort(db["OpMatch"], OpMatch);
OpInstance = ThirdParty.Converter.ToUshort(db["OpInstance"], OpInstance); OpInstance = ThirdParty.Converter.ToUshort(db["OpInstance"], OpInstance);
OpSouthernBozja = ThirdParty.Converter.ToUshort(db["OpSouthernBozja"], OpSouthernBozja); OpCe = ThirdParty.Converter.ToUshort(db["OpSouthernBozja"], OpCe);
} }
// //
@ -302,7 +316,9 @@ namespace DutyContent
Color.FromArgb(0xFF, 0xDD, 0xA0, 0xDD), Color.FromArgb(0xFF, 0xDD, 0xA0, 0xDD),
}; };
public bool PingGraph { get; set; } public bool PingGraph { get; set; }
public bool PingShowLoss { get; set; }
public string PingDefAddr { get; set; } public string PingDefAddr { get; set; }
public int PingGraphType { get; set; }
// //
public bool EnableNotify => UseNotifyLine || UseNotifyTelegram || UseNotifyDiscordWebhook; public bool EnableNotify => UseNotifyLine || UseNotifyTelegram || UseNotifyDiscordWebhook;
@ -356,8 +372,10 @@ namespace DutyContent
sw.WriteLine("DutyPingColor1={0:X}", PingColors[1].ToArgb()); sw.WriteLine("DutyPingColor1={0:X}", PingColors[1].ToArgb());
sw.WriteLine("DutyPingColor2={0:X}", PingColors[2].ToArgb()); sw.WriteLine("DutyPingColor2={0:X}", PingColors[2].ToArgb());
sw.WriteLine("DutyPingColor3={0:X}", PingColors[3].ToArgb()); sw.WriteLine("DutyPingColor3={0:X}", PingColors[3].ToArgb());
sw.WriteLine("DutyPingShowLoss={0}", PingShowLoss);
sw.WriteLine("DutyPingGraph={0}", PingGraph); sw.WriteLine("DutyPingGraph={0}", PingGraph);
sw.WriteLine("DutyPingDefAddr={0}", PingDefAddr); sw.WriteLine("DutyPingDefAddr={0}", PingDefAddr);
sw.WriteLine("DutyPingGraphType={0}", PingGraphType);
sw.WriteLine(); sw.WriteLine();
} }
@ -401,8 +419,10 @@ namespace DutyContent
PingColors[1] = ThirdParty.Converter.ToColorArgb(db["DutyPingColor1"], PingColors[1]); PingColors[1] = ThirdParty.Converter.ToColorArgb(db["DutyPingColor1"], PingColors[1]);
PingColors[2] = ThirdParty.Converter.ToColorArgb(db["DutyPingColor2"], PingColors[2]); PingColors[2] = ThirdParty.Converter.ToColorArgb(db["DutyPingColor2"], PingColors[2]);
PingColors[3] = ThirdParty.Converter.ToColorArgb(db["DutyPingColor3"], PingColors[3]); PingColors[3] = ThirdParty.Converter.ToColorArgb(db["DutyPingColor3"], PingColors[3]);
PingShowLoss = ThirdParty.Converter.ToBool(db["DutyPingShowLoss"]);
PingGraph = ThirdParty.Converter.ToBool(db["DutyPingGraph"]); PingGraph = ThirdParty.Converter.ToBool(db["DutyPingGraph"]);
PingDefAddr = db.Get("DutyPingDefAddr", string.Empty); PingDefAddr = db.Get("DutyPingDefAddr", string.Empty);
PingGraphType = ThirdParty.Converter.ToInt(db["PingGraphType"]);
} }
} }
@ -440,19 +460,24 @@ namespace DutyContent
// //
public class ConnectionList public class ConnectionList
{ {
public List<ThirdParty.NativeMethods.TcpRow> Conns = new List<ThirdParty.NativeMethods.TcpRow>(); public SortedSet<ThirdParty.NativeMethods.TcpRow> Conns = new SortedSet<ThirdParty.NativeMethods.TcpRow>();
public int Count => Conns.Count;
public ThirdParty.NativeMethods.TcpRow[] CopyConnection() public ThirdParty.NativeMethods.TcpRow[] CopyConnection()
{ {
ThirdParty.NativeMethods.TcpRow[] ret; ThirdParty.NativeMethods.TcpRow[] ret;
lock (Conns) lock (Conns)
ret = Conns.ToArray(); {
ret = new ThirdParty.NativeMethods.TcpRow[Conns.Count];
Conns.CopyTo(ret);
}
return ret; return ret;
} }
public void GetConnections(Process process) public void BuildConnections(Process process)
{ {
var size = 0; var size = 0;
ThirdParty.NativeMethods.GetExtendedTcpTable(IntPtr.Zero, ref size, true, AddressFamily.InterNetwork, 4); ThirdParty.NativeMethods.GetExtendedTcpTable(IntPtr.Zero, ref size, true, AddressFamily.InterNetwork, 4);

View file

@ -72,6 +72,18 @@ namespace DutyContent
public static IReadOnlyDictionary<int, Fate> Fates { get; private set; } = new Dictionary<int, Fate>(); public static IReadOnlyDictionary<int, Fate> Fates { get; private set; } = new Dictionary<int, Fate>();
public static Dictionary<int, int> Missions { get; private set; } = new Dictionary<int, int>(); public static Dictionary<int, int> Missions { get; private set; } = new Dictionary<int, int>();
//
public static string GetInformation()
{
return Locale.Text(20,
Language,
Version,
Areas.Count,
Roulettes.Count,
Instances.Count,
Fates.Count);
}
// //
public static bool Initialize(string json) public static bool Initialize(string json)
{ {
@ -116,12 +128,12 @@ namespace DutyContent
} }
catch (NullReferenceException /*nex*/) catch (NullReferenceException /*nex*/)
{ {
MesgLog.E(7, fate.Key); Logger.E(7, fate.Key);
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
MesgLog.Ex(ex, 8); Logger.Ex(ex, 8);
return false; return false;
} }
} }
@ -167,28 +179,28 @@ namespace DutyContent
public static Roulette GetRoulette(int code) public static Roulette GetRoulette(int code)
{ {
return Roulettes.TryGetValue(code, out Roulette roulette) ? roulette : return Roulettes.TryGetValue(code, out Roulette roulette) ? roulette :
new Roulette { Name = MesgLog.Text(9, code) }; new Roulette { Name = Locale.Text(9, code) };
} }
// //
public static Instance GetInstance(int code) public static Instance GetInstance(int code)
{ {
return Instances.TryGetValue(code, out Instance instance) ? instance : return Instances.TryGetValue(code, out Instance instance) ? instance :
new Instance { Name = MesgLog.Text(10, code) }; new Instance { Name = Locale.Text(10, code) };
} }
// //
public static Area GetArea(int code) public static Area GetArea(int code)
{ {
return Areas.TryGetValue(code, out Area area) ? area : return Areas.TryGetValue(code, out Area area) ? area :
new Area { Name = MesgLog.Text(11, code) }; new Area { Name = Locale.Text(11, code) };
} }
// //
public static Fate GetFate(int code) public static Fate GetFate(int code)
{ {
return Fates.ContainsKey(code) ? Fates[code] : return Fates.ContainsKey(code) ? Fates[code] :
new Fate { Name = MesgLog.Text(12, code) }; new Fate { Name = Locale.Text(12, code) };
} }
// //
@ -207,7 +219,7 @@ namespace DutyContent
if (!File.Exists(filename)) if (!File.Exists(filename))
{ {
MesgLog.E(14, filename); Logger.E(14, filename);
return false; return false;
} }
@ -217,22 +229,15 @@ namespace DutyContent
string json = File.ReadAllText(filename, Encoding.UTF8); string json = File.ReadAllText(filename, Encoding.UTF8);
if (!Initialize(json)) if (Initialize(json))
{ {
MesgLog.E(13); Logger.Write(GetInformation());
return false; return true;
} }
else else
{ {
MesgLog.I(20, Logger.E(13);
Language, return false;
Version,
Areas.Count,
Roulettes.Count,
Instances.Count,
Fates.Count,
filename);
return true;
} }
} }
@ -241,11 +246,11 @@ namespace DutyContent
// 10[1] status 0=end, 1=wait, 2=??, 3=progress // 10[1] status 0=end, 1=wait, 2=??, 3=progress
switch (s) switch (s)
{ {
case 0: return MesgLog.Text(10017); case 0: return Locale.Text(10017);
case 1: return MesgLog.Text(10018); case 1: return Locale.Text(10018);
case 2: return MesgLog.Text(10019); case 2: return Locale.Text(10019);
case 3: return MesgLog.Text(10020); case 3: return Locale.Text(10020);
default: return MesgLog.Text(10021); default: return Locale.Text(10021);
} }
} }

108
DcControl.Designer.cs generated
View file

@ -29,77 +29,67 @@ namespace DutyContent
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.spctBase = new System.Windows.Forms.SplitContainer();
this.tabMain = new System.Windows.Forms.TabControl(); this.tabMain = new System.Windows.Forms.TabControl();
this.tabPageLog = new System.Windows.Forms.TabPage();
this.tabPageDuty = new System.Windows.Forms.TabPage(); this.tabPageDuty = new System.Windows.Forms.TabPage();
this.tabPagePing = new System.Windows.Forms.TabPage(); this.tabPagePing = new System.Windows.Forms.TabPage();
this.tabPageConfig = new System.Windows.Forms.TabPage(); this.tabPageConfig = new System.Windows.Forms.TabPage();
this.txtMesg = new System.Windows.Forms.RichTextBox();
this.btnClearMesg = new System.Windows.Forms.Button();
this.panelBase = new System.Windows.Forms.Panel(); this.panelBase = new System.Windows.Forms.Panel();
this.lblStatusLeft = new System.Windows.Forms.Label(); this.lblStatusLeft = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.spctBase)).BeginInit();
this.spctBase.Panel1.SuspendLayout();
this.spctBase.Panel2.SuspendLayout();
this.spctBase.SuspendLayout();
this.tabMain.SuspendLayout(); this.tabMain.SuspendLayout();
this.panelBase.SuspendLayout(); this.panelBase.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// spctBase
//
this.spctBase.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.spctBase.Location = new System.Drawing.Point(3, 3);
this.spctBase.Name = "spctBase";
this.spctBase.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// spctBase.Panel1
//
this.spctBase.Panel1.Controls.Add(this.tabMain);
//
// spctBase.Panel2
//
this.spctBase.Panel2.Controls.Add(this.txtMesg);
this.spctBase.Panel2.Controls.Add(this.btnClearMesg);
this.spctBase.Size = new System.Drawing.Size(786, 534);
this.spctBase.SplitterDistance = 467;
this.spctBase.TabIndex = 0;
//
// tabMain // tabMain
// //
this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left; this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left;
this.tabMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabMain.Controls.Add(this.tabPageLog);
this.tabMain.Controls.Add(this.tabPageDuty); this.tabMain.Controls.Add(this.tabPageDuty);
this.tabMain.Controls.Add(this.tabPagePing); this.tabMain.Controls.Add(this.tabPagePing);
this.tabMain.Controls.Add(this.tabPageConfig); this.tabMain.Controls.Add(this.tabPageConfig);
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabMain.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed; this.tabMain.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this.tabMain.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tabMain.ItemSize = new System.Drawing.Size(30, 100); this.tabMain.ItemSize = new System.Drawing.Size(30, 100);
this.tabMain.Location = new System.Drawing.Point(0, 0); this.tabMain.Location = new System.Drawing.Point(0, 0);
this.tabMain.Margin = new System.Windows.Forms.Padding(4);
this.tabMain.Multiline = true; this.tabMain.Multiline = true;
this.tabMain.Name = "tabMain"; this.tabMain.Name = "tabMain";
this.tabMain.SelectedIndex = 0; this.tabMain.SelectedIndex = 0;
this.tabMain.Size = new System.Drawing.Size(786, 467); this.tabMain.Size = new System.Drawing.Size(820, 465);
this.tabMain.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabMain.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.tabMain.TabIndex = 0; this.tabMain.TabIndex = 0;
this.tabMain.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.TabMain_DrawItem); this.tabMain.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.TabMain_DrawItem);
// //
// tabPageLog
//
this.tabPageLog.Location = new System.Drawing.Point(104, 4);
this.tabPageLog.Margin = new System.Windows.Forms.Padding(4);
this.tabPageLog.Name = "tabPageLog";
this.tabPageLog.Size = new System.Drawing.Size(712, 457);
this.tabPageLog.TabIndex = 3;
this.tabPageLog.Text = "Log";
this.tabPageLog.UseVisualStyleBackColor = true;
//
// tabPageDuty // tabPageDuty
// //
this.tabPageDuty.BackColor = System.Drawing.Color.Transparent; this.tabPageDuty.BackColor = System.Drawing.Color.Transparent;
this.tabPageDuty.Location = new System.Drawing.Point(104, 4); this.tabPageDuty.Location = new System.Drawing.Point(104, 4);
this.tabPageDuty.Margin = new System.Windows.Forms.Padding(4);
this.tabPageDuty.Name = "tabPageDuty"; this.tabPageDuty.Name = "tabPageDuty";
this.tabPageDuty.Padding = new System.Windows.Forms.Padding(3); this.tabPageDuty.Padding = new System.Windows.Forms.Padding(4);
this.tabPageDuty.Size = new System.Drawing.Size(678, 459); this.tabPageDuty.Size = new System.Drawing.Size(712, 441);
this.tabPageDuty.TabIndex = 0; this.tabPageDuty.TabIndex = 0;
this.tabPageDuty.Text = "Duty"; this.tabPageDuty.Text = "Duty";
// //
// tabPagePing // tabPagePing
// //
this.tabPagePing.Location = new System.Drawing.Point(104, 4); this.tabPagePing.Location = new System.Drawing.Point(104, 4);
this.tabPagePing.Margin = new System.Windows.Forms.Padding(4);
this.tabPagePing.Name = "tabPagePing"; this.tabPagePing.Name = "tabPagePing";
this.tabPagePing.Size = new System.Drawing.Size(678, 459); this.tabPagePing.Size = new System.Drawing.Size(712, 441);
this.tabPagePing.TabIndex = 2; this.tabPagePing.TabIndex = 2;
this.tabPagePing.Text = "Ping"; this.tabPagePing.Text = "Ping";
this.tabPagePing.UseVisualStyleBackColor = true; this.tabPagePing.UseVisualStyleBackColor = true;
@ -107,43 +97,23 @@ namespace DutyContent
// tabPageConfig // tabPageConfig
// //
this.tabPageConfig.Location = new System.Drawing.Point(104, 4); this.tabPageConfig.Location = new System.Drawing.Point(104, 4);
this.tabPageConfig.Margin = new System.Windows.Forms.Padding(4);
this.tabPageConfig.Name = "tabPageConfig"; this.tabPageConfig.Name = "tabPageConfig";
this.tabPageConfig.Padding = new System.Windows.Forms.Padding(3); this.tabPageConfig.Padding = new System.Windows.Forms.Padding(4);
this.tabPageConfig.Size = new System.Drawing.Size(678, 459); this.tabPageConfig.Size = new System.Drawing.Size(712, 441);
this.tabPageConfig.TabIndex = 1; this.tabPageConfig.TabIndex = 1;
this.tabPageConfig.Text = "Config"; this.tabPageConfig.Text = "Config";
this.tabPageConfig.UseVisualStyleBackColor = true; this.tabPageConfig.UseVisualStyleBackColor = true;
// //
// txtMesg
//
this.txtMesg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtMesg.Location = new System.Drawing.Point(104, 3);
this.txtMesg.Name = "txtMesg";
this.txtMesg.ReadOnly = true;
this.txtMesg.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.txtMesg.Size = new System.Drawing.Size(679, 57);
this.txtMesg.TabIndex = 1;
this.txtMesg.Text = "";
//
// btnClearMesg
//
this.btnClearMesg.Location = new System.Drawing.Point(3, 3);
this.btnClearMesg.Name = "btnClearMesg";
this.btnClearMesg.Size = new System.Drawing.Size(95, 33);
this.btnClearMesg.TabIndex = 0;
this.btnClearMesg.Text = "Clear Mesg";
this.btnClearMesg.UseVisualStyleBackColor = true;
//
// panelBase // panelBase
// //
this.panelBase.Controls.Add(this.tabMain);
this.panelBase.Controls.Add(this.lblStatusLeft); this.panelBase.Controls.Add(this.lblStatusLeft);
this.panelBase.Controls.Add(this.spctBase);
this.panelBase.Dock = System.Windows.Forms.DockStyle.Fill; this.panelBase.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelBase.Location = new System.Drawing.Point(0, 0); this.panelBase.Location = new System.Drawing.Point(0, 0);
this.panelBase.Margin = new System.Windows.Forms.Padding(4);
this.panelBase.Name = "panelBase"; this.panelBase.Name = "panelBase";
this.panelBase.Size = new System.Drawing.Size(792, 567); this.panelBase.Size = new System.Drawing.Size(820, 490);
this.panelBase.TabIndex = 1; this.panelBase.TabIndex = 1;
// //
// lblStatusLeft // lblStatusLeft
@ -153,9 +123,10 @@ namespace DutyContent
this.lblStatusLeft.BackColor = System.Drawing.Color.MidnightBlue; this.lblStatusLeft.BackColor = System.Drawing.Color.MidnightBlue;
this.lblStatusLeft.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblStatusLeft.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblStatusLeft.ForeColor = System.Drawing.Color.White; this.lblStatusLeft.ForeColor = System.Drawing.Color.White;
this.lblStatusLeft.Location = new System.Drawing.Point(0, 540); this.lblStatusLeft.Location = new System.Drawing.Point(0, 462);
this.lblStatusLeft.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblStatusLeft.Name = "lblStatusLeft"; this.lblStatusLeft.Name = "lblStatusLeft";
this.lblStatusLeft.Size = new System.Drawing.Size(792, 27); this.lblStatusLeft.Size = new System.Drawing.Size(820, 28);
this.lblStatusLeft.TabIndex = 1; this.lblStatusLeft.TabIndex = 1;
this.lblStatusLeft.Text = "99"; this.lblStatusLeft.Text = "99";
this.lblStatusLeft.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.lblStatusLeft.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@ -163,15 +134,13 @@ namespace DutyContent
// //
// DcControl // DcControl
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.panelBase); this.Controls.Add(this.panelBase);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "DcControl"; this.Name = "DcControl";
this.Size = new System.Drawing.Size(792, 567); this.Size = new System.Drawing.Size(820, 490);
this.spctBase.Panel1.ResumeLayout(false);
this.spctBase.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.spctBase)).EndInit();
this.spctBase.ResumeLayout(false);
this.tabMain.ResumeLayout(false); this.tabMain.ResumeLayout(false);
this.panelBase.ResumeLayout(false); this.panelBase.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
@ -179,15 +148,12 @@ namespace DutyContent
} }
#endregion #endregion
private System.Windows.Forms.SplitContainer spctBase;
private System.Windows.Forms.Button btnClearMesg;
private System.Windows.Forms.TabControl tabMain; private System.Windows.Forms.TabControl tabMain;
private System.Windows.Forms.TabPage tabPageDuty; private System.Windows.Forms.TabPage tabPageDuty;
private System.Windows.Forms.TabPage tabPageConfig; private System.Windows.Forms.TabPage tabPageConfig;
private System.Windows.Forms.RichTextBox txtMesg;
private System.Windows.Forms.TabPage tabPagePing; private System.Windows.Forms.TabPage tabPagePing;
private System.Windows.Forms.Panel panelBase; private System.Windows.Forms.Panel panelBase;
private System.Windows.Forms.Label lblStatusLeft; private System.Windows.Forms.Label lblStatusLeft;
private System.Windows.Forms.TabPage tabPageLog;
} }
} }

View file

@ -65,6 +65,9 @@ namespace DutyContent
Tab.ConfigForm configform = new Tab.ConfigForm(); Tab.ConfigForm configform = new Tab.ConfigForm();
tabPageConfig.Controls.Add(configform.Controls[0]); tabPageConfig.Controls.Add(configform.Controls[0]);
Tab.LogForm logform = new Tab.LogForm();
tabPageLog.Controls.Add(logform.Controls[0]);
} }
// //
@ -89,7 +92,7 @@ namespace DutyContent
ActGlobals.oFormActMain.Shown += OFormActMain_Shown; ActGlobals.oFormActMain.Shown += OFormActMain_Shown;
var actinfo = System.Reflection.Assembly.GetAssembly(typeof(ActGlobals)); var actinfo = System.Reflection.Assembly.GetAssembly(typeof(ActGlobals));
MesgLog.I(5, actinfo.GetName().Version, actinfo.Location); Logger.I(5, actinfo.GetName().Version);
if (_ffxiv_plugin_data == null) if (_ffxiv_plugin_data == null)
{ {
@ -101,7 +104,7 @@ namespace DutyContent
} }
if (_ffxiv_plugin_data == null) if (_ffxiv_plugin_data == null)
MesgLog.E(2); // FFXIV plugin is missing! Logger.E(2); // FFXIV plugin is missing!
else else
{ {
var ids = ((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_ffxiv_plugin_data.pluginObj).DataSubscription; var ids = ((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_ffxiv_plugin_data.pluginObj).DataSubscription;
@ -110,7 +113,7 @@ namespace DutyContent
ids.ZoneChanged -= FFXIVPlugin_ZoneChanged; ids.ZoneChanged -= FFXIVPlugin_ZoneChanged;
ids.ZoneChanged += FFXIVPlugin_ZoneChanged; ids.ZoneChanged += FFXIVPlugin_ZoneChanged;
MesgLog.I(6, System.Diagnostics.FileVersionInfo.GetVersionInfo(_ffxiv_plugin_data.pluginFile.FullName).FileVersion, _ffxiv_plugin_data.pluginFile.FullName); Logger.I(6, System.Diagnostics.FileVersionInfo.GetVersionInfo(_ffxiv_plugin_data.pluginFile.FullName).FileVersion);
} }
_save_timer = new System.Timers.Timer() { Interval = 5000 }; _save_timer = new System.Timers.Timer() { Interval = 5000 };
@ -142,10 +145,9 @@ namespace DutyContent
Tab.PingForm.Self?.PluginDeinitialize(); Tab.PingForm.Self?.PluginDeinitialize();
Tab.DutyForm.Self?.PluginDeinitialize(); Tab.DutyForm.Self?.PluginDeinitialize();
Tab.ConfigForm.Self?.PluginDeinitialize(); Tab.ConfigForm.Self?.PluginDeinitialize();
Tab.LogForm.Self?.PluginDeinitialize();
DcConfig.SaveConfig(); DcConfig.SaveConfig();
MesgLog.SetTextBox(null);
_act_tab = null; _act_tab = null;
if (_act_label != null) if (_act_label != null)
@ -171,10 +173,9 @@ namespace DutyContent
_act_label.Text = "Starting..."; _act_label.Text = "Starting...";
// //
MesgLog.SetTextBox(txtMesg); Locale.Initialize(Properties.Resources.DefaultMessage);
MesgLog.Initialize(Properties.Resources.DefaultMessage);
MesgLog.C(Color.Aquamarine, 4, DcConfig.PluginVersion.ToString()); Logger.I(4, DcConfig.PluginVersion.ToString());
DcConfig.LoadConfig(); DcConfig.LoadConfig();
ShowStatusBarAsConfig(true); ShowStatusBarAsConfig(true);
@ -185,17 +186,20 @@ namespace DutyContent
UpdateUiLocale(); UpdateUiLocale();
lblStatusLeft.Text = MesgLog.Text(99, DcConfig.PluginVersion); // once here lblStatusLeft.Text = Locale.Text(99, DcConfig.PluginVersion); // once here
// //
Dock = DockStyle.Fill; Dock = DockStyle.Fill;
_act_tab.Controls.Add(this); _act_tab.Controls.Add(this);
// //
Tab.LogForm.Self?.PluginInitialize();
Tab.ConfigForm.Self?.PluginInitialize(); Tab.ConfigForm.Self?.PluginInitialize();
Tab.DutyForm.Self?.PluginInitialize(); Tab.DutyForm.Self?.PluginInitialize();
Tab.PingForm.Self?.PluginInitialize(); Tab.PingForm.Self?.PluginInitialize();
tabMain.SelectedTab = tabPageDuty;
// //
if (DcConfig.DataRemoteUpdate) if (DcConfig.DataRemoteUpdate)
{ {
@ -206,7 +210,7 @@ namespace DutyContent
frm.PluginInitialize(); frm.PluginInitialize();
frm.UpdateUiLocale(); frm.UpdateUiLocale();
TabPage tp = new TabPage(MesgLog.Text(206)); TabPage tp = new TabPage(Locale.Text(206));
try try
{ {
// why? sometimes trouble // why? sometimes trouble
@ -214,7 +218,7 @@ namespace DutyContent
} }
catch (Exception ex) catch (Exception ex)
{ {
MesgLog.Ex(ex); Logger.Ex(ex);
} }
tabMain.TabPages.Add(tp); tabMain.TabPages.Add(tp);
@ -227,7 +231,7 @@ namespace DutyContent
DcConfig.SaveConfig(); DcConfig.SaveConfig();
} }
MesgLog.C(Color.Aquamarine, 207, DcConfig.PluginTag, tag); Logger.C(Color.Aquamarine, 207, DcConfig.PluginTag, tag);
} }
} }
@ -254,7 +258,7 @@ namespace DutyContent
if (tabMain.SelectedIndex == e.Index) if (tabMain.SelectedIndex == e.Index)
{ {
f = new Font(tabMain.Font.FontFamily, 12.0f, FontStyle.Bold, GraphicsUnit.Pixel); f = new Font(tabMain.Font.FontFamily, 14.0f, FontStyle.Bold, GraphicsUnit.Pixel);
#if false #if false
b = new SolidBrush(Color.Black); b = new SolidBrush(Color.Black);
h = SystemBrushes.Window; h = SystemBrushes.Window;
@ -266,7 +270,7 @@ namespace DutyContent
//else if (p.col) //else if (p.col)
else else
{ {
f = new Font(tabMain.Font.FontFamily, 12.0f, FontStyle.Regular, GraphicsUnit.Pixel); f = new Font(tabMain.Font.FontFamily, 14.0f, FontStyle.Regular, GraphicsUnit.Pixel);
b = new SolidBrush(Color.DarkSlateGray); b = new SolidBrush(Color.DarkSlateGray);
h = SystemBrushes.Control; h = SystemBrushes.Control;
} }
@ -320,7 +324,7 @@ namespace DutyContent
if (span.TotalSeconds > 2) if (span.TotalSeconds > 2)
{ {
_game_connection_tick = now; _game_connection_tick = now;
DcConfig.Connections.GetConnections(_game_process.Process); DcConfig.Connections.BuildConnections(_game_process.Process);
} }
} }
@ -353,7 +357,7 @@ namespace DutyContent
{ {
Tab.DutyForm.Self?.ZoneChanged(zone_id, zone_name); Tab.DutyForm.Self?.ZoneChanged(zone_id, zone_name);
lblStatusLeft.Text = MesgLog.Text(34, zone_name, zone_id); lblStatusLeft.Text = Locale.Text(34, zone_name, zone_id);
} }
// //
@ -361,18 +365,21 @@ namespace DutyContent
{ {
ThirdParty.FontUtilities.SimpleChangeFont(this, DcConfig.UiFontFamily, true); ThirdParty.FontUtilities.SimpleChangeFont(this, DcConfig.UiFontFamily, true);
_act_label.Text = MesgLog.Text(1); // Duty ready _act_label.Text = Locale.Text(1); // Duty ready
_act_tab.Text = MesgLog.Text(0); // FFXIV dc _act_tab.Text = Locale.Text(0); // FFXIV dc
tabPageDuty.Text = MesgLog.Text(300); tabPageDuty.Text = Locale.Text(300);
Tab.DutyForm.Self?.UpdateUiLocale(); Tab.DutyForm.Self?.UpdateUiLocale();
tabPagePing.Text = MesgLog.Text(327); tabPagePing.Text = Locale.Text(400);
Tab.PingForm.Self?.UpdateUiLocale(); Tab.PingForm.Self?.UpdateUiLocale();
tabPageConfig.Text = MesgLog.Text(200); tabPageConfig.Text = Locale.Text(200);
Tab.ConfigForm.Self?.UpdateUiLocale(); Tab.ConfigForm.Self?.UpdateUiLocale();
tabPageLog.Text = Locale.Text(500);
Tab.LogForm.Self?.UpdateUiLocale();
Tab.UpdateNotifyForm.Self?.UpdateUiLocale(); Tab.UpdateNotifyForm.Self?.UpdateUiLocale();
} }
@ -383,7 +390,7 @@ namespace DutyContent
{ {
if (!lblStatusLeft.Visible || force) if (!lblStatusLeft.Visible || force)
{ {
spctBase.Dock = DockStyle.None; tabMain.Dock = DockStyle.None;
lblStatusLeft.Visible = true; lblStatusLeft.Visible = true;
} }
} }
@ -392,7 +399,7 @@ namespace DutyContent
if (lblStatusLeft.Visible || force) if (lblStatusLeft.Visible || force)
{ {
lblStatusLeft.Visible = false; lblStatusLeft.Visible = false;
spctBase.Dock = DockStyle.Fill; tabMain.Dock = DockStyle.Fill;
} }
} }
} }

View file

@ -73,6 +73,7 @@
<DependentUpon>DcControl.cs</DependentUpon> <DependentUpon>DcControl.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Libre\PingGrapher.cs" /> <Compile Include="Libre\PingGrapher.cs" />
<Compile Include="Logger.cs" />
<Compile Include="Tab\ConfigForm.cs"> <Compile Include="Tab\ConfigForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -95,6 +96,12 @@
<Compile Include="Overlay\DutyOvForm.Designer.cs"> <Compile Include="Overlay\DutyOvForm.Designer.cs">
<DependentUpon>DutyOvForm.cs</DependentUpon> <DependentUpon>DutyOvForm.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Tab\LogForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Tab\LogForm.Designer.cs">
<DependentUpon>LogForm.cs</DependentUpon>
</Compile>
<Compile Include="Tab\PingForm.cs"> <Compile Include="Tab\PingForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -108,16 +115,23 @@
<DependentUpon>UpdateNotifyForm.cs</DependentUpon> <DependentUpon>UpdateNotifyForm.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ThirdParty\Converter.cs" /> <Compile Include="ThirdParty\Converter.cs" />
<Compile Include="ThirdParty\EXComboBox.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ThirdParty\EXListView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ThirdParty\FontUtilities.cs" /> <Compile Include="ThirdParty\FontUtilities.cs" />
<Compile Include="ThirdParty\LineDb.cs" /> <Compile Include="ThirdParty\LineDb.cs" />
<Compile Include="ThirdParty\NativeMethods.cs" /> <Compile Include="ThirdParty\NativeMethods.cs" />
<Compile Include="ThirdParty\ThreadWorker.cs" /> <Compile Include="ThirdParty\ThreadWorker.cs" />
<Compile Include="ThirdParty\WebApi.cs" /> <Compile Include="ThirdParty\WebApi.cs" />
<Compile Include="ThirdParty\WinFormSupp.cs" />
<Compile Include="Updater.cs" /> <Compile Include="Updater.cs" />
<Compile Include="WorkerAct.cs" /> <Compile Include="WorkerAct.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="MesgLog.cs" /> <Compile Include="Locale.cs" />
<Compile Include="Properties\AssemblyInfo.cs"> <Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
@ -147,6 +161,9 @@
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Tab\LogForm.resx">
<DependentUpon>LogForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Tab\PingForm.resx"> <EmbeddedResource Include="Tab\PingForm.resx">
<DependentUpon>PingForm.cs</DependentUpon> <DependentUpon>PingForm.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -159,7 +176,7 @@
<None Include="Data\DcDuty-Korean.json" /> <None Include="Data\DcDuty-Korean.json" />
<None Include="Data\DcPacket-Custom.config" /> <None Include="Data\DcPacket-Custom.config" />
<None Include="Data\DcPacket-Global.config" /> <None Include="Data\DcPacket-Global.config" />
<None Include="Data\DcPacket-LocalChina.config" /> <None Include="Data\DcPacketReserved-LocalChina.config" />
<None Include="Data\DcPacket-LocalKorea.config" /> <None Include="Data\DcPacket-LocalKorea.config" />
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
@ -204,6 +221,18 @@
<ItemGroup> <ItemGroup>
<Resource Include="Data\DcLang-Korean%28Test%29.txt" /> <Resource Include="Data\DcLang-Korean%28Test%29.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="Resources\pix_rdrt_green.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\pix_rdrt_red.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\pix_rdrt_puple.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\pix_rdrt_bline.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y <PostBuildEvent>if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y

View file

@ -89,7 +89,7 @@ namespace DutyContent.Libre
} }
} }
public void DrawValues(List<int> values) public void DrawValues(List<int> values, DrawType drawtype = DrawType.Linear)
{ {
if (_bmp == null || values.Count < 2) if (_bmp == null || values.Count < 2)
return; return;
@ -136,7 +136,10 @@ namespace DutyContent.Libre
for (var i = 0; i < cd.Count - 1; i++, u += Step) for (var i = 0; i < cd.Count - 1; i++, u += Step)
pts[i] = new PointF(u, height - cd.Values[i] * scale); pts[i] = new PointF(u, height - cd.Values[i] * scale);
g.DrawCurve(pen, pts, 0.6f); if (drawtype == DrawType.Linear)
g.DrawLines(pen, pts);
else if (drawtype == DrawType.Curved)
g.DrawCurve(pen, pts, 0.6f);
} }
#endif #endif
} }
@ -148,5 +151,12 @@ namespace DutyContent.Libre
_pbx.Image = _bmp; _pbx.Image = _bmp;
_pbx.Refresh(); _pbx.Refresh();
} }
//
public enum DrawType : int
{
Linear = 0,
Curved = 1
}
} }
} }

52
Locale.cs Normal file
View file

@ -0,0 +1,52 @@
using System.Text;
namespace DutyContent
{
static class Locale
{
private static ThirdParty.LineDb _lines;
public static string Language { get; private set; }
public static void Initialize(string text)
{
_lines = new ThirdParty.LineDb(text, true);
}
public static bool LoadFile(string filename, Encoding enc)
{
if (_lines == null)
return false;
else
{
_lines.LoadFile(filename, enc, true);
return true;
}
}
public static bool LoadFile(string filename)
{
return LoadFile(filename, Encoding.UTF8);
}
public static string Text(string text)
{
return _lines == null || !_lines.Try(text, out string v) ? $"<{text}>" : v;
}
public static string Text(string text, params object[] prms)
{
return _lines == null || !_lines.Try(text, out string v) ? $"<{text}>" : string.Format(v, prms);
}
public static string Text(int key)
{
return _lines == null || !_lines.Try(key, out string v) ? $"<{key}>" : v;
}
public static string Text(int key, params object[] prms)
{
return _lines == null || !_lines.Try(key, out string v) ? $"<{key}>" : string.Format(v, prms);
}
}
}

77
Logger.cs Normal file
View file

@ -0,0 +1,77 @@
using System;
using System.Drawing;
using System.Text.RegularExpressions;
namespace DutyContent
{
static class Logger
{
private static readonly Regex ExceptionPattern = new Regex(@"\{(.+?)\}");
public static void Write(Color color, string fmt, params object[] prms)
{
if (Tab.LogForm.Self != null)
Tab.LogForm.Self.WriteLog(color, string.Format(fmt, prms));
}
public static void Write(string format, params object[] prms)
{
Write(Color.Black, format, prms);
}
public static void WriteCategory(Color color, string category, string fmt, params object[] prms)
{
if (Tab.LogForm.Self != null)
Tab.LogForm.Self.WriteLogSection(color, category, string.Format(fmt, prms));
}
public static void WriteCategory(string category, string format, params object[] prms)
{
Write(Color.Black, category, format, prms);
}
public static void L(string format, params object[] prms)
{
Write(Color.DarkBlue, format, prms);
}
// color
public static void C(Color color, int key, params object[] prms)
{
Write(color, Locale.Text(key, prms));
}
// info / black
public static void I(int key, params object[] prms)
{
Write(Color.Black, Locale.Text(key, prms));
}
// error / red
public static void E(int key, params object[] prms)
{
Write(Color.Red, Locale.Text(key, prms));
}
// gray
public static void Y(int key, params object[] prms)
{
Write(Color.Gray, Locale.Text(key, prms));
}
// exception
public static void Ex(Exception ex, int key, params object[] prms)
{
string text = Locale.Text(key, prms);
string msg = ExceptionPattern.Replace(ex.Message, "{{$1}}");
Write(Color.Red, $"{text}: {msg}");
}
// exception
public static void Ex(Exception ex)
{
string msg = ExceptionPattern.Replace(ex.Message, "{{$1}}");
Write(Color.Red, $"EX: {msg}");
}
}
}

View file

@ -1,134 +0,0 @@
using System;
using System.Drawing;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace DutyContent
{
class MesgLog
{
private static ThirdParty.LineDb _lines;
private static RichTextBox _logs;
private static readonly Regex ExceptionPattern = new Regex(@"\{(.+?)\}");
public static string Language { get; private set; }
public static void Initialize(string text)
{
_lines = new ThirdParty.LineDb(text, true);
}
public static bool LoadFile(string filename, Encoding enc)
{
if (_lines == null)
return false;
else
{
_lines.LoadFile(filename, enc, true);
return true;
}
}
public static bool LoadFile(string filename)
{
return LoadFile(filename, Encoding.UTF8);
}
public static void SetTextBox(RichTextBox textbox)
{
_logs = textbox;
}
public static string Text(string text)
{
return _lines == null || !_lines.Try(text, out string v) ? $"<{text}>" : v;
}
public static string Text(string text, params object[] prms)
{
return _lines == null || !_lines.Try(text, out string v) ? $"<{text}>" : string.Format(v, prms);
}
public static string Text(int key)
{
return _lines == null || !_lines.Try(key, out string v) ? $"<{key}>" : v;
}
public static string Text(int key, params object[] prms)
{
return _lines == null || !_lines.Try(key, out string v) ? $"<{key}>" : string.Format(v, prms);
}
public static void Write(Color color, string format, params object[] prms)
{
if (_logs == null || _logs.IsDisposed || format == null)
return;
var text = string.Format(format, prms);
var dt = DateTime.Now.ToString("HH:mm:ss");
var ms = $"[{dt}] {text}{Environment.NewLine}";
WorkerAct.Invoker(() =>
{
_logs.SelectionColor = color;
_logs.SelectionStart = _logs.TextLength;
_logs.SelectionLength = 0;
_logs.AppendText(ms);
_logs.SelectionColor = _logs.ForeColor;
ThirdParty.NativeMethods.ScrollToBottom(_logs);
});
}
public static void Write(string format, params object[] prms)
{
Write(Color.White, format, prms);
}
public static void L(string format, params object[] prms)
{
Write(Color.DarkBlue, format, prms);
}
// color
public static void C(Color color, int key, params object[] prms)
{
Write(color, Text(key, prms));
}
// info / black
public static void I(int key, params object[] prms)
{
Write(Color.Black, Text(key, prms));
}
// error / red
public static void E(int key, params object[] prms)
{
Write(Color.Red, Text(key, prms));
}
// gray
public static void Y(int key, params object[] prms)
{
Write(Color.Gray, Text(key, prms));
}
// exception
public static void Ex(Exception ex, int key, params object[] prms)
{
string text = Text(key, prms);
string msg = ExceptionPattern.Replace(ex.Message, "{{$1}}");
Write(Color.Red, $"{text}: {msg}");
}
// exception
public static void Ex(Exception ex)
{
string msg = ExceptionPattern.Replace(ex.Message, "{{$1}}");
Write(Color.Red, $"EX: {msg}");
}
}
}

View file

@ -53,5 +53,5 @@ using System.Windows;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.1.*")]
[assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.1.0.0")]

View file

@ -61,16 +61,16 @@ namespace DutyContent.Properties {
} }
/// <summary> /// <summary>
/// # Default English message /// Looks up a localized string similar to # Default English message
///LANG=English ///LANG=English
/// ///
///0=FFXIV dc ///0=DutyCon
///1=Duty ready ///1=Duty ready
///2=FFXIV plugin is missing! ///2=FFXIV plugin is missing!
///3=FFXIV plugin found! ///3=FFXIV plugin found!
///4=FFXIV Duty Content starting! ///4=FFXIV Duty Content: {0}
///5=ACT info: {0} ({1}) ///5=ACT info: {0}
///6=FFXIV plugin info {0} ({1}) ///6=FFXIV plugin info: {0}
///7=Invalid data: {0} ///7=Invalid data: {0}
///8=Parsing error ///8=Parsing error
///9=Unknown roulette: {0} ///9=Unknown roulette: {0}
@ -79,12 +79,14 @@ namespace DutyContent.Properties {
///12=Unknown FATE: {0} ///12=Unknown FATE: {0}
///13=Data reading failed! ///13=Data reading failed!
///14=Data file not found! {0} ///14=Data file not found! {0}
///20=Duty contents info: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6}) ///20=Duty contents info: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5}
///21=Roulette ///21=Roulette
///22=Instance ///22=Instance
///23=FATE ///23=FATE
///24=Skirmish ///24=Skirmish
/// Looks up a localized string similar to this is city life ///25=CE
///26=Default
///27=N [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string DefaultMessage { internal static string DefaultMessage {
get { get {
@ -122,6 +124,46 @@ namespace DutyContent.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap pix_rdrt_bline {
get {
object obj = ResourceManager.GetObject("pix_rdrt_bline", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap pix_rdrt_green {
get {
object obj = ResourceManager.GetObject("pix_rdrt_green", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap pix_rdrt_puple {
get {
object obj = ResourceManager.GetObject("pix_rdrt_puple", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap pix_rdrt_red {
get {
object obj = ResourceManager.GetObject("pix_rdrt_red", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>

View file

@ -130,6 +130,18 @@
<data name="pix_play" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="pix_play" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pix_play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\pix_play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="pix_rdrt_bline" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pix_rdrt_bline.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pix_rdrt_green" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pix_rdrt_green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pix_rdrt_puple" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pix_rdrt_puple.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pix_rdrt_red" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pix_rdrt_red.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pix_tab_content" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="pix_tab_content" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\pix_tab_content.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\resources\pix_tab_content.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>

Binary file not shown.

View file

@ -6,8 +6,8 @@ LANG=English
2=FFXIV plugin is missing! 2=FFXIV plugin is missing!
3=FFXIV plugin found! 3=FFXIV plugin found!
4=FFXIV Duty Content: {0} 4=FFXIV Duty Content: {0}
5=ACT info: {0} ({1}) 5=ACT info: {0}
6=FFXIV plugin info: {0} ({1}) 6=FFXIV plugin info: {0}
7=Invalid data: {0} 7=Invalid data: {0}
8=Parsing error 8=Parsing error
9=Unknown roulette: {0} 9=Unknown roulette: {0}
@ -16,7 +16,7 @@ LANG=English
12=Unknown FATE: {0} 12=Unknown FATE: {0}
13=Data reading failed! 13=Data reading failed!
14=Data file not found! {0} 14=Data file not found! {0}
20=Duty contents info: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6}) 20=Duty contents info: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5}
21=Roulette 21=Roulette
22=Instance 22=Instance
23=FATE 23=FATE
@ -25,12 +25,17 @@ LANG=English
26=Default 26=Default
27=None 27=None
28=Packet file not found! {0} 28=Packet file not found! {0}
29=Packet info: {0} "{1}" ({2}) 29=Packet info: {0} "{1}"
30=Error requesting web service 30=Error requesting web service
31=Error while updating duty/FATE Data 31=Error while updating duty/FATE Data
32=Error while updating packet info 32=Error while updating packet info
33=Packet updated: {0} "{1}" 33=Packet updated: {0} "{1}"
34={0} ({1}) 34={0} ({1})
35=Access clipboard failed!
36=Window control error!
37=Debug
38=Match
39=Entry
99=DutyContent Plugin {0} 99=DutyContent Plugin {0}
@ -54,14 +59,14 @@ LANG=English
212=Status bar 212=Status bar
213=Enable 213=Enable
214=Disable 214=Disable
215=* Need restart plugin 215=* Need plugin reload
216=Log font
300=Duty 300=Duty
301=Contents 301=Contents
302=Setting 302=Setting
303=Packet 303=Packet
304=Dataset 304=Dataset
305=Log font
306=Enable overlay 306=Enable overlay
307=Transparent 307=Transparent
308=Enable sound 308=Enable sound
@ -83,15 +88,6 @@ LANG=English
324=Status 324=Status
325=Member 325=Member
326=Progress 326=Progress
327=Ping
328=Use ping
329=Colors
330=Excellent
331=Good
332=Normal
333=Bad
334=Show Graph
335=Addresses when client doesn't have connections
336=Packet 336=Packet
337=Custom Packet 337=Custom Packet
338=Use Discord Webhook 338=Use Discord Webhook
@ -99,7 +95,26 @@ LANG=English
340=Test && Save Notifies 340=Test && Save Notifies
341=Use TTS 341=Use TTS
342=Invalid discord webhook URL 342=Invalid discord webhook URL
343=Address
400=Ping
401=Use ping
402=Colors
403=Excellent
404=Good
405=Normal
406=Bad
407=Show Graph
408=Default ping addresses
409=Address
410=Graph type
411=Linear
412=Curved
413=Show loss rate
500=Log
501=Copy
502=Clear
503=Scroll automatically
10001="{0}" spawned! 10001="{0}" spawned!
10002=Entry: {0} 10002=Entry: {0}

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

BIN
Resources/pix_rdrt_red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 B

View file

@ -30,7 +30,14 @@ namespace DutyContent.Tab
private void InitializeComponent() private void InitializeComponent()
{ {
this.pnlBase = new System.Windows.Forms.Panel(); this.pnlBase = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.rdoDebugDisable = new System.Windows.Forms.RadioButton();
this.rdoDebugEnable = new System.Windows.Forms.RadioButton();
this.lblUseDebug = new System.Windows.Forms.Label();
this.btnLogFont = new System.Windows.Forms.Button();
this.lblLogFont = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel(); this.panel2 = new System.Windows.Forms.Panel();
this.lblStatusBarNeedRestart = new System.Windows.Forms.Label();
this.rdoStatusBarEnable = new System.Windows.Forms.RadioButton(); this.rdoStatusBarEnable = new System.Windows.Forms.RadioButton();
this.rdoStatusBarDisable = new System.Windows.Forms.RadioButton(); this.rdoStatusBarDisable = new System.Windows.Forms.RadioButton();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
@ -45,8 +52,8 @@ namespace DutyContent.Tab
this.cboDispLang = new System.Windows.Forms.ComboBox(); this.cboDispLang = new System.Windows.Forms.ComboBox();
this.lblDispLang = new System.Windows.Forms.Label(); this.lblDispLang = new System.Windows.Forms.Label();
this.panelBase = new System.Windows.Forms.Panel(); this.panelBase = new System.Windows.Forms.Panel();
this.lblStatusBarNeedRestart = new System.Windows.Forms.Label();
this.pnlBase.SuspendLayout(); this.pnlBase.SuspendLayout();
this.panel3.SuspendLayout();
this.panel2.SuspendLayout(); this.panel2.SuspendLayout();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.panelBase.SuspendLayout(); this.panelBase.SuspendLayout();
@ -58,6 +65,11 @@ namespace DutyContent.Tab
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.pnlBase.AutoScroll = true; this.pnlBase.AutoScroll = true;
this.pnlBase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pnlBase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlBase.Controls.Add(this.lblStatusBarNeedRestart);
this.pnlBase.Controls.Add(this.panel3);
this.pnlBase.Controls.Add(this.lblUseDebug);
this.pnlBase.Controls.Add(this.btnLogFont);
this.pnlBase.Controls.Add(this.lblLogFont);
this.pnlBase.Controls.Add(this.panel2); this.pnlBase.Controls.Add(this.panel2);
this.pnlBase.Controls.Add(this.panel1); this.pnlBase.Controls.Add(this.panel1);
this.pnlBase.Controls.Add(this.lblUseStatusBar); this.pnlBase.Controls.Add(this.lblUseStatusBar);
@ -68,29 +80,112 @@ namespace DutyContent.Tab
this.pnlBase.Controls.Add(this.lblCurrentLang); this.pnlBase.Controls.Add(this.lblCurrentLang);
this.pnlBase.Controls.Add(this.cboDispLang); this.pnlBase.Controls.Add(this.cboDispLang);
this.pnlBase.Controls.Add(this.lblDispLang); this.pnlBase.Controls.Add(this.lblDispLang);
this.pnlBase.Location = new System.Drawing.Point(12, 12); this.pnlBase.Location = new System.Drawing.Point(0, 0);
this.pnlBase.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.pnlBase.Name = "pnlBase"; this.pnlBase.Name = "pnlBase";
this.pnlBase.Size = new System.Drawing.Size(776, 286); this.pnlBase.Size = new System.Drawing.Size(804, 394);
this.pnlBase.TabIndex = 0; this.pnlBase.TabIndex = 0;
// //
// panel3
//
this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel3.Controls.Add(this.rdoDebugDisable);
this.panel3.Controls.Add(this.rdoDebugEnable);
this.panel3.Location = new System.Drawing.Point(160, 352);
this.panel3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(627, 30);
this.panel3.TabIndex = 19;
//
// rdoDebugDisable
//
this.rdoDebugDisable.AutoSize = true;
this.rdoDebugDisable.Checked = true;
this.rdoDebugDisable.Location = new System.Drawing.Point(158, 4);
this.rdoDebugDisable.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rdoDebugDisable.Name = "rdoDebugDisable";
this.rdoDebugDisable.Size = new System.Drawing.Size(50, 22);
this.rdoDebugDisable.TabIndex = 1;
this.rdoDebugDisable.TabStop = true;
this.rdoDebugDisable.Text = "214";
this.rdoDebugDisable.UseVisualStyleBackColor = true;
this.rdoDebugDisable.CheckedChanged += new System.EventHandler(this.rdoDebugDisable_CheckedChanged);
//
// rdoDebugEnable
//
this.rdoDebugEnable.AutoSize = true;
this.rdoDebugEnable.Location = new System.Drawing.Point(4, 4);
this.rdoDebugEnable.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rdoDebugEnable.Name = "rdoDebugEnable";
this.rdoDebugEnable.Size = new System.Drawing.Size(50, 22);
this.rdoDebugEnable.TabIndex = 0;
this.rdoDebugEnable.Text = "213";
this.rdoDebugEnable.UseVisualStyleBackColor = true;
this.rdoDebugEnable.CheckedChanged += new System.EventHandler(this.rdoDebugEnable_CheckedChanged);
//
// lblUseDebug
//
this.lblUseDebug.AutoSize = true;
this.lblUseDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUseDebug.Location = new System.Drawing.Point(18, 357);
this.lblUseDebug.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblUseDebug.Name = "lblUseDebug";
this.lblUseDebug.Size = new System.Drawing.Size(96, 20);
this.lblUseDebug.TabIndex = 18;
this.lblUseDebug.Text = "Use debug";
//
// btnLogFont
//
this.btnLogFont.Location = new System.Drawing.Point(160, 223);
this.btnLogFont.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.btnLogFont.Name = "btnLogFont";
this.btnLogFont.Size = new System.Drawing.Size(377, 53);
this.btnLogFont.TabIndex = 17;
this.btnLogFont.Text = "button1";
this.btnLogFont.UseVisualStyleBackColor = true;
this.btnLogFont.Click += new System.EventHandler(this.BtnLogFont_Click);
//
// lblLogFont
//
this.lblLogFont.AutoSize = true;
this.lblLogFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblLogFont.Location = new System.Drawing.Point(18, 239);
this.lblLogFont.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblLogFont.Name = "lblLogFont";
this.lblLogFont.Size = new System.Drawing.Size(39, 20);
this.lblLogFont.TabIndex = 16;
this.lblLogFont.Text = "216";
//
// panel2 // panel2
// //
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.panel2.Controls.Add(this.lblStatusBarNeedRestart);
this.panel2.Controls.Add(this.rdoStatusBarEnable); this.panel2.Controls.Add(this.rdoStatusBarEnable);
this.panel2.Controls.Add(this.rdoStatusBarDisable); this.panel2.Controls.Add(this.rdoStatusBarDisable);
this.panel2.Location = new System.Drawing.Point(251, 220); this.panel2.Location = new System.Drawing.Point(160, 284);
this.panel2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panel2.Name = "panel2"; this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(520, 47); this.panel2.Size = new System.Drawing.Size(627, 50);
this.panel2.TabIndex = 15; this.panel2.TabIndex = 15;
// //
// lblStatusBarNeedRestart
//
this.lblStatusBarNeedRestart.AutoSize = true;
this.lblStatusBarNeedRestart.Location = new System.Drawing.Point(164, 314);
this.lblStatusBarNeedRestart.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblStatusBarNeedRestart.Name = "lblStatusBarNeedRestart";
this.lblStatusBarNeedRestart.Size = new System.Drawing.Size(32, 18);
this.lblStatusBarNeedRestart.TabIndex = 14;
this.lblStatusBarNeedRestart.Text = "215";
//
// rdoStatusBarEnable // rdoStatusBarEnable
// //
this.rdoStatusBarEnable.AutoSize = true; this.rdoStatusBarEnable.AutoSize = true;
this.rdoStatusBarEnable.Location = new System.Drawing.Point(2, 3); this.rdoStatusBarEnable.Location = new System.Drawing.Point(3, 4);
this.rdoStatusBarEnable.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rdoStatusBarEnable.Name = "rdoStatusBarEnable"; this.rdoStatusBarEnable.Name = "rdoStatusBarEnable";
this.rdoStatusBarEnable.Size = new System.Drawing.Size(43, 17); this.rdoStatusBarEnable.Size = new System.Drawing.Size(50, 22);
this.rdoStatusBarEnable.TabIndex = 12; this.rdoStatusBarEnable.TabIndex = 12;
this.rdoStatusBarEnable.Text = "213"; this.rdoStatusBarEnable.Text = "213";
this.rdoStatusBarEnable.UseVisualStyleBackColor = true; this.rdoStatusBarEnable.UseVisualStyleBackColor = true;
@ -100,9 +195,10 @@ namespace DutyContent.Tab
// //
this.rdoStatusBarDisable.AutoSize = true; this.rdoStatusBarDisable.AutoSize = true;
this.rdoStatusBarDisable.Checked = true; this.rdoStatusBarDisable.Checked = true;
this.rdoStatusBarDisable.Location = new System.Drawing.Point(105, 3); this.rdoStatusBarDisable.Location = new System.Drawing.Point(158, 4);
this.rdoStatusBarDisable.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rdoStatusBarDisable.Name = "rdoStatusBarDisable"; this.rdoStatusBarDisable.Name = "rdoStatusBarDisable";
this.rdoStatusBarDisable.Size = new System.Drawing.Size(43, 17); this.rdoStatusBarDisable.Size = new System.Drawing.Size(50, 22);
this.rdoStatusBarDisable.TabIndex = 13; this.rdoStatusBarDisable.TabIndex = 13;
this.rdoStatusBarDisable.TabStop = true; this.rdoStatusBarDisable.TabStop = true;
this.rdoStatusBarDisable.Text = "214"; this.rdoStatusBarDisable.Text = "214";
@ -115,17 +211,19 @@ namespace DutyContent.Tab
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.panel1.Controls.Add(this.rdoDataUpdateLocal); this.panel1.Controls.Add(this.rdoDataUpdateLocal);
this.panel1.Controls.Add(this.rdoDataUpdateRemote); this.panel1.Controls.Add(this.rdoDataUpdateRemote);
this.panel1.Location = new System.Drawing.Point(251, 83); this.panel1.Location = new System.Drawing.Point(160, 89);
this.panel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(520, 67); this.panel1.Size = new System.Drawing.Size(627, 65);
this.panel1.TabIndex = 14; this.panel1.TabIndex = 14;
// //
// rdoDataUpdateLocal // rdoDataUpdateLocal
// //
this.rdoDataUpdateLocal.AutoSize = true; this.rdoDataUpdateLocal.AutoSize = true;
this.rdoDataUpdateLocal.Location = new System.Drawing.Point(3, 3); this.rdoDataUpdateLocal.Location = new System.Drawing.Point(4, 4);
this.rdoDataUpdateLocal.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rdoDataUpdateLocal.Name = "rdoDataUpdateLocal"; this.rdoDataUpdateLocal.Name = "rdoDataUpdateLocal";
this.rdoDataUpdateLocal.Size = new System.Drawing.Size(43, 17); this.rdoDataUpdateLocal.Size = new System.Drawing.Size(50, 22);
this.rdoDataUpdateLocal.TabIndex = 6; this.rdoDataUpdateLocal.TabIndex = 6;
this.rdoDataUpdateLocal.Text = "204"; this.rdoDataUpdateLocal.Text = "204";
this.rdoDataUpdateLocal.UseVisualStyleBackColor = true; this.rdoDataUpdateLocal.UseVisualStyleBackColor = true;
@ -135,9 +233,10 @@ namespace DutyContent.Tab
// //
this.rdoDataUpdateRemote.AutoSize = true; this.rdoDataUpdateRemote.AutoSize = true;
this.rdoDataUpdateRemote.Checked = true; this.rdoDataUpdateRemote.Checked = true;
this.rdoDataUpdateRemote.Location = new System.Drawing.Point(3, 26); this.rdoDataUpdateRemote.Location = new System.Drawing.Point(4, 36);
this.rdoDataUpdateRemote.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rdoDataUpdateRemote.Name = "rdoDataUpdateRemote"; this.rdoDataUpdateRemote.Name = "rdoDataUpdateRemote";
this.rdoDataUpdateRemote.Size = new System.Drawing.Size(43, 17); this.rdoDataUpdateRemote.Size = new System.Drawing.Size(50, 22);
this.rdoDataUpdateRemote.TabIndex = 7; this.rdoDataUpdateRemote.TabIndex = 7;
this.rdoDataUpdateRemote.TabStop = true; this.rdoDataUpdateRemote.TabStop = true;
this.rdoDataUpdateRemote.Text = "205"; this.rdoDataUpdateRemote.Text = "205";
@ -148,7 +247,8 @@ namespace DutyContent.Tab
// //
this.lblUseStatusBar.AutoSize = true; this.lblUseStatusBar.AutoSize = true;
this.lblUseStatusBar.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblUseStatusBar.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUseStatusBar.Location = new System.Drawing.Point(12, 220); this.lblUseStatusBar.Location = new System.Drawing.Point(18, 289);
this.lblUseStatusBar.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblUseStatusBar.Name = "lblUseStatusBar"; this.lblUseStatusBar.Name = "lblUseStatusBar";
this.lblUseStatusBar.Size = new System.Drawing.Size(39, 20); this.lblUseStatusBar.Size = new System.Drawing.Size(39, 20);
this.lblUseStatusBar.TabIndex = 11; this.lblUseStatusBar.TabIndex = 11;
@ -156,18 +256,21 @@ namespace DutyContent.Tab
// //
// lblTag // lblTag
// //
this.lblTag.AutoSize = true; this.lblTag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.lblTag.Location = new System.Drawing.Point(27, 4); this.lblTag.Location = new System.Drawing.Point(160, 8);
this.lblTag.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblTag.Name = "lblTag"; this.lblTag.Name = "lblTag";
this.lblTag.Size = new System.Drawing.Size(35, 13); this.lblTag.Size = new System.Drawing.Size(636, 18);
this.lblTag.TabIndex = 10; this.lblTag.TabIndex = 10;
this.lblTag.Text = "label1"; this.lblTag.Text = "@@@";
this.lblTag.TextAlign = System.Drawing.ContentAlignment.TopRight;
// //
// btnUiFont // btnUiFont
// //
this.btnUiFont.Location = new System.Drawing.Point(251, 165); this.btnUiFont.Location = new System.Drawing.Point(160, 162);
this.btnUiFont.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.btnUiFont.Name = "btnUiFont"; this.btnUiFont.Name = "btnUiFont";
this.btnUiFont.Size = new System.Drawing.Size(217, 38); this.btnUiFont.Size = new System.Drawing.Size(377, 53);
this.btnUiFont.TabIndex = 9; this.btnUiFont.TabIndex = 9;
this.btnUiFont.Text = "button1"; this.btnUiFont.Text = "button1";
this.btnUiFont.UseVisualStyleBackColor = true; this.btnUiFont.UseVisualStyleBackColor = true;
@ -177,7 +280,8 @@ namespace DutyContent.Tab
// //
this.lblUiFont.AutoSize = true; this.lblUiFont.AutoSize = true;
this.lblUiFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblUiFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUiFont.Location = new System.Drawing.Point(12, 165); this.lblUiFont.Location = new System.Drawing.Point(18, 178);
this.lblUiFont.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblUiFont.Name = "lblUiFont"; this.lblUiFont.Name = "lblUiFont";
this.lblUiFont.Size = new System.Drawing.Size(39, 20); this.lblUiFont.Size = new System.Drawing.Size(39, 20);
this.lblUiFont.TabIndex = 8; this.lblUiFont.TabIndex = 8;
@ -187,7 +291,8 @@ namespace DutyContent.Tab
// //
this.lblDataUpdate.AutoSize = true; this.lblDataUpdate.AutoSize = true;
this.lblDataUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDataUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblDataUpdate.Location = new System.Drawing.Point(12, 84); this.lblDataUpdate.Location = new System.Drawing.Point(18, 93);
this.lblDataUpdate.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblDataUpdate.Name = "lblDataUpdate"; this.lblDataUpdate.Name = "lblDataUpdate";
this.lblDataUpdate.Size = new System.Drawing.Size(39, 20); this.lblDataUpdate.Size = new System.Drawing.Size(39, 20);
this.lblDataUpdate.TabIndex = 5; this.lblDataUpdate.TabIndex = 5;
@ -195,20 +300,21 @@ namespace DutyContent.Tab
// //
// lblCurrentLang // lblCurrentLang
// //
this.lblCurrentLang.Location = new System.Drawing.Point(318, 67); this.lblCurrentLang.Location = new System.Drawing.Point(354, 60);
this.lblCurrentLang.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblCurrentLang.Name = "lblCurrentLang"; this.lblCurrentLang.Name = "lblCurrentLang";
this.lblCurrentLang.Size = new System.Drawing.Size(150, 15); this.lblCurrentLang.Size = new System.Drawing.Size(225, 21);
this.lblCurrentLang.TabIndex = 4; this.lblCurrentLang.TabIndex = 4;
this.lblCurrentLang.Text = "--"; this.lblCurrentLang.Text = "--";
this.lblCurrentLang.TextAlign = System.Drawing.ContentAlignment.TopRight;
// //
// cboDispLang // cboDispLang
// //
this.cboDispLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboDispLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboDispLang.FormattingEnabled = true; this.cboDispLang.FormattingEnabled = true;
this.cboDispLang.Location = new System.Drawing.Point(251, 43); this.cboDispLang.Location = new System.Drawing.Point(160, 55);
this.cboDispLang.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.cboDispLang.Name = "cboDispLang"; this.cboDispLang.Name = "cboDispLang";
this.cboDispLang.Size = new System.Drawing.Size(217, 21); this.cboDispLang.Size = new System.Drawing.Size(186, 26);
this.cboDispLang.TabIndex = 1; this.cboDispLang.TabIndex = 1;
this.cboDispLang.SelectedIndexChanged += new System.EventHandler(this.CboDispLang_SelectedIndexChanged); this.cboDispLang.SelectedIndexChanged += new System.EventHandler(this.CboDispLang_SelectedIndexChanged);
// //
@ -216,7 +322,8 @@ namespace DutyContent.Tab
// //
this.lblDispLang.AutoSize = true; this.lblDispLang.AutoSize = true;
this.lblDispLang.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDispLang.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblDispLang.Location = new System.Drawing.Point(12, 41); this.lblDispLang.Location = new System.Drawing.Point(18, 57);
this.lblDispLang.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblDispLang.Name = "lblDispLang"; this.lblDispLang.Name = "lblDispLang";
this.lblDispLang.Size = new System.Drawing.Size(39, 20); this.lblDispLang.Size = new System.Drawing.Size(39, 20);
this.lblDispLang.TabIndex = 0; this.lblDispLang.TabIndex = 0;
@ -228,30 +335,27 @@ namespace DutyContent.Tab
this.panelBase.Controls.Add(this.pnlBase); this.panelBase.Controls.Add(this.pnlBase);
this.panelBase.Dock = System.Windows.Forms.DockStyle.Fill; this.panelBase.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelBase.Location = new System.Drawing.Point(0, 0); this.panelBase.Location = new System.Drawing.Point(0, 0);
this.panelBase.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panelBase.Name = "panelBase"; this.panelBase.Name = "panelBase";
this.panelBase.Size = new System.Drawing.Size(800, 450); this.panelBase.Size = new System.Drawing.Size(804, 623);
this.panelBase.TabIndex = 1; this.panelBase.TabIndex = 1;
// //
// lblStatusBarNeedRestart
//
this.lblStatusBarNeedRestart.AutoSize = true;
this.lblStatusBarNeedRestart.Location = new System.Drawing.Point(238, 5);
this.lblStatusBarNeedRestart.Name = "lblStatusBarNeedRestart";
this.lblStatusBarNeedRestart.Size = new System.Drawing.Size(25, 13);
this.lblStatusBarNeedRestart.TabIndex = 14;
this.lblStatusBarNeedRestart.Text = "215";
//
// ConfigForm // ConfigForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true; this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(800, 450); this.ClientSize = new System.Drawing.Size(804, 623);
this.Controls.Add(this.panelBase); this.Controls.Add(this.panelBase);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.MinimumSize = new System.Drawing.Size(640, 0);
this.Name = "ConfigForm"; this.Name = "ConfigForm";
this.Text = "Config"; this.Text = "Config";
this.pnlBase.ResumeLayout(false); this.pnlBase.ResumeLayout(false);
this.pnlBase.PerformLayout(); this.pnlBase.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.panel2.ResumeLayout(false); this.panel2.ResumeLayout(false);
this.panel2.PerformLayout(); this.panel2.PerformLayout();
this.panel1.ResumeLayout(false); this.panel1.ResumeLayout(false);
@ -280,5 +384,11 @@ namespace DutyContent.Tab
private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label lblUseStatusBar; private System.Windows.Forms.Label lblUseStatusBar;
private System.Windows.Forms.Label lblStatusBarNeedRestart; private System.Windows.Forms.Label lblStatusBarNeedRestart;
private System.Windows.Forms.Button btnLogFont;
private System.Windows.Forms.Label lblLogFont;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.RadioButton rdoDebugDisable;
private System.Windows.Forms.RadioButton rdoDebugEnable;
private System.Windows.Forms.Label lblUseDebug;
} }
} }

View file

@ -28,7 +28,7 @@ namespace DutyContent.Tab
public void PluginInitialize() public void PluginInitialize()
{ {
// //
lblCurrentLang.Text = MesgLog.Text("LANG"); lblCurrentLang.Text = Locale.Text("LANG");
// //
var lang = MakeConfigLangList(); var lang = MakeConfigLangList();
@ -59,6 +59,10 @@ namespace DutyContent.Tab
// //
rdoStatusBarEnable.Checked = DcConfig.StatusBar; rdoStatusBarEnable.Checked = DcConfig.StatusBar;
rdoStatusBarDisable.Checked = !DcConfig.StatusBar; rdoStatusBarDisable.Checked = !DcConfig.StatusBar;
//
rdoDebugEnable.Checked = DcConfig.DebugEnable;
rdoDebugDisable.Checked = !DcConfig.DebugEnable;
} }
public void RefreshLocale() public void RefreshLocale()
@ -68,28 +72,35 @@ namespace DutyContent.Tab
public void UpdateUiLocale() public void UpdateUiLocale()
{ {
lblDispLang.Text = MesgLog.Text(201); lblDispLang.Text = Locale.Text(201);
lblDataUpdate.Text = MesgLog.Text(203); lblDataUpdate.Text = Locale.Text(203);
rdoDataUpdateLocal.Text = MesgLog.Text(204); rdoDataUpdateLocal.Text = Locale.Text(204);
rdoDataUpdateRemote.Text = MesgLog.Text(205); rdoDataUpdateRemote.Text = Locale.Text(205);
lblUiFont.Text = MesgLog.Text(210); lblUiFont.Text = Locale.Text(210);
btnUiFont.Text = DcConfig.UiFontFamily; btnUiFont.Text = DcConfig.UiFontFamily;
lblTag.Text = MesgLog.Text(211, DcConfig.PluginTag, DcConfig.PluginVersion); lblLogFont.Text = Locale.Text(216);
btnLogFont.Text = $"{DcConfig.Duty.LogFontFamily}, {DcConfig.Duty.LogFontSize}";
lblUseStatusBar.Text = MesgLog.Text(212); lblTag.Text = Locale.Text(211, DcConfig.PluginTag, DcConfig.PluginVersion);
rdoStatusBarEnable.Text = MesgLog.Text(213);
rdoStatusBarDisable.Text = MesgLog.Text(214); lblUseStatusBar.Text = Locale.Text(212);
lblStatusBarNeedRestart.Text = MesgLog.Text(215); rdoStatusBarEnable.Text = Locale.Text(213);
rdoStatusBarDisable.Text = Locale.Text(214);
lblStatusBarNeedRestart.Text = Locale.Text(215);
rdoDebugEnable.Text = Locale.Text(213);
rdoDebugDisable.Text = Locale.Text(214);
} }
public static List<string> MakeConfigLangList() public static List<string> MakeConfigLangList()
{ {
List<string> lst = new List<string>(); List<string> lst = new List<string>();
lst.Add($"<{MesgLog.Text(26)}>"); lst.Add($"<{Locale.Text(26)}>");
DirectoryInfo di = new DirectoryInfo(DcConfig.DataPath); DirectoryInfo di = new DirectoryInfo(DcConfig.DataPath);
@ -127,7 +138,7 @@ namespace DutyContent.Tab
DcControl.Self?.UpdateUiLocale(); DcControl.Self?.UpdateUiLocale();
DcConfig.SaveConfig(); DcConfig.SaveConfig();
lblCurrentLang.Text = MesgLog.Text("LANG"); lblCurrentLang.Text = Locale.Text("LANG");
} }
private void InternalDataUpdate(bool value) private void InternalDataUpdate(bool value)
@ -181,6 +192,34 @@ namespace DutyContent.Tab
} }
} }
private void BtnLogFont_Click(object sender, EventArgs e)
{
Font ret = (Font)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
{
FontDialog dg = new FontDialog
{
Font = Tab.LogForm.Self?.LogFont,
FontMustExist = true,
AllowVerticalFonts = false
};
return (dg.ShowDialog() == DialogResult.OK) ? dg.Font : null;
}));
if (ret != null)
{
if (LogForm.Self != null)
LogForm.Self.LogFont = ret;
DcConfig.Duty.LogFontFamily = ret.Name;
DcConfig.Duty.LogFontSize = ret.Size;
DcConfig.SaveConfig();
btnLogFont.Font = ret;
btnLogFont.Text = $"{DcConfig.Duty.LogFontFamily}, {DcConfig.Duty.LogFontSize}";
}
}
private void InternalStatusBar(bool value) private void InternalStatusBar(bool value)
{ {
if (!DcConfig.PluginEnable) if (!DcConfig.PluginEnable)
@ -206,5 +245,29 @@ namespace DutyContent.Tab
{ {
InternalStatusBar(false); InternalStatusBar(false);
} }
private void InternalDebug(bool value)
{
if (!DcConfig.PluginEnable)
return;
if (value && DcConfig.DebugEnable)
return;
if (!value && !DcConfig.DebugEnable)
return;
DcConfig.DebugEnable = value;
DcConfig.SaveConfig();
}
private void rdoDebugEnable_CheckedChanged(object sender, EventArgs e)
{
InternalDebug(true);
}
private void rdoDebugDisable_CheckedChanged(object sender, EventArgs e)
{
InternalDebug(false);
}
} }
} }

361
Tab/DutyForm.Designer.cs generated
View file

@ -51,7 +51,7 @@ namespace DutyContent.Tab
"", "",
""}, -1); ""}, -1);
System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem(new string[] { System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem(new string[] {
"Southern Bozja", "Bozja",
"", "",
"", "",
""}, -1); ""}, -1);
@ -59,13 +59,12 @@ namespace DutyContent.Tab
this.tabContent = new System.Windows.Forms.TabControl(); this.tabContent = new System.Windows.Forms.TabControl();
this.tabPageContent = new System.Windows.Forms.TabPage(); this.tabPageContent = new System.Windows.Forms.TabPage();
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.chkShowDebug = new System.Windows.Forms.CheckBox();
this.rdoFatePreset4 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset4 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset3 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset3 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset2 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset2 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset1 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset1 = new System.Windows.Forms.RadioButton();
this.treeFates = new System.Windows.Forms.TreeView(); this.treeFates = new System.Windows.Forms.TreeView();
this.txtContentLog = new System.Windows.Forms.RichTextBox(); this.lstContents = new DutyContent.ThirdParty.EXListView();
this.tabPageSetting = new System.Windows.Forms.TabPage(); this.tabPageSetting = new System.Windows.Forms.TabPage();
this.panel4 = new System.Windows.Forms.Panel(); this.panel4 = new System.Windows.Forms.Panel();
this.chkDiscowkTts = new System.Windows.Forms.CheckBox(); this.chkDiscowkTts = new System.Windows.Forms.CheckBox();
@ -88,8 +87,6 @@ namespace DutyContent.Tab
this.lblCurrentDataSet = new System.Windows.Forms.Label(); this.lblCurrentDataSet = new System.Windows.Forms.Label();
this.cboDataset = new System.Windows.Forms.ComboBox(); this.cboDataset = new System.Windows.Forms.ComboBox();
this.lblDataSet = new System.Windows.Forms.Label(); this.lblDataSet = new System.Windows.Forms.Label();
this.btnLogFont = new System.Windows.Forms.Button();
this.lblLogFont = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel(); this.panel2 = new System.Windows.Forms.Panel();
this.btnSoundPlayFate = new System.Windows.Forms.Button(); this.btnSoundPlayFate = new System.Windows.Forms.Button();
this.btnSoundPlayInstance = new System.Windows.Forms.Button(); this.btnSoundPlayInstance = new System.Windows.Forms.Button();
@ -150,9 +147,10 @@ namespace DutyContent.Tab
this.tabContent.Dock = System.Windows.Forms.DockStyle.Fill; this.tabContent.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabContent.ImageList = this.ilTabContent; this.tabContent.ImageList = this.ilTabContent;
this.tabContent.Location = new System.Drawing.Point(0, 0); this.tabContent.Location = new System.Drawing.Point(0, 0);
this.tabContent.Margin = new System.Windows.Forms.Padding(4);
this.tabContent.Name = "tabContent"; this.tabContent.Name = "tabContent";
this.tabContent.SelectedIndex = 0; this.tabContent.SelectedIndex = 0;
this.tabContent.Size = new System.Drawing.Size(800, 542); this.tabContent.Size = new System.Drawing.Size(804, 561);
this.tabContent.TabIndex = 0; this.tabContent.TabIndex = 0;
// //
// tabPageContent // tabPageContent
@ -160,9 +158,10 @@ namespace DutyContent.Tab
this.tabPageContent.Controls.Add(this.splitContainer1); this.tabPageContent.Controls.Add(this.splitContainer1);
this.tabPageContent.ImageIndex = 0; this.tabPageContent.ImageIndex = 0;
this.tabPageContent.Location = new System.Drawing.Point(4, 39); this.tabPageContent.Location = new System.Drawing.Point(4, 39);
this.tabPageContent.Margin = new System.Windows.Forms.Padding(4);
this.tabPageContent.Name = "tabPageContent"; this.tabPageContent.Name = "tabPageContent";
this.tabPageContent.Padding = new System.Windows.Forms.Padding(3); this.tabPageContent.Padding = new System.Windows.Forms.Padding(4);
this.tabPageContent.Size = new System.Drawing.Size(792, 499); this.tabPageContent.Size = new System.Drawing.Size(796, 518);
this.tabPageContent.TabIndex = 0; this.tabPageContent.TabIndex = 0;
this.tabPageContent.Text = "301"; this.tabPageContent.Text = "301";
this.tabPageContent.UseVisualStyleBackColor = true; this.tabPageContent.UseVisualStyleBackColor = true;
@ -170,12 +169,12 @@ namespace DutyContent.Tab
// splitContainer1 // splitContainer1
// //
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(3, 3); this.splitContainer1.Location = new System.Drawing.Point(4, 4);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(4);
this.splitContainer1.Name = "splitContainer1"; this.splitContainer1.Name = "splitContainer1";
// //
// splitContainer1.Panel1 // splitContainer1.Panel1
// //
this.splitContainer1.Panel1.Controls.Add(this.chkShowDebug);
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset4); this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset4);
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset3); this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset3);
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset2); this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset2);
@ -184,28 +183,20 @@ namespace DutyContent.Tab
// //
// splitContainer1.Panel2 // splitContainer1.Panel2
// //
this.splitContainer1.Panel2.Controls.Add(this.txtContentLog); this.splitContainer1.Panel2.Controls.Add(this.lstContents);
this.splitContainer1.Size = new System.Drawing.Size(786, 493); this.splitContainer1.Size = new System.Drawing.Size(788, 510);
this.splitContainer1.SplitterDistance = 262; this.splitContainer1.SplitterDistance = 240;
this.splitContainer1.SplitterWidth = 6;
this.splitContainer1.TabIndex = 0; this.splitContainer1.TabIndex = 0;
// //
// chkShowDebug
//
this.chkShowDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chkShowDebug.AutoSize = true;
this.chkShowDebug.Location = new System.Drawing.Point(201, 7);
this.chkShowDebug.Name = "chkShowDebug";
this.chkShowDebug.Size = new System.Drawing.Size(58, 17);
this.chkShowDebug.TabIndex = 5;
this.chkShowDebug.Text = "Debug";
this.chkShowDebug.UseVisualStyleBackColor = true;
//
// rdoFatePreset4 // rdoFatePreset4
// //
this.rdoFatePreset4.AutoSize = true; this.rdoFatePreset4.AutoSize = true;
this.rdoFatePreset4.Location = new System.Drawing.Point(116, 6); this.rdoFatePreset4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rdoFatePreset4.Location = new System.Drawing.Point(125, 0);
this.rdoFatePreset4.Margin = new System.Windows.Forms.Padding(4);
this.rdoFatePreset4.Name = "rdoFatePreset4"; this.rdoFatePreset4.Name = "rdoFatePreset4";
this.rdoFatePreset4.Size = new System.Drawing.Size(31, 17); this.rdoFatePreset4.Size = new System.Drawing.Size(32, 19);
this.rdoFatePreset4.TabIndex = 4; this.rdoFatePreset4.TabIndex = 4;
this.rdoFatePreset4.TabStop = true; this.rdoFatePreset4.TabStop = true;
this.rdoFatePreset4.Tag = "3"; this.rdoFatePreset4.Tag = "3";
@ -216,9 +207,11 @@ namespace DutyContent.Tab
// rdoFatePreset3 // rdoFatePreset3
// //
this.rdoFatePreset3.AutoSize = true; this.rdoFatePreset3.AutoSize = true;
this.rdoFatePreset3.Location = new System.Drawing.Point(79, 6); this.rdoFatePreset3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rdoFatePreset3.Location = new System.Drawing.Point(85, 0);
this.rdoFatePreset3.Margin = new System.Windows.Forms.Padding(4);
this.rdoFatePreset3.Name = "rdoFatePreset3"; this.rdoFatePreset3.Name = "rdoFatePreset3";
this.rdoFatePreset3.Size = new System.Drawing.Size(31, 17); this.rdoFatePreset3.Size = new System.Drawing.Size(32, 19);
this.rdoFatePreset3.TabIndex = 3; this.rdoFatePreset3.TabIndex = 3;
this.rdoFatePreset3.TabStop = true; this.rdoFatePreset3.TabStop = true;
this.rdoFatePreset3.Tag = "2"; this.rdoFatePreset3.Tag = "2";
@ -229,9 +222,11 @@ namespace DutyContent.Tab
// rdoFatePreset2 // rdoFatePreset2
// //
this.rdoFatePreset2.AutoSize = true; this.rdoFatePreset2.AutoSize = true;
this.rdoFatePreset2.Location = new System.Drawing.Point(42, 6); this.rdoFatePreset2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rdoFatePreset2.Location = new System.Drawing.Point(45, 0);
this.rdoFatePreset2.Margin = new System.Windows.Forms.Padding(4);
this.rdoFatePreset2.Name = "rdoFatePreset2"; this.rdoFatePreset2.Name = "rdoFatePreset2";
this.rdoFatePreset2.Size = new System.Drawing.Size(31, 17); this.rdoFatePreset2.Size = new System.Drawing.Size(32, 19);
this.rdoFatePreset2.TabIndex = 2; this.rdoFatePreset2.TabIndex = 2;
this.rdoFatePreset2.TabStop = true; this.rdoFatePreset2.TabStop = true;
this.rdoFatePreset2.Tag = "1"; this.rdoFatePreset2.Tag = "1";
@ -243,9 +238,11 @@ namespace DutyContent.Tab
// //
this.rdoFatePreset1.AutoSize = true; this.rdoFatePreset1.AutoSize = true;
this.rdoFatePreset1.Checked = true; this.rdoFatePreset1.Checked = true;
this.rdoFatePreset1.Location = new System.Drawing.Point(5, 6); this.rdoFatePreset1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rdoFatePreset1.Location = new System.Drawing.Point(5, 0);
this.rdoFatePreset1.Margin = new System.Windows.Forms.Padding(4);
this.rdoFatePreset1.Name = "rdoFatePreset1"; this.rdoFatePreset1.Name = "rdoFatePreset1";
this.rdoFatePreset1.Size = new System.Drawing.Size(31, 17); this.rdoFatePreset1.Size = new System.Drawing.Size(32, 19);
this.rdoFatePreset1.TabIndex = 1; this.rdoFatePreset1.TabIndex = 1;
this.rdoFatePreset1.TabStop = true; this.rdoFatePreset1.TabStop = true;
this.rdoFatePreset1.Tag = "0"; this.rdoFatePreset1.Tag = "0";
@ -260,23 +257,27 @@ namespace DutyContent.Tab
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.treeFates.CheckBoxes = true; this.treeFates.CheckBoxes = true;
this.treeFates.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.treeFates.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.treeFates.Location = new System.Drawing.Point(0, 29); this.treeFates.Location = new System.Drawing.Point(0, 27);
this.treeFates.Margin = new System.Windows.Forms.Padding(4);
this.treeFates.Name = "treeFates"; this.treeFates.Name = "treeFates";
this.treeFates.Size = new System.Drawing.Size(260, 464); this.treeFates.Size = new System.Drawing.Size(235, 481);
this.treeFates.TabIndex = 0; this.treeFates.TabIndex = 0;
this.treeFates.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.TreeFates_AfterCheck); this.treeFates.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.TreeFates_AfterCheck);
// //
// txtContentLog // lstContents
// //
this.txtContentLog.BackColor = System.Drawing.Color.AliceBlue; this.lstContents.ControlPadding = 4;
this.txtContentLog.Dock = System.Windows.Forms.DockStyle.Fill; this.lstContents.Dock = System.Windows.Forms.DockStyle.Fill;
this.txtContentLog.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lstContents.FullRowSelect = true;
this.txtContentLog.Location = new System.Drawing.Point(0, 0); this.lstContents.HideSelection = false;
this.txtContentLog.Name = "txtContentLog"; this.lstContents.Location = new System.Drawing.Point(0, 0);
this.txtContentLog.ReadOnly = true; this.lstContents.Name = "lstContents";
this.txtContentLog.Size = new System.Drawing.Size(520, 493); this.lstContents.OwnerDraw = true;
this.txtContentLog.TabIndex = 0; this.lstContents.Size = new System.Drawing.Size(542, 510);
this.txtContentLog.Text = ""; this.lstContents.TabIndex = 0;
this.lstContents.UseCompatibleStateImageBehavior = false;
this.lstContents.View = System.Windows.Forms.View.Details;
this.lstContents.Resize += new System.EventHandler(this.LstContents_Resize);
// //
// tabPageSetting // tabPageSetting
// //
@ -287,9 +288,10 @@ namespace DutyContent.Tab
this.tabPageSetting.Controls.Add(this.panel1); this.tabPageSetting.Controls.Add(this.panel1);
this.tabPageSetting.ImageIndex = 1; this.tabPageSetting.ImageIndex = 1;
this.tabPageSetting.Location = new System.Drawing.Point(4, 39); this.tabPageSetting.Location = new System.Drawing.Point(4, 39);
this.tabPageSetting.Margin = new System.Windows.Forms.Padding(4);
this.tabPageSetting.Name = "tabPageSetting"; this.tabPageSetting.Name = "tabPageSetting";
this.tabPageSetting.Padding = new System.Windows.Forms.Padding(3); this.tabPageSetting.Padding = new System.Windows.Forms.Padding(4);
this.tabPageSetting.Size = new System.Drawing.Size(792, 499); this.tabPageSetting.Size = new System.Drawing.Size(796, 518);
this.tabPageSetting.TabIndex = 1; this.tabPageSetting.TabIndex = 1;
this.tabPageSetting.Text = "302"; this.tabPageSetting.Text = "302";
this.tabPageSetting.UseVisualStyleBackColor = true; this.tabPageSetting.UseVisualStyleBackColor = true;
@ -313,18 +315,20 @@ namespace DutyContent.Tab
this.panel4.Controls.Add(this.lblLineToken); this.panel4.Controls.Add(this.lblLineToken);
this.panel4.Controls.Add(this.txtLineToken); this.panel4.Controls.Add(this.txtLineToken);
this.panel4.Controls.Add(this.chkUseNotifyLine); this.panel4.Controls.Add(this.chkUseNotifyLine);
this.panel4.Location = new System.Drawing.Point(6, 258); this.panel4.Location = new System.Drawing.Point(0, 267);
this.panel4.Margin = new System.Windows.Forms.Padding(4);
this.panel4.Name = "panel4"; this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(778, 196); this.panel4.Size = new System.Drawing.Size(792, 228);
this.panel4.TabIndex = 3; this.panel4.TabIndex = 3;
// //
// chkDiscowkTts // chkDiscowkTts
// //
this.chkDiscowkTts.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.chkDiscowkTts.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chkDiscowkTts.AutoSize = true; this.chkDiscowkTts.AutoSize = true;
this.chkDiscowkTts.Location = new System.Drawing.Point(547, 147); this.chkDiscowkTts.Location = new System.Drawing.Point(543, 168);
this.chkDiscowkTts.Margin = new System.Windows.Forms.Padding(4);
this.chkDiscowkTts.Name = "chkDiscowkTts"; this.chkDiscowkTts.Name = "chkDiscowkTts";
this.chkDiscowkTts.Size = new System.Drawing.Size(44, 17); this.chkDiscowkTts.Size = new System.Drawing.Size(51, 22);
this.chkDiscowkTts.TabIndex = 5; this.chkDiscowkTts.TabIndex = 5;
this.chkDiscowkTts.Text = "341"; this.chkDiscowkTts.Text = "341";
this.chkDiscowkTts.UseVisualStyleBackColor = true; this.chkDiscowkTts.UseVisualStyleBackColor = true;
@ -333,9 +337,10 @@ namespace DutyContent.Tab
// lblDiscowkUrl // lblDiscowkUrl
// //
this.lblDiscowkUrl.AutoSize = true; this.lblDiscowkUrl.AutoSize = true;
this.lblDiscowkUrl.Location = new System.Drawing.Point(23, 171); this.lblDiscowkUrl.Location = new System.Drawing.Point(33, 194);
this.lblDiscowkUrl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblDiscowkUrl.Name = "lblDiscowkUrl"; this.lblDiscowkUrl.Name = "lblDiscowkUrl";
this.lblDiscowkUrl.Size = new System.Drawing.Size(25, 13); this.lblDiscowkUrl.Size = new System.Drawing.Size(32, 18);
this.lblDiscowkUrl.TabIndex = 18; this.lblDiscowkUrl.TabIndex = 18;
this.lblDiscowkUrl.Text = "339"; this.lblDiscowkUrl.Text = "339";
// //
@ -343,9 +348,10 @@ namespace DutyContent.Tab
// //
this.txtDiscowkUrl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.txtDiscowkUrl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtDiscowkUrl.Location = new System.Drawing.Point(108, 168); this.txtDiscowkUrl.Location = new System.Drawing.Point(160, 194);
this.txtDiscowkUrl.Margin = new System.Windows.Forms.Padding(4);
this.txtDiscowkUrl.Name = "txtDiscowkUrl"; this.txtDiscowkUrl.Name = "txtDiscowkUrl";
this.txtDiscowkUrl.Size = new System.Drawing.Size(483, 20); this.txtDiscowkUrl.Size = new System.Drawing.Size(434, 24);
this.txtDiscowkUrl.TabIndex = 17; this.txtDiscowkUrl.TabIndex = 17;
this.txtDiscowkUrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtDiscowkUrl_KeyDown); this.txtDiscowkUrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtDiscowkUrl_KeyDown);
// //
@ -353,7 +359,8 @@ namespace DutyContent.Tab
// //
this.chkUseNotifyDiscowk.AutoSize = true; this.chkUseNotifyDiscowk.AutoSize = true;
this.chkUseNotifyDiscowk.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkUseNotifyDiscowk.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkUseNotifyDiscowk.Location = new System.Drawing.Point(3, 144); this.chkUseNotifyDiscowk.Location = new System.Drawing.Point(4, 166);
this.chkUseNotifyDiscowk.Margin = new System.Windows.Forms.Padding(4);
this.chkUseNotifyDiscowk.Name = "chkUseNotifyDiscowk"; this.chkUseNotifyDiscowk.Name = "chkUseNotifyDiscowk";
this.chkUseNotifyDiscowk.Size = new System.Drawing.Size(58, 24); this.chkUseNotifyDiscowk.Size = new System.Drawing.Size(58, 24);
this.chkUseNotifyDiscowk.TabIndex = 16; this.chkUseNotifyDiscowk.TabIndex = 16;
@ -364,9 +371,10 @@ namespace DutyContent.Tab
// lblTelegramToken // lblTelegramToken
// //
this.lblTelegramToken.AutoSize = true; this.lblTelegramToken.AutoSize = true;
this.lblTelegramToken.Location = new System.Drawing.Point(23, 118); this.lblTelegramToken.Location = new System.Drawing.Point(33, 129);
this.lblTelegramToken.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblTelegramToken.Name = "lblTelegramToken"; this.lblTelegramToken.Name = "lblTelegramToken";
this.lblTelegramToken.Size = new System.Drawing.Size(25, 13); this.lblTelegramToken.Size = new System.Drawing.Size(32, 18);
this.lblTelegramToken.TabIndex = 15; this.lblTelegramToken.TabIndex = 15;
this.lblTelegramToken.Text = "315"; this.lblTelegramToken.Text = "315";
// //
@ -374,26 +382,29 @@ namespace DutyContent.Tab
// //
this.txtTelegramToken.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.txtTelegramToken.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtTelegramToken.Location = new System.Drawing.Point(108, 115); this.txtTelegramToken.Location = new System.Drawing.Point(160, 126);
this.txtTelegramToken.Margin = new System.Windows.Forms.Padding(4);
this.txtTelegramToken.Name = "txtTelegramToken"; this.txtTelegramToken.Name = "txtTelegramToken";
this.txtTelegramToken.Size = new System.Drawing.Size(483, 20); this.txtTelegramToken.Size = new System.Drawing.Size(434, 24);
this.txtTelegramToken.TabIndex = 14; this.txtTelegramToken.TabIndex = 14;
this.txtTelegramToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtTelegramToken_KeyDown); this.txtTelegramToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtTelegramToken_KeyDown);
// //
// lblTelegramId // lblTelegramId
// //
this.lblTelegramId.AutoSize = true; this.lblTelegramId.AutoSize = true;
this.lblTelegramId.Location = new System.Drawing.Point(23, 92); this.lblTelegramId.Location = new System.Drawing.Point(33, 97);
this.lblTelegramId.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblTelegramId.Name = "lblTelegramId"; this.lblTelegramId.Name = "lblTelegramId";
this.lblTelegramId.Size = new System.Drawing.Size(25, 13); this.lblTelegramId.Size = new System.Drawing.Size(32, 18);
this.lblTelegramId.TabIndex = 13; this.lblTelegramId.TabIndex = 13;
this.lblTelegramId.Text = "314"; this.lblTelegramId.Text = "314";
// //
// txtTelegramId // txtTelegramId
// //
this.txtTelegramId.Location = new System.Drawing.Point(108, 89); this.txtTelegramId.Location = new System.Drawing.Point(160, 94);
this.txtTelegramId.Margin = new System.Windows.Forms.Padding(4);
this.txtTelegramId.Name = "txtTelegramId"; this.txtTelegramId.Name = "txtTelegramId";
this.txtTelegramId.Size = new System.Drawing.Size(196, 20); this.txtTelegramId.Size = new System.Drawing.Size(173, 24);
this.txtTelegramId.TabIndex = 12; this.txtTelegramId.TabIndex = 12;
this.txtTelegramId.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtTelegramId_KeyDown); this.txtTelegramId.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtTelegramId_KeyDown);
// //
@ -401,7 +412,8 @@ namespace DutyContent.Tab
// //
this.chkUseNotifyTelegram.AutoSize = true; this.chkUseNotifyTelegram.AutoSize = true;
this.chkUseNotifyTelegram.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkUseNotifyTelegram.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkUseNotifyTelegram.Location = new System.Drawing.Point(3, 59); this.chkUseNotifyTelegram.Location = new System.Drawing.Point(4, 69);
this.chkUseNotifyTelegram.Margin = new System.Windows.Forms.Padding(4);
this.chkUseNotifyTelegram.Name = "chkUseNotifyTelegram"; this.chkUseNotifyTelegram.Name = "chkUseNotifyTelegram";
this.chkUseNotifyTelegram.Size = new System.Drawing.Size(58, 24); this.chkUseNotifyTelegram.Size = new System.Drawing.Size(58, 24);
this.chkUseNotifyTelegram.TabIndex = 11; this.chkUseNotifyTelegram.TabIndex = 11;
@ -414,9 +426,10 @@ namespace DutyContent.Tab
this.btnTestNotify.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnTestNotify.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnTestNotify.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; this.btnTestNotify.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.btnTestNotify.Enabled = false; this.btnTestNotify.Enabled = false;
this.btnTestNotify.Location = new System.Drawing.Point(665, 137); this.btnTestNotify.Location = new System.Drawing.Point(624, 129);
this.btnTestNotify.Margin = new System.Windows.Forms.Padding(4);
this.btnTestNotify.Name = "btnTestNotify"; this.btnTestNotify.Name = "btnTestNotify";
this.btnTestNotify.Size = new System.Drawing.Size(108, 51); this.btnTestNotify.Size = new System.Drawing.Size(162, 92);
this.btnTestNotify.TabIndex = 4; this.btnTestNotify.TabIndex = 4;
this.btnTestNotify.Text = "340"; this.btnTestNotify.Text = "340";
this.btnTestNotify.UseVisualStyleBackColor = true; this.btnTestNotify.UseVisualStyleBackColor = true;
@ -426,9 +439,10 @@ namespace DutyContent.Tab
// //
this.lblLineNotifyBotLink.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblLineNotifyBotLink.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.lblLineNotifyBotLink.AutoSize = true; this.lblLineNotifyBotLink.AutoSize = true;
this.lblLineNotifyBotLink.Location = new System.Drawing.Point(461, 13); this.lblLineNotifyBotLink.Location = new System.Drawing.Point(618, 6);
this.lblLineNotifyBotLink.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblLineNotifyBotLink.Name = "lblLineNotifyBotLink"; this.lblLineNotifyBotLink.Name = "lblLineNotifyBotLink";
this.lblLineNotifyBotLink.Size = new System.Drawing.Size(127, 13); this.lblLineNotifyBotLink.Size = new System.Drawing.Size(168, 18);
this.lblLineNotifyBotLink.TabIndex = 10; this.lblLineNotifyBotLink.TabIndex = 10;
this.lblLineNotifyBotLink.TabStop = true; this.lblLineNotifyBotLink.TabStop = true;
this.lblLineNotifyBotLink.Text = "https://notify-bot.line.me/"; this.lblLineNotifyBotLink.Text = "https://notify-bot.line.me/";
@ -437,9 +451,10 @@ namespace DutyContent.Tab
// lblLineToken // lblLineToken
// //
this.lblLineToken.AutoSize = true; this.lblLineToken.AutoSize = true;
this.lblLineToken.Location = new System.Drawing.Point(22, 36); this.lblLineToken.Location = new System.Drawing.Point(33, 32);
this.lblLineToken.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblLineToken.Name = "lblLineToken"; this.lblLineToken.Name = "lblLineToken";
this.lblLineToken.Size = new System.Drawing.Size(25, 13); this.lblLineToken.Size = new System.Drawing.Size(32, 18);
this.lblLineToken.TabIndex = 9; this.lblLineToken.TabIndex = 9;
this.lblLineToken.Text = "312"; this.lblLineToken.Text = "312";
// //
@ -447,9 +462,10 @@ namespace DutyContent.Tab
// //
this.txtLineToken.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.txtLineToken.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtLineToken.Location = new System.Drawing.Point(108, 33); this.txtLineToken.Location = new System.Drawing.Point(160, 29);
this.txtLineToken.Margin = new System.Windows.Forms.Padding(4);
this.txtLineToken.Name = "txtLineToken"; this.txtLineToken.Name = "txtLineToken";
this.txtLineToken.Size = new System.Drawing.Size(483, 20); this.txtLineToken.Size = new System.Drawing.Size(434, 24);
this.txtLineToken.TabIndex = 1; this.txtLineToken.TabIndex = 1;
this.txtLineToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtLineToken_KeyDown); this.txtLineToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtLineToken_KeyDown);
// //
@ -457,7 +473,8 @@ namespace DutyContent.Tab
// //
this.chkUseNotifyLine.AutoSize = true; this.chkUseNotifyLine.AutoSize = true;
this.chkUseNotifyLine.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkUseNotifyLine.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkUseNotifyLine.Location = new System.Drawing.Point(3, 3); this.chkUseNotifyLine.Location = new System.Drawing.Point(4, 4);
this.chkUseNotifyLine.Margin = new System.Windows.Forms.Padding(4);
this.chkUseNotifyLine.Name = "chkUseNotifyLine"; this.chkUseNotifyLine.Name = "chkUseNotifyLine";
this.chkUseNotifyLine.Size = new System.Drawing.Size(58, 24); this.chkUseNotifyLine.Size = new System.Drawing.Size(58, 24);
this.chkUseNotifyLine.TabIndex = 0; this.chkUseNotifyLine.TabIndex = 0;
@ -475,20 +492,20 @@ namespace DutyContent.Tab
this.panel3.Controls.Add(this.lblCurrentDataSet); this.panel3.Controls.Add(this.lblCurrentDataSet);
this.panel3.Controls.Add(this.cboDataset); this.panel3.Controls.Add(this.cboDataset);
this.panel3.Controls.Add(this.lblDataSet); this.panel3.Controls.Add(this.lblDataSet);
this.panel3.Controls.Add(this.btnLogFont); this.panel3.Location = new System.Drawing.Point(0, 8);
this.panel3.Controls.Add(this.lblLogFont); this.panel3.Margin = new System.Windows.Forms.Padding(4);
this.panel3.Location = new System.Drawing.Point(6, 6);
this.panel3.Name = "panel3"; this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(778, 83); this.panel3.Size = new System.Drawing.Size(792, 77);
this.panel3.TabIndex = 2; this.panel3.TabIndex = 2;
// //
// cboPacketset // cboPacketset
// //
this.cboPacketset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboPacketset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPacketset.FormattingEnabled = true; this.cboPacketset.FormattingEnabled = true;
this.cboPacketset.Location = new System.Drawing.Point(110, 54); this.cboPacketset.Location = new System.Drawing.Point(160, 42);
this.cboPacketset.Margin = new System.Windows.Forms.Padding(4);
this.cboPacketset.Name = "cboPacketset"; this.cboPacketset.Name = "cboPacketset";
this.cboPacketset.Size = new System.Drawing.Size(243, 21); this.cboPacketset.Size = new System.Drawing.Size(362, 26);
this.cboPacketset.TabIndex = 13; this.cboPacketset.TabIndex = 13;
this.cboPacketset.SelectedIndexChanged += new System.EventHandler(this.CboPacketset_SelectedIndexChanged); this.cboPacketset.SelectedIndexChanged += new System.EventHandler(this.CboPacketset_SelectedIndexChanged);
// //
@ -496,7 +513,8 @@ namespace DutyContent.Tab
// //
this.lblPacketSet.AutoSize = true; this.lblPacketSet.AutoSize = true;
this.lblPacketSet.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPacketSet.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblPacketSet.Location = new System.Drawing.Point(21, 52); this.lblPacketSet.Location = new System.Drawing.Point(32, 44);
this.lblPacketSet.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPacketSet.Name = "lblPacketSet"; this.lblPacketSet.Name = "lblPacketSet";
this.lblPacketSet.Size = new System.Drawing.Size(39, 20); this.lblPacketSet.Size = new System.Drawing.Size(39, 20);
this.lblPacketSet.TabIndex = 12; this.lblPacketSet.TabIndex = 12;
@ -504,20 +522,22 @@ namespace DutyContent.Tab
// //
// lblCurrentDataSet // lblCurrentDataSet
// //
this.lblCurrentDataSet.Location = new System.Drawing.Point(110, 30); this.lblCurrentDataSet.AutoSize = true;
this.lblCurrentDataSet.Location = new System.Drawing.Point(418, 13);
this.lblCurrentDataSet.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblCurrentDataSet.Name = "lblCurrentDataSet"; this.lblCurrentDataSet.Name = "lblCurrentDataSet";
this.lblCurrentDataSet.Size = new System.Drawing.Size(243, 15); this.lblCurrentDataSet.Size = new System.Drawing.Size(18, 18);
this.lblCurrentDataSet.TabIndex = 3; this.lblCurrentDataSet.TabIndex = 3;
this.lblCurrentDataSet.Text = "--"; this.lblCurrentDataSet.Text = "--";
this.lblCurrentDataSet.TextAlign = System.Drawing.ContentAlignment.TopRight;
// //
// cboDataset // cboDataset
// //
this.cboDataset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboDataset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboDataset.FormattingEnabled = true; this.cboDataset.FormattingEnabled = true;
this.cboDataset.Location = new System.Drawing.Point(110, 6); this.cboDataset.Location = new System.Drawing.Point(160, 8);
this.cboDataset.Margin = new System.Windows.Forms.Padding(4);
this.cboDataset.Name = "cboDataset"; this.cboDataset.Name = "cboDataset";
this.cboDataset.Size = new System.Drawing.Size(243, 21); this.cboDataset.Size = new System.Drawing.Size(250, 26);
this.cboDataset.TabIndex = 11; this.cboDataset.TabIndex = 11;
this.cboDataset.SelectedIndexChanged += new System.EventHandler(this.CboDataset_SelectedIndexChanged); this.cboDataset.SelectedIndexChanged += new System.EventHandler(this.CboDataset_SelectedIndexChanged);
// //
@ -525,32 +545,13 @@ namespace DutyContent.Tab
// //
this.lblDataSet.AutoSize = true; this.lblDataSet.AutoSize = true;
this.lblDataSet.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDataSet.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblDataSet.Location = new System.Drawing.Point(21, 7); this.lblDataSet.Location = new System.Drawing.Point(32, 10);
this.lblDataSet.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblDataSet.Name = "lblDataSet"; this.lblDataSet.Name = "lblDataSet";
this.lblDataSet.Size = new System.Drawing.Size(39, 20); this.lblDataSet.Size = new System.Drawing.Size(39, 20);
this.lblDataSet.TabIndex = 10; this.lblDataSet.TabIndex = 10;
this.lblDataSet.Text = "304"; this.lblDataSet.Text = "304";
// //
// btnLogFont
//
this.btnLogFont.Location = new System.Drawing.Point(427, 30);
this.btnLogFont.Name = "btnLogFont";
this.btnLogFont.Size = new System.Drawing.Size(273, 45);
this.btnLogFont.TabIndex = 3;
this.btnLogFont.Text = "--";
this.btnLogFont.UseVisualStyleBackColor = true;
this.btnLogFont.Click += new System.EventHandler(this.BtnLogFont_Click);
//
// lblLogFont
//
this.lblLogFont.AutoSize = true;
this.lblLogFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblLogFont.Location = new System.Drawing.Point(409, 7);
this.lblLogFont.Name = "lblLogFont";
this.lblLogFont.Size = new System.Drawing.Size(39, 20);
this.lblLogFont.TabIndex = 9;
this.lblLogFont.Text = "305";
//
// panel2 // panel2
// //
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
@ -565,9 +566,10 @@ namespace DutyContent.Tab
this.panel2.Controls.Add(this.txtSoundInstance); this.panel2.Controls.Add(this.txtSoundInstance);
this.panel2.Controls.Add(this.chkEnableSound); this.panel2.Controls.Add(this.chkEnableSound);
this.panel2.Controls.Add(this.lblSoundInstance); this.panel2.Controls.Add(this.lblSoundInstance);
this.panel2.Location = new System.Drawing.Point(6, 162); this.panel2.Location = new System.Drawing.Point(0, 161);
this.panel2.Margin = new System.Windows.Forms.Padding(4);
this.panel2.Name = "panel2"; this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(778, 90); this.panel2.Size = new System.Drawing.Size(792, 98);
this.panel2.TabIndex = 1; this.panel2.TabIndex = 1;
// //
// btnSoundPlayFate // btnSoundPlayFate
@ -575,7 +577,8 @@ namespace DutyContent.Tab
this.btnSoundPlayFate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnSoundPlayFate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSoundPlayFate.Enabled = false; this.btnSoundPlayFate.Enabled = false;
this.btnSoundPlayFate.Image = global::DutyContent.Properties.Resources.pix_play; this.btnSoundPlayFate.Image = global::DutyContent.Properties.Resources.pix_play;
this.btnSoundPlayFate.Location = new System.Drawing.Point(743, 55); this.btnSoundPlayFate.Location = new System.Drawing.Point(756, 62);
this.btnSoundPlayFate.Margin = new System.Windows.Forms.Padding(4);
this.btnSoundPlayFate.Name = "btnSoundPlayFate"; this.btnSoundPlayFate.Name = "btnSoundPlayFate";
this.btnSoundPlayFate.Size = new System.Drawing.Size(30, 30); this.btnSoundPlayFate.Size = new System.Drawing.Size(30, 30);
this.btnSoundPlayFate.TabIndex = 8; this.btnSoundPlayFate.TabIndex = 8;
@ -587,7 +590,8 @@ namespace DutyContent.Tab
this.btnSoundPlayInstance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnSoundPlayInstance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSoundPlayInstance.Enabled = false; this.btnSoundPlayInstance.Enabled = false;
this.btnSoundPlayInstance.Image = global::DutyContent.Properties.Resources.pix_play; this.btnSoundPlayInstance.Image = global::DutyContent.Properties.Resources.pix_play;
this.btnSoundPlayInstance.Location = new System.Drawing.Point(743, 24); this.btnSoundPlayInstance.Location = new System.Drawing.Point(756, 24);
this.btnSoundPlayInstance.Margin = new System.Windows.Forms.Padding(4);
this.btnSoundPlayInstance.Name = "btnSoundPlayInstance"; this.btnSoundPlayInstance.Name = "btnSoundPlayInstance";
this.btnSoundPlayInstance.Size = new System.Drawing.Size(30, 30); this.btnSoundPlayInstance.Size = new System.Drawing.Size(30, 30);
this.btnSoundPlayInstance.TabIndex = 7; this.btnSoundPlayInstance.TabIndex = 7;
@ -599,7 +603,8 @@ namespace DutyContent.Tab
this.btnSoundFindFate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnSoundFindFate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSoundFindFate.Enabled = false; this.btnSoundFindFate.Enabled = false;
this.btnSoundFindFate.Image = global::DutyContent.Properties.Resources.pix_magnify; this.btnSoundFindFate.Image = global::DutyContent.Properties.Resources.pix_magnify;
this.btnSoundFindFate.Location = new System.Drawing.Point(709, 55); this.btnSoundFindFate.Location = new System.Drawing.Point(718, 62);
this.btnSoundFindFate.Margin = new System.Windows.Forms.Padding(4);
this.btnSoundFindFate.Name = "btnSoundFindFate"; this.btnSoundFindFate.Name = "btnSoundFindFate";
this.btnSoundFindFate.Size = new System.Drawing.Size(30, 30); this.btnSoundFindFate.Size = new System.Drawing.Size(30, 30);
this.btnSoundFindFate.TabIndex = 6; this.btnSoundFindFate.TabIndex = 6;
@ -611,7 +616,8 @@ namespace DutyContent.Tab
this.btnSoundFindInstance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnSoundFindInstance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSoundFindInstance.Enabled = false; this.btnSoundFindInstance.Enabled = false;
this.btnSoundFindInstance.Image = global::DutyContent.Properties.Resources.pix_magnify; this.btnSoundFindInstance.Image = global::DutyContent.Properties.Resources.pix_magnify;
this.btnSoundFindInstance.Location = new System.Drawing.Point(709, 24); this.btnSoundFindInstance.Location = new System.Drawing.Point(718, 24);
this.btnSoundFindInstance.Margin = new System.Windows.Forms.Padding(4);
this.btnSoundFindInstance.Name = "btnSoundFindInstance"; this.btnSoundFindInstance.Name = "btnSoundFindInstance";
this.btnSoundFindInstance.Size = new System.Drawing.Size(30, 30); this.btnSoundFindInstance.Size = new System.Drawing.Size(30, 30);
this.btnSoundFindInstance.TabIndex = 2; this.btnSoundFindInstance.TabIndex = 2;
@ -621,9 +627,10 @@ namespace DutyContent.Tab
// lblSoundFate // lblSoundFate
// //
this.lblSoundFate.AutoSize = true; this.lblSoundFate.AutoSize = true;
this.lblSoundFate.Location = new System.Drawing.Point(22, 64); this.lblSoundFate.Location = new System.Drawing.Point(33, 65);
this.lblSoundFate.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblSoundFate.Name = "lblSoundFate"; this.lblSoundFate.Name = "lblSoundFate";
this.lblSoundFate.Size = new System.Drawing.Size(25, 13); this.lblSoundFate.Size = new System.Drawing.Size(32, 18);
this.lblSoundFate.TabIndex = 3; this.lblSoundFate.TabIndex = 3;
this.lblSoundFate.Text = "310"; this.lblSoundFate.Text = "310";
// //
@ -632,10 +639,11 @@ namespace DutyContent.Tab
this.txtSoundFate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.txtSoundFate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtSoundFate.Enabled = false; this.txtSoundFate.Enabled = false;
this.txtSoundFate.Location = new System.Drawing.Point(110, 61); this.txtSoundFate.Location = new System.Drawing.Point(160, 62);
this.txtSoundFate.Margin = new System.Windows.Forms.Padding(4);
this.txtSoundFate.Name = "txtSoundFate"; this.txtSoundFate.Name = "txtSoundFate";
this.txtSoundFate.ReadOnly = true; this.txtSoundFate.ReadOnly = true;
this.txtSoundFate.Size = new System.Drawing.Size(593, 20); this.txtSoundFate.Size = new System.Drawing.Size(550, 24);
this.txtSoundFate.TabIndex = 4; this.txtSoundFate.TabIndex = 4;
// //
// txtSoundInstance // txtSoundInstance
@ -643,17 +651,19 @@ namespace DutyContent.Tab
this.txtSoundInstance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.txtSoundInstance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtSoundInstance.Enabled = false; this.txtSoundInstance.Enabled = false;
this.txtSoundInstance.Location = new System.Drawing.Point(110, 30); this.txtSoundInstance.Location = new System.Drawing.Point(160, 30);
this.txtSoundInstance.Margin = new System.Windows.Forms.Padding(4);
this.txtSoundInstance.Name = "txtSoundInstance"; this.txtSoundInstance.Name = "txtSoundInstance";
this.txtSoundInstance.ReadOnly = true; this.txtSoundInstance.ReadOnly = true;
this.txtSoundInstance.Size = new System.Drawing.Size(593, 20); this.txtSoundInstance.Size = new System.Drawing.Size(550, 24);
this.txtSoundInstance.TabIndex = 5; this.txtSoundInstance.TabIndex = 5;
// //
// chkEnableSound // chkEnableSound
// //
this.chkEnableSound.AutoSize = true; this.chkEnableSound.AutoSize = true;
this.chkEnableSound.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkEnableSound.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkEnableSound.Location = new System.Drawing.Point(5, 3); this.chkEnableSound.Location = new System.Drawing.Point(8, 4);
this.chkEnableSound.Margin = new System.Windows.Forms.Padding(4);
this.chkEnableSound.Name = "chkEnableSound"; this.chkEnableSound.Name = "chkEnableSound";
this.chkEnableSound.Size = new System.Drawing.Size(58, 24); this.chkEnableSound.Size = new System.Drawing.Size(58, 24);
this.chkEnableSound.TabIndex = 4; this.chkEnableSound.TabIndex = 4;
@ -664,9 +674,10 @@ namespace DutyContent.Tab
// lblSoundInstance // lblSoundInstance
// //
this.lblSoundInstance.AutoSize = true; this.lblSoundInstance.AutoSize = true;
this.lblSoundInstance.Location = new System.Drawing.Point(22, 33); this.lblSoundInstance.Location = new System.Drawing.Point(33, 33);
this.lblSoundInstance.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblSoundInstance.Name = "lblSoundInstance"; this.lblSoundInstance.Name = "lblSoundInstance";
this.lblSoundInstance.Size = new System.Drawing.Size(25, 13); this.lblSoundInstance.Size = new System.Drawing.Size(32, 18);
this.lblSoundInstance.TabIndex = 2; this.lblSoundInstance.TabIndex = 2;
this.lblSoundInstance.Text = "309"; this.lblSoundInstance.Text = "309";
// //
@ -680,30 +691,34 @@ namespace DutyContent.Tab
this.panel1.Controls.Add(this.btnOverlayDimming); this.panel1.Controls.Add(this.btnOverlayDimming);
this.panel1.Controls.Add(this.lblOverlayTransparent); this.panel1.Controls.Add(this.lblOverlayTransparent);
this.panel1.Controls.Add(this.chkEnableOverlay); this.panel1.Controls.Add(this.chkEnableOverlay);
this.panel1.Location = new System.Drawing.Point(6, 95); this.panel1.Location = new System.Drawing.Point(0, 93);
this.panel1.Margin = new System.Windows.Forms.Padding(4);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(778, 61); this.panel1.Size = new System.Drawing.Size(792, 60);
this.panel1.TabIndex = 0; this.panel1.TabIndex = 0;
// //
// chkOverlayClickThru // chkOverlayClickThru
// //
this.chkOverlayClickThru.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.chkOverlayClickThru.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chkOverlayClickThru.AutoSize = true; this.chkOverlayClickThru.AutoSize = true;
this.chkOverlayClickThru.Location = new System.Drawing.Point(672, 8); this.chkOverlayClickThru.Location = new System.Drawing.Point(681, 6);
this.chkOverlayClickThru.Margin = new System.Windows.Forms.Padding(4);
this.chkOverlayClickThru.Name = "chkOverlayClickThru"; this.chkOverlayClickThru.Name = "chkOverlayClickThru";
this.chkOverlayClickThru.Size = new System.Drawing.Size(44, 17); this.chkOverlayClickThru.Size = new System.Drawing.Size(51, 22);
this.chkOverlayClickThru.TabIndex = 4; this.chkOverlayClickThru.TabIndex = 4;
this.chkOverlayClickThru.Text = "104"; this.chkOverlayClickThru.Text = "104";
this.chkOverlayClickThru.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.chkOverlayClickThru.UseVisualStyleBackColor = true; this.chkOverlayClickThru.UseVisualStyleBackColor = true;
this.chkOverlayClickThru.CheckedChanged += new System.EventHandler(this.ChkOverlayClickThru_CheckedChanged); this.chkOverlayClickThru.CheckedChanged += new System.EventHandler(this.ChkOverlayClickThru_CheckedChanged);
// //
// progbOverlayTransparent // progbOverlayTransparent
// //
this.progbOverlayTransparent.Enabled = false; this.progbOverlayTransparent.Enabled = false;
this.progbOverlayTransparent.Location = new System.Drawing.Point(108, 30); this.progbOverlayTransparent.Location = new System.Drawing.Point(160, 18);
this.progbOverlayTransparent.Margin = new System.Windows.Forms.Padding(4);
this.progbOverlayTransparent.Maximum = 255; this.progbOverlayTransparent.Maximum = 255;
this.progbOverlayTransparent.Name = "progbOverlayTransparent"; this.progbOverlayTransparent.Name = "progbOverlayTransparent";
this.progbOverlayTransparent.Size = new System.Drawing.Size(243, 23); this.progbOverlayTransparent.Size = new System.Drawing.Size(364, 32);
this.progbOverlayTransparent.TabIndex = 1; this.progbOverlayTransparent.TabIndex = 1;
this.progbOverlayTransparent.Click += new System.EventHandler(this.ProgbOverlayTransparent_Click); this.progbOverlayTransparent.Click += new System.EventHandler(this.ProgbOverlayTransparent_Click);
// //
@ -713,9 +728,10 @@ namespace DutyContent.Tab
this.btnOverlayDimming.BackgroundImage = global::DutyContent.Properties.Resources.pix_annotation; this.btnOverlayDimming.BackgroundImage = global::DutyContent.Properties.Resources.pix_annotation;
this.btnOverlayDimming.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; this.btnOverlayDimming.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.btnOverlayDimming.Enabled = false; this.btnOverlayDimming.Enabled = false;
this.btnOverlayDimming.Location = new System.Drawing.Point(722, 3); this.btnOverlayDimming.Location = new System.Drawing.Point(740, 4);
this.btnOverlayDimming.Margin = new System.Windows.Forms.Padding(4);
this.btnOverlayDimming.Name = "btnOverlayDimming"; this.btnOverlayDimming.Name = "btnOverlayDimming";
this.btnOverlayDimming.Size = new System.Drawing.Size(51, 51); this.btnOverlayDimming.Size = new System.Drawing.Size(46, 46);
this.btnOverlayDimming.TabIndex = 3; this.btnOverlayDimming.TabIndex = 3;
this.btnOverlayDimming.UseVisualStyleBackColor = true; this.btnOverlayDimming.UseVisualStyleBackColor = true;
this.btnOverlayDimming.Click += new System.EventHandler(this.BtnOverlayDimming_Click); this.btnOverlayDimming.Click += new System.EventHandler(this.BtnOverlayDimming_Click);
@ -723,9 +739,11 @@ namespace DutyContent.Tab
// lblOverlayTransparent // lblOverlayTransparent
// //
this.lblOverlayTransparent.AutoSize = true; this.lblOverlayTransparent.AutoSize = true;
this.lblOverlayTransparent.Location = new System.Drawing.Point(23, 35); this.lblOverlayTransparent.Enabled = false;
this.lblOverlayTransparent.Location = new System.Drawing.Point(33, 30);
this.lblOverlayTransparent.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblOverlayTransparent.Name = "lblOverlayTransparent"; this.lblOverlayTransparent.Name = "lblOverlayTransparent";
this.lblOverlayTransparent.Size = new System.Drawing.Size(25, 13); this.lblOverlayTransparent.Size = new System.Drawing.Size(32, 18);
this.lblOverlayTransparent.TabIndex = 2; this.lblOverlayTransparent.TabIndex = 2;
this.lblOverlayTransparent.Text = "307"; this.lblOverlayTransparent.Text = "307";
// //
@ -733,7 +751,8 @@ namespace DutyContent.Tab
// //
this.chkEnableOverlay.AutoSize = true; this.chkEnableOverlay.AutoSize = true;
this.chkEnableOverlay.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkEnableOverlay.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkEnableOverlay.Location = new System.Drawing.Point(3, 3); this.chkEnableOverlay.Location = new System.Drawing.Point(4, 4);
this.chkEnableOverlay.Margin = new System.Windows.Forms.Padding(4);
this.chkEnableOverlay.Name = "chkEnableOverlay"; this.chkEnableOverlay.Name = "chkEnableOverlay";
this.chkEnableOverlay.Size = new System.Drawing.Size(58, 24); this.chkEnableOverlay.Size = new System.Drawing.Size(58, 24);
this.chkEnableOverlay.TabIndex = 0; this.chkEnableOverlay.TabIndex = 0;
@ -747,9 +766,10 @@ namespace DutyContent.Tab
this.tabPagePacket.Controls.Add(this.panel5); this.tabPagePacket.Controls.Add(this.panel5);
this.tabPagePacket.ImageIndex = 2; this.tabPagePacket.ImageIndex = 2;
this.tabPagePacket.Location = new System.Drawing.Point(4, 39); this.tabPagePacket.Location = new System.Drawing.Point(4, 39);
this.tabPagePacket.Margin = new System.Windows.Forms.Padding(4);
this.tabPagePacket.Name = "tabPagePacket"; this.tabPagePacket.Name = "tabPagePacket";
this.tabPagePacket.Padding = new System.Windows.Forms.Padding(3); this.tabPagePacket.Padding = new System.Windows.Forms.Padding(4);
this.tabPagePacket.Size = new System.Drawing.Size(792, 499); this.tabPagePacket.Size = new System.Drawing.Size(796, 518);
this.tabPagePacket.TabIndex = 2; this.tabPagePacket.TabIndex = 2;
this.tabPagePacket.Text = "337"; this.tabPagePacket.Text = "337";
this.tabPagePacket.UseVisualStyleBackColor = true; this.tabPagePacket.UseVisualStyleBackColor = true;
@ -769,17 +789,19 @@ namespace DutyContent.Tab
this.panel5.Controls.Add(this.txtPacketInfo); this.panel5.Controls.Add(this.txtPacketInfo);
this.panel5.Controls.Add(this.lstPacketInfo); this.panel5.Controls.Add(this.lstPacketInfo);
this.panel5.Controls.Add(this.lblPacketFinder); this.panel5.Controls.Add(this.lblPacketFinder);
this.panel5.Location = new System.Drawing.Point(6, 6); this.panel5.Location = new System.Drawing.Point(0, 0);
this.panel5.Margin = new System.Windows.Forms.Padding(4);
this.panel5.Name = "panel5"; this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(780, 261); this.panel5.Size = new System.Drawing.Size(792, 361);
this.panel5.TabIndex = 0; this.panel5.TabIndex = 0;
// //
// lblPacketVersion // lblPacketVersion
// //
this.lblPacketVersion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblPacketVersion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.lblPacketVersion.Location = new System.Drawing.Point(625, 42); this.lblPacketVersion.Location = new System.Drawing.Point(561, 58);
this.lblPacketVersion.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPacketVersion.Name = "lblPacketVersion"; this.lblPacketVersion.Name = "lblPacketVersion";
this.lblPacketVersion.Size = new System.Drawing.Size(150, 15); this.lblPacketVersion.Size = new System.Drawing.Size(225, 21);
this.lblPacketVersion.TabIndex = 9; this.lblPacketVersion.TabIndex = 9;
this.lblPacketVersion.Text = "--"; this.lblPacketVersion.Text = "--";
this.lblPacketVersion.TextAlign = System.Drawing.ContentAlignment.TopRight; this.lblPacketVersion.TextAlign = System.Drawing.ContentAlignment.TopRight;
@ -789,17 +811,19 @@ namespace DutyContent.Tab
this.txtPacketDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.txtPacketDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtPacketDescription.Enabled = false; this.txtPacketDescription.Enabled = false;
this.txtPacketDescription.Location = new System.Drawing.Point(336, 58); this.txtPacketDescription.Location = new System.Drawing.Point(340, 80);
this.txtPacketDescription.Margin = new System.Windows.Forms.Padding(4);
this.txtPacketDescription.Name = "txtPacketDescription"; this.txtPacketDescription.Name = "txtPacketDescription";
this.txtPacketDescription.Size = new System.Drawing.Size(439, 20); this.txtPacketDescription.Size = new System.Drawing.Size(443, 24);
this.txtPacketDescription.TabIndex = 8; this.txtPacketDescription.TabIndex = 8;
// //
// lblPacketDesc // lblPacketDesc
// //
this.lblPacketDesc.AutoSize = true; this.lblPacketDesc.AutoSize = true;
this.lblPacketDesc.Location = new System.Drawing.Point(333, 42); this.lblPacketDesc.Location = new System.Drawing.Point(340, 61);
this.lblPacketDesc.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPacketDesc.Name = "lblPacketDesc"; this.lblPacketDesc.Name = "lblPacketDesc";
this.lblPacketDesc.Size = new System.Drawing.Size(25, 13); this.lblPacketDesc.Size = new System.Drawing.Size(32, 18);
this.lblPacketDesc.TabIndex = 7; this.lblPacketDesc.TabIndex = 7;
this.lblPacketDesc.Text = "317"; this.lblPacketDesc.Text = "317";
// //
@ -807,9 +831,10 @@ namespace DutyContent.Tab
// //
this.btnPacketApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnPacketApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnPacketApply.Enabled = false; this.btnPacketApply.Enabled = false;
this.btnPacketApply.Location = new System.Drawing.Point(652, 3); this.btnPacketApply.Location = new System.Drawing.Point(601, 4);
this.btnPacketApply.Margin = new System.Windows.Forms.Padding(4);
this.btnPacketApply.Name = "btnPacketApply"; this.btnPacketApply.Name = "btnPacketApply";
this.btnPacketApply.Size = new System.Drawing.Size(123, 30); this.btnPacketApply.Size = new System.Drawing.Size(184, 42);
this.btnPacketApply.TabIndex = 6; this.btnPacketApply.TabIndex = 6;
this.btnPacketApply.Text = "10009"; this.btnPacketApply.Text = "10009";
this.btnPacketApply.UseVisualStyleBackColor = true; this.btnPacketApply.UseVisualStyleBackColor = true;
@ -819,9 +844,10 @@ namespace DutyContent.Tab
// btnPacketStart // btnPacketStart
// //
this.btnPacketStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnPacketStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnPacketStart.Location = new System.Drawing.Point(523, 3); this.btnPacketStart.Location = new System.Drawing.Point(407, 4);
this.btnPacketStart.Margin = new System.Windows.Forms.Padding(4);
this.btnPacketStart.Name = "btnPacketStart"; this.btnPacketStart.Name = "btnPacketStart";
this.btnPacketStart.Size = new System.Drawing.Size(123, 30); this.btnPacketStart.Size = new System.Drawing.Size(184, 42);
this.btnPacketStart.TabIndex = 5; this.btnPacketStart.TabIndex = 5;
this.btnPacketStart.Text = "10007"; this.btnPacketStart.Text = "10007";
this.btnPacketStart.UseVisualStyleBackColor = true; this.btnPacketStart.UseVisualStyleBackColor = true;
@ -841,10 +867,11 @@ namespace DutyContent.Tab
this.lstBozjaInfo.GridLines = true; this.lstBozjaInfo.GridLines = true;
this.lstBozjaInfo.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.lstBozjaInfo.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.lstBozjaInfo.HideSelection = false; this.lstBozjaInfo.HideSelection = false;
this.lstBozjaInfo.Location = new System.Drawing.Point(333, 107); this.lstBozjaInfo.Location = new System.Drawing.Point(340, 148);
this.lstBozjaInfo.Margin = new System.Windows.Forms.Padding(4);
this.lstBozjaInfo.MultiSelect = false; this.lstBozjaInfo.MultiSelect = false;
this.lstBozjaInfo.Name = "lstBozjaInfo"; this.lstBozjaInfo.Name = "lstBozjaInfo";
this.lstBozjaInfo.Size = new System.Drawing.Size(442, 148); this.lstBozjaInfo.Size = new System.Drawing.Size(444, 203);
this.lstBozjaInfo.TabIndex = 4; this.lstBozjaInfo.TabIndex = 4;
this.lstBozjaInfo.UseCompatibleStateImageBehavior = false; this.lstBozjaInfo.UseCompatibleStateImageBehavior = false;
this.lstBozjaInfo.View = System.Windows.Forms.View.Details; this.lstBozjaInfo.View = System.Windows.Forms.View.Details;
@ -854,7 +881,7 @@ namespace DutyContent.Tab
// columnHeader5 // columnHeader5
// //
this.columnHeader5.Text = "Name"; this.columnHeader5.Text = "Name";
this.columnHeader5.Width = 233; this.columnHeader5.Width = 180;
// //
// columnHeader6 // columnHeader6
// //
@ -864,19 +891,20 @@ namespace DutyContent.Tab
// columnHeader7 // columnHeader7
// //
this.columnHeader7.Text = "Member"; this.columnHeader7.Text = "Member";
this.columnHeader7.Width = 55; this.columnHeader7.Width = 72;
// //
// columnHeader8 // columnHeader8
// //
this.columnHeader8.Text = "Progress"; this.columnHeader8.Text = "Progress";
this.columnHeader8.Width = 56; this.columnHeader8.Width = 73;
// //
// lblPacketBozja // lblPacketBozja
// //
this.lblPacketBozja.AutoSize = true; this.lblPacketBozja.AutoSize = true;
this.lblPacketBozja.Location = new System.Drawing.Point(333, 91); this.lblPacketBozja.Location = new System.Drawing.Point(340, 126);
this.lblPacketBozja.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPacketBozja.Name = "lblPacketBozja"; this.lblPacketBozja.Name = "lblPacketBozja";
this.lblPacketBozja.Size = new System.Drawing.Size(25, 13); this.lblPacketBozja.Size = new System.Drawing.Size(32, 18);
this.lblPacketBozja.TabIndex = 3; this.lblPacketBozja.TabIndex = 3;
this.lblPacketBozja.Text = "318"; this.lblPacketBozja.Text = "318";
// //
@ -885,11 +913,12 @@ namespace DutyContent.Tab
this.txtPacketInfo.BackColor = System.Drawing.SystemColors.Window; this.txtPacketInfo.BackColor = System.Drawing.SystemColors.Window;
this.txtPacketInfo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtPacketInfo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtPacketInfo.Enabled = false; this.txtPacketInfo.Enabled = false;
this.txtPacketInfo.Location = new System.Drawing.Point(3, 166); this.txtPacketInfo.Location = new System.Drawing.Point(4, 206);
this.txtPacketInfo.Margin = new System.Windows.Forms.Padding(4);
this.txtPacketInfo.Multiline = true; this.txtPacketInfo.Multiline = true;
this.txtPacketInfo.Name = "txtPacketInfo"; this.txtPacketInfo.Name = "txtPacketInfo";
this.txtPacketInfo.ReadOnly = true; this.txtPacketInfo.ReadOnly = true;
this.txtPacketInfo.Size = new System.Drawing.Size(324, 89); this.txtPacketInfo.Size = new System.Drawing.Size(328, 146);
this.txtPacketInfo.TabIndex = 2; this.txtPacketInfo.TabIndex = 2;
// //
// lstPacketInfo // lstPacketInfo
@ -910,10 +939,11 @@ namespace DutyContent.Tab
listViewItem3, listViewItem3,
listViewItem4, listViewItem4,
listViewItem5}); listViewItem5});
this.lstPacketInfo.Location = new System.Drawing.Point(3, 42); this.lstPacketInfo.Location = new System.Drawing.Point(4, 58);
this.lstPacketInfo.Margin = new System.Windows.Forms.Padding(4);
this.lstPacketInfo.MultiSelect = false; this.lstPacketInfo.MultiSelect = false;
this.lstPacketInfo.Name = "lstPacketInfo"; this.lstPacketInfo.Name = "lstPacketInfo";
this.lstPacketInfo.Size = new System.Drawing.Size(324, 118); this.lstPacketInfo.Size = new System.Drawing.Size(328, 140);
this.lstPacketInfo.TabIndex = 1; this.lstPacketInfo.TabIndex = 1;
this.lstPacketInfo.UseCompatibleStateImageBehavior = false; this.lstPacketInfo.UseCompatibleStateImageBehavior = false;
this.lstPacketInfo.View = System.Windows.Forms.View.Details; this.lstPacketInfo.View = System.Windows.Forms.View.Details;
@ -923,7 +953,7 @@ namespace DutyContent.Tab
// columnHeader1 // columnHeader1
// //
this.columnHeader1.Text = "Function"; this.columnHeader1.Text = "Function";
this.columnHeader1.Width = 100; this.columnHeader1.Width = 101;
// //
// columnHeader2 // columnHeader2
// //
@ -944,7 +974,8 @@ namespace DutyContent.Tab
// //
this.lblPacketFinder.AutoSize = true; this.lblPacketFinder.AutoSize = true;
this.lblPacketFinder.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPacketFinder.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblPacketFinder.Location = new System.Drawing.Point(3, -1); this.lblPacketFinder.Location = new System.Drawing.Point(4, -1);
this.lblPacketFinder.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPacketFinder.Name = "lblPacketFinder"; this.lblPacketFinder.Name = "lblPacketFinder";
this.lblPacketFinder.Size = new System.Drawing.Size(43, 24); this.lblPacketFinder.Size = new System.Drawing.Size(43, 24);
this.lblPacketFinder.TabIndex = 0; this.lblPacketFinder.TabIndex = 0;
@ -961,11 +992,14 @@ namespace DutyContent.Tab
// //
// DutyForm // DutyForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true; this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(800, 542); this.ClientSize = new System.Drawing.Size(804, 561);
this.Controls.Add(this.tabContent); this.Controls.Add(this.tabContent);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(4);
this.MinimumSize = new System.Drawing.Size(820, 39);
this.Name = "DutyForm"; this.Name = "DutyForm";
this.Text = "Duty"; this.Text = "Duty";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DutyTabForm_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DutyTabForm_FormClosing);
@ -1001,7 +1035,6 @@ namespace DutyContent.Tab
private System.Windows.Forms.ImageList ilTabContent; private System.Windows.Forms.ImageList ilTabContent;
private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TreeView treeFates; private System.Windows.Forms.TreeView treeFates;
private System.Windows.Forms.RichTextBox txtContentLog;
private System.Windows.Forms.RadioButton rdoFatePreset4; private System.Windows.Forms.RadioButton rdoFatePreset4;
private System.Windows.Forms.RadioButton rdoFatePreset3; private System.Windows.Forms.RadioButton rdoFatePreset3;
private System.Windows.Forms.RadioButton rdoFatePreset2; private System.Windows.Forms.RadioButton rdoFatePreset2;
@ -1022,8 +1055,6 @@ namespace DutyContent.Tab
private System.Windows.Forms.Button btnSoundFindFate; private System.Windows.Forms.Button btnSoundFindFate;
private System.Windows.Forms.Button btnSoundFindInstance; private System.Windows.Forms.Button btnSoundFindInstance;
private System.Windows.Forms.Panel panel3; private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Button btnLogFont;
private System.Windows.Forms.Label lblLogFont;
private System.Windows.Forms.ComboBox cboDataset; private System.Windows.Forms.ComboBox cboDataset;
private System.Windows.Forms.Label lblDataSet; private System.Windows.Forms.Label lblDataSet;
private System.Windows.Forms.Label lblCurrentDataSet; private System.Windows.Forms.Label lblCurrentDataSet;
@ -1057,7 +1088,6 @@ namespace DutyContent.Tab
private System.Windows.Forms.Label lblPacketDesc; private System.Windows.Forms.Label lblPacketDesc;
private System.Windows.Forms.ColumnHeader columnHeader8; private System.Windows.Forms.ColumnHeader columnHeader8;
private System.Windows.Forms.CheckBox chkOverlayClickThru; private System.Windows.Forms.CheckBox chkOverlayClickThru;
private System.Windows.Forms.CheckBox chkShowDebug;
private System.Windows.Forms.ComboBox cboPacketset; private System.Windows.Forms.ComboBox cboPacketset;
private System.Windows.Forms.Label lblPacketSet; private System.Windows.Forms.Label lblPacketSet;
private System.Windows.Forms.Label lblPacketVersion; private System.Windows.Forms.Label lblPacketVersion;
@ -1065,5 +1095,6 @@ namespace DutyContent.Tab
private System.Windows.Forms.TextBox txtDiscowkUrl; private System.Windows.Forms.TextBox txtDiscowkUrl;
private System.Windows.Forms.CheckBox chkUseNotifyDiscowk; private System.Windows.Forms.CheckBox chkUseNotifyDiscowk;
private System.Windows.Forms.CheckBox chkDiscowkTts; private System.Windows.Forms.CheckBox chkDiscowkTts;
private ThirdParty.EXListView lstContents;
} }
} }

View file

@ -33,6 +33,11 @@ namespace DutyContent.Tab
// //
private Overlay.DutyOvForm _overlay; private Overlay.DutyOvForm _overlay;
//
private object _lock_contents = new object();
private ImageList _ilCategory;
//
public DutyForm() public DutyForm()
{ {
_self = this; _self = this;
@ -40,6 +45,17 @@ namespace DutyContent.Tab
InitializeComponent(); InitializeComponent();
_overlay = new Overlay.DutyOvForm(); _overlay = new Overlay.DutyOvForm();
//
ImageList ildmy = new ImageList() { ImageSize = new Size(1, 40) };
lstContents.SmallImageList = ildmy;
lstContents.MySortBrush = SystemBrushes.ControlLight;
lstContents.MyHighlightBrush = Brushes.LightGoldenrodYellow;
lstContents.GridLines = true;
lstContents.ControlPadding = 1;
ThirdParty.WinFormSupp.DoubleBuffered(lstContents, true);
} }
private void DutyTabForm_FormClosing(object sender, FormClosingEventArgs e) private void DutyTabForm_FormClosing(object sender, FormClosingEventArgs e)
@ -56,8 +72,6 @@ namespace DutyContent.Tab
RefreshDatasetList(); RefreshDatasetList();
RefreshPacketList(); RefreshPacketList();
btnLogFont.Text = $"{DcConfig.Duty.LogFontFamily}, {DcConfig.Duty.LogFontSize}";
// //
chkEnableOverlay.Checked = DcConfig.Duty.EnableOverlay; chkEnableOverlay.Checked = DcConfig.Duty.EnableOverlay;
@ -66,7 +80,7 @@ namespace DutyContent.Tab
chkOverlayClickThru.Checked = DcConfig.Duty.OverlayClickThru; chkOverlayClickThru.Checked = DcConfig.Duty.OverlayClickThru;
// //
_overlay.SetText(MesgLog.Text(99, DcConfig.PluginVersion.ToString())); _overlay.SetText(Locale.Text(99, DcConfig.PluginVersion.ToString()));
_overlay.Location = DcConfig.Duty.OverlayLocation; _overlay.Location = DcConfig.Duty.OverlayLocation;
if (DcConfig.Duty.EnableOverlay) if (DcConfig.Duty.EnableOverlay)
@ -139,56 +153,120 @@ namespace DutyContent.Tab
public void UpdateUiLocale() public void UpdateUiLocale()
{ {
tabPageContent.Text = MesgLog.Text(301); tabPageContent.Text = Locale.Text(301);
tabPageSetting.Text = MesgLog.Text(302); tabPageSetting.Text = Locale.Text(302);
tabPagePacket.Text = MesgLog.Text(337); tabPagePacket.Text = Locale.Text(337);
lblDataSet.Text = MesgLog.Text(304); lblDataSet.Text = Locale.Text(304);
lblPacketSet.Text = MesgLog.Text(336); lblPacketSet.Text = Locale.Text(336);
lblLogFont.Text = MesgLog.Text(305);
chkEnableOverlay.Text = MesgLog.Text(306); chkEnableOverlay.Text = Locale.Text(306);
lblOverlayTransparent.Text = MesgLog.Text(307); lblOverlayTransparent.Text = Locale.Text(307);
chkOverlayClickThru.Text = MesgLog.Text(104); chkOverlayClickThru.Text = Locale.Text(104);
chkEnableSound.Text = MesgLog.Text(308); chkEnableSound.Text = Locale.Text(308);
lblSoundInstance.Text = MesgLog.Text(309); lblSoundInstance.Text = Locale.Text(309);
lblSoundFate.Text = MesgLog.Text(310); lblSoundFate.Text = Locale.Text(310);
chkUseNotifyLine.Text = MesgLog.Text(311); chkUseNotifyLine.Text = Locale.Text(311);
lblLineToken.Text = MesgLog.Text(312); lblLineToken.Text = Locale.Text(312);
chkUseNotifyTelegram.Text = MesgLog.Text(313); chkUseNotifyTelegram.Text = Locale.Text(313);
lblTelegramId.Text = MesgLog.Text(314); lblTelegramId.Text = Locale.Text(314);
lblTelegramToken.Text = MesgLog.Text(315); lblTelegramToken.Text = Locale.Text(315);
chkUseNotifyDiscowk.Text = MesgLog.Text(338); chkUseNotifyDiscowk.Text = Locale.Text(338);
chkDiscowkTts.Text = MesgLog.Text(341); chkDiscowkTts.Text = Locale.Text(341);
lblDiscowkUrl.Text = MesgLog.Text(339); lblDiscowkUrl.Text = Locale.Text(339);
btnTestNotify.Text = MesgLog.Text(340); btnTestNotify.Text = Locale.Text(340);
lblPacketFinder.Text = MesgLog.Text(316); lblPacketFinder.Text = Locale.Text(316);
lblPacketDesc.Text = MesgLog.Text(317); lblPacketDesc.Text = Locale.Text(317);
lblPacketBozja.Text = MesgLog.Text(318); lblPacketBozja.Text = Locale.Text(318);
lstPacketInfo.Columns[0].Text = MesgLog.Text(319); lstPacketInfo.Columns[0].Text = Locale.Text(319);
lstPacketInfo.Columns[1].Text = MesgLog.Text(320); lstPacketInfo.Columns[1].Text = Locale.Text(320);
lstPacketInfo.Columns[2].Text = MesgLog.Text(321); lstPacketInfo.Columns[2].Text = Locale.Text(321);
lstPacketInfo.Columns[3].Text = MesgLog.Text(322); lstPacketInfo.Columns[3].Text = Locale.Text(322);
lstBozjaInfo.Columns[0].Text = MesgLog.Text(323); lstBozjaInfo.Columns[0].Text = Locale.Text(323);
lstBozjaInfo.Columns[1].Text = MesgLog.Text(324); lstBozjaInfo.Columns[1].Text = Locale.Text(324);
lstBozjaInfo.Columns[2].Text = MesgLog.Text(325); lstBozjaInfo.Columns[2].Text = Locale.Text(325);
lstBozjaInfo.Columns[3].Text = MesgLog.Text(326); lstBozjaInfo.Columns[3].Text = Locale.Text(326);
btnPacketStart.Text = MesgLog.Text(10007); btnPacketStart.Text = Locale.Text(10007);
btnPacketApply.Text = MesgLog.Text(10009); btnPacketApply.Text = Locale.Text(10009);
// // content reset
var logfont = new Font(DcConfig.Duty.LogFontFamily, DcConfig.Duty.LogFontSize, FontStyle.Regular); lock (_lock_contents)
txtContentLog.Font = logfont; {
btnLogFont.Font = logfont; lstContents.Items.Clear();
lstContents.Columns.Clear();
Image im_r = Properties.Resources.pix_rdrt_red;
Image im_g = Properties.Resources.pix_rdrt_green;
Image im_p = Properties.Resources.pix_rdrt_puple;
Image im_b = Properties.Resources.pix_rdrt_bline;
_ilCategory = new ImageList()
{
ColorDepth = ColorDepth.Depth32Bit,
ImageSize = new Size(96, 32),
};
_ilCategory.Images.Add(CreateCategoryImage(im_b, Locale.Text(27), Brushes.Black)); // none
_ilCategory.Images.Add(CreateCategoryImage(im_g, Locale.Text(21))); // roulette
_ilCategory.Images.Add(CreateCategoryImage(im_g, Locale.Text(22))); // instance
_ilCategory.Images.Add(CreateCategoryImage(im_r, Locale.Text(23))); // FATE
_ilCategory.Images.Add(CreateCategoryImage(im_r, Locale.Text(24))); // skirmish
_ilCategory.Images.Add(CreateCategoryImage(im_p, Locale.Text(25))); // CE
_ilCategory.Images.Add(CreateCategoryImage(im_p, Locale.Text(38))); // Match
_ilCategory.Images.Add(CreateCategoryImage(im_g, Locale.Text(39))); // Entry
ThirdParty.EXComboBox excbCat = new ThirdParty.EXComboBox();
excbCat.DropDownStyle = ComboBoxStyle.DropDownList;
excbCat.MyHighlightBrush = Brushes.Goldenrod;
excbCat.ItemHeight = 38;
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[0], "0"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[1], "1"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[2], "2"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[3], "3"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[4], "4"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[5], "5"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[6], "6"));
excbCat.Items.Add(new ThirdParty.EXComboBox.EXImageItem(_ilCategory.Images[7], "7"));
lstContents.Columns.Add(new ThirdParty.EXColumnHeader("ID", 50));
lstContents.Columns.Add(new ThirdParty.EXColumnHeader("Type", 100));
lstContents.Columns.Add(new ThirdParty.EXColumnHeader("%", 40));
lstContents.Columns.Add(new ThirdParty.EXColumnHeader("Name", 300));
lstContents.BeginUpdate();
ThirdParty.EXListViewItem li = new ThirdParty.EXListViewItem("");
li.SubItems.Add(new ThirdParty.EXImageListViewSubItem(_ilCategory.Images[0], ""));
li.SubItems.Add("");
li.SubItems.Add(Locale.Text(27));
lstContents.Items.Add(li);
lstContents.EndUpdate();
}
}
private Image CreateCategoryImage(Image img, string value, Brush brush = null)
{
Bitmap bmp = new Bitmap(img);
RectangleF rt = new RectangleF(0.0f, 7.0f, 96.0f, 16.0f);
StringFormat fmt = new StringFormat() { Alignment = StringAlignment.Center };
Font fnt = new Font(Font.FontFamily, 14.0f, FontStyle.Regular, GraphicsUnit.Pixel);
if (brush == null)
brush = Brushes.White;
using (var g = Graphics.FromImage(bmp))
g.DrawString(value, fnt, brush, rt, fmt);
return bmp;
} }
public void PacketHandler(string pid, byte[] message) public void PacketHandler(string pid, byte[] message)
@ -202,7 +280,7 @@ namespace DutyContent.Tab
opcode != DcConfig.Packet.OpDuty && opcode != DcConfig.Packet.OpDuty &&
opcode != DcConfig.Packet.OpMatch && opcode != DcConfig.Packet.OpMatch &&
opcode != DcConfig.Packet.OpInstance && opcode != DcConfig.Packet.OpInstance &&
opcode != DcConfig.Packet.OpSouthernBozja) opcode != DcConfig.Packet.OpCe)
return; return;
var data = message.Skip(32).ToArray(); var data = message.Skip(32).ToArray();
@ -210,18 +288,15 @@ namespace DutyContent.Tab
// FATE // FATE
if (opcode == DcConfig.Packet.OpFate) if (opcode == DcConfig.Packet.OpFate)
{ {
// 53=begin, 54=end, 62=progress var fcode = BitConverter.ToUInt16(data, 4);
if (data[0] == 53)
{
var fcode = BitConverter.ToUInt16(data, 4);
if (fcode > 100) if (fcode > 100)
{
// 53=begin, 54=end, 62=progress
if (data[0] == 53)
{ {
var fate = DcContent.GetFate(fcode); var fate = DcContent.GetFate(fcode);
if (_stq_type != DcContent.SaveTheQueenType.No || IsSkirmishFate(fcode)) TraceFate(fcode, true, fate, 0);
LogSkirmish(10001, fate.Name);
else
LogFate(10001, fate.Name);
if (DcConfig.Duty.Fates[DcConfig.Duty.ActiveFate].Selected.Contains(fcode)) if (DcConfig.Duty.Fates[DcConfig.Duty.ActiveFate].Selected.Contains(fcode))
{ {
@ -232,18 +307,27 @@ namespace DutyContent.Tab
_last_fate = fcode; _last_fate = fcode;
} }
} else if (data[0] == 62 && data[8] > 0) // more than 0%
else if (chkShowDebug.Checked && data[0] == 62 && data[8] > 0) // more than 0%
{
var fcode = BitConverter.ToUInt16(data, 4);
if (fcode > 100)
{ {
var fate = DcContent.TryFate(fcode); var fate = DcContent.TryFate(fcode);
if (fate == null)
LogDebug("unknown fate {0}% \"{1}\"", data[8], fcode);
_last_fate = fcode; if (fate != null)
TraceFate(fcode, false, fate, data[8]);
else
{
if (DcConfig.DebugEnable)
{
WriteLog(Color.Magenta, 37, 12, fcode);
_last_fate = fcode;
}
}
}
else if (data[0] == 54)
{
var fate = DcContent.TryFate(fcode);
if (fate != null)
TraceFate(fcode, false, fate);
} }
} }
} }
@ -256,11 +340,12 @@ namespace DutyContent.Tab
if (rcode != 0) if (rcode != 0)
{ {
var roulette = DcContent.GetRoulette(rcode); var roulette = DcContent.GetRoulette(rcode);
LogRoulette(10002, roulette.Name); TraceEntryRoulette(roulette);
_overlay.PlayQueue(roulette.Name); _overlay.PlayQueue(roulette.Name);
} }
else else
{ {
// TODO: is this working?
var insts = new List<int>(); var insts = new List<int>();
for (var i = 0; i < 5; i++) for (var i = 0; i < 5; i++)
{ {
@ -271,12 +356,13 @@ namespace DutyContent.Tab
if (insts.Any()) if (insts.Any())
{ {
LogInstance(10002, string.Join("/", insts.ToArray())); TraceEntryInstance(insts);
_overlay.PlayQueue(MesgLog.Text(10006, $"#{insts.Count}")); _overlay.PlayQueue(Locale.Text(10006, $"#{insts.Count}"));
} }
} }
DcContent.Missions.Clear(); DcContent.Missions.Clear();
ResetContents();
} }
// match // match
@ -289,19 +375,19 @@ namespace DutyContent.Tab
if (icode == 0 && rcode != 0) if (icode == 0 && rcode != 0)
{ {
var roulette = DcContent.GetRoulette(rcode); var roulette = DcContent.GetRoulette(rcode);
LogRoulette(10003, roulette.Name); TraceMatchRoulette(roulette);
name = roulette.Name; name = roulette.Name;
} }
else if (icode != 0) else if (icode != 0)
{ {
var instance = DcContent.GetInstance(icode); var instance = DcContent.GetInstance(icode);
LogInstance(10003, instance.Name); TraceMatchInstance(instance);
name = instance.Name; name = instance.Name;
} }
else else
{ {
// ??? // ???
name = MesgLog.Text(10003, icode); name = Locale.Text(10003, icode);
} }
PlayEffecSoundInstance(); PlayEffecSoundInstance();
@ -320,8 +406,8 @@ namespace DutyContent.Tab
{ {
var icode = BitConverter.ToUInt16(data, 0); var icode = BitConverter.ToUInt16(data, 0);
var instance = DcContent.GetInstance(icode); var instance = DcContent.GetInstance(icode);
LogInstance(10004, instance.Name); TraceEnterInstance(instance);
_overlay.PlayMatch(MesgLog.Text(10004, instance.Name)); _overlay.PlayMatch(Locale.Text(10004, instance.Name));
DcContent.Missions.Clear(); DcContent.Missions.Clear();
} }
@ -331,8 +417,8 @@ namespace DutyContent.Tab
} }
} }
// southen bozja front critical engagement // save the queen critical engagement
else if (opcode == DcConfig.Packet.OpSouthernBozja) else if (opcode == DcConfig.Packet.OpCe)
{ {
// 0[4] timestamp // 0[4] timestamp
// 4[2] mmss // 4[2] mmss
@ -354,21 +440,24 @@ namespace DutyContent.Tab
var ce = data[8] + DcContent.SaveTheQueenTypeToCeBase(_stq_type); var ce = data[8] + DcContent.SaveTheQueenTypeToCeBase(_stq_type);
var stat = data[10]; var stat = data[10];
var fate = DcContent.GetFate(ce);
if (stat == 0 /* || data[10] == 3 */) if (stat == 0 /* || data[10] == 3 */)
{ {
if (DcContent.Missions.ContainsKey(ce)) if (DcContent.Missions.ContainsKey(ce))
DcContent.Missions.Remove(ce); DcContent.Missions.Remove(ce);
TraceCe(ce, false, fate);
} }
else if (stat == 1 || stat == 2) else if (stat == 1 || stat == 2)
{ {
var withlog = false;
if (!DcContent.Missions.ContainsKey(ce)) if (!DcContent.Missions.ContainsKey(ce))
{ {
withlog = true;
DcContent.Missions.Add(ce, 0); DcContent.Missions.Add(ce, 0);
var fate = DcContent.GetFate(ce);
LogCe(10001, fate.Name);
if (DcConfig.Duty.Fates[DcConfig.Duty.ActiveFate].Selected.Contains(ce)) if (DcConfig.Duty.Fates[DcConfig.Duty.ActiveFate].Selected.Contains(ce))
{ {
PlayEffectSoundFate(); PlayEffectSoundFate();
@ -376,16 +465,15 @@ namespace DutyContent.Tab
_overlay.PlayFate(fate); _overlay.PlayFate(fate);
} }
} }
TraceCe(ce, withlog, fate, stat == 1 ? "R" : "E");
} }
else if (stat == 3) else if (stat == 3)
{ {
if (DcContent.Missions.ContainsKey(ce)) if (!DcContent.Missions.ContainsKey(ce))
{
DcContent.Missions.Add(ce, 0); DcContent.Missions.Add(ce, 0);
var fate = DcContent.GetFate(ce); TraceCe(ce, false, fate, data[12].ToString());
LogCe(10001, fate.Name);
}
} }
} }
} }
@ -403,74 +491,158 @@ namespace DutyContent.Tab
#if false #if false
LogInstance(10025, $"{zone_name} ({zone_id})"); LogInstance(10025, $"{zone_name} ({zone_id})");
if (chkShowDebug.Checked) if (DcConfig.DebugEnable)
LogDebug("Zone: {0}", zone_id); LogDebug("Zone: {0}", zone_id);
#endif #endif
ResetContents();
} }
// //
private void WriteLog(Color color, string category, string format, params object[] prms)
{
if (txtContentLog == null || txtContentLog.IsDisposed || format == null)
return;
var fmt = string.Format(format, prms);
var dt = DateTime.Now.ToString("HH:mm:ss");
var ms = $"[{dt}/{category}] {fmt}{Environment.NewLine}";
WorkerAct.Invoker(() =>
{
txtContentLog.SelectionColor = color;
txtContentLog.SelectionStart = txtContentLog.TextLength;
txtContentLog.SelectionLength = 0;
txtContentLog.AppendText(ms);
txtContentLog.SelectionColor = txtContentLog.ForeColor;
ThirdParty.NativeMethods.ScrollToBottom(txtContentLog);
});
}
private void WriteLog(Color color, int catkey, int fmtkey, params object[] prms) private void WriteLog(Color color, int catkey, int fmtkey, params object[] prms)
{ {
string catergory = MesgLog.Text(catkey); string category = Locale.Text(catkey);
string format = MesgLog.Text(fmtkey); string format = Locale.Text(fmtkey);
WriteLog(color, catergory, format, prms); Logger.WriteCategory(color, category, format, prms);
} }
// //
private void LogDebug(string msg, params object[] prms) private void TraceFate(ushort code, bool withlog, DcContent.Fate fate, int progress = -1)
{ {
WriteLog(Color.Red, "Debug", msg, prms); int key, subs;
if (_stq_type != DcContent.SaveTheQueenType.No || IsSkirmishFate(code))
{
key = 24;
subs = 4;
}
else
{
key = 23;
subs = 3;
}
if (withlog)
WriteLog(Color.Black, key, 10001, fate.Name);
lock (_lock_contents)
{
var sc = code.ToString();
var i = UnsafeFindContent(sc, out int nth);
if (i == null && progress >= 0)
{
var li = new ThirdParty.EXListViewItem(sc);
var si = new ThirdParty.EXImageListViewSubItem(_ilCategory.Images[subs], "");
li.SubItems.Add(si);
li.SubItems.Add(progress.ToString());
li.SubItems.Add(fate.Name);
lstContents.Items.Add(li);
}
else
{
if (progress >= 0)
i.SubItems[2].Text = progress.ToString();
else if (nth >= 0)
lstContents.Items.RemoveAt(nth);
}
}
} }
// //
private void LogRoulette(int key, params object[] prms) private void TraceCe(int code, bool withlog, DcContent.Fate fate, string progress = null)
{ {
WriteLog(Color.Black, 21, key, prms); if (withlog)
WriteLog(Color.Black, 25, 10001, fate.Name);
lock (_lock_contents)
{
var sc = code.ToString();
var i = UnsafeFindContent(sc, out int nth);
if (i == null && progress != null)
{
var li = new ThirdParty.EXListViewItem(sc);
var si = new ThirdParty.EXImageListViewSubItem(_ilCategory.Images[5], "");
li.SubItems.Add(si);
li.SubItems.Add(progress.ToString());
li.SubItems.Add(fate.Name);
lstContents.Items.Add(li);
}
else
{
if (progress == null)
lstContents.Items.RemoveAt(nth);
else
i.SubItems[2].Text = progress;
}
}
} }
// //
private void LogInstance(int key, params object[] prms) private void UpdateTraceInstance(string insname, int count, int imageindex)
{ {
WriteLog(Color.Black, 22, key, prms); lock (_lock_contents)
{
if (lstContents.Items.Count > 0)
{
//lstContents.BeginUpdate();
var li = lstContents.Items[0];
var si = li.SubItems[1] as ThirdParty.EXImageListViewSubItem;
si.MyImage = _ilCategory.Images[imageindex];
li.SubItems[2].Text = count == 0 ? string.Empty : count.ToString();
li.SubItems[3].Text = insname;
//lstContents.EndUpdate();
}
}
} }
// //
private void LogFate(int key, params object[] prms) private void TraceMatchInstance(DcContent.Instance instance)
{ {
WriteLog(Color.Black, 23, key, prms); WriteLog(Color.Black, 22, 10003, instance.Name);
UpdateTraceInstance(instance.Name, 0, 6);
} }
// //
private void LogSkirmish(int key, params object[] prms) private void TraceEnterInstance(DcContent.Instance instance)
{ {
WriteLog(Color.Black, 24, key, prms); WriteLog(Color.Black, 22, 10004, instance.Name);
UpdateTraceInstance(instance.Name, 0, 2);
} }
// //
private void LogCe(int key, params object[] prms) private void TraceEntryInstance(List<int> instances)
{ {
WriteLog(Color.Black, 25, key, prms); var ins = string.Join("/", instances.ToArray());
WriteLog(Color.Black, 22, 10002, ins);
UpdateTraceInstance(ins, instances.Count, 7);
}
//
private void TraceMatchRoulette(DcContent.Roulette roulette)
{
WriteLog(Color.Black, 22, 10003, roulette.Name);
UpdateTraceInstance(roulette.Name, 0, 6);
}
//
private void TraceEntryRoulette(DcContent.Roulette roulette)
{
WriteLog(Color.Black, 22, 10002, roulette.Name);
UpdateTraceInstance(roulette.Name, 0, 1);
} }
// //
@ -584,34 +756,6 @@ namespace DutyContent.Tab
} }
} }
private void BtnLogFont_Click(object sender, EventArgs e)
{
Font ret = (Font)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
{
FontDialog dg = new FontDialog
{
Font = txtContentLog.Font,
FontMustExist = true,
AllowVerticalFonts = false
};
return (dg.ShowDialog() == DialogResult.OK) ? dg.Font : null;
}));
if (ret != null)
{
txtContentLog.Font = ret;
DcConfig.Duty.LogFontFamily = ret.Name;
DcConfig.Duty.LogFontSize = ret.Size;
SaveConfig();
btnLogFont.Font = ret;
btnLogFont.Text = $"{DcConfig.Duty.LogFontFamily}, {DcConfig.Duty.LogFontSize}";
}
}
private void TreeFates_AfterCheck(object sender, TreeViewEventArgs e) private void TreeFates_AfterCheck(object sender, TreeViewEventArgs e)
{ {
if (!DcConfig.PluginEnable) if (!DcConfig.PluginEnable)
@ -774,9 +918,9 @@ namespace DutyContent.Tab
{ {
var dg = new OpenFileDialog var dg = new OpenFileDialog
{ {
Title = MesgLog.Text(101), Title = Locale.Text(101),
DefaultExt = "wav", DefaultExt = "wav",
Filter = MesgLog.Text(102) Filter = Locale.Text(102)
}; };
return (dg.ShowDialog() == DialogResult.OK) ? dg.FileName : null; return (dg.ShowDialog() == DialogResult.OK) ? dg.FileName : null;
@ -816,7 +960,7 @@ namespace DutyContent.Tab
if (!DcConfig.PluginEnable) if (!DcConfig.PluginEnable)
return; return;
string s = MesgLog.Text(103); string s = Locale.Text(103);
if (DcConfig.Duty.UseNotifyLine) if (DcConfig.Duty.UseNotifyLine)
await NotifyUsingLine(s); await NotifyUsingLine(s);
@ -847,7 +991,7 @@ namespace DutyContent.Tab
if (!DcConfig.Duty.EnableNotify) if (!DcConfig.Duty.EnableNotify)
return; return;
string s = MesgLog.Text(10005, f.Name); string s = Locale.Text(10005, f.Name);
SendNotify(s); SendNotify(s);
} }
@ -857,7 +1001,7 @@ namespace DutyContent.Tab
if (!DcConfig.Duty.EnableNotify) if (!DcConfig.Duty.EnableNotify)
return; return;
string s = MesgLog.Text(10003, name); string s = Locale.Text(10003, name);
SendNotify(s); SendNotify(s);
} }
@ -1070,7 +1214,7 @@ namespace DutyContent.Tab
{ {
if (!IsValidDiscwkUrl(txtDiscowkUrl.Text)) if (!IsValidDiscwkUrl(txtDiscowkUrl.Text))
{ {
MesgLog.E(342); Logger.E(342);
return; return;
} }
@ -1107,7 +1251,7 @@ namespace DutyContent.Tab
if (!IsValidDiscwkUrl(txtDiscowkUrl.Text)) if (!IsValidDiscwkUrl(txtDiscowkUrl.Text))
{ {
MesgLog.E(342); Logger.E(342);
return; return;
} }
@ -1133,12 +1277,12 @@ namespace DutyContent.Tab
{ {
if (!is_enable) if (!is_enable)
{ {
btnPacketStart.Text = MesgLog.Text(10007); btnPacketStart.Text = Locale.Text(10007);
btnPacketStart.BackColor = Color.Transparent; btnPacketStart.BackColor = Color.Transparent;
} }
else else
{ {
btnPacketStart.Text = MesgLog.Text(10008); btnPacketStart.Text = Locale.Text(10008);
btnPacketStart.BackColor = Color.Salmon; btnPacketStart.BackColor = Color.Salmon;
} }
@ -1179,9 +1323,9 @@ namespace DutyContent.Tab
lstPacketInfo.Items[3].SubItems[3].Text = newpk.OpInstance.ToString(); lstPacketInfo.Items[3].SubItems[3].Text = newpk.OpInstance.ToString();
// Bozja // Bozja
lstPacketInfo.Items[4].SubItems[1].Text = DcConfig.Packet.OpSouthernBozja.ToString(); lstPacketInfo.Items[4].SubItems[1].Text = DcConfig.Packet.OpCe.ToString();
lstPacketInfo.Items[4].SubItems[2].Text = ""; lstPacketInfo.Items[4].SubItems[2].Text = "";
lstPacketInfo.Items[4].SubItems[3].Text = newpk.OpSouthernBozja.ToString(); lstPacketInfo.Items[4].SubItems[3].Text = newpk.OpCe.ToString();
} }
private void BtnPacketStart_Click(object sender, EventArgs e) private void BtnPacketStart_Click(object sender, EventArgs e)
@ -1200,7 +1344,7 @@ namespace DutyContent.Tab
{ {
var ret = (DialogResult)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() => var ret = (DialogResult)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
{ {
var r = MessageBox.Show(MesgLog.Text(10022), MesgLog.Text(0), MessageBoxButtons.YesNo, MessageBoxIcon.Question); var r = MessageBox.Show(Locale.Text(10022), Locale.Text(0), MessageBoxButtons.YesNo, MessageBoxIcon.Question);
return r; return r;
})); }));
@ -1237,7 +1381,7 @@ namespace DutyContent.Tab
default: m = 10015; break; default: m = 10015; break;
} }
txtPacketInfo.Text = MesgLog.Text(m); txtPacketInfo.Text = Locale.Text(m);
} }
private void LstPacketInfo_MouseDoubleClick(object sender, MouseEventArgs e) private void LstPacketInfo_MouseDoubleClick(object sender, MouseEventArgs e)
@ -1266,13 +1410,13 @@ namespace DutyContent.Tab
break; break;
case 4: case 4:
v = _new_packet.OpSouthernBozja = DcConfig.Packet.OpSouthernBozja; v = _new_packet.OpCe = DcConfig.Packet.OpCe;
break; break;
} }
if (v != int.MaxValue) if (v != int.MaxValue)
{ {
lstPacketInfo.SelectedItems[0].SubItems[2].Text = MesgLog.Text(10024); lstPacketInfo.SelectedItems[0].SubItems[2].Text = Locale.Text(10024);
lstPacketInfo.SelectedItems[0].SubItems[3].Text = v.ToString(); lstPacketInfo.SelectedItems[0].SubItems[3].Text = v.ToString();
} }
} }
@ -1284,10 +1428,10 @@ namespace DutyContent.Tab
ushort opcode = (ushort)lstBozjaInfo.SelectedItems[0].Tag; ushort opcode = (ushort)lstBozjaInfo.SelectedItems[0].Tag;
_new_packet.OpSouthernBozja = opcode; _new_packet.OpCe = opcode;
lstPacketInfo.Items[4].SubItems[2].Text = MesgLog.Text(10023); lstPacketInfo.Items[4].SubItems[2].Text = Locale.Text(10023);
lstPacketInfo.Items[4].SubItems[3].Text = _new_packet.OpSouthernBozja.ToString(); lstPacketInfo.Items[4].SubItems[3].Text = _new_packet.OpCe.ToString();
} }
private void LstBozjaInfo_MouseDoubleClick(object sender, MouseEventArgs e) private void LstBozjaInfo_MouseDoubleClick(object sender, MouseEventArgs e)
@ -1365,7 +1509,7 @@ namespace DutyContent.Tab
WorkerAct.Invoker(() => WorkerAct.Invoker(() =>
{ {
lstPacketInfo.Items[0].SubItems[2].Text = MesgLog.Text(10016); lstPacketInfo.Items[0].SubItems[2].Text = Locale.Text(10016);
lstPacketInfo.Items[0].SubItems[3].Text = _new_packet.OpFate.ToString(); lstPacketInfo.Items[0].SubItems[3].Text = _new_packet.OpFate.ToString();
}); });
@ -1389,7 +1533,7 @@ namespace DutyContent.Tab
WorkerAct.Invoker(() => WorkerAct.Invoker(() =>
{ {
lstPacketInfo.Items[1].SubItems[2].Text = MesgLog.Text(10016); lstPacketInfo.Items[1].SubItems[2].Text = Locale.Text(10016);
lstPacketInfo.Items[1].SubItems[3].Text = _new_packet.OpDuty.ToString(); lstPacketInfo.Items[1].SubItems[3].Text = _new_packet.OpDuty.ToString();
}); });
@ -1412,7 +1556,7 @@ namespace DutyContent.Tab
WorkerAct.Invoker(() => WorkerAct.Invoker(() =>
{ {
lstPacketInfo.Items[2].SubItems[2].Text = MesgLog.Text(10016); lstPacketInfo.Items[2].SubItems[2].Text = Locale.Text(10016);
lstPacketInfo.Items[2].SubItems[3].Text = _new_packet.OpMatch.ToString(); lstPacketInfo.Items[2].SubItems[3].Text = _new_packet.OpMatch.ToString();
}); });
@ -1433,7 +1577,7 @@ namespace DutyContent.Tab
WorkerAct.Invoker(() => WorkerAct.Invoker(() =>
{ {
lstPacketInfo.Items[3].SubItems[2].Text = MesgLog.Text(10016); lstPacketInfo.Items[3].SubItems[2].Text = Locale.Text(10016);
lstPacketInfo.Items[3].SubItems[3].Text = _new_packet.OpInstance.ToString(); lstPacketInfo.Items[3].SubItems[3].Text = _new_packet.OpInstance.ToString();
}); });
@ -1545,12 +1689,12 @@ namespace DutyContent.Tab
DcConfig.Packet.OpDuty = pk.OpDuty; DcConfig.Packet.OpDuty = pk.OpDuty;
DcConfig.Packet.OpMatch = pk.OpMatch; DcConfig.Packet.OpMatch = pk.OpMatch;
DcConfig.Packet.OpInstance = pk.OpInstance; DcConfig.Packet.OpInstance = pk.OpInstance;
DcConfig.Packet.OpSouthernBozja = pk.OpSouthernBozja; DcConfig.Packet.OpCe = pk.OpCe;
var nfn = DcConfig.BuildPacketFileName(name); var nfn = DcConfig.BuildPacketFileName(name);
pk.Save(nfn); pk.Save(nfn);
MesgLog.I(33, pk.Version, pk.Description); Logger.I(33, pk.Version, pk.Description);
// //
_packet_list.Remove(name); _packet_list.Remove(name);
@ -1616,5 +1760,65 @@ namespace DutyContent.Tab
cboPacketset.SelectedIndex = n; cboPacketset.SelectedIndex = n;
} }
} }
private void LstContents_Resize(object sender, EventArgs e)
{
lock (_lock_contents)
{
if (lstContents.Columns.Count > 0)
{
lstContents.Columns[lstContents.Columns.Count - 1].Width = -2;
}
}
}
private void ResetContents()
{
lock (_lock_contents)
{
lstContents.BeginUpdate();
for (var i = lstContents.Items.Count - 1; i > 0; i--)
lstContents.Items.RemoveAt(1);
lstContents.EndUpdate();
}
}
private ListViewItem UnsafeFindContent(string code, out int nth)
{
nth = -1;
if (lstContents.Items.Count <= 1)
return null;
for (var i = 1; i < lstContents.Items.Count; i++)
{
var v = lstContents.Items[i];
if (v.Text.Equals(code))
{
nth = i;
return v;
}
}
return null;
}
private void RemoveContent(string code)
{
if (lstContents.Items.Count <= 1)
return;
for (var i = 1; i < lstContents.Items.Count; i++)
{
var v = lstContents.Items[i];
if (v.Text.Equals(code))
{
lstContents.Items.RemoveAt(i);
break;
}
}
}
} }
} }

View file

@ -124,304 +124,301 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACC ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACw
RQAAAk1TRnQBSQFMAgEBBAEAAZABAQGQAQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA RAAAAk1TRnQBSQFMAgEBBAEAAbgBAQG4AQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgRZAcQDVQHqAwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/ /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgRZAcQDVQHqAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/ AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwUB/wNdAeIDVAGuAykBPwgAAwcBCgNIAYUCBQGqAf8CAAGqAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGk AwAB/wNdAeIDVAGuAykBPwgAAwcBCgNIAYUCAAGqAf8CAAGqAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGk
Af8CAAGkAf8CAAGkAf8CAAGjAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGi Af8CAAGkAf8CAAGkAf8CAAGjAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGiAf8CAAGi
Af8CAAGiAf8CAAGiAf8CAAGiAf8CAAGjAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGk Af8CAAGiAf8CAAGiAf8CAAGiAf8CAAGjAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGk
Af8CAAGqAf8CBQGqAf8DSAGFAwcBCv8ABQADTgGXAyYB/wOyAf8DzQH/A90B/wPdAf8D3QH/A90B/wPd Af8CAAGqAf8CAAGqAf8DSAGFAwcBCv8ABQADTgGXAyEB/wOyAf8DzQH/A90B/wPdAf8D3QH/A90B/wPd
Af8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd Af8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd
Af8D3QH/A90B/wPIAf8DogH/AxcB/wNGAYEEAANIAYUCAAGkAf8CAAGiAf8CAAGhAf8CAAGhAf8CAAGh Af8D3QH/A90B/wPIAf8DogH/AxIB/wNGAYEEAANIAYUCAAGkAf8CAAGiAf8CAAGhAf8CAAGhAf8CAAGh
Af8CAAGhAf8CAAGhAf8CAAGgAf8CAAGeAf8CAAGbAf8CAAGZAf8CAAGZAf8CAAGXAf8CAAGVAf8CAAGV Af8CAAGhAf8CAAGhAf8CAAGgAf8CAAGeAf8CAAGbAf8CAAGZAf8CAAGZAf8CAAGXAf8CAAGVAf8CAAGV
Af8CAAGVAf8CAAGVAf8CAAGXAf8CAAGZAf8CAAGZAf8CAAGbAf8CAAGeAf8CAAGgAf8CAAGhAf8CAAGh Af8CAAGVAf8CAAGVAf8CAAGXAf8CAAGZAf8CAAGZAf8CAAGbAf8CAAGeAf8CAAGgAf8CAAGhAf8CAAGh
Af8CAAGhAf8CAAGhAf8CAAGhAf8CAAGiAf8CAAGkAf8DSAGFVwABAQMCBAMEBAEGAwQBBgMDAQQDAQEC Af8CAAGhAf8CAAGhAf8CAAGhAf8CAAGiAf8CAAGkAf8DSAGFVwABAQMCBAMEBAEGAwQBBgMDAQQDAQEC
AwABAYwAAzcBWgMyAf8D2wH/A4sB/wMcAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMF AwABAYwAAzcBWgMtAf8D2wH/A4sB/wMXAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AxwB/wOH Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AxcB/wOH
Af8DzQH/Ax4B/wMrAUICAAGkAf8CAAGiAf8CAAGdAf8CAAGYAf8CAAGXAf8CAAGXAf8CAAGXAf8CAAGX Af8DzQH/AxkB/wMrAUICAAGkAf8CAAGiAf8CAAGdAf8CAAGYAf8CAAGXAf8CAAGXAf8CAAGXAf8CAAGX
Af8CAAGRAf8CAAGPAf8CAAGMAf8CAAGKAf8CAAGKAf8CAAGIAf8CAAGGAf8CAAGGAf8CAAGGAf8CAAGG Af8CAAGRAf8CAAGPAf8CAAGMAf8CAAGKAf8CAAGKAf8CAAGIAf8CAAGGAf8CAAGGAf8CAAGGAf8CAAGG
Af8CAAGIAf8CAAGKAf8CAAGKAf8CAAGMAf8CAAGPAf8CAAGVAf8CAAGXAf8CAAGXAf8CAAGXAf8CAAGX Af8CAAGIAf8CAAGKAf8CAAGKAf8CAAGMAf8CAAGPAf8CAAGVAf8CAAGXAf8CAAGXAf8CAAGXAf8CAAGX
Af8CAAGYAf8CAAGdAf8CAAGiAf8CAAGkAf9QAAMCAQMDBgEIAw0BEgMaASQDIwEzAyEBMAMWAR4DCgEO Af8CAAGYAf8CAAGdAf8CAAGiAf8CAAGkAf9QAAMCAQMDBgEIAw0BEgMaASQDIwEzAyEBMAMWAR4DCgEO
AwQBBgMAAQGIAANZAcMDsgH/A4oB/wFCATABFgH/AbkBkwEoAf8BzgGiAS4B/wHOAaIBLgH/Ac4BogEu AwQBBgMAAQGIAANZAcMDsgH/A4oB/wE9ASsBEQH/AbkBkwEjAf8BzgGiASkB/wHOAaIBKQH/Ac4BogEp
Af8BzgGiAS4B/wHOAaIBLgH/Ac4BogEuAf8BzgGiAS4B/wHOAaIBLgH/Ac4BogEuAf8BzgGiAS4B/wG9 Af8BzgGiASkB/wHOAaIBKQH/Ac4BogEpAf8BzgGiASkB/wHOAaIBKQH/Ac4BogEpAf8BzgGiASkB/wG9
AZUBJgH/AaMBgAEaAf8BvQGVASYB/wHOAaIBLgH/Ac4BogEuAf8BzgGiAS4B/wHOAaIBLgH/Ac4BogEu AZUBIQH/AaMBgAEVAf8BvQGVASEB/wHOAaIBKQH/Ac4BogEpAf8BzgGiASkB/wHOAaIBKQH/Ac4BogEp
Af8BzgGiAS4B/wHOAaIBLgH/Ac4BogEuAf8BzgGiAS4B/wG5AZMBKAH/AU0BOAEZAf8DhQH/A6MB/wNU Af8BzgGiASkB/wHOAaIBKQH/Ac4BogEpAf8BzgGiASkB/wG5AZMBIwH/AUgBMwEUAf8DhQH/A6MB/wNU
AasCAAGjAf8CAAGaAf8CAAGRAf8CAAGNAf8CAAGNAf8CAAGKAf8CAAGGAf8CAAGBAf8CAAFMAf8CAAFK AasCAAGjAf8CAAGaAf8CAAGRAf8CAAGNAf8CAAGNAf8CAAGKAf8CAAGGAf8CAAGBAf8CAAFHAf8CAAFF
Af8CAAFFAf8CAAFEAf8CAAFEAf8CAAFEAf8CAAFAAf8CAAE9Af8CAAE9Af8CAAFAAf8CAAFEAf8CAAFE Af8CAAFAAf8CAAE/Af8CAAE/Af8CAAE/Af8CAAE7Af8CAAE4Af8CAAE4Af8CAAE7Af8CAAE/Af8CAAE/
Af8CAAFEAf8CAAFFAf8CAAFKAf8CAAGAAf8CAAGGAf8CAAGGAf8CAAGKAf8CAAGNAf8CAAGNAf8CAAGR Af8CAAE/Af8CAAFAAf8CAAFFAf8CAAGAAf8CAAGGAf8CAAGGAf8CAAGKAf8CAAGNAf8CAAGNAf8CAAGR
Af8CAAGaAf8CAAGjAf9MAAMCAQMDBwEKAxcBIAMwAUwBRQJGAX4BTwJRAZwBTQJOAZYDQQFyAyoBQQMS Af8CAAGaAf8CAAGjAf9MAAMCAQMDBwEKAxcBIAMwAUwBRQJGAX4BTwJRAZwBTQJOAZYDQQFyAyoBQQMS
ARkDBQEHAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/RAADQQH5A8oB/wMaAf8BuQGPAScB/wHVAaIBLwH/ ARkDBQEHAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/RAADQQH5A8oB/wMVAf8BuQGPASIB/wHVAaIBKgH/
AdUBogEvAf8B1QGiAS8B/wHVAaIBLwH/AdUBogEvAf8B1QGiAS8B/wHVAaIBLwH/AdUBogEvAf8B1QGi AdUBogEqAf8B1QGiASoB/wHVAaIBKgH/AdUBogEqAf8B1QGiASoB/wHVAaIBKgH/AdUBogEqAf8B1QGi
AS8B/wHVAaIBLwH/AcQBlQEnAf8BiQE5ARMB/wEOAR0BIwH/AZQBPgESAf8B0wGhAS4B/wHVAaIBLwH/ ASoB/wHVAaIBKgH/AcQBlQEiAf8BiQE0AQ4B/wEJARgBHgH/AZQBOQENAf8B0wGhASkB/wHVAaIBKgH/
AdUBogEvAf8B1QGiAS8B/wHVAaIBLwH/AdUBogEvAf8B1QGiAS8B/wHVAaIBLwH/AdUBogEvAf8B1QGi AdUBogEqAf8B1QGiASoB/wHVAaIBKgH/AdUBogEqAf8B1QGiASoB/wHVAaIBKgH/AdUBogEqAf8B1QGi
AS8B/wHAAZMBKQH/AxMB/wPFAf8DTgHwAgABmQH/AgABiwH/AgABSgH/AgABRgH/AgABPgH/AgABPgH/ ASoB/wHAAZMBJAH/Aw4B/wPFAf8DTgHwAgABmQH/AgABiwH/AgABRQH/AgABQQH/AgABOQH/AgABOQH/
AgABOQH/AgABNgH/AgABNQH/AgABMgH/AgABLgH/AgABLgH/AgABLQH/AgABKgH/AgABJgH/AgABJgH/ AgABNAH/AgABMQH/AgABMAH/AgABLQH/AgABKQH/AgABKQH/AgABKAH/AgABJQH/AgABIQH/AgABIQH/
AgABJgH/AgABJgH/AgABKgH/AgABLQH/AgABLgH/AgABLgH/AgABMgH/AgABNQH/AgABOAH/AgABPgH/ AgABIQH/AgABIQH/AgABJQH/AgABKAH/AgABKQH/AgABKQH/AgABLQH/AgABMAH/AgABMwH/AgABOQH/
AgABPgH/AgABPgH/AgABRgH/AgABSgH/AgABiwH/AgABmQH/SAADAQECAwcBCQMYASIDOAFeAVMCVQGt AgABOQH/AgABOQH/AgABQQH/AgABRQH/AgABiwH/AgABmQH/SAADAQECAwcBCQMYASIDOAFeAVMCVQGt
AV0CYQHiA20B9wNlAfQBXgJhAdoDUAGaAy0BRgMOARMDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMF AV0CYQHiA20B9wNlAfQBXgJhAdoDUAGaAy0BRgMOARMDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf9HAAH/
Af8DwgH/AwcB/wHMAZUBLAH/AdUBmwEuAf8B1QGbAS4B/wHVAZsBLgH/AdUBmwEuAf8B1QGbAS4B/wHV A8IB/wMCAf8BzAGVAScB/wHVAZsBKQH/AdUBmwEpAf8B1QGbASkB/wHVAZsBKQH/AdUBmwEpAf8B1QGb
AZsBLgH/AdUBmwEuAf8B1QGbAS4B/wHVAZsBLgH/Ab8BiwEkAf8BkwE5AREB/wENARsBJAH/AQABIwGO ASkB/wHVAZsBKQH/AdUBmwEpAf8B1QGbASkB/wG/AYsBHwH/AZMBNAEMAf8BCAEWAR8B/wEAAR4BjgH/
Af8BPAEpARUB/wGVAToBEQH/Ac8BlwErAf8B1QGbAS4B/wHVAZsBLgH/AdUBmwEuAf8B1QGbAS4B/wHV ATcBJAEQAf8BlQE1AQwB/wHPAZcBJgH/AdUBmwEpAf8B1QGbASkB/wHVAZsBKQH/AdUBmwEpAf8B1QGb
AZsBLgH/AdUBmwEuAf8B1QGbAS4B/wHVAZsBLgH/AcUBkAEqAf8DDQH/A8IB/wMFAf8CAAGRAf8CAAGC ASkB/wHVAZsBKQH/AdUBmwEpAf8B1QGbASkB/wHFAZABJQH/AwgB/wPCAf8DAAH/AgABkQH/AgABggH/
Af8BAAERAYQB/wEAARoBhQH/AQABGgGAAf8BAAEcAYMB/wEAARwBgwH/AQABHAGDAf8BAAEcAUwB/wEA AQABDAGEAf8BAAEVAYUB/wEAARUBgAH/AQABFwGDAf8BAAEXAYMB/wEAARcBgwH/AQABFwFHAf8BAAEX
ARwBTAH/AQABHAFMAf8BAAEcAUwB/wEAARwBRwH/AQABGQFEAf8BAAEZAUQB/wEAARkBRAH/AQABGQFE AUcB/wEAARcBRwH/AQABFwFHAf8BAAEXAUIB/wEAARQBPwH/AQABFAE/Af8BAAEUAT8B/wEAARQBPwH/
Af8BAAEZAUQB/wEAARkBRAH/AQABGQFEAf8BAAEZAUkB/wEAARkBSQH/AQABGQFJAf8BAAEZAUkB/wEA AQABFAE/Af8BAAEUAT8B/wEAARQBPwH/AQABFAFEAf8BAAEUAUQB/wEAARQBRAH/AQABFAFEAf8BAAEV
ARoBgwH/AQABHAGDAf8BAAEcAYMB/wEAARwBgwH/AQABHAGIAf8BAAERAYcB/wIAAYMB/wIAAZEB/0cA AYMB/wEAARcBgwH/AQABFwGDAf8BAAEXAYMB/wEAARcBiAH/AQABDAGHAf8CAAGDAf8CAAGRAf9HAAEB
AQEDBgEIAxYBHgM4AV0DVQG1A2QB8QHzAfgB/AH/Ae0D/wHzA/8BfwGIAZIB/gNfAeADSAGFAx8BLAMF AwYBCAMWAR4DOAFdA1UBtQNkAfEB8wH4AfwB/wHtA/8B8wP/An8BiAH+A18B4ANIAYUDHwEsAwUBBy8A
AQcvAAH/AwAB/wMAAf8DAAH/AwAB/0QAAwUB/wO0Af8DBQH/Ac4BkAErAf8B1QGUAS0B/wHVAZQBLQH/ Af8DAAH/AwAB/wMAAf8DAAH/RwAB/wO0Af8DAAH/Ac4BkAEmAf8B1QGUASgB/wHVAZQBKAH/AdUBlAEo
AdUBlAEtAf8B1QGUAS0B/wHVAZQBLQH/AdUBlAEtAf8B1AGTAS0B/wHQAZEBKwH/AbQBSwEeAf8BigEx Af8B1QGUASgB/wHVAZQBKAH/AdUBlAEoAf8B1AGTASgB/wHQAZEBJgH/AbQBRgEZAf8BigEsAQwB/wEA
AREB/wEDARkBKQH/AQABBwFGAf8BAAEHAUEB/wEAAQ4BRwH/ASYBHwEZAf8BkgE0ARAB/wG5AYABIAH/ ARQBJAH/AQABAgFBAf8BAAECATwB/wEAAQkBQgH/ASEBGgEUAf8BkgEvAQsB/wG5AYABGwH/AdIBkgEn
AdIBkgEsAf8B1QGUAS0B/wHVAZQBLQH/AdUBlAEtAf8B1QGUAS0B/wHVAZQBLQH/AdUBlAEtAf8BxQGL Af8B1QGUASgB/wHVAZQBKAH/AdUBlAEoAf8B1QGUASgB/wHVAZQBKAH/AdUBlAEoAf8BxQGLASQB/wMH
ASkB/wMMAf8DtAH/AwUB/wIAAYoB/wEAARMBhwH/AQwBhQGpAf8BIwGrAdQB/wE8AdEB3gH/AUEB1AHh Af8DtAH/AwAB/wIAAYoB/wEAAQ4BhwH/AQcBhQGpAf8BHgGrAdQB/wE3AdEB3gH/ATwB1AHhAf8BPwHU
Af8BRAHUAeEB/wFGAdQB4QH/AUYB1AHhAf8BRAHUAeEB/wFBAdQB4QH/AUEB1AHhAf8BQQHTAeAB/wFB AeEB/wFBAdQB4QH/AUEB1AHhAf8BPwHUAeEB/wE8AdQB4QH/ATwB1AHhAf8BPAHTAeAB/wE8AdEB3gH/
AdEB3gH/AUEB0QHeAf8BQQHRAd4B/wFBAdEB3gH/AUEB0QHeAf8BQQHRAd4B/wFBAdEB3gH/AUEB0QHe ATwB0QHeAf8BPAHRAd4B/wE8AdEB3gH/ATwB0QHeAf8BPAHRAd4B/wE8AdEB3gH/ATwB0QHeAf8BPAHR
Af8BQQHRAd4B/wFBAdEB3gH/AUEB0QHeAf8BQQHRAeEB/wFBAdQB4QH/AUEB1AHhAf8BPAHUAeEB/wEk Ad4B/wE8AdEB3gH/ATwB0QHeAf8BPAHRAeEB/wE8AdQB4QH/ATwB1AHhAf8BNwHUAeEB/wEfAbIB2AH/
AbIB2AH/AQ4BhQGvAf8BAAETAYsB/wIAAYoB/0MAAQEDBQEHAxQBGwM1AVYDVAGvAVoCXQHwAfMB+AH8 AQkBhQGvAf8BAAEOAYsB/wIAAYoB/0MAAQEDBQEHAxQBGwM1AVYDVAGvAVoCXQHwAfMB+AH8Af8B1AP/
Af8B1AP/AcQB/AL/AcYB/gL/AegD/wFfAWcBcwH7AVUCVgGxAy0BRQMHAQovAAH/AwAB/wMAAf8DAAH/ AcQB/AL/AcYB/gL/AegD/wJfAWQB+wFVAlYBsQMtAUUDBwEKLwAB/wMAAf8DAAH/AwAB/wMAAf9HAAH/
AwAB/0QAAwUB/wOnAf8DBQH/Ac4BhwEqAf8B1QGLASwB/wHVAYsBLAH/AcsBhAEoAf8BvQFJASEB/wHE A6cB/wMAAf8BzgGHASUB/wHVAYsBJwH/AdUBiwEnAf8BywGEASMB/wG9AUQBHAH/AcQBgAEgAf8BwAFG
AYABJQH/AcABSwEjAf8BlQEvARAB/wGNASwBEQH/ASoBHQEZAf8BAAERAT4B/wIAATQB/wEMAZEBsgH/ AR4B/wGVASoBCwH/AY0BJwEMAf8BJQEYARQB/wEAAQwBOQH/AgABLwH/AQcBkQGyAf8BPAHVAeYB/wEA
AUEB1QHmAf8BAAEqAYkB/wIAAToB/wEAARUBNQH/AUABIwEUAf8BkgEuARAB/wGxAUIBHAH/AcMBgAEk ASUBiQH/AgABNQH/AQABEAEwAf8BOwEeAQ8B/wGSASkBCwH/AbEBPQEXAf8BwwGAAR8B/wHDAYABHwH/
Af8BwwGAASQB/wG6AUgBIAH/AdMBigErAf8B1QGLASwB/wHFAYIBKAH/AwwB/wOnAf8DBQH/AgABgQH/ AboBQwEbAf8B0wGKASYB/wHVAYsBJwH/AcUBggEjAf8DBwH/A6cB/wMAAf8CAAGBAf8BAAEaAZAB/wEa
AQABHwGQAf8BHwGhAcIB/wEQAUkBpAH/AQQBGwFKAf8BBQEbAYQB/wEGARsBiAH/AQcBGwGIAf8BBwEb AaEBwgH/AQsBRAGkAf8BAAEWAUUB/wEAARYBhAH/AQEBFgGIAf8BAgEWAYgB/wECARYBgQH/AQEBFgGB
AYEB/wEGARsBgQH/AQUBGwGBAf8BBQEbAUoB/wEFARsBSQH/AQUBGwFJAf8BBQEbAUkB/wEFARsBSQH/ Af8BAAEWAYEB/wEAARYBRQH/AQABFgFEAf8BAAEWAUQB/wEAARYBRAH/AQABFgFEAf8BAAEWAUQB/wEA
AQUBGwFJAf8BBQEbAUkB/wEFARsBSQH/AQUBGwFJAf8BBQEbAYEB/wEFARsBgQH/AQUBGwGBAf8BBQEb ARYBRAH/AQABFgFEAf8BAAEWAUQB/wEAARYBgQH/AQABFgGBAf8BAAEWAYEB/wEAARYBgQH/AQIBFwGI
AYEB/wEHARwBiAH/AQoBHwGIAf8BBQEbAYQB/wEEARsBSgH/ARABSwGkAf8BHwGhAcMB/wEAAR8BkQH/ Af8BBQEaAYgB/wEAARYBhAH/AQABFgFFAf8BCwFGAaQB/wEaAaEBwwH/AQABGgGRAf8CAAGBAf8/AAEB
AgABgQH/PwABAQMEAQYDEgEYAzIBUANSAakBWQJkAewBfwGIAZIB/gHZA/8BxAH8Av8BwwH7Av8BwwH7 AwQBBgMSARgDMgFQA1IBqQFZAmQB7AJ/AYgB/gHZA/8BxAH8Av8BwwH7Av8BwwH7Av8B1wP/A6gB/QFX
Av8B1wP/A6gB/QFXAlkBvwMyAVADCAELLwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMFAf8DmwH/AwUB/wHO AlkBvwMyAVADCAELLwAB/wMAAf8DAAH/AwAB/wMAAf9HAAH/A5sB/wMAAf8BzgFIASMB/wHVAYMBJQH/
AU0BKAH/AdUBgwEqAf8BywFLASYB/wGDASQBEQH/ATYBHAEUAf8BRAEfARIB/wE8AR0BEwH/AQ0BGgEl AcsBRgEhAf8BgwEfAQwB/wExARcBDwH/AT8BGgENAf8BNwEYAQ4B/wEIARUBIAH/AQABDwE9Af8CAAE5
Af8BAAEUAUIB/wIAAT4B/wEAARkBSAH/ATsB0AHnAf8BRgHdAfEB/wErAacBsQH/AUwB4QH3Af8BIgGp Af8BAAEUAUMB/wE2AdAB5wH/AUEB3QHxAf8BJgGnAbEB/wFHAeEB9wH/AR0BqQHFAf8CAAEvAf8BAAED
AcUB/wIAATQB/wEAAQgBRQH/AQABFwE6Af8BHgEaARwB/wFCAR4BEgH/AUMBHgESAf8BMQEcARgB/wGU AUAB/wEAARIBNQH/ARkBFQEXAf8BPQEZAQ0B/wE+ARkBDQH/ASwBFwETAf8BlAEkAQkB/wHTAYIBJAH/
ASkBDgH/AdMBggEpAf8BxQFJASYB/wMLAf8DmwH/AwUB/wIAAUwB/wEAASABiwH/ARgBnAG9Af8BAAEH AcUBRAEhAf8DBgH/A5sB/wMAAf8CAAFHAf8BAAEbAYsB/wETAZwBvQH/AQABAgEyAf8CAAE+Af8BAAEc
ATcB/wIAAUMB/wEAASEBmAH/AQABJAGdAf8BAAEiAZ0B/wEAASEBnAH/AQABIQGWAf8BAAEgAZUB/wEA AZgB/wEAAR8BnQH/AQABHQGdAf8BAAEcAZwB/wEAARwBlgH/AQABGwGVAf8BAAEZAZEB/wIAAT4B/wIA
AR4BkQH/AgABQwH/AgABOgH/AgABOgH/AgABOgH/AgABOgH/AgABOgH/AgABQQH/AQABGgGSAf8BAAEc ATUB/wIAATUB/wIAATUB/wIAATUB/wIAATUB/wIAATwB/wEAARUBkgH/AQABFwGUAf8BAAENAY0B/wEA
AZQB/wEAARIBjQH/AQABKAGYAf8BAAELAY4B/wEAASgBnwH/AQABGAGTAf8CAAFDAf8CAAE0Af8BAAEF ASMBmAH/AQABBgGOAf8BAAEjAZ8B/wEAARMBkwH/AgABPgH/AgABLwH/AgABMAH/ARMBlwG0Af8BAAEa
ATUB/wEYAZcBtAH/AQABHwGIAf8CAAFMAf87AAEBAwQBBgMQARUDLAFDAU8CUAGbAVgCYgHpAX8BiAGS AYgB/wIAAUcB/zsAAQEDBAEGAxABFQMsAUMBTwJQAZsBWAJiAekCfwGIAf4B3gP/AcYB/gL/AcMB+wL/
Af4B3gP/AcYB/gL/AcMB+wL/AcMB+wL/AcgD/wHsA/8BXwFqAXMB+wFVAlYBsQMtAUUDBwEKLwAB/wMA AcMB+wL/AcgD/wHsA/8CXwFkAfsBVQJWAbEDLQFFAwcBCi8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIA
Af8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAwUB/wOTAf8DBQH/AcwBRQEmAf8B0wFI Av8CAAL/AgAC/wIAAv8nAAH/A5MB/wMAAf8BzAFAASEB/wHTAUMBIwH/Ac4BQAEhAf8BigEcAQkB/wEA
ASgB/wHOAUUBJgH/AYoBIQEOAf8BAAEpAYQB/wEAASEBjQH/AQABGQGIAf8BAAEPAYEB/wEAAUQBnwH/ ASQBhAH/AQABHAGNAf8BAAEUAYgB/wEAAQoBgQH/AQABPwGfAf8BOgHVAeYB/wGQAe8B/gH/AR0BmwG8
AT8B1QHmAf8BkAHvAf4B/wEiAZsBvAH/AS4BBAEbAf8BkQEAARkB/wEdARoBMgH/ATkBygHmAf8BkAHt Af8BKQEAARYB/wGRAQABFAH/ARgBFQEtAf8BNAHKAeYB/wGQAe0B+gH/ASQBtAHKAf8BAAElAZIB/wEA
AfoB/wEpAbQBygH/AQABKgGSAf8BAAERAYEB/wEAARoBhwH/AQABKwGWAf8BCwEbAS4B/wGTASMBDQH/ AQwBgQH/AQABFQGHAf8BAAEmAZYB/wEGARYBKQH/AZMBHgEIAf8B0gFDASMB/wHDATwBHwH/AwUB/wOT
AdIBSAEoAf8BwwFBASQB/wMKAf8DkwH/AwUB/wIAAUwB/wEAASEBiwH/ARgBnQG9Af8BAAEHAT4B/wEA Af8DAAH/AgABRwH/AQABHAGLAf8BEwGdAb0B/wEAAQIBOQH/AQABGwGVAf8BMAHWAekB/wExAdcB8AH/
ASABlQH/ATUB1gHpAf8BNgHXAfAB/wE1AdIB8AH/ATUB0QHwAf8BNQHRAe4B/wEyAc0B6wH/AS8BxQHn ATAB0gHwAf8BMAHRAfAB/wEwAdEB7gH/AS0BzQHrAf8BKgHFAecB/wIAAYoB/wIAAT8B/wIAAT8B/wIA
Af8BAAEEAYoB/wIAAUQB/wIAAUQB/wIAAUQB/wIAAUQB/wIAAUUB/wEAAQYBjAH/ATABwQHiAf8BKgHE AT8B/wIAAT8B/wIAAUAB/wEAAQEBjAH/ASsBwQHiAf8BJQHEAegB/wEDAYoBzwH/ATkB4QH1Af8BAAE5
AegB/wEIAYoBzwH/AT4B4QH1Af8BAAE+AcMB/wFAAeEB9QH/ARsBogHVAf8BAAEFAZIB/wIAAUAB/wEA AcMB/wE7AeEB9QH/ARYBogHVAf8CAAGSAf8CAAE7Af8CAAE4Af8BEQGUAbQB/wEAARcBiAH/AgABRwH/
AQUBPQH/ARYBlAG0Af8BAAEcAYgB/wIAAUwB/zgAAwQBBQMNARIDKAE8A0oBigFeAmEB2gOoAf0B4gP/ OAADBAEFAw0BEgMoATwDSgGKAV4CYQHaA6gB/QHiA/8BxgH+Av8BwwH7Av8BwwH7Av8ByQP/AekD/wOo
AcYB/gL/AcMB+wL/AcMB+wL/AckD/wHpA/8DqAH9AVwCYQHcA0cBggMdASoDBQEHLwAB/wMAAf8DAAH/ Af0BXAJhAdwDRwGCAx0BKgMFAQcvAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/
AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAwUB/wOPAf8DBQH/AckBQgElAf8B0AFFAScB/wHQ JwAB/wOPAf8DAAH/AckBPQEgAf8B0AFAASIB/wHQAUABIgH/AaYBKAEQAf8BDgESASAB/wEAAT4BowH/
AUUBJwH/AaYBLQEVAf8BEwEXASUB/wEAAUMBowH/ASsBqwHSAf8BkgHrAfgB/wGJAeoB9wH/ASoBogG8 ASYBqwHSAf8BkgHrAfgB/wGJAeoB9wH/ASUBogG8Af8BJQESASsB/wGaAQYBLAH/Ab8BGQGLAf8BwQEe
Af8BKgEXATAB/wGaAQsBMQH/Ab8BHgGLAf8BwQEjAZMB/wG7ARwBggH/AYIBBAEjAf8BIgEzAU0B/wE5 AZMB/wG7ARcBggH/AYIBAAEeAf8BHQEuAUgB/wE0AcMB2wH/AZMB8AH8Af8BhgHhAfMB/wETAZEBuQH/
AcMB2wH/AZMB8AH8Af8BhgHhAfMB/wEYAZEBuQH/AQABPgGfAf8BQAEYARAB/wG8AToBHwH/AdABRQEn AQABOQGfAf8BOwETAQsB/wG8ATUBGgH/AdABQAEiAf8BwAE5AR4B/wMFAf8DjwH/AwAB/wIAAUcB/wEA
Af8BwAE+ASMB/wMKAf8DjwH/AwUB/wIAAUwB/wEAASEBiwH/ARgBnQG9Af8BAAEHAUIB/wEAASIBnwH/ ARwBiwH/ARMBnQG9Af8BAAECAT0B/wEAAR0BnwH/ATcB4gH1Af8BPgHsAv8BQwHuAv8BRAHuAv8BRAHu
ATwB4gH1Af8BQwHsAv8BSAHuAv8BSQHuAv8BSQHuAv8BSQHuAv8BKAHAAesB/wEAAQQBjwH/AgABSQH/ Av8BRAHuAv8BIwHAAesB/wIAAY8B/wIAAUQB/wIAAUEB/wIAAT8B/wIAAUAB/wIAAYIB/wEFAUMBvgH/
AgABRgH/AgABRAH/AgABRQH/AgABggH/AQoBSAG+Af8BOgHaAfgB/wEKAZgB3wH/ASkBxAHxAf8BHQG2 ATUB2gH4Af8BBQGYAd8B/wEkAcQB8QH/ARgBtgHqAf8BEAGsAeUB/wEwAdYB+QH/AQoBnwHhAf8BEwGf
AeoB/wEVAawB5QH/ATUB1gH5Af8BDwGfAeEB/wEYAZ8B0wH/AQABEQGMAf8BAAEFAUAB/wETAZQBtAH/ AdMB/wEAAQwBjAH/AgABOwH/AQ4BlAG0Af8BAAEXAYgB/wIAAUcB/yQAAwEBAgMDBAQEBgQIAQsDDwEU
AQABHAGIAf8CAAFMAf8kAAMBAQIDAwQEBAYECAELAw8BFAMkATYBRgJHAYABWAJcAdEBXwFqAXYB+wHp AyQBNgFGAkcBgAFYAlwB0QJfAWcB+wHpA/8ByAP/AcMB+wL/AcMB+wL/AcwD/wHwA/8CXwFnAfsBWQJd
A/8ByAP/AcMB+wL/AcMB+wL/AcwD/wHwA/8BXwFqAXYB+wFZAl0B1wNMAZIDKwFCAw0BEgMDAQQvAAH/ AdcDTAGSAysBQgMNARIDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/ycA
AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADBQH/A48B/wMFAf8BxwFAASUB/wHO Af8DjwH/AwAB/wHHATsBIAH/Ac4BPgEiAf8BzgE+ASIB/wGmASgBEQH/Ag4BHAH/AQABLgGQAf8BDQGH
AUMBJwH/Ac4BQwEnAf8BpgEtARYB/wITASEB/wEAATMBkAH/ARIBhwGpAf8BBQEaATIB/wE5AQABFAH/ AakB/wEAARUBLQH/ATQBAAEPAf8BpQEHAS8B/wHCARoBjAH/AcsBKQGkAf8B0gExAbEB/wHUATIBtAH/
AaUBDAE0Af8BwgEfAYwB/wHLAS4BpAH/AdIBNgGxAf8B1AE3AbQB/wHRATQBsAH/AcoBLQGiAf8BvgEd AdEBLwGwAf8BygEoAaIB/wG+ARgBhAH/AZIBAQElAf8BJgEAAQ8B/wEAASgBRgH/ARIBigGsAf8BAAEj
AYQB/wGSAQYBKgH/ASsBAgEUAf8BAAEtAUsB/wEXAYoBrAH/AQABKAGIAf8BPwEYARAB/wG9ATkBIAH/ AYgB/wE6ARMBCwH/Ab0BNAEbAf8BzgE+ASIB/wG/ATgBHgH/AwUB/wOPAf8DAAH/AgABRwH/AQABGwGL
Ac4BQwEnAf8BvwE9ASMB/wMKAf8DjwH/AwUB/wIAAUwB/wEAASABiwH/ARgBnAG5Af8BAAEHATwB/wEA Af8BEwGcAbkB/wEAAQIBNwH/AQABHQGfAf8BNwHhAfUB/wE8AecC/wE9AegC/wE+AegC/wFAAeoC/wFE
ASIBnwH/ATwB4QH1Af8BQQHnAv8BQgHoAv8BQwHoAv8BRQHqAv8BSQHuAv8BKAHAAesB/wEAAQQBjgH/ Ae4C/wEjAcAB6wH/AgABjgH/AgABPgH/AgABPQH/AgABPAH/AgABPAH/AgABgQH/ARsBoQHUAf8BPAHm
AgABQwH/AgABQgH/AgABQQH/AgABQQH/AgABgQH/ASABoQHUAf8BQQHmAv8BAAE6AcEB/wFBAeYC/wEJ Av8BAAE1AcEB/wE8AeYC/wEEAY8B1AH/ASkByQHxAf8BKQHJAfEB/wEEAY8B1QH/ATIB3AH1Af8BAAEb
AY8B1AH/AS4ByQHxAf8BLgHJAfEB/wEJAY8B1QH/ATcB3AH1Af8BAAEgAZgB/wEAAQUBOwH/ARcBlAG0 AZgB/wIAATYB/wESAZQBtAH/AQABFwGIAf8CAAFHAf8cAAMCAQMDBgEIAw0BEQMXASADIgEyAyoBQAMs
Af8BAAEcAYgB/wIAAUwB/xwAAwIBAwMGAQgDDQERAxcBIAMiATIDKgFAAywBQwMxAU4DRwGCAVkCXAHM AUMDMQFOA0cBggFZAlwBzAFQAV4BZgH6Ae0D/wHJA/8BwwH7Av8BwwH7Av8BzQP/AfgD/wNcAfgBXAJe
AVYBZwFrAfoB7QP/AckD/wHDAfsC/wHDAfsC/wHNA/8B+AP/AlwBXwH4AVwCXgHOAUgCSQGHAysBQgMR Ac4BSAJJAYcDKwFCAxEBFwMEAQYDAAEBLwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/
ARcDBAEGAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMFAf8DkAH/ AgAC/ycAAf8DkAH/AwAB/wHFATkBHwH/AcwBPAEhAf8BzAE8ASEB/wGkASUBEAH/AQsBDgEeAf8BAAEo
AwUB/wHFAT4BJAH/AcwBQQEmAf8BzAFBASYB/wGkASoBFQH/ARABEwEjAf8BAAEtAYkB/wEAATIBjQH/ AYkB/wEAAS0BjQH/ARcBBwEhAf8BvAEQAUUB/wHEASABnAH/AdEBMAGvAf8B3AE8AcEB/wHmAUUBzQH/
ARwBDAEmAf8BvAEVAUoB/wHEASUBnAH/AdEBNQGvAf8B3AFBAcEB/wHmAUoBzQH/AekBTQHSAf8B5gFL AekBSAHSAf8B5gFGAc0B/wHdAT0BwQH/AdABMAGvAf8BxQEhAZsB/wGzAQwBNAH/AQABFQE2Af8BAAE0
Ac0B/wHdAUIBwQH/AdABNQGvAf8BxQEmAZsB/wGzAREBOQH/AQABGgE7Af8BAAE5AZAB/wEAASIBgwH/ AZAB/wEAAR0BgwH/ATkBEgELAf8BuwEzARoB/wHMATwBIQH/Ab0BNgEdAf8DBQH/A5AB/wMAAf8CAAFH
AT4BFwEQAf8BuwE4AR8B/wHMAUEBJgH/Ab0BOwEiAf8DCgH/A5AB/wMFAf8CAAFMAf8BAAEgAYsB/wEY Af8BAAEbAYsB/wETAZsBuAH/AQABAQE1Af8BAAEVAZIB/wEgAbsB4AH/ASQBvAHmAf8BJAG/AeYB/wEr
AZsBuAH/AQABBgE6Af8BAAEaAZIB/wElAbsB4AH/ASkBvAHmAf8BKQG/AeYB/wEwAb8B5AH/ATABwQHn Ab8B5AH/ASsBwQHnAf8BKwHFAesB/wEmAb8B5AH/AgABhAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/
Af8BMAHFAesB/wErAb8B5AH/AQABAQGEAf8CAAFBAf8CAAFBAf8CAAFBAf8CAAFBAf8CAAFEAf8CAAGF AgABPwH/AgABhQH/AgABjQH/AgABiAH/AgABjwH/AgABiwH/AgABlAH/AgABlgH/AgABkwH/AgABkgH/
Af8BAAEEAY0B/wIAAYgB/wEAAQQBjwH/AgABiwH/AQABAwGUAf8BAAEEAZYB/wEAAQQBkwH/AQABBAGS AgABQAH/AgABNQH/ARMBlAG0Af8BAAEXAYgB/wIAAUcB/xcAAQEDBAEFAwoBDgMaASUDMQFNA0QBeQFP
Af8CAAFFAf8BAAEFAToB/wEYAZQBtAH/AQABHAGIAf8CAAFMAf8XAAEBAwQBBQMKAQ4DGgElAzEBTQNE AlABmwFTAlQBrANUAa4DVQG1AVoCXgHYA20B9wH0A/8BygP/AcMB+wL/AcQB/AL/AdEH/wNtAfcBWAJb
AXkBTwJQAZsBUwJUAawDVAGuA1UBtQFaAl4B2ANtAfcB9AP/AcoD/wHDAfsC/wHEAfwC/wHRB/8DbQH3 AcYDQwF4AyYBOAMQARUDBAEGAwABATMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIA
AVgCWwHGA0MBeAMmATgDEAEVAwQBBgMAAQEzAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIA Av8nAAH/A5IB/wMAAf8BwwE2AR4B/wHKATkBIAH/AcgBOAEfAf8BjAEXAQYB/wEAAQ0BKgH/AQABLQGM
Av8CAAL/JAADBQH/A5IB/wMFAf8BwwE7ASMB/wHKAT4BJQH/AcgBPQEkAf8BjAEcAQsB/wEAARIBLwH/ Af8BAAE5AZ0B/wE0AQUBIQH/AcIBGgGQAf8BzQErAasB/wHeAT8BxAH/Ae8BhwHaAf8B+wGTAewB/wH9
AQABMgGMAf8BAAE+AZ0B/wE5AQoBJgH/AcIBHwGQAf8BzQEwAasB/wHeAUQBxAH/Ae8BhwHaAf8B+wGT AZgB9AH/AfsBkwHsAf8B7wGHAdoB/wHeAT8BxAH/Ac4BKwGsAf8BvQEXAYQB/wEDARcBNwH/AQEBQAGd
AewB/wH9AZgB9AH/AfsBkwHsAf8B7wGHAdoB/wHeAUQBxAH/Ac4BMAGsAf8BvQEcAYQB/wEIARwBPAH/ Af8BAAEcAYQB/wEnAQ4BEAH/AbABKwEVAf8BygE5ASAB/wG7ATMBHAH/AwUB/wOSAf8DAAH/AgABRwH/
AQYBRQGdAf8BAAEhAYQB/wEsARMBFQH/AbABMAEaAf8BygE+ASUB/wG7ATgBIQH/AwoB/wOSAf8DBQH/ AQABGwGKAf8BEwGXAbYB/wIAATUB/wIAAT4B/wIAAY8B/wIAAZcB/wIAAZcB/wIAAY8B/wIAAY8B/wIA
AgABTAH/AQABIAGKAf8BGAGXAbYB/wEAAQUBOgH/AgABQwH/AQABAwGPAf8BAAEFAZcB/wEAAQUBlwH/ AY8B/wIAAYgB/wIAAUAB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIA
AQABBQGPAf8BAAEFAY8B/wEAAQUBjwH/AQABAgGIAf8CAAFFAf8CAAFBAf8CAAFBAf8CAAFBAf8CAAFB AT4B/wIAAUQB/wIAAUQB/wIAAUgB/wIAAYMB/wIAAYMB/wIAAUcB/wIAATYB/wIAATUB/wETAZQBtAH/
Af8CAAFBAf8CAAFBAf8CAAFBAf8CAAFDAf8CAAFJAf8CAAFJAf8CAAFNAf8CAAGDAf8CAAGDAf8CAAFM AQABFwGIAf8CAAFHAf8TAAEBAwQBBgMPARQDJAE1AT8CQAFvA1YBswFbAmEB4QNlAfQBTQFaAWQB+gNc
Af8CAAE7Af8BAAEFAToB/wEYAZQBtAH/AQABHAGIAf8CAAFMAf8TAAEBAwQBBgMPARQDJAE1AT8CQAFv AfgDWQH1AU0BVAFiAvoD/wHNA/8BwwH7Av8BxAH8Av8B1AP/AfMB+AH8Af8DWQH1AVYCWAHBA0ABcAMg
A1YBswFbAmEB4QNlAfQBUAFkAWoB+gJcAV8B+ANZAfUBTQFeAWkC+gP/Ac0D/wHDAfsC/wHEAfwC/wHU AS4DCwEPAwQBBQMAAQEbAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
A/8B8wH4AfwB/wNZAfUBVgJYAcEDQAFwAyABLgMLAQ8DBAEFAwABARsAAf8DAAH/AwAB/wMAAf8DAAH/ Af8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/w8AAf8DlgH/AwAB/wHB
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/ ATMBHgH/AcgBNgEfAf8BxAE0AR0B/wGHARQBBgH/AQABEwE9Af8BAQE7AZcB/wEAATYBlwH/AYABBAEl
AgAC/wIAAv8CAAL/DAADBQH/A5YB/wMFAf8BwQE4ASMB/wHIATsBJAH/AcQBOQEiAf8BhwEZAQsB/wEA Af8BxgEgAZoB/wHVATQBtwH/AeoBgAHSAf8B/AGWAfEC/wGoAf4C/wGvA/8BqAH+Af8B/AGWAfEB/wHq
ARgBQgH/AQYBQAGXAf8BAAE7AZcB/wGAAQkBKgH/AcYBJQGaAf8B1QE5AbcB/wHqAYAB0gH/AfwBlgHx AYAB0gH/AdYBNAG3Af8BxQEeAZMB/wEaARABLAH/AQABQgGgAf8BAAEoAY0B/wEFAQ0BIQH/AYwBFQEF
Av8BqAH+Av8BrwP/AagB/gH/AfwBlgHxAf8B6gGAAdIB/wHWATkBtwH/AcUBIwGTAf8BHwEVATEB/wEE Af8BxwE2AR8B/wG5ATABHAH/AwYB/wOWAf8DAAH/AgABRgH/AQABGQGFAf8BEAGVAbQB/wIAATUB/wIA
AUcBoAH/AQABLQGNAf8BCgESASYB/wGMARoBCgH/AccBOwEkAf8BuQE1ASEB/wMLAf8DlgH/AwUB/wIA ATYB/wIAAUcB/wIAAYMB/wIAAYMB/wIAAUQB/wIAAUQB/wIAAUEB/wIAAT0B/wIAATwB/wIAATwB/wIA
AUsB/wEAAR4BhQH/ARUBlQG0Af8BAAEFAToB/wIAATsB/wIAAUwB/wIAAYMB/wIAAYMB/wIAAUkB/wIA ATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAAT4B/wIAAUQB/wIAAUQB/wIAAUQB/wIA
AUkB/wIAAUYB/wIAAUIB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIA AYMB/wIAAYMB/wIAAUcB/wIAATYB/wIAATUB/wETAZQBtAH/AQABFwGIAf8CAAFHAf8QAAMCAQMDCwEP
AUEB/wIAAUMB/wIAAUkB/wIAAUkB/wIAAUkB/wIAAYMB/wIAAYMB/wIAAUwB/wIAATsB/wEAAQUBOgH/ AyMBNAFEAkUBfAFXAloBxQNtAfcB8wH4AfwB/wHxA/8B5wP/AeoD/wHvA/8B5AP/Ac0D/wHDAfsC/wHG
ARgBlAG0Af8BAAEcAYgB/wIAAUwB/xAAAwIBAwMLAQ8DIwE0AUQCRQF8AVcCWgHFA20B9wHzAfgB/AH/ Af4C/wHaA/8B8wH4AfwB/wFkAmUB9AFWAlgBvAM9AWkDHQEqAwoBDQMDAQQjAAH/AwAB/wMAAf8DAAH/
AfED/wHnA/8B6gP/Ae8D/wHkA/8BzQP/AcMB+wL/AcYB/gL/AdoD/wHzAfgB/AH/AWQCZQH0AVYCWAG8 AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
Az0BaQMdASoDCgENAwMBBCMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AgAC/wIAAv8CAAL/AgAC/w8AAf8DmgH/AwAB/wG+ATIBHQH/AcUBNAEeAf8BrwEoARUB/wE0AQ4BCQH/
AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/DAADBQH/A5oB/wMF AQABHQGLAf8BGAGJAasB/wEAASUBSAH/AakBDAE2Af8ByAEkAaEB/wHaATkBvAH/AfABiAHcAf8B/gGf
Af8BvgE3ASIB/wHFATkBIwH/Aa8BLQEaAf8BOQETAQ4B/wEAASIBiwH/AR0BiQGrAf8BAAEqAU0B/wGp AfoC/wG0A/8BwgP/AbQC/wH+AZ8B+gH/AfABiAHcAf8B2wE5Ab0B/wHJASMBnQH/AUABBQEkAf8BAAE/
AREBOwH/AcgBKQGhAf8B2gE+AbwB/wHwAYgB3AH/Af4BnwH6Av8BtAP/AcID/wG0Av8B/gGfAfoB/wHw AZ0B/wEHAUQBogH/AQABEgE9Af8BhgETAQUB/wHDATMBHQH/AbYBLwEbAf8DBgH/A5oB/wMAAf8CAAFF
AYgB3AH/AdsBPgG9Af8ByQEoAZ0B/wFFAQoBKQH/AQABRAGdAf8BDAFJAaIB/wEAARcBQgH/AYYBGAEK Af8BAAEXAYMB/wESAZQBtAH/AgABNQH/AgABNgH/AgABRwH/AgABgwH/AgABgwH/AgABRAH/AgABRAH/
Af8BwwE4ASIB/wG2ATQBIAH/AwsB/wOaAf8DBQH/AgABSgH/AQABHAGDAf8BFwGUAbQB/wEAAQUBOgH/ AgABPwH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/
AgABOwH/AgABTAH/AgABgwH/AgABgwH/AgABSQH/AgABSQH/AgABRAH/AgABQQH/AgABQQH/AgABQQH/ AgABPAH/AgABQAH/AgABRAH/AgABRAH/AgABgwH/AgABgwH/AgABRwH/AgABNgH/AgABNQH/ARMBlAG0
AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABRQH/AgABSQH/AgABSQH/ Af8BAAEXAYgB/wIAAUcB/xAAAwMBBAMYASEDPQFpAVcCWQG/AVMBXgFmAfoB8QP/Ac4D/wHEAfwC/wHD
AgABgwH/AgABgwH/AgABTAH/AgABOwH/AQABBQE6Af8BGAGUAbQB/wEAARwBiAH/AgABTAH/EAADAwEE AfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHGAf4C/wHeA/8CfwGIAf4BTgJdAfABVQJXAbcDOwFj
AxgBIQM9AWkBVwJZAb8BXAFnAWsB+gHxA/8BzgP/AcQB/AL/AcMB+wL/AcMB+wL/AcMB+wL/AcMB+wL/ AxoBJQMJAQwDAwEEJwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AcMB+wL/AcYB/gL/Ad4D/wF/AYgBkgH+AU4CXQHwAVUCVwG3AzsBYwMaASUDCQEMAwMBBCcAAf8DAAH/ DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8PAAH/A58B/wMAAf8BuwEv
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/ ARwB/wHAATABHAH/AYYBEgEEAf8BAAEMASUB/wEAASsBlAH/AR8BlQG5Af8BDwEWATEB/wG4AQ8BQwH/
AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/DAADBQH/A58B/wMFAf8BuwE0ASEB/wHAATUBIQH/AYYBFwEJ AccBJAGgAf8B2QE4AbsB/wHvAYUB2gH/Af4BnQH6Av8BsQP/AbwD/wGxAv8B/gGdAfoB/wHvAYUB2gH/
Af8BAAERASoB/wEAATABlAH/ASQBlQG5Af8BFAEbATYB/wG4ARQBSAH/AccBKQGgAf8B2QE9AbsB/wHv AdkBOAG8Af8BxwEjAZ8B/wGkAQkBMgH/AQABLwGJAf8BJQGXAbgB/wEAARsBigH/ATMBDQEKAf8BrQEm
AYUB2gH/Af4BnQH6Av8BsQP/AbwD/wGxAv8B/gGdAfoB/wHvAYUB2gH/AdkBPQG8Af8BxwEoAZ8B/wGk ARQB/wGzASwBGgH/AwYB/wOfAf8DAAH/AgABRQH/AQABFwGDAf8BEwGUAbQB/wIAATUB/wIAAUcB/wEA
AQ4BNwH/AQABNAGJAf8BKgGXAbgB/wEAASABigH/ATgBEgEPAf8BrQErARkB/wGzATEBHwH/AwsB/wOf AScBrAH/AQABLAG2Af8BAAEqAbAB/wEAARkBogH/AQABAwGOAf8CAAFHAf8CAAE+Af8CAAE8Af8CAAE8
Af8DBQH/AgABSgH/AQABHAGDAf8BGAGUAbQB/wEAAQUBOgH/AQABAgFMAf8BAAEsAawB/wEAATEBtgH/ Af8CAAE8Af8CAAE8Af8CAAE8Af8CAAE8Af8CAAE8Af8CAAE8Af8CAAE8Af8CAAE/Af8CAAFEAf8CAAFE
AQABLwGwAf8BAAEeAaIB/wEAAQgBjgH/AgABTAH/AgABQwH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/ Af8CAAGDAf8CAAGDAf8CAAFHAf8CAAE2Af8CAAE1Af8BEgGUAbQB/wEAARcBiAH/AgABRwH/EAADBAEG
AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABRAH/AgABSQH/AgABSQH/AgABgwH/AgABgwH/ AyMBMwFNAk4BlQNlAfQE/wHaA/8B2QP/AeAD/wHdA/8BzwP/AcUB/QL/AcMB+wL/AcMB+wL/AdMD/wJ/
AgABTAH/AgABOwH/AQABBQE6Af8BFwGUAbQB/wEAARwBiAH/AgABTAH/EAADBAEGAyMBMwFNAk4BlQNl AYgB/gFOAl0B8AFVAlcBtwM6AWADGAEiAwgBCwMCAQMrAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AfQE/wHaA/8B2QP/AeAD/wHdA/8BzwP/AcUB/QL/AcMB+wL/AcMB+wL/AdMD/wF/AYgBkgH+AU4CXQHw AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
AVUCVwG3AzoBYAMYASIDCAELAwIBAysAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA AgAC/w8AAf8DpAH/AwAB/wG5ASwBGgH/AaABHgEOAf8BLgEKAQgB/wEAAQwBRAH/AQ4BQwGiAf8BAAE0
Af8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/DAADBQH/ AZIB/wE8AQABDQH/AbcBDwFGAf8BwgEgAZsB/wHTATIBswH/AeYBRwHPAf8B+gGRAesC/wGgAfwC/wGo
A6QB/wMFAf8BuQExAR8B/wGgASMBEwH/ATMBDwENAf8BAAERAUkB/wETAUgBogH/AQABOQGSAf8BQQEB Af4C/wGgAfwB/wH6AZEB6wH/AeYBRwHPAf8B0wEyAbQB/wHDAR8BmgH/AbYBDQE6Af8BEAEIARwB/wEK
ARIB/wG3ARQBSwH/AcIBJQGbAf8B0wE3AbMB/wHmAUwBzwH/AfoBkQHrAv8BoAH8Av8BqAH+Av8BoAH8 AUUBpAH/AQABKQGRAf8BAAEEASAB/wGEARABAgH/AakBJQEVAf8DBgH/A6QB/wMAAf8CAAFGAf8BAAEX
Af8B+gGRAesB/wHmAUwBzwH/AdMBNwG0Af8BwwEkAZoB/wG2ARIBPwH/ARUBDQEhAf8BDwFKAaQB/wEA AYUB/wETAZQBtAH/AgABNQH/AQABHQGSAf8BNwHkAfUB/wE8AekC/wE1AeAB+AH/ARgBsQHfAf8BAAE1
AS4BkQH/AQABCQElAf8BhAEVAQcB/wGpASoBGgH/AwsB/wOkAf8DBQH/AgABSwH/AQABHAGFAf8BGAGU AbUB/wEAAQQBigH/AgABPgH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/
AbQB/wEAAQUBOgH/AQABIgGSAf8BPAHkAfUB/wFBAekC/wE6AeAB+AH/AR0BsQHfAf8BBQE6AbUB/wEA AgABPAH/AgABPQH/AgABQQH/AgABRgH/AgABhAH/AgABjQH/AgABjAH/AgABgwH/AgABNwH/AgABNQH/
AQkBigH/AgABQwH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/ ARABlQG0Af8BAAEZAYgB/wIAAUcB/xAAAwQBBgMiATIBTAJNAZEDZAHxA6gB/QJ/AYUB/gOoAf0CXwFk
AgABQgH/AgABRgH/AgABSwH/AgABhAH/AQABAQGNAf8CAAGMAf8CAAGDAf8CAAE8Af8BAAEFAToB/wEV AfsBUQFlAWsB/AHnAfEB+AH/AdUD/wHDAfsC/wHDAfsC/wHgA/8CXwFgAfsBWgJdAdMDQgF0AxoBJQMG
AZUBtAH/AQABHgGIAf8CAAFMAf8QAAMEAQYDIgEyAUwCTQGRA2QB8QOoAf0BfwGBAY8B/gOoAf0BXwFi AQgDAQECLwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIA
AXMB+wFYAWoBcAH8AecB8QH4Af8B1QP/AcMB+wL/AcMB+wL/AeAD/wJfAW0B+wFaAl0B0wNCAXQDGgEl Av8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8PAAH/A6oB/wMAAf8BqQEiARMB/wE2
AwYBCAMBAQIvAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/ AQsBCAH/AScBlgG1Af8BQAHBAeQB/wGUAdgB6wH/AQABGgGIAf8BAAENAS4B/wGhAQUBLQH/Ab8BGAGO
AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAwUB/wOqAf8DBQH/AakBJwEY Af8BygEoAaYB/wHaATkBvAH/AegBgQHSAf8B9AGKAeEB/wH5AZAB6AH/AfQBigHhAf8B6AGBAdIB/wHa
Af8BOwEQAQ0B/wEsAZYBtQH/AUUBwQHkAf8BlAHYAesB/wEAAR8BiAH/AQABEgEzAf8BoQEKATIB/wG/ ATkBvQH/AcsBKAGlAf8BwAEXAYoB/wFGAQQBIQH/AQABCwE7Af8BBwFFAakB/wGcAeEB7wH/ATIBsAHW
AR0BjgH/AcoBLQGmAf8B2gE+AbwB/wHoAYEB0gH/AfQBigHhAf8B+QGQAegB/wH0AYoB4QH/AegBgQHS Af8BGgETARsB/wGQARcBCgH/AwcB/wOqAf8DAAH/AgABRwH/AQABFwGIAf8BEwGUAbQB/wIAATUB/wEA
Af8B2gE+Ab0B/wHLAS0BpQH/AcABHAGKAf8BSwEJASYB/wEAARABQAH/AQwBSgGpAf8BnAHhAe8B/wE3 AQcBigH/AQEBjAHPAf8BAQGTAdwB/wECAY8B1QH/AQABPwHDAf8BAAEZAaUB/wIAAYkB/wIAAUMB/wIA
AbAB1gH/AR8BGAEgAf8BkAEcAQ8B/wMMAf8DqgH/AwUB/wIAAUwB/wEAARwBiAH/ARgBlAG0Af8BAAEF ATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAATwB/wIAAT4B/wIAAUYB/wEA
AToB/wEAAQwBigH/AQYBjAHPAf8BBgGTAdwB/wEHAY8B1QH/AQABRAHDAf8BAAEeAaUB/wEAAQIBiQH/ AQEBjgH/AQABNwG4Af8BFQGaAdIB/wEMAY0BywH/AQABHgGlAf8CAAE/Af8CAAE1Af8BEwGXAbYB/wEA
AgABSAH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQQH/AgABQwH/ ARsBigH/AgABRwH/EAADAwEEAxYBHgM2AVkBTwJRAZwBVwJZAb8BWQJcAckBWgJdAcoBXAJeAc4BWAJf
AgABSwH/AQABBgGOAf8BBAE8AbgB/wEaAZoB0gH/AREBjQHLAf8BAAEjAaUB/wIAAUQB/wEAAQUBOgH/ AeMBVwJiAfYB8AP/AcMB+wL/AcMB+wL/Ad0D/wFdAWkBbQH8A1kBxwM3AVsDDwEUAwABAU8AAf8DAAH/
ARgBlwG2Af8BAAEgAYoB/wIAAUwB/xAAAwMBBAMWAR4DNgFZAU8CUQGcAVcCWQG/AVkCXAHJAVoCXQHK AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8nAAH/A7AB/wMAAf8BrwEjARYB/wFFAQoBAgH/
AVwCXgHOAVgCXwHjAVcCYgH2AfAD/wHDAfsC/wHDAfsC/wHdA/8BYgFuAXIB/ANZAccDNwFbAw8BFAMA ASgBBQEHAf8BIwE/AYUB/wGwAe4B9wH/AZsB4wHvAf8BAAEdAZEB/wEAARkBMgH/AaUBCQE1Af8BwAEc
AQFPAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADBQH/A7AB/wMFAf8BrwEo AZUB/wHLASoBqQH/AdYBNQG3Af8B3gE/AcIB/wHhAUEBxgH/Ad4BPwHCAf8B1gE1AbcB/wHLASoBqAH/
ARsB/wFKAQ8BBwH/AS0BCgEMAf8BKAFEAYUB/wGwAe4B9wH/AZsB4wHvAf8BAAEiAZEB/wEAAR4BNwH/ AcMBGwGRAf8BgQEFAScB/wEAASMBgAH/AQABPQGlAf8BtwHzAfoB/wGWAdoB5AH/ARsBEAEYAf8BOwEJ
AaUBDgE6Af8BwAEhAZUB/wHLAS8BqQH/AdYBOgG3Af8B3gFEAcIB/wHhAUYBxgH/Ad4BRAHCAf8B1gE6 AQQB/wGjAR4BEwH/AwcB/wOwAf8DAAH/AgABRwH/AQABFwGIAf8BEwGUAbQB/wIAATUB/wEAARUBjwH/
AbcB/wHLAS8BqAH/AcMBIAGRAf8BgQEKASwB/wEAASgBgAH/AQABQgGlAf8BtwHzAfoB/wGWAdoB5AH/ ASEBxwHoAf8BKAHQAfMB/wEpAcsB8gH/AR8BuwHmAf8BCQGNAcwB/wEAASABpQH/AgABgQH/AgABPAH/
ASABFQEdAf8BQAEOAQkB/wGjASMBGAH/AwwB/wOwAf8DBQH/AgABTAH/AQABHAGIAf8BGAGUAbQB/wEA AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABPAH/AgABRgH/AQABNQG1
AQUBOgH/AQABGgGPAf8BJgHHAegB/wEtAdAB8wH/AS4BywHyAf8BJAG7AeYB/wEOAY0BzAH/AQABJQGl Af8BKgHQAfEB/wE6AekB/QH/ATcB5QH7Af8BEwGpAdwB/wEAAQQBhAH/AQABAQE1Af8BEwGbAbgB/wEA
Af8BAAEBAYEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIAAUEB/wIA ARsBiwH/AgABRwH/EAADAgEDAwoBDQMcAScDLwFJAzwBZgNEAXoDSAGEAU4CTwGXAVkCXAHMAVMCZAHx
AUEB/wIAAUsB/wEAAToBtQH/AS8B0AHxAf8BPwHpAf0B/wE8AeUB+wH/ARgBqQHcAf8BAAEJAYQB/wEA BP8BwwH7Av8BwwH7Av8B1wP/A6gB/QNbAcgDNwFaAwsBD1MAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIA
AQYBOgH/ARgBmwG4Af8BAAEgAYsB/wIAAUwB/xAAAwIBAwMKAQ0DHAEnAy8BSQM8AWYDRAF6A0gBhAFO Av8CAAL/AgAC/wIAAv8nAAH/A7YB/wMAAf8BsAEiARYB/wGyASIBFQH/AZ8BGQENAf8BRgEJAQAB/wEN
Ak8BlwFZAlwBzAFTAmQB8QT/AcMB+wL/AcMB+wL/AdcD/wOoAf0DWwHIAzcBWgMLAQ9TAAH/AwAB/wMA AQUBFAH/AZMB1AHoAf8BlgHeAe8B/wEAASwBlgH/AQUBEAEnAf8BuAENAUAB/wG/ARoBkwH/AcYBIwGg
Af8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADBQH/A7YB/wMFAf8BsAEnARsB/wGyAScBGgH/ Af8BywEpAaYB/wHNASsBqgH/AcsBKQGmAf8BxgEjAaAB/wHAARoBkQH/AZ0BCAExAf8BAAElAT8B/wEA
AZ8BHgESAf8BSwEOAQUB/wESAQoBGQH/AZMB1AHoAf8BlgHeAe8B/wEAATEBlgH/AQoBFQEsAf8BuAES ATwBqAH/Aa8B6wH4Af8BOQGgAcMB/wErAgQB/wFIAQkBAAH/Aa0BIAETAf8BqQEgARUB/wMHAf8DtgH/
AUUB/wG/AR8BkwH/AcYBKAGgAf8BywEuAaYB/wHNATABqgH/AcsBLgGmAf8BxgEoAaAB/wHAAR8BkQH/ AwAB/wIAAUcB/wEAARcBiAH/ARIBlAG0Af8CAAE1Af8BAAEQAY4B/wEaAcMB5wH/ASEBzgHyAf8BIQHI
AZ0BDQE2Af8BAAEqAUQB/wEAAUEBqAH/Aa8B6wH4Af8BPgGgAcMB/wEwAgkB/wFNAQ4BBAH/Aa0BJQEY AfIB/wEXAbQB5gH/AQQBigHKAf8BAAEeAZ8B/wIAAUIB/wIAATMB/wIAATEB/wIAATEB/wIAATEB/wIA
Af8BqQElARoB/wMMAf8DtgH/AwUB/wIAAUwB/wEAARwBiAH/ARcBlAG0Af8BAAEFAToB/wEAARUBjgH/ ATEB/wIAATEB/wIAATEB/wIAATEB/wIAATIB/wIAAUAB/wELAZUBywH/AS8B6QH9Af8BMQHuAv8BMQHu
AR8BwwHnAf8BJgHOAfIB/wEmAcgB8gH/ARwBtAHmAf8BCQGKAcoB/wEAASMBnwH/AgABRwH/AgABOAH/ Av8BIwHVAfAB/wEAAREBkAH/AQABAgE1Af8BEwGcAbkB/wEAARsBiwH/AgABRwH/EwABAQMHAQkDFgEf
AgABNgH/AgABNgH/AgABNgH/AgABNgH/AgABNgH/AgABNgH/AgABNgH/AgABNwH/AgABRQH/ARABlQHL Ay8BSQFBAkIBcwFMAk0BkQFQAlIBowFVAlcBugNfAeABSQJiAfYB8wP/AcMB+wL/AcMB+wL/Ad0D/wFd
Af8BNAHpAf0B/wE2Ae4C/wE2Ae4C/wEoAdUB8AH/AQABFgGQAf8BAAEHAToB/wEYAZwBuQH/AQABIAGL AWkBbQH8AVcCWgG9AzEBTwMJAQxTAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/
Af8CAAFMAf8TAAEBAwcBCQMWAR8DLwFJAUECQgFzAUwCTQGRAVACUgGjAVUCVwG6A18B4AFJAmIB9gHz JwAB/wO7Af8DAAH/Aa0BHwEVAf8BswEhARYB/wGzASEBFgH/AagBHAERAf8BRQEGAQAB/wENAQUBFAH/
A/8BwwH7Av8BwwH7Av8B3QP/AWIBbgFyAfwBVwJaAb0DMQFPAwkBDFMAAf8DAAH/AwAB/wMAAf8DAAH/ AZEB0QHqAf8BRAG6Ad0B/wEAATUBkwH/AS4BAgEdAf8BuAELAUMB/wG8ARMBhwH/AcABFQGKAf8BvwEW
DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMFAf8DuwH/AwUB/wGtASQBGgH/AbMBJgEbAf8BswEmARsB/wGo AYwB/wHAARUBigH/AbwBEgGGAf8BtAEKATsB/wEBARMBKAH/AQABOwGiAf8BnQHeAfEB/wE5AaABxgH/
ASEBFgH/AUoBCwEEAf8BEgEKARkB/wGRAdEB6gH/AUkBugHdAf8BAAE6AZMB/wEzAQcBIgH/AbgBEAFI AS0BAwEEAf8BlgETAQoB/wGyASEBFgH/AbMBIQEWAf8BpgEdARQB/wMIAf8DuwH/AwAB/wIAAUcB/wEA
Af8BvAEYAYcB/wHAARoBigH/Ab8BGwGMAf8BwAEaAYoB/wG8ARcBhgH/AbQBDwFAAf8BBgEYAS0B/wEA ARcBiAH/AQ4BlAG0Af8CAAE1Af8BAAECAYUB/wEAAYIBygH/AQABjgHXAf8BAAGKAdcB/wEAAYYBzwH/
AUABogH/AZ0B3gHxAf8BPgGgAcYB/wEyAQgBCQH/AZYBGAEPAf8BsgEmARsB/wGzASYBGwH/AaYBIgEZ AQABPwHAAf8BAAEmAaoB/wEAAQcBjAH/AgABLgH/AgABKAH/AgABKAH/AgABKAH/AgABKAH/AgABKAH/
Af8DDQH/A7sB/wMFAf8CAAFMAf8BAAEcAYgB/wETAZQBtAH/AQABBQE6Af8BAAEHAYUB/wEAAYIBygH/ AgABKAH/AgABKgH/AgABLAH/AgABPAH/AQEBgAHBAf8BJAHjAfsB/wEoAe4C/wEoAe4C/wEVAcYB6gH/
AQABjgHXAf8BAAGKAdcB/wEAAYYBzwH/AQABRAHAAf8BAAErAaoB/wEAAQwBjAH/AgABMwH/AgABLQH/ AQABCQGMAf8BAAECATcB/wETAZ0BvQH/AQABHAGLAf8CAAFHAf8TAAEBAwoBDQMqAUABTgJPAZcBWAJc
AgABLQH/AgABLQH/AgABLQH/AgABLQH/AgABLQH/AgABLwH/AgABMQH/AgABQQH/AQYBgAHBAf8BKQHj AdEDXAHqA2cB8gNZAfUCXwFkAfsB2gHqAfUB/wHYA/8BwwH7Av8BxQH9Av8B7wP/A2IB9gFQAlIBowMn
AfsB/wEtAe4C/wEtAe4C/wEaAcYB6gH/AQABDgGMAf8BAAEHATwB/wEYAZ0BvQH/AQABIQGLAf8CAAFM AToDBwEJUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/ycAAf8DwAH/AwAB/wGp
Af8TAAEBAwoBDQMqAUABTgJPAZcBWAJcAdEDXAHqA2cB8gNZAfUBXwFiAXMB+wHaAeoB9QH/AdgD/wHD AR0BEwH/Aa8BHgEUAf8BrwEeARQB/wGvAR4BFAH/AaUBGQEQAf8BQQEEAQAB/wEOARcBLAH/AZgB2gHx
AfsC/wHFAf0C/wHvA/8DYgH2AVACUgGjAycBOgMHAQlTAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/ Af8BGgGPAbwB/wEAASABPAH/AT0BAAEOAf8BMQEEAR8B/wEgAQoBJQH/ASABCgElAf8BJAEJASQB/wE5
AgAC/wIAAv8CAAL/JAADBQH/A8AB/wMFAf8BqQEiARgB/wGvASMBGQH/Aa8BIwEZAf8BrwEjARkB/wGl AQABGwH/AScBAAEMAf8BAAEwAZAB/wFIAbwB4AH/AYQBuwHhAf8BHwEBAQcB/wGRARABBwH/Aa8BHgEU
AR4BFQH/AUYBCQECAf8BEwEcATEB/wGYAdoB8QH/AR8BjwG8Af8BAAElAUEB/wFCAQABEwH/ATYBCQEk Af8BrwEeARQB/wGvAR4BFAH/AaIBGwESAf8DCAH/A8AB/wMAAf8CAAFIAf8BAAEXAYsB/wERAZQBtAH/
Af8BJQEPASoB/wElAQ8BKgH/ASkBDgEpAf8BPgEFASAB/wEsAQABEQH/AQABNQGQAf8BTQG8AeAB/wGE AgABMQH/AQABEAGMAf8BGQHaAesB/wEeAeQB9QH/AR4B4gH1Af8BGQHZAfMB/wETAcIB6QH/AQQBkwHR
AbsB4QH/ASQBBgEMAf8BkQEVAQwB/wGvASMBGQH/Aa8BIwEZAf8BrwEjARkB/wGiASABFwH/Aw0B/wPA Af8BAAEgAaMB/wIAASUB/wIAAR4B/wIAAR4B/wIAAR4B/wIAAR4B/wIAAR4B/wIAAR4B/wIAASEB/wIA
Af8DBQH/AgABTQH/AQABHAGLAf8BFgGUAbQB/wEAAQEBNgH/AQABFQGMAf8BHgHaAesB/wEjAeQB9QH/ ASEB/wIAASkB/wEAAQ8BkAH/AQUBngHWAf8BGQHRAfAB/wETAcMB6gH/AQABQAG9Af8CAAE+Af8CAAE3
ASMB4gH1Af8BHgHZAfMB/wEYAcIB6QH/AQkBkwHRAf8BAAElAaMB/wIAASoB/wIAASMB/wIAASMB/wIA Af8BEwGdAb0B/wEAARwBjgH/AgABSAH/EwABAQMPARQDOwFjA14B2AT/AfsD/wHzA/8B7gP/AeID/wHR
ASMB/wIAASMB/wIAASMB/wIAASMB/wIAASYB/wIAASYB/wIAAS4B/wEAARQBkAH/AQoBngHWAf8BHgHR A/8BxgH+Av8BxAH8Av8B1gP/AecB8QH4Af8BVwJcAd8DRAF5AxgBIgMEAQZTAAH/AwAB/wMAAf8DAAH/
AfAB/wEYAcMB6gH/AQABRQG9Af8CAAFDAf8BAAEDATwB/wEYAZ0BvQH/AQABIQGOAf8CAAFNAf8TAAEB AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JwAB/wPHAf8DAAH/AaYBGQESAf8BrAEaARMB/wGsARoBEwH/
Aw8BFAM7AWMDXgHYBP8B+wP/AfMD/wHuA/8B4gP/AdED/wHGAf4C/wHEAfwC/wHWA/8B5wHxAfgB/wFX AawBGgETAf8BrAEaARMB/wGaARIBCwH/ATgBAgEAAf8BKwGQAbIB/wGWAdIB8QH/AQABMwGiAf8BAAEs
AlwB3wNEAXkDGAEiAwQBBlMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMF AYsB/wEAATQBkwH/AQABOgGaAf8BAAE8AZwB/wEAATkBlwH/AQABNAGTAf8BAAEnAYsB/wEVAYkBuwH/
Af8DxwH/AwUB/wGmAR4BFwH/AawBHwEYAf8BrAEfARgB/wGsAR8BGAH/AawBHwEYAf8BmgEXARAB/wE9 AZgB2AHzAf8BDwEdATMB/wFAAQIBAAH/AasBGQESAf8BrAEaARMB/wGsARoBEwH/AawBGgETAf8BnwEY
AQcBBQH/ATABkAGyAf8BlgHSAfEB/wEAATgBogH/AQABMQGLAf8BAAE5AZMB/wEAAT8BmgH/AQABQQGc AREB/wMIAf8DxwH/AwAB/wIAAYUB/wEAAR4BjQH/ARMBlwG0Af8CAAEvAf8CAAEwAf8BAAEUAYwB/wEA
Af8BAAE+AZcB/wEAATkBkwH/AQABLAGLAf8BGgGJAbsB/wGYAdgB8wH/ARQBIgE4Af8BRQEHAQIB/wGr ARYBkgH/AQABFgGSAf8BAAEUAZAB/wEAAQ8BhgH/AQABAgFCAf8CAAEyAf8CAAEbAf8CAAEVAf8CAAEV
AR4BFwH/AawBHwEYAf8BrAEfARgB/wGsAR8BGAH/AZ8BHQEWAf8DDQH/A8cB/wMFAf8CAAGFAf8BAwEj Af8CAAEVAf8CAAEVAf8CAAEVAf8CAAEVAf8CAAEVAf8CAAEbAf8CAAEcAf8CAAEnAf8CAAFCAf8BAAEQ
AY0B/wEYAZcBtAH/AgABNAH/AgABNQH/AQABGQGMAf8BAAEbAZIB/wEAARsBkgH/AQABGQGQAf8BAAEU AYoB/wEAAQgBhQH/AgABOwH/AgABKAH/AgABMAH/ARMBnAG5Af8BAAEfAZEB/wIAAYUB/xMAAQEDDQES
AYYB/wEAAQcBRwH/AgABNwH/AgABIAH/AgABGgH/AgABGgH/AgABGgH/AgABGgH/AgABGgH/AgABGgH/ AzgBXAFYAlsBywJ/AYQB/gHqA/8BzQP/AcQB/AL/AcMB+wL/AcMB+wL/AcYB/gL/AdgD/wHzAfgB/AH/
AgABGgH/AgABIAH/AgABIQH/AgABLAH/AgABRwH/AQABFQGKAf8BAAENAYUB/wIAAUAB/wIAAS0B/wIA A10B8ANSAakDLgFHAwwBEAMCAQNTAAH/AwAB/wMAAf8DAAH/AwAB/0cAAf8DzwH/AwAB/wGjARYBEAH/
ATUB/wEYAZwBuQH/AQMBJAGRAf8CAAGFAf8TAAEBAw0BEgM4AVwBWAJbAcsBfwGFAY4B/gHqA/8BzQP/ AagBFwERAf8BqAEXAREB/wGoARcBEQH/AagBFwERAf8BqAEXAREB/wGNAQoBBQH/ARMBBQEQAf8BjAHS
AcQB/AL/AcMB+wL/AcMB+wL/AcYB/gL/AdgD/wHzAfgB/AH/A10B8ANSAakDLgFHAwwBEAMCAQNTAAH/ AfMB/wHDAfAB+AH/AdUB7gH3Af8B4AH3AfwB/wHnA/8B6AP/AeYB/gL/Ad0B8gH6Af8BzQHtAfcB/wG1
AwAB/wMAAf8DAAH/AwAB/0QAAwUB/wPPAf8DBQH/AaMBGwEVAf8BqAEcARYB/wGoARwBFgH/AagBHAEW Ae8B+wH/ATkBqwHPAf8BLgIAAf8BlgEPAQkB/wGoARcBEQH/AagBFwERAf8BqAEXAREB/wGoARcBEQH/
Af8BqAEcARYB/wGoARwBFgH/AY0BDwEKAf8BGAEKARUB/wGMAdIB8wH/AcMB8AH4Af8B1QHuAfcB/wHg AZ0BFQEPAf8DCQH/A88B/wMAAf8CAAGKAf8BAAEhAZgB/wEUAZUBtgH/AQABJQGIAf8CAAEuAf8CAAEz
AfcB/AH/AecD/wHoA/8B5gH+Av8B3QHyAfoB/wHNAe0B9wH/AbUB7wH7Af8BPgGrAc8B/wEzAQMBBQH/ Af8CAAEzAf8CAAEzAf8CAAEtAf8CAAEtAf8CAAEtAf8CAAEoAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEn
AZYBFAEOAf8BqAEcARYB/wGoARwBFgH/AagBHAEWAf8BqAEcARYB/wGdARoBFAH/Aw4B/wPPAf8DBQH/ Af8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEoAf8CAAEuAf8CAAEvAf8CAAEvAf8CAAE1Af8CAAE1
AgABigH/AQQBJgGYAf8BGQGVAbYB/wEDASoBiAH/AQABAwEzAf8BAAEDATgB/wEAAQMBOAH/AQABAwE4 Af8CAAE0Af8CAAEuAf8BAAElAYcB/wETAZQBtQH/AQABIQGYAf8CAAGKAf8TAAEBAwcBCgMmATgDSgGL
Af8BAAEDATIB/wEAAQMBMgH/AQABAwEyAf8BAAEDAS0B/wIAASwB/wIAASwB/wIAASwB/wIAASwB/wIA AVkCXAHPA1wB+AHzAfgB/AH/AfID/wHmA/8B6AP/AfoD/wJ/AYgB/gNhAe4DVQGyAzgBXAMVAR0DBQEH
ASwB/wIAASwB/wIAASwB/wIAASwB/wEAAQMBLQH/AQABBAEzAf8BAAEFATQB/wEAAQUBNAH/AQABBQE6 AwABAVMAAf8DAAH/AwAB/wMAAf8DAAH/RwAB/wPXAf8DAAH/AZ8BEwEPAf8BpAEUARAB/wGkARQBEAH/
Af8BAAEFAToB/wEAAQQBOQH/AQABAwEzAf8BAQEqAYcB/wEYAZQBtQH/AQQBJgGYAf8CAAGKAf8TAAEB AaQBFAEQAf8BpAEUARAB/wGkARQBEAH/AZkBDwELAf8BKAIAAf8BrwHcAeQB/wHiAfAB8gH/AY0BpAGv
AwcBCgMmATgDSgGLAVkCXAHPAlwBXwH4AfMB+AH8Af8B8gP/AeYD/wHoA/8B+gP/AX8BiAGSAf4DYQHu Af8BLAEyAT4B/wEaARYBJAH/ARsBFwElAf8BHQEaAScB/wE3AUMBhgH/AaUBwAHFAf8B7wL7Af8BIwGC
A1UBsgM4AVwDFQEdAwUBBwMAAQFTAAH/AwAB/wMAAf8DAAH/AwAB/0QAAwUB/wPXAf8DBQH/AZ8BGAEU AZcB/wE5AgAB/wGjARMBDwH/AaQBFAEQAf8BpAEUARAB/wGkARQBEAH/AaQBFAEQAf8BmQESAQ4B/wMJ
Af8BpAEZARUB/wGkARkBFQH/AaQBGQEVAf8BpAEZARUB/wGkARkBFQH/AZkBFAEQAf8BLQEBAQUB/wGv Af8D1wH/AwAB/wIAAZQB/wEAARwBmwH/AR8BogHDAf8BMgG3Ac0B/wEuAbkBzQH/AS4BuQHNAf8BLAG5
AdwB5AH/AeIB8AHyAf8BjQGkAa8B/wExATcBQwH/AR8BGwEpAf8BIAEcASoB/wEiAR8BLAH/ATwBSAGG Ac0B/wErAbkBzQH/ASsBuQHNAf8BKwG5Ac0B/wErAbkBzQH/ASsBuQHNAf8BKwG5Ac0B/wErAbkBzQH/
Af8BpQHAAcUB/wHvAvsB/wEoAYIBlwH/AT4BAgEBAf8BowEYARQB/wGkARkBFQH/AaQBGQEVAf8BpAEZ ASsBuQHNAf8BKwG5Ac0B/wErAbkBzQH/ASsBuQHNAf8BKwG5Ac0B/wErAbkBzQH/AS4BuQHNAf8BLgG8
ARUB/wGkARkBFQH/AZkBFwETAf8DDgH/A9cB/wMFAf8CAAGUAf8BAwEhAZsB/wEkAaIBwwH/ATcBtwHN Ac8B/wEuAb8B0gH/AS4BvwHSAf8BLgG/AdIB/wEuAb8B0gH/ASwBvAHPAf8BKwG5Ac0B/wEqAbYByAH/
Af8BMwG5Ac0B/wEzAbkBzQH/ATEBuQHNAf8BMAG5Ac0B/wEwAbkBzQH/ATABuQHNAf8BMAG5Ac0B/wEw ARoBngHAAf8BAAEbAZsB/wIAAZQB/xQAAwQBBQMRARcDKQE/A0QBeQFVAlYBtAFcAmEB3ANfAfMBTQFa
AbkBzQH/ATABuQHNAf8BMAG5Ac0B/wEwAbkBzQH/ATABuQHNAf8BMAG5Ac0B/wEwAbkBzQH/ATABuQHN AWQB+gFNAVoBZAH6A10B7QFbAl4B0AFQAlEBnwM2AVkDGAEhAwcBCgMBAQJXAAH/AwAB/wMAAf8DAAH/
Af8BMAG5Ac0B/wEzAbkBzQH/ATMBvAHPAf8BMwG/AdIB/wEzAb8B0gH/ATMBvwHSAf8BMwG/AdIB/wEx AwAB/0cAAf8D3wH/AwAB/wGcARABDgH/AaEBEQEPAf8BoQERAQ8B/wGhAREBDwH/AaEBEQEPAf8BoQER
AbwBzwH/ATABuQHNAf8BLwG2AcgB/wEfAZ4BwAH/AQMBIAGbAf8CAAGUAf8UAAMEAQUDEQEXAykBPwNE AQ8B/wGbAQ4BDAH/AS4CAAH/AY8BlgGhAf8BHAEAAQEB/wE2AgAB/wE5AgAB/wGBAQMBAQH/AYEBAwEB
AXkBVQJWAbQBXAJhAdwDXwHzAVABZAFqAfoBUAFkAWoB+gNdAe0BWwJeAdABUAJRAZ8DNgFZAxgBIQMH Af8BgQEDAQEB/wE4AgAB/wEzAgAB/wEQAQQBEwH/AUABRAGIAf8BOAIAAf8BoAEQAQ4B/wGhAREBDwH/
AQoDAQECVwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMFAf8D3wH/AwUB/wGcARUBEwH/AaEBFgEUAf8BoQEW AaEBEQEPAf8BoQERAQ8B/wGhAREBDwH/AZYBDwENAf8DCgH/A98B/wMAAf8CAAGeAf8BAAECAZQB/wEK
ARQB/wGhARYBFAH/AaEBFgEUAf8BoQEWARQB/wGbARMBEQH/ATMBAAEDAf8BjwGWAaEB/wEhAQABBgH/ ASQBnwH/AR0BRAGuAf8BIAFIAasB/wEgAUgBqwH/AR4BSAGrAf8BHQFIAacB/wEdAUgBpgH/ARsBRQGm
ATsCAAH/AT4CAAH/AYEBCAEGAf8BgQEIAQYB/wGBAQgBBgH/AT0CAAH/ATgBAAEBAf8BFQEJARgB/wFF Af8BFwFCAaYB/wEXAUIBogH/ARcBQgGhAf8BFwFCAaEB/wEXAUIBoQH/ARcBQgGhAf8BFwFCAaEB/wEX
AUkBiAH/AT0CAAH/AaABFQETAf8BoQEWARQB/wGhARYBFAH/AaEBFgEUAf8BoQEWARQB/wGWARQBEgH/ AUIBoQH/ARcBQgGhAf8BFwFCAaEB/wEbAUIBogH/ARsBQgGmAf8BHgFFAaYB/wEgAUgBpgH/ASABSAGn
Aw8B/wPfAf8DBQH/AgABngH/AQABBwGUAf8BDwEpAZ8B/wEiAUkBrgH/ASUBTQGrAf8BJQFNAasB/wEj Af8BIAFIAasB/wEeAUgBqwH/AR0BSAGrAf8BGgFEAa4B/wEIASQBnwH/AQABAgGUAf8CAAGeAf8XAAEB
AU0BqwH/ASIBTQGnAf8BIgFNAaYB/wEgAUoBpgH/ARwBRwGmAf8BHAFHAaIB/wEcAUcBoQH/ARwBRwGh AwQBBgMMARADHAEoAzEBTQNCAXUDTgGZAVMCVQGtA1IBqQNLAY4BPAI9AWcDKQE+AxQBGwMHAQkDAgED
Af8BHAFHAaEB/wEcAUcBoQH/ARwBRwGhAf8BHAFHAaEB/wEcAUcBoQH/ARwBRwGhAf8BIAFHAaIB/wEg WwAB/wMAAf8DAAH/AwAB/wMAAf9EAANMAfMD3wH/AxcB/wGKAgoB/wGbAQwBDQH/AZsBDAENAf8BmwEM
AUcBpgH/ASMBSgGmAf8BJQFNAaYB/wElAU0BpwH/ASUBTQGrAf8BIwFNAasB/wEiAU0BqwH/AR8BSQGu AQ0B/wGbAQwBDQH/AZsBDAENAf8BmgELAQwB/wEzAgAB/wEtAgAB/wE1AgAB/wGZAQsBDAH/AZoBDAEN
Af8BDQEpAZ8B/wEAAQcBlAH/AgABngH/FwABAQMEAQYDDAEQAxwBKAMxAU0DQgF1A04BmQFTAlUBrQNS Af8BmwEMAQ0B/wGbAQwBDQH/AZsBDAENAf8BmgELAQwB/wGSAQgBCQH/ATQCAAH/ASoCAAH/ATUCAAH/
AakDSwGOATwCPQFnAykBPgMUARsDBwEJAwIBA1sAAf8DAAH/AwAB/wMAAf8DAAH/RAADTAHzA98B/wMc AZoBDAENAf8BmwEMAQ0B/wGbAQwBDQH/AZsBDAENAf8BmwEMAQ0B/wFFAQgBCQH/Ax8B/wPdAf8DTgHw
Af8BigIPAf8BmwERARIB/wGbAREBEgH/AZsBEQESAf8BmwERARIB/wGbAREBEgH/AZoBEAERAf8BOAIA AgABpAH/AgABngH/AgABlAH/AgABjwH/AgABjAH/AgABhgH/AgABggH/AgABRwH/AgABRwH/AgABRAH/
Af8BMgIAAf8BOgIAAf8BmQEQAREB/wGaAREBEgH/AZsBEQESAf8BmwERARIB/wGbAREBEgH/AZoBEAER AgABQQH/AgABPwH/AgABPwH/AgABPwH/AgABPwH/AgABPwH/AgABPwH/AgABPwH/AgABPwH/AgABPwH/
Af8BkgENAQ4B/wE5AgAB/wEvAQABAQH/AToCAAH/AZoBEQESAf8BmwERARIB/wGbAREBEgH/AZsBEQES AgABPwH/AgABQQH/AgABRAH/AgABRwH/AgABRwH/AgABggH/AgABhgH/AgABjAH/AgABjwH/AgABlAH/
Af8BmwERARIB/wFKAQ0BDgH/AyQB/wPdAf8DTgHwAgQBpAH/AgABngH/AgABlAH/AgABjwH/AgABjAH/ AgABngH/AgABpAH/GwABAQMCAQMDBgEIAwwBEAMWAR4DIgEyAyoBQAMpAT4DHwEsAxIBGQMKAQ0DBAEG
AgABhgH/AgABggH/AgABTAH/AgABTAH/AgABSQH/AgABRgH/AgABRAH/AgABRAH/AgABRAH/AgABRAH/ AwEBAl8AAf8DAAH/AwAB/wMAAf8DAAH/RAADVwG9A78B/wOUAf8BKwEJAQsB/wGKAQgBDgH/AZMBBgEN
AgABRAH/AgABRAH/AgABRAH/AgABRAH/AgABRAH/AgABRAH/AgABRgH/AgABSQH/AgABTAH/AgABTAH/ Af8BkwEGAQ0B/wGTAQYBDQH/AZMBBgENAf8BkwEGAQ0B/wGSAQYBDAH/AY4BBAELAf8BkgEGAQ0B/wGT
AgABggH/AgABhgH/AgABjAH/AgABjwH/AgABlAH/AgABngH/AgQBpAH/GwABAQMCAQMDBgEIAwwBEAMW AQYBDQH/AZMBBgENAf8BkwEGAQ0B/wGTAQYBDQH/AZMBBgENAf8BkwEGAQ0B/wGTAQYBDQH/AZIBBgEM
AR4DIgEyAyoBQAMpAT4DHwEsAxIBGQMKAQ0DBAEGAwEBAl8AAf8DAAH/AwAB/wMAAf8DAAH/RAADVwG9 Af8BjQEEAQoB/wGSAQYBDQH/AZMBBgENAf8BkwEGAQ0B/wGTAQYBDQH/AZMBBgENAf8BgAEJAQ4B/wEg
A78B/wOUAf8BMAEOARAB/wGKAQ0BEwH/AZMBCwESAf8BkwELARIB/wGTAQsBEgH/AZMBCwESAf8BkwEL AQgBCgH/A7QB/wO0Af8DVAGuAgIBrAH/AgIBqQH/AgIBpgH/AgABpgH/AgABpgH/AgABowH/AgABnwH/
ARIB/wGSAQsBEQH/AY4BCQEQAf8BkgELARIB/wGTAQsBEgH/AZMBCwESAf8BkwELARIB/wGTAQsBEgH/ AgABngH/AgABlwH/AgABlwH/AgABlgH/AgABlgH/AgABjgH/AgABjgH/AgABjgH/AgABjgH/AgABjgH/
AZMBCwESAf8BkwELARIB/wGTAQsBEgH/AZIBCwERAf8BjQEJAQ8B/wGSAQsBEgH/AZMBCwESAf8BkwEL AgABjgH/AgABjgH/AgABjgH/AgABlgH/AgABlgH/AgABlwH/AgABlwH/AgABngH/AgABnwH/AgABowH/
ARIB/wGTAQsBEgH/AZMBCwESAf8BgAEOARMB/wElAQ0BDwH/A7QB/wO0Af8DVAGuAgcBrAH/AgcBqQH/ AgABpgH/AgABpgH/AgIBpgH/AgIBqQH/AgIBrAH/JAADAQECAwMEBAQGAQgDBgEIAwQBBgMDAQQDAAEB
AgcBpgH/AgIBpgH/AgEBpgH/AgEBowH/AgEBnwH/AgABngH/AgABlwH/AgABlwH/AgABlgH/AgABlgH/ ZwAB/wMAAf8DAAH/AwAB/wMAAf9EAAM0AVQDLwH/A+4B/wOTAf8DFgH/AwAB/wMAAf8DAAH/AwAB/wMA
AgABjgH/AgABjgH/AgABjgH/AgABjgH/AgABjgH/AgABjgH/AgABjgH/AgABjgH/AgABlgH/AgABlgH/ Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
AgABlwH/AgABlwH/AgABngH/AgEBnwH/AgEBowH/AgEBpgH/AgIBpgH/AgcBpgH/AgcBqQH/AgcBrAH/ Af8DAAH/AwAB/wMfAf8DsgH/A+oB/wMfAf8DLQFFAgIBrAH/AgIBrAH/AgIBrAH/AgIBrAH/AgIBrAH/
JAADAQECAwMEBAQGAQgDBgEIAwQBBgMDAQQDAAEBZwAB/wMAAf8DAAH/AwAB/wMAAf9EAAM0AVQDNAH/ AgIBrAH/AgIBrAH/AgABqAH/AgABpAH/AgABogH/AgABnwH/AgABnwH/AgABnAH/AgABnAH/AgABnAH/
A+4B/wOTAf8DGwH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/ AgABnAH/AgABnAH/AgABnAH/AgABnAH/AgABnAH/AgABnwH/AgABnwH/AgABogH/AgABpwH/AgABqAH/
AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMkAf8DsgH/A+oB/wMkAf8DLQFF AgIBrAH/AgIBrAH/AgIBrAH/AgIBrAH/AgIBrAH/AgIBrAH/AgIBrAH//wAFAANKAY0DLgH/A80B/wP5
AgcBrAH/AgcBrAH/AgcBrAH/AgcBrAH/AgcBrAH/AgcBrAH/AgcBrAH/AgMBqAH/AgIBpAH/AgABogH/ Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7
AgABnwH/AgABnwH/AgABnAH/AgABnAH/AgABnAH/AgABnAH/AgABnAH/AgABnAH/AgABnAH/AgABnAH/ Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A+sB/wO9Af8DGQH/A0gBhwQAA0gBhQICAawB/wIC
AgABnwH/AgABnwH/AgABogH/AgIBpwH/AgMBqAH/AgcBrAH/AgcBrAH/AgcBrAH/AgcBrAH/AgcBrAH/ AawB/wICAawB/wICAawB/wICAawB/wICAawB/wICAawB/wIBAakB/wIAAakB/wIAAaYB/wIAAaQB/wIA
AgcBrAH/AgcBrAH//wAFAANKAY0DMwH/A80B/wP5Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/ AaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaQB/wIAAaYB/wIA
A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/ AakB/wIBAasB/wICAawB/wICAawB/wICAawB/wICAawB/wICAawB/wICAawB/wICAawB/wNIAYX/AAkA
A+sB/wO9Af8DHgH/A0gBhwQAA0gBhQIHAawB/wIHAawB/wIHAawB/wIHAawB/wIHAawB/wIHAawB/wIH AzcBWgNZAcMDKwH8AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AawB/wIGAakB/wIEAakB/wIEAaYB/wIAAaQB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIAAaEB/wIA AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wNVAeoDVAGuAy0BRQgAAwcBCgNI
AaEB/wIAAaEB/wIAAaEB/wIAAaQB/wIEAaYB/wIEAakB/wIGAasB/wIHAawB/wIHAawB/wIHAawB/wIH AYUCAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGrAf8CAQGq
AawB/wIHAawB/wIHAawB/wIHAawB/wNIAYX/AAkAAzcBWgNZAcMDKwH8AwUB/wMFAf8DBQH/AwUB/wMF Af8CAAGqAf8CAAGoAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGkAf8CAAGoAf8CAAGqAf8CAQGqAf8CAgGr
Af8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMFAf8DBQH/AwUB/wMF Af8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8CAgGsAf8DSAGFAwcBCv8A
Af8DBQH/AwUB/wNVAeoDVAGuAy0BRQgAAwcBCgNIAYUCBwGsAf8CBwGsAf8CBwGsAf8CBwGsAf8CBwGs AQABQgFNAT4HAAE+AwABKAMAAYADAAFAAwABAQEAAQEGAAEEFgAD//8A/wADAAHAAgABAwQACP8BgAIA
Af8CBwGsAf8CBwGsAf8CBwGsAf8CBwGrAf8CBgGqAf8CBQGqAf8CBQGoAf8CBQGkAf8CBQGkAf8CBQGk AQEEAAL/AfgBBwT/CAAC/wHwAQME/wgAAv8B4AEBAf8BwQL/CAAC/wHAAQEB/wHBAv8IAAL/AYABAQH/
Af8CBQGkAf8CBQGoAf8CBQGqAf8CBgGqAf8CBwGrAf8CBwGsAf8CBwGsAf8CBwGsAf8CBwGsAf8CBwGs AcEC/wgAAv8BAAEBAf8BwQL/CAAB/wH+AQABAQH/AcEC/wgAAf8B/AEAAQEB/wLBAf8IAAH/AfwBAAEB
Af8CBwGsAf8CBwGsAf8CBwGsAf8DSAGFAwcBCv8AAQABQgFNAT4HAAE+AwABKAMAAYADAAFAAwABAQEA Af8CwQH/CAAB/wGAAQABAQH/AsEB/wgAAf4CAAEBAf8CwQH/CAAB+AIAAQMB/wLBAf8IAAHwAgABBwHg
AQEGAAEEFgAD//8A/wADAAHAAgABAwQACP8BgAIAAQEEAAL/AfgBBwT/CAAC/wHwAQME/wgAAv8B4AEB AQEBwAEHCAAB8AIAAR8B4AEBAcABBwgAAfACAAE/AeABAQHAAQcIAAHwAgABfwHgAQEBwAEHCAAB8AIA
Af8BwQL/CAAC/wHAAQEB/wHBAv8IAAL/AYABAQH/AcEC/wgAAv8BAAEBAf8BwQL/CAAB/wH+AQABAQH/ Af8B4AEBAcABBwgAAfABAAEBAv8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/AsEB/wgAAfABAAED
AcEC/wgAAf8B/AEAAQEB/wLBAf8IAAH/AfwBAAEBAf8CwQH/CAAB/wGAAQABAQH/AsEB/wgAAf4CAAEB Av8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/AcEC/wgAAfABAAEDAv8BwQL/CAAB+AEAAQcC/wHB
Af8CwQH/CAAB+AIAAQMB/wLBAf8IAAHwAgABBwHgAQEBwAEHCAAB8AIAAR8B4AEBAcABBwgAAfACAAE/ Av8IAAH4AQABDwL/AcEC/wgAAfwBAAEfAv8BwQL/CAAB/wGAAX8C/wHBAv8IAAj/AYACAAEBBAAI/wHA
AeABAQHAAQcIAAHwAgABfwHgAQEBwAEHCAAB8AIAAf8B4AEBAcABBwgAAfABAAEBAv8CwQH/CAAB8AEA AgABAwQACP8L
AQMC/wLBAf8IAAHwAQABAwL/AsEB/wgAAfABAAEDAv8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/
AcEC/wgAAfABAAEDAv8BwQL/CAAB+AEAAQcC/wHBAv8IAAH4AQABDwL/AcEC/wgAAfwBAAEfAv8BwQL/
CAAB/wGAAX8C/wHBAv8IAAj/AYACAAEBBAAI/wHAAgABAwQACP8L
</value> </value>
</data> </data>
</root> </root>

132
Tab/LogForm.Designer.cs generated Normal file
View file

@ -0,0 +1,132 @@

namespace DutyContent.Tab
{
partial class LogForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.pnlBase = new System.Windows.Forms.Panel();
this.txtLogText = new System.Windows.Forms.RichTextBox();
this.chkLogScroll = new System.Windows.Forms.CheckBox();
this.btnLogClear = new System.Windows.Forms.Button();
this.btnLogCopy = new System.Windows.Forms.Button();
this.pnlBase.SuspendLayout();
this.SuspendLayout();
//
// pnlBase
//
this.pnlBase.Controls.Add(this.txtLogText);
this.pnlBase.Controls.Add(this.chkLogScroll);
this.pnlBase.Controls.Add(this.btnLogClear);
this.pnlBase.Controls.Add(this.btnLogCopy);
this.pnlBase.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlBase.Location = new System.Drawing.Point(0, 0);
this.pnlBase.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.pnlBase.Name = "pnlBase";
this.pnlBase.Size = new System.Drawing.Size(804, 451);
this.pnlBase.TabIndex = 0;
//
// txtLogText
//
this.txtLogText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtLogText.BackColor = System.Drawing.Color.AliceBlue;
this.txtLogText.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtLogText.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.txtLogText.Location = new System.Drawing.Point(4, 4);
this.txtLogText.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.txtLogText.Name = "txtLogText";
this.txtLogText.ReadOnly = true;
this.txtLogText.Size = new System.Drawing.Size(796, 407);
this.txtLogText.TabIndex = 3;
this.txtLogText.Text = "";
//
// chkLogScroll
//
this.chkLogScroll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.chkLogScroll.AutoSize = true;
this.chkLogScroll.Location = new System.Drawing.Point(740, 421);
this.chkLogScroll.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.chkLogScroll.Name = "chkLogScroll";
this.chkLogScroll.Size = new System.Drawing.Size(51, 22);
this.chkLogScroll.TabIndex = 2;
this.chkLogScroll.Text = "503";
this.chkLogScroll.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.chkLogScroll.UseVisualStyleBackColor = true;
//
// btnLogClear
//
this.btnLogClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btnLogClear.Location = new System.Drawing.Point(191, 415);
this.btnLogClear.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.btnLogClear.Name = "btnLogClear";
this.btnLogClear.Size = new System.Drawing.Size(166, 32);
this.btnLogClear.TabIndex = 1;
this.btnLogClear.Text = "502";
this.btnLogClear.UseVisualStyleBackColor = true;
this.btnLogClear.Click += new System.EventHandler(this.BtnLogClear_Click);
//
// btnLogCopy
//
this.btnLogCopy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btnLogCopy.Location = new System.Drawing.Point(4, 415);
this.btnLogCopy.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.btnLogCopy.Name = "btnLogCopy";
this.btnLogCopy.Size = new System.Drawing.Size(166, 32);
this.btnLogCopy.TabIndex = 0;
this.btnLogCopy.Text = "501";
this.btnLogCopy.UseVisualStyleBackColor = true;
this.btnLogCopy.Click += new System.EventHandler(this.BtnLogCopy_Click);
//
// LogForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(804, 451);
this.Controls.Add(this.pnlBase);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.MinimumSize = new System.Drawing.Size(640, 200);
this.Name = "LogForm";
this.Text = "Log";
this.pnlBase.ResumeLayout(false);
this.pnlBase.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel pnlBase;
private System.Windows.Forms.CheckBox chkLogScroll;
private System.Windows.Forms.Button btnLogClear;
private System.Windows.Forms.Button btnLogCopy;
private System.Windows.Forms.RichTextBox txtLogText;
}
}

139
Tab/LogForm.cs Normal file
View file

@ -0,0 +1,139 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace DutyContent.Tab
{
public partial class LogForm : Form, Interface.ISuppLocale, Interface.ISuppActPlugin
{
private static LogForm _self;
public static LogForm Self => _self;
public LogForm()
{
_self = this;
InitializeComponent();
}
public void PluginDeinitialize()
{
}
public void PluginInitialize()
{
chkLogScroll.Checked = true;
}
public void RefreshLocale()
{
}
public void UpdateUiLocale()
{
btnLogCopy.Text = Locale.Text(501);
btnLogClear.Text = Locale.Text(502);
chkLogScroll.Text = Locale.Text(503);
var logfont = new Font(DcConfig.Duty.LogFontFamily, DcConfig.Duty.LogFontSize, FontStyle.Regular);
txtLogText.Font = logfont;
}
private void BtnLogCopy_Click(object sender, EventArgs e)
{
try
{
if (txtLogText.SelectionLength != 0)
txtLogText.Copy();
else
{
txtLogText.SelectAll();
txtLogText.Copy();
txtLogText.SelectionStart = txtLogText.TextLength;
txtLogText.SelectionLength = 0;
}
}
catch (Exception ex)
{
Logger.Ex(ex, 35);
}
}
private void BtnLogClear_Click(object sender, EventArgs e)
{
try
{
txtLogText.Clear();
}
catch (Exception ex)
{
Logger.Ex(ex, 36);
}
}
private void InvokeLog(Color color, string mesg)
{
WorkerAct.Invoker(() =>
{
txtLogText.SelectionColor = color;
txtLogText.SelectionStart = txtLogText.TextLength;
txtLogText.SelectionLength = 0;
txtLogText.AppendText(mesg);
txtLogText.SelectionColor = txtLogText.ForeColor;
if (chkLogScroll.Checked)
ThirdParty.NativeMethods.ScrollToBottom(txtLogText);
});
}
//
public void WriteLog(Color color, string mesg, bool with_time = true)
{
if (txtLogText.IsDisposed || string.IsNullOrEmpty(mesg))
return;
string line;
if (!with_time)
line = mesg + Environment.NewLine;
else
{
var dt = DateTime.Now.ToString("HH:mm:ss");
line = $"[{dt}] {mesg}{Environment.NewLine}";
}
InvokeLog(color, line);
}
//
public void WriteLogSection(Color color, string section, string mesg, bool with_time = true)
{
if (txtLogText.IsDisposed || string.IsNullOrEmpty(mesg))
return;
string line;
if (!with_time)
line = $"[{section}] {mesg}{Environment.NewLine}";
else
{
var dt = DateTime.Now.ToString("HH:mm:ss");
line = $"[{dt}/{section}] {mesg}{Environment.NewLine}";
}
InvokeLog(color, line);
}
//
public Font LogFont
{
get { return txtLogText.Font; }
set { txtLogText.Font = value; }
}
}
}

120
Tab/LogForm.resx Normal file
View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

208
Tab/PingForm.Designer.cs generated
View file

@ -30,6 +30,10 @@ namespace DutyContent.Tab
private void InitializeComponent() private void InitializeComponent()
{ {
this.panel6 = new System.Windows.Forms.Panel(); this.panel6 = new System.Windows.Forms.Panel();
this.cboPingGraphType = new System.Windows.Forms.ComboBox();
this.lblPingGraphType = new System.Windows.Forms.Label();
this.lstPingAddress = new System.Windows.Forms.ListBox();
this.lblPingAddress = new System.Windows.Forms.Label();
this.cboPingDefAddr = new System.Windows.Forms.ComboBox(); this.cboPingDefAddr = new System.Windows.Forms.ComboBox();
this.lblPingDefAddr = new System.Windows.Forms.Label(); this.lblPingDefAddr = new System.Windows.Forms.Label();
this.pbxPingGraph = new System.Windows.Forms.PictureBox(); this.pbxPingGraph = new System.Windows.Forms.PictureBox();
@ -46,8 +50,7 @@ namespace DutyContent.Tab
this.lblPingColors = new System.Windows.Forms.Label(); this.lblPingColors = new System.Windows.Forms.Label();
this.chkUsePing = new System.Windows.Forms.CheckBox(); this.chkUsePing = new System.Windows.Forms.CheckBox();
this.panelDock = new System.Windows.Forms.Panel(); this.panelDock = new System.Windows.Forms.Panel();
this.lblPingAddress = new System.Windows.Forms.Label(); this.chkPingShowLoss = new System.Windows.Forms.CheckBox();
this.lstPingAddress = new System.Windows.Forms.ListBox();
this.panel6.SuspendLayout(); this.panel6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).BeginInit();
this.tlpnPingColors.SuspendLayout(); this.tlpnPingColors.SuspendLayout();
@ -60,6 +63,9 @@ namespace DutyContent.Tab
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.panel6.AutoScroll = true; this.panel6.AutoScroll = true;
this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel6.Controls.Add(this.chkPingShowLoss);
this.panel6.Controls.Add(this.cboPingGraphType);
this.panel6.Controls.Add(this.lblPingGraphType);
this.panel6.Controls.Add(this.lstPingAddress); this.panel6.Controls.Add(this.lstPingAddress);
this.panel6.Controls.Add(this.lblPingAddress); this.panel6.Controls.Add(this.lblPingAddress);
this.panel6.Controls.Add(this.cboPingDefAddr); this.panel6.Controls.Add(this.cboPingDefAddr);
@ -69,51 +75,107 @@ namespace DutyContent.Tab
this.panel6.Controls.Add(this.tlpnPingColors); this.panel6.Controls.Add(this.tlpnPingColors);
this.panel6.Controls.Add(this.lblPingColors); this.panel6.Controls.Add(this.lblPingColors);
this.panel6.Controls.Add(this.chkUsePing); this.panel6.Controls.Add(this.chkUsePing);
this.panel6.Location = new System.Drawing.Point(12, 12); this.panel6.Location = new System.Drawing.Point(0, 0);
this.panel6.Margin = new System.Windows.Forms.Padding(4);
this.panel6.Name = "panel6"; this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(776, 399); this.panel6.Size = new System.Drawing.Size(804, 377);
this.panel6.TabIndex = 2; this.panel6.TabIndex = 2;
// //
// cboPingGraphType
//
this.cboPingGraphType.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cboPingGraphType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPingGraphType.FormattingEnabled = true;
this.cboPingGraphType.Items.AddRange(new object[] {
"Linear",
"Curved"});
this.cboPingGraphType.Location = new System.Drawing.Point(529, 140);
this.cboPingGraphType.Margin = new System.Windows.Forms.Padding(4);
this.cboPingGraphType.Name = "cboPingGraphType";
this.cboPingGraphType.Size = new System.Drawing.Size(267, 26);
this.cboPingGraphType.TabIndex = 19;
this.cboPingGraphType.SelectedIndexChanged += new System.EventHandler(this.CboPingGraphType_SelectedIndexChanged);
//
// lblPingGraphType
//
this.lblPingGraphType.AutoSize = true;
this.lblPingGraphType.Location = new System.Drawing.Point(513, 118);
this.lblPingGraphType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingGraphType.Name = "lblPingGraphType";
this.lblPingGraphType.Size = new System.Drawing.Size(32, 18);
this.lblPingGraphType.TabIndex = 18;
this.lblPingGraphType.Text = "410";
//
// lstPingAddress
//
this.lstPingAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lstPingAddress.FormattingEnabled = true;
this.lstPingAddress.ItemHeight = 18;
this.lstPingAddress.Location = new System.Drawing.Point(160, 327);
this.lstPingAddress.Margin = new System.Windows.Forms.Padding(4);
this.lstPingAddress.Name = "lstPingAddress";
this.lstPingAddress.ScrollAlwaysVisible = true;
this.lstPingAddress.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstPingAddress.Size = new System.Drawing.Size(636, 40);
this.lstPingAddress.TabIndex = 17;
this.lstPingAddress.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.LstPingAddress_MouseDoubleClick);
//
// lblPingAddress
//
this.lblPingAddress.AutoSize = true;
this.lblPingAddress.Location = new System.Drawing.Point(34, 327);
this.lblPingAddress.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingAddress.Name = "lblPingAddress";
this.lblPingAddress.Size = new System.Drawing.Size(32, 18);
this.lblPingAddress.TabIndex = 16;
this.lblPingAddress.Text = "409";
//
// cboPingDefAddr // cboPingDefAddr
// //
this.cboPingDefAddr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.cboPingDefAddr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.cboPingDefAddr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboPingDefAddr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPingDefAddr.FormattingEnabled = true; this.cboPingDefAddr.FormattingEnabled = true;
this.cboPingDefAddr.Location = new System.Drawing.Point(518, 51); this.cboPingDefAddr.Location = new System.Drawing.Point(529, 78);
this.cboPingDefAddr.Margin = new System.Windows.Forms.Padding(4);
this.cboPingDefAddr.Name = "cboPingDefAddr"; this.cboPingDefAddr.Name = "cboPingDefAddr";
this.cboPingDefAddr.Size = new System.Drawing.Size(253, 21); this.cboPingDefAddr.Size = new System.Drawing.Size(267, 26);
this.cboPingDefAddr.TabIndex = 15; this.cboPingDefAddr.TabIndex = 15;
this.cboPingDefAddr.SelectedIndexChanged += new System.EventHandler(this.CboPingDefAddr_SelectedIndexChanged); this.cboPingDefAddr.SelectedIndexChanged += new System.EventHandler(this.CboPingDefAddr_SelectedIndexChanged);
// //
// lblPingDefAddr // lblPingDefAddr
// //
this.lblPingDefAddr.AutoSize = true; this.lblPingDefAddr.AutoSize = true;
this.lblPingDefAddr.Location = new System.Drawing.Point(515, 35); this.lblPingDefAddr.Location = new System.Drawing.Point(513, 58);
this.lblPingDefAddr.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingDefAddr.Name = "lblPingDefAddr"; this.lblPingDefAddr.Name = "lblPingDefAddr";
this.lblPingDefAddr.Size = new System.Drawing.Size(25, 13); this.lblPingDefAddr.Size = new System.Drawing.Size(32, 18);
this.lblPingDefAddr.TabIndex = 14; this.lblPingDefAddr.TabIndex = 14;
this.lblPingDefAddr.Text = "335"; this.lblPingDefAddr.Text = "408";
// //
// pbxPingGraph // pbxPingGraph
// //
this.pbxPingGraph.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.pbxPingGraph.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.pbxPingGraph.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pbxPingGraph.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pbxPingGraph.Location = new System.Drawing.Point(129, 108); this.pbxPingGraph.Location = new System.Drawing.Point(160, 174);
this.pbxPingGraph.Margin = new System.Windows.Forms.Padding(4);
this.pbxPingGraph.Name = "pbxPingGraph"; this.pbxPingGraph.Name = "pbxPingGraph";
this.pbxPingGraph.Size = new System.Drawing.Size(642, 186); this.pbxPingGraph.Size = new System.Drawing.Size(637, 145);
this.pbxPingGraph.TabIndex = 13; this.pbxPingGraph.TabIndex = 13;
this.pbxPingGraph.TabStop = false; this.pbxPingGraph.TabStop = false;
// //
// chkPingGraph // chkPingGraph
// //
this.chkPingGraph.AutoSize = true; this.chkPingGraph.AutoSize = true;
this.chkPingGraph.Location = new System.Drawing.Point(26, 108); this.chkPingGraph.Location = new System.Drawing.Point(37, 174);
this.chkPingGraph.Margin = new System.Windows.Forms.Padding(4);
this.chkPingGraph.Name = "chkPingGraph"; this.chkPingGraph.Name = "chkPingGraph";
this.chkPingGraph.Size = new System.Drawing.Size(44, 17); this.chkPingGraph.Size = new System.Drawing.Size(51, 22);
this.chkPingGraph.TabIndex = 12; this.chkPingGraph.TabIndex = 12;
this.chkPingGraph.Text = "334"; this.chkPingGraph.Text = "407";
this.chkPingGraph.UseVisualStyleBackColor = true; this.chkPingGraph.UseVisualStyleBackColor = true;
this.chkPingGraph.CheckedChanged += new System.EventHandler(this.ChkPingGraph_CheckedChanged); this.chkPingGraph.CheckedChanged += new System.EventHandler(this.ChkPingGraph_CheckedChanged);
// //
@ -132,33 +194,36 @@ namespace DutyContent.Tab
this.tlpnPingColors.Controls.Add(this.lblPingStat4, 3, 0); this.tlpnPingColors.Controls.Add(this.lblPingStat4, 3, 0);
this.tlpnPingColors.Controls.Add(this.btnPingColor1, 0, 1); this.tlpnPingColors.Controls.Add(this.btnPingColor1, 0, 1);
this.tlpnPingColors.Controls.Add(this.lblPingStat3, 2, 0); this.tlpnPingColors.Controls.Add(this.lblPingStat3, 2, 0);
this.tlpnPingColors.Location = new System.Drawing.Point(129, 35); this.tlpnPingColors.Location = new System.Drawing.Point(160, 58);
this.tlpnPingColors.Margin = new System.Windows.Forms.Padding(4);
this.tlpnPingColors.Name = "tlpnPingColors"; this.tlpnPingColors.Name = "tlpnPingColors";
this.tlpnPingColors.Padding = new System.Windows.Forms.Padding(3); this.tlpnPingColors.Padding = new System.Windows.Forms.Padding(4);
this.tlpnPingColors.RowCount = 2; this.tlpnPingColors.RowCount = 2;
this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F)); this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 36.53846F));
this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F)); this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 63.46154F));
this.tlpnPingColors.Size = new System.Drawing.Size(318, 62); this.tlpnPingColors.Size = new System.Drawing.Size(325, 60);
this.tlpnPingColors.TabIndex = 11; this.tlpnPingColors.TabIndex = 11;
// //
// lblPingStat1 // lblPingStat1
// //
this.lblPingStat1.AutoSize = true; this.lblPingStat1.AutoSize = true;
this.lblPingStat1.Dock = System.Windows.Forms.DockStyle.Fill; this.lblPingStat1.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat1.Location = new System.Drawing.Point(6, 3); this.lblPingStat1.Location = new System.Drawing.Point(8, 4);
this.lblPingStat1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingStat1.Name = "lblPingStat1"; this.lblPingStat1.Name = "lblPingStat1";
this.lblPingStat1.Size = new System.Drawing.Size(72, 22); this.lblPingStat1.Size = new System.Drawing.Size(71, 18);
this.lblPingStat1.TabIndex = 6; this.lblPingStat1.TabIndex = 6;
this.lblPingStat1.Text = "330"; this.lblPingStat1.Text = "403";
this.lblPingStat1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lblPingStat1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// btnPingColor4 // btnPingColor4
// //
this.btnPingColor4.BackColor = System.Drawing.Color.Plum; this.btnPingColor4.BackColor = System.Drawing.Color.Plum;
this.btnPingColor4.Dock = System.Windows.Forms.DockStyle.Fill; this.btnPingColor4.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor4.Location = new System.Drawing.Point(240, 28); this.btnPingColor4.Location = new System.Drawing.Point(245, 26);
this.btnPingColor4.Margin = new System.Windows.Forms.Padding(4);
this.btnPingColor4.Name = "btnPingColor4"; this.btnPingColor4.Name = "btnPingColor4";
this.btnPingColor4.Size = new System.Drawing.Size(72, 28); this.btnPingColor4.Size = new System.Drawing.Size(72, 26);
this.btnPingColor4.TabIndex = 8; this.btnPingColor4.TabIndex = 8;
this.btnPingColor4.UseVisualStyleBackColor = false; this.btnPingColor4.UseVisualStyleBackColor = false;
this.btnPingColor4.Click += new System.EventHandler(this.BtnPingColor4_Click); this.btnPingColor4.Click += new System.EventHandler(this.BtnPingColor4_Click);
@ -167,9 +232,10 @@ namespace DutyContent.Tab
// //
this.btnPingColor2.BackColor = System.Drawing.Color.Aqua; this.btnPingColor2.BackColor = System.Drawing.Color.Aqua;
this.btnPingColor2.Dock = System.Windows.Forms.DockStyle.Fill; this.btnPingColor2.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor2.Location = new System.Drawing.Point(84, 28); this.btnPingColor2.Location = new System.Drawing.Point(87, 26);
this.btnPingColor2.Margin = new System.Windows.Forms.Padding(4);
this.btnPingColor2.Name = "btnPingColor2"; this.btnPingColor2.Name = "btnPingColor2";
this.btnPingColor2.Size = new System.Drawing.Size(72, 28); this.btnPingColor2.Size = new System.Drawing.Size(71, 26);
this.btnPingColor2.TabIndex = 10; this.btnPingColor2.TabIndex = 10;
this.btnPingColor2.UseVisualStyleBackColor = false; this.btnPingColor2.UseVisualStyleBackColor = false;
this.btnPingColor2.Click += new System.EventHandler(this.BtnPingColor2_Click); this.btnPingColor2.Click += new System.EventHandler(this.BtnPingColor2_Click);
@ -178,9 +244,10 @@ namespace DutyContent.Tab
// //
this.btnPingColor3.BackColor = System.Drawing.Color.LawnGreen; this.btnPingColor3.BackColor = System.Drawing.Color.LawnGreen;
this.btnPingColor3.Dock = System.Windows.Forms.DockStyle.Fill; this.btnPingColor3.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor3.Location = new System.Drawing.Point(162, 28); this.btnPingColor3.Location = new System.Drawing.Point(166, 26);
this.btnPingColor3.Margin = new System.Windows.Forms.Padding(4);
this.btnPingColor3.Name = "btnPingColor3"; this.btnPingColor3.Name = "btnPingColor3";
this.btnPingColor3.Size = new System.Drawing.Size(72, 28); this.btnPingColor3.Size = new System.Drawing.Size(71, 26);
this.btnPingColor3.TabIndex = 9; this.btnPingColor3.TabIndex = 9;
this.btnPingColor3.UseVisualStyleBackColor = false; this.btnPingColor3.UseVisualStyleBackColor = false;
this.btnPingColor3.Click += new System.EventHandler(this.BtnPingColor3_Click); this.btnPingColor3.Click += new System.EventHandler(this.BtnPingColor3_Click);
@ -189,31 +256,34 @@ namespace DutyContent.Tab
// //
this.lblPingStat2.AutoSize = true; this.lblPingStat2.AutoSize = true;
this.lblPingStat2.Dock = System.Windows.Forms.DockStyle.Fill; this.lblPingStat2.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat2.Location = new System.Drawing.Point(84, 3); this.lblPingStat2.Location = new System.Drawing.Point(87, 4);
this.lblPingStat2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingStat2.Name = "lblPingStat2"; this.lblPingStat2.Name = "lblPingStat2";
this.lblPingStat2.Size = new System.Drawing.Size(72, 22); this.lblPingStat2.Size = new System.Drawing.Size(71, 18);
this.lblPingStat2.TabIndex = 5; this.lblPingStat2.TabIndex = 5;
this.lblPingStat2.Text = "331"; this.lblPingStat2.Text = "404";
this.lblPingStat2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lblPingStat2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// lblPingStat4 // lblPingStat4
// //
this.lblPingStat4.AutoSize = true; this.lblPingStat4.AutoSize = true;
this.lblPingStat4.Dock = System.Windows.Forms.DockStyle.Fill; this.lblPingStat4.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat4.Location = new System.Drawing.Point(240, 3); this.lblPingStat4.Location = new System.Drawing.Point(245, 4);
this.lblPingStat4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingStat4.Name = "lblPingStat4"; this.lblPingStat4.Name = "lblPingStat4";
this.lblPingStat4.Size = new System.Drawing.Size(72, 22); this.lblPingStat4.Size = new System.Drawing.Size(72, 18);
this.lblPingStat4.TabIndex = 3; this.lblPingStat4.TabIndex = 3;
this.lblPingStat4.Text = "333"; this.lblPingStat4.Text = "406";
this.lblPingStat4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lblPingStat4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// btnPingColor1 // btnPingColor1
// //
this.btnPingColor1.BackColor = System.Drawing.Color.RoyalBlue; this.btnPingColor1.BackColor = System.Drawing.Color.RoyalBlue;
this.btnPingColor1.Dock = System.Windows.Forms.DockStyle.Fill; this.btnPingColor1.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor1.Location = new System.Drawing.Point(6, 28); this.btnPingColor1.Location = new System.Drawing.Point(8, 26);
this.btnPingColor1.Margin = new System.Windows.Forms.Padding(4);
this.btnPingColor1.Name = "btnPingColor1"; this.btnPingColor1.Name = "btnPingColor1";
this.btnPingColor1.Size = new System.Drawing.Size(72, 28); this.btnPingColor1.Size = new System.Drawing.Size(71, 26);
this.btnPingColor1.TabIndex = 7; this.btnPingColor1.TabIndex = 7;
this.btnPingColor1.UseVisualStyleBackColor = false; this.btnPingColor1.UseVisualStyleBackColor = false;
this.btnPingColor1.Click += new System.EventHandler(this.BtnPingColor1_Click); this.btnPingColor1.Click += new System.EventHandler(this.BtnPingColor1_Click);
@ -222,31 +292,34 @@ namespace DutyContent.Tab
// //
this.lblPingStat3.AutoSize = true; this.lblPingStat3.AutoSize = true;
this.lblPingStat3.Dock = System.Windows.Forms.DockStyle.Fill; this.lblPingStat3.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat3.Location = new System.Drawing.Point(162, 3); this.lblPingStat3.Location = new System.Drawing.Point(166, 4);
this.lblPingStat3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingStat3.Name = "lblPingStat3"; this.lblPingStat3.Name = "lblPingStat3";
this.lblPingStat3.Size = new System.Drawing.Size(72, 22); this.lblPingStat3.Size = new System.Drawing.Size(71, 18);
this.lblPingStat3.TabIndex = 4; this.lblPingStat3.TabIndex = 4;
this.lblPingStat3.Text = "332"; this.lblPingStat3.Text = "405";
this.lblPingStat3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lblPingStat3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// lblPingColors // lblPingColors
// //
this.lblPingColors.AutoSize = true; this.lblPingColors.AutoSize = true;
this.lblPingColors.Location = new System.Drawing.Point(23, 35); this.lblPingColors.Location = new System.Drawing.Point(34, 58);
this.lblPingColors.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblPingColors.Name = "lblPingColors"; this.lblPingColors.Name = "lblPingColors";
this.lblPingColors.Size = new System.Drawing.Size(25, 13); this.lblPingColors.Size = new System.Drawing.Size(32, 18);
this.lblPingColors.TabIndex = 2; this.lblPingColors.TabIndex = 2;
this.lblPingColors.Text = "329"; this.lblPingColors.Text = "402";
// //
// chkUsePing // chkUsePing
// //
this.chkUsePing.AutoSize = true; this.chkUsePing.AutoSize = true;
this.chkUsePing.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkUsePing.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkUsePing.Location = new System.Drawing.Point(3, 3); this.chkUsePing.Location = new System.Drawing.Point(4, 4);
this.chkUsePing.Margin = new System.Windows.Forms.Padding(4);
this.chkUsePing.Name = "chkUsePing"; this.chkUsePing.Name = "chkUsePing";
this.chkUsePing.Size = new System.Drawing.Size(58, 24); this.chkUsePing.Size = new System.Drawing.Size(62, 28);
this.chkUsePing.TabIndex = 0; this.chkUsePing.TabIndex = 0;
this.chkUsePing.Text = "328"; this.chkUsePing.Text = "401";
this.chkUsePing.UseVisualStyleBackColor = true; this.chkUsePing.UseVisualStyleBackColor = true;
this.chkUsePing.CheckedChanged += new System.EventHandler(this.ChkUsePing_CheckedChanged); this.chkUsePing.CheckedChanged += new System.EventHandler(this.ChkUsePing_CheckedChanged);
// //
@ -256,39 +329,33 @@ namespace DutyContent.Tab
this.panelDock.Controls.Add(this.panel6); this.panelDock.Controls.Add(this.panel6);
this.panelDock.Dock = System.Windows.Forms.DockStyle.Fill; this.panelDock.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelDock.Location = new System.Drawing.Point(0, 0); this.panelDock.Location = new System.Drawing.Point(0, 0);
this.panelDock.Margin = new System.Windows.Forms.Padding(4);
this.panelDock.Name = "panelDock"; this.panelDock.Name = "panelDock";
this.panelDock.Size = new System.Drawing.Size(800, 450); this.panelDock.Size = new System.Drawing.Size(804, 381);
this.panelDock.TabIndex = 3; this.panelDock.TabIndex = 3;
// //
// lblPingAddress // chkPingShowLoss
// //
this.lblPingAddress.AutoSize = true; this.chkPingShowLoss.AutoSize = true;
this.lblPingAddress.Location = new System.Drawing.Point(23, 315); this.chkPingShowLoss.Location = new System.Drawing.Point(37, 140);
this.lblPingAddress.Name = "lblPingAddress"; this.chkPingShowLoss.Margin = new System.Windows.Forms.Padding(4);
this.lblPingAddress.Size = new System.Drawing.Size(25, 13); this.chkPingShowLoss.Name = "chkPingShowLoss";
this.lblPingAddress.TabIndex = 16; this.chkPingShowLoss.Size = new System.Drawing.Size(51, 22);
this.lblPingAddress.Text = "343"; this.chkPingShowLoss.TabIndex = 20;
// this.chkPingShowLoss.Text = "413";
// lstPingAddress this.chkPingShowLoss.UseVisualStyleBackColor = true;
// this.chkPingShowLoss.CheckedChanged += new System.EventHandler(this.ChkPingShowLoss_CheckedChanged);
this.lstPingAddress.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lstPingAddress.FormattingEnabled = true;
this.lstPingAddress.Location = new System.Drawing.Point(129, 309);
this.lstPingAddress.Name = "lstPingAddress";
this.lstPingAddress.ScrollAlwaysVisible = true;
this.lstPingAddress.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstPingAddress.Size = new System.Drawing.Size(642, 82);
this.lstPingAddress.TabIndex = 17;
// //
// PingForm // PingForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true; this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(800, 450); this.ClientSize = new System.Drawing.Size(804, 381);
this.Controls.Add(this.panelDock); this.Controls.Add(this.panelDock);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(4);
this.MinimumSize = new System.Drawing.Size(800, 39);
this.Name = "PingForm"; this.Name = "PingForm";
this.Text = "Ping"; this.Text = "Ping";
this.panel6.ResumeLayout(false); this.panel6.ResumeLayout(false);
@ -322,5 +389,8 @@ namespace DutyContent.Tab
private System.Windows.Forms.Panel panelDock; private System.Windows.Forms.Panel panelDock;
private System.Windows.Forms.Label lblPingAddress; private System.Windows.Forms.Label lblPingAddress;
private System.Windows.Forms.ListBox lstPingAddress; private System.Windows.Forms.ListBox lstPingAddress;
private System.Windows.Forms.ComboBox cboPingGraphType;
private System.Windows.Forms.Label lblPingGraphType;
private System.Windows.Forms.CheckBox chkPingShowLoss;
} }
} }

View file

@ -1,16 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO; using System.IO;
using System.Threading;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using DutyContent.Interface;
using System.Net; using System.Net;
namespace DutyContent.Tab namespace DutyContent.Tab
@ -23,10 +17,18 @@ namespace DutyContent.Tab
// //
private System.Timers.Timer _timer; private System.Timers.Timer _timer;
private long _last_ping; private long _last_ping;
private Color _color = Color.Transparent; private Color _color = Color.Transparent;
private Libre.PingGrapher _grpr; private Libre.PingGrapher _grpr;
private List<int> _kepts = new List<int> { 0, 0 }; private List<int> _kepts = new List<int> { 0, 0 };
//
private const int PingInterval = 5000;
private const int PingAmount = 5;
private const int PingTimeout = PingInterval / (PingAmount + 1);
//
public PingForm() public PingForm()
{ {
_self = this; _self = this;
@ -43,7 +45,9 @@ namespace DutyContent.Tab
btnPingColor2.BackColor = DcConfig.Duty.PingColors[1]; btnPingColor2.BackColor = DcConfig.Duty.PingColors[1];
btnPingColor3.BackColor = DcConfig.Duty.PingColors[2]; btnPingColor3.BackColor = DcConfig.Duty.PingColors[2];
btnPingColor4.BackColor = DcConfig.Duty.PingColors[3]; btnPingColor4.BackColor = DcConfig.Duty.PingColors[3];
chkPingShowLoss.Checked = DcConfig.Duty.PingShowLoss;
chkPingGraph.Checked = DcConfig.Duty.PingGraph; chkPingGraph.Checked = DcConfig.Duty.PingGraph;
cboPingGraphType.SelectedIndex = DcConfig.Duty.PingGraphType;
// //
try try
@ -67,12 +71,12 @@ namespace DutyContent.Tab
catch catch
{ {
cboPingDefAddr.Items.Clear(); cboPingDefAddr.Items.Clear();
cboPingDefAddr.Items.Add(MesgLog.Text(27)); cboPingDefAddr.Items.Add(Locale.Text(27));
cboPingDefAddr.SelectedIndex = 0; cboPingDefAddr.SelectedIndex = 0;
} }
// //
_timer = new System.Timers.Timer() { Interval = 5000 }; _timer = new System.Timers.Timer() { Interval = PingInterval };
_timer.Elapsed += (sender, e) => PingOnce(); _timer.Elapsed += (sender, e) => PingOnce();
if (DcConfig.Duty.UsePing) if (DcConfig.Duty.UsePing)
@ -95,15 +99,17 @@ namespace DutyContent.Tab
public void UpdateUiLocale() public void UpdateUiLocale()
{ {
chkUsePing.Text = MesgLog.Text(328); chkUsePing.Text = Locale.Text(401);
lblPingColors.Text = MesgLog.Text(329); lblPingColors.Text = Locale.Text(402);
lblPingStat1.Text = MesgLog.Text(330); lblPingStat1.Text = Locale.Text(403);
lblPingStat2.Text = MesgLog.Text(331); lblPingStat2.Text = Locale.Text(404);
lblPingStat3.Text = MesgLog.Text(332); lblPingStat3.Text = Locale.Text(405);
lblPingStat4.Text = MesgLog.Text(333); lblPingStat4.Text = Locale.Text(406);
chkPingGraph.Text = MesgLog.Text(334); chkPingGraph.Text = Locale.Text(407);
lblPingDefAddr.Text = MesgLog.Text(335); lblPingDefAddr.Text = Locale.Text(408);
lblPingAddress.Text = MesgLog.Text(343); lblPingAddress.Text = Locale.Text(409);
lblPingGraphType.Text = Locale.Text(410);
chkPingShowLoss.Text = Locale.Text(413);
} }
private void SaveConfig(int interval = 5000) private void SaveConfig(int interval = 5000)
@ -173,6 +179,16 @@ namespace DutyContent.Tab
PingColorWorker(3, btnPingColor4); PingColorWorker(3, btnPingColor4);
} }
private void ChkPingShowLoss_CheckedChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
DcConfig.Duty.PingShowLoss = chkPingShowLoss.Checked;
SaveConfig();
}
private void ChkPingGraph_CheckedChanged(object sender, EventArgs e) private void ChkPingGraph_CheckedChanged(object sender, EventArgs e)
{ {
if (!DcConfig.PluginEnable) if (!DcConfig.PluginEnable)
@ -208,6 +224,34 @@ namespace DutyContent.Tab
SaveConfig(); SaveConfig();
} }
private void CboPingGraphType_SelectedIndexChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
if (cboPingGraphType.SelectedIndex>=0)
{
DcConfig.Duty.PingGraphType = cboPingGraphType.SelectedIndex;
SaveConfig();
}
}
private void LstPingAddress_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lstPingAddress.SelectedIndices.Count != 1)
return;
try
{
var s = lstPingAddress.SelectedItem as string;
Clipboard.SetText(s);
}
catch (Exception ex)
{
Logger.Ex(ex, 35);
}
}
// //
private void PingOnce(bool check_plugin_enable = true) private void PingOnce(bool check_plugin_enable = true)
{ {
@ -229,7 +273,7 @@ namespace DutyContent.Tab
{ {
addrs.Add(row.RemoteAddress.ToString()); addrs.Add(row.RemoteAddress.ToString());
var (r, l) = CalcPing(row.RemoteAddress); var (r, l) = CalcPing(row.RemoteAddress, PingTimeout, PingAmount);
if (rtt < r) if (rtt < r)
rtt = r; rtt = r;
@ -256,7 +300,7 @@ namespace DutyContent.Tab
return; return;
} }
var (r, l) = CalcPing(defip); var (r, l) = CalcPing(defip, PingTimeout, PingAmount);
if (rtt < r) if (rtt < r)
rtt = r; rtt = r;
@ -268,7 +312,7 @@ namespace DutyContent.Tab
//MesgLog.L("Ping: {0}, {1}%", rtt, loss); //MesgLog.L("Ping: {0}, {1}%", rtt, loss);
Color color; Color color;
if (loss > 0.0 || rtt > 150) if (rtt > 150)
color = DcConfig.Duty.PingColors[3]; color = DcConfig.Duty.PingColors[3];
else if (rtt > 100) else if (rtt > 100)
color = DcConfig.Duty.PingColors[2]; color = DcConfig.Duty.PingColors[2];
@ -277,6 +321,9 @@ namespace DutyContent.Tab
else else
color = DcConfig.Duty.PingColors[0]; color = DcConfig.Duty.PingColors[0];
if (!DcConfig.Duty.PingShowLoss)
loss = 0.0;
if (_last_ping != rtt || loss > 0.0 || _color != color) if (_last_ping != rtt || loss > 0.0 || _color != color)
{ {
_last_ping = rtt; _last_ping = rtt;
@ -293,7 +340,7 @@ namespace DutyContent.Tab
_kepts.RemoveAt(0); _kepts.RemoveAt(0);
_grpr.Enter(); _grpr.Enter();
_grpr.DrawValues(_kepts); _grpr.DrawValues(_kepts, (Libre.PingGrapher.DrawType)DcConfig.Duty.PingGraphType);
WorkerAct.Invoker(() => _grpr.Leave()); WorkerAct.Invoker(() => _grpr.Leave());
} }
@ -305,17 +352,17 @@ namespace DutyContent.Tab
} }
else else
{ {
bool havetoupdate = false; bool have_to_update_addrs = false;
if (lstPingAddress.Items.Count == 0) if (lstPingAddress.Items.Count == 0)
havetoupdate = true; have_to_update_addrs = true;
else else
{ {
var i = lstPingAddress.Items[0] as string; var i = lstPingAddress.Items[0] as string;
havetoupdate = !addrs.Contains(i); have_to_update_addrs = !addrs.Contains(i);
} }
if (havetoupdate) if (have_to_update_addrs)
{ {
WorkerAct.Invoker(() => WorkerAct.Invoker(() =>
{ {
@ -333,10 +380,9 @@ namespace DutyContent.Tab
private static readonly PingOptions _ping_options = new PingOptions { DontFragment = true }; private static readonly PingOptions _ping_options = new PingOptions { DontFragment = true };
private static readonly byte[] _ping_buffers = Encoding.ASCII.GetBytes("01234567890123456789012345678901"); private static readonly byte[] _ping_buffers = Encoding.ASCII.GetBytes("01234567890123456789012345678901");
private static readonly int _ping_timerout = 120;
// //
private (long Rtt, double Loss) CalcPing(IPAddress host, int amount = 6) private (long Rtt, double Loss) CalcPing(IPAddress host, int timeout, int amount)
{ {
var ps = new Ping(); var ps = new Ping();
@ -345,16 +391,32 @@ namespace DutyContent.Tab
for (var i = 0; i < amount; i++) for (var i = 0; i < amount; i++)
{ {
PingReply pr = ps.Send(host, _ping_timerout, _ping_buffers, _ping_options); try
{
PingReply pr = ps.Send(host, timeout, _ping_buffers, _ping_options);
if (pr.Status != IPStatus.Success) if (pr.Status != IPStatus.Success)
{
failed++;
if (DcConfig.DebugEnable)
{
Logger.WriteCategory(Color.Red, "Ping", "failed. status: {0} / duration: {1} / at: {2}/{3}", pr.Status, timeout, i + 1, amount);
}
}
if (rtt < pr.RoundtripTime)
rtt = pr.RoundtripTime;
}
catch
{
failed++; failed++;
}
if (rtt < pr.RoundtripTime) System.Threading.Thread.Sleep(1);
rtt = pr.RoundtripTime;
} }
double loss = (failed / amount) * 100; double loss = failed == 0 ? 0 : (double)failed / amount * 100.0;
return (rtt, loss); return (rtt, loss);
} }

View file

@ -43,7 +43,8 @@ namespace DutyContent.Tab
// //
this.lblTitle.AutoSize = true; this.lblTitle.AutoSize = true;
this.lblTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblTitle.Location = new System.Drawing.Point(46, 0); this.lblTitle.Location = new System.Drawing.Point(69, 0);
this.lblTitle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblTitle.Name = "lblTitle"; this.lblTitle.Name = "lblTitle";
this.lblTitle.Size = new System.Drawing.Size(62, 31); this.lblTitle.Size = new System.Drawing.Size(62, 31);
this.lblTitle.TabIndex = 0; this.lblTitle.TabIndex = 0;
@ -52,9 +53,10 @@ namespace DutyContent.Tab
// lblMesg // lblMesg
// //
this.lblMesg.AutoSize = true; this.lblMesg.AutoSize = true;
this.lblMesg.Location = new System.Drawing.Point(3, 50); this.lblMesg.Location = new System.Drawing.Point(4, 69);
this.lblMesg.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblMesg.Name = "lblMesg"; this.lblMesg.Name = "lblMesg";
this.lblMesg.Size = new System.Drawing.Size(25, 13); this.lblMesg.Size = new System.Drawing.Size(32, 18);
this.lblMesg.TabIndex = 1; this.lblMesg.TabIndex = 1;
this.lblMesg.Text = "208"; this.lblMesg.Text = "208";
// //
@ -62,7 +64,8 @@ namespace DutyContent.Tab
// //
this.lblLink.AutoSize = true; this.lblLink.AutoSize = true;
this.lblLink.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblLink.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblLink.Location = new System.Drawing.Point(3, 87); this.lblLink.Location = new System.Drawing.Point(4, 120);
this.lblLink.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lblLink.Name = "lblLink"; this.lblLink.Name = "lblLink";
this.lblLink.Size = new System.Drawing.Size(32, 18); this.lblLink.Size = new System.Drawing.Size(32, 18);
this.lblLink.TabIndex = 2; this.lblLink.TabIndex = 2;
@ -76,12 +79,13 @@ namespace DutyContent.Tab
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.txtBody.BackColor = System.Drawing.Color.OldLace; this.txtBody.BackColor = System.Drawing.Color.OldLace;
this.txtBody.Location = new System.Drawing.Point(16, 108); this.txtBody.Location = new System.Drawing.Point(24, 150);
this.txtBody.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.txtBody.Multiline = true; this.txtBody.Multiline = true;
this.txtBody.Name = "txtBody"; this.txtBody.Name = "txtBody";
this.txtBody.ReadOnly = true; this.txtBody.ReadOnly = true;
this.txtBody.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.txtBody.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.txtBody.Size = new System.Drawing.Size(464, 296); this.txtBody.Size = new System.Drawing.Size(584, 283);
this.txtBody.TabIndex = 3; this.txtBody.TabIndex = 3;
// //
// panel1 // panel1
@ -95,9 +99,10 @@ namespace DutyContent.Tab
this.panel1.Controls.Add(this.txtBody); this.panel1.Controls.Add(this.txtBody);
this.panel1.Controls.Add(this.lblMesg); this.panel1.Controls.Add(this.lblMesg);
this.panel1.Controls.Add(this.lblLink); this.panel1.Controls.Add(this.lblLink);
this.panel1.Location = new System.Drawing.Point(12, 12); this.panel1.Location = new System.Drawing.Point(4, 4);
this.panel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(776, 426); this.panel1.Size = new System.Drawing.Size(796, 443);
this.panel1.TabIndex = 4; this.panel1.TabIndex = 4;
// //
// panelBase // panelBase
@ -106,17 +111,20 @@ namespace DutyContent.Tab
this.panelBase.Controls.Add(this.panel1); this.panelBase.Controls.Add(this.panel1);
this.panelBase.Dock = System.Windows.Forms.DockStyle.Fill; this.panelBase.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelBase.Location = new System.Drawing.Point(0, 0); this.panelBase.Location = new System.Drawing.Point(0, 0);
this.panelBase.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panelBase.Name = "panelBase"; this.panelBase.Name = "panelBase";
this.panelBase.Size = new System.Drawing.Size(800, 450); this.panelBase.Size = new System.Drawing.Size(804, 451);
this.panelBase.TabIndex = 5; this.panelBase.TabIndex = 5;
// //
// UpdateNotifyForm // UpdateNotifyForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true; this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(800, 450); this.ClientSize = new System.Drawing.Size(804, 451);
this.Controls.Add(this.panelBase); this.Controls.Add(this.panelBase);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "UpdateNotifyForm"; this.Name = "UpdateNotifyForm";
this.Text = "Update"; this.Text = "Update";
this.panel1.ResumeLayout(false); this.panel1.ResumeLayout(false);

View file

@ -46,9 +46,9 @@ namespace DutyContent.Tab
public void UpdateUiLocale() public void UpdateUiLocale()
{ {
lblTitle.Text = MesgLog.Text(207, DcConfig.PluginTag, _newtag); lblTitle.Text = Locale.Text(207, DcConfig.PluginTag, _newtag);
lblMesg.Text = MesgLog.Text(208); lblMesg.Text = Locale.Text(208);
lblLink.Text = MesgLog.Text(209); lblLink.Text = Locale.Text(209);
} }
private void LblLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void LblLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

199
ThirdParty/EXComboBox.cs vendored Normal file
View file

@ -0,0 +1,199 @@
// https://www.codeproject.com/Articles/13006/Extended-ListView
using System.Windows.Forms;
using System.Drawing;
using System.Collections;
namespace DutyContent.ThirdParty
{
class EXComboBox : ComboBox
{
private Brush _highlightbrush; //color of highlighted items
public EXComboBox()
{
_highlightbrush = SystemBrushes.Highlight;
DrawMode = DrawMode.OwnerDrawFixed;
DrawItem += new DrawItemEventHandler(SelfDrawItem);
}
public Brush MyHighlightBrush
{
get { return _highlightbrush; }
set { _highlightbrush = value; }
}
private void SelfDrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
e.DrawBackground();
if ((e.State & DrawItemState.Selected) != 0)
{
e.Graphics.FillRectangle(_highlightbrush, e.Bounds);
}
EXItem item = (EXItem)this.Items[e.Index];
Rectangle bounds = e.Bounds;
int x = bounds.X + 2;
if (item.GetType() == typeof(EXImageItem))
{
EXImageItem imgitem = (EXImageItem)item;
if (imgitem.MyImage != null)
{
Image img = imgitem.MyImage;
int y = bounds.Y + ((int)(bounds.Height / 2)) - ((int)(img.Height / 2)) + 1;
e.Graphics.DrawImage(img, x, y, img.Width, img.Height);
x += img.Width + 2;
}
}
else if (item.GetType() == typeof(EXMultipleImagesItem))
{
EXMultipleImagesItem imgitem = (EXMultipleImagesItem)item;
if (imgitem.MyImages != null)
{
for (int i = 0; i < imgitem.MyImages.Count; i++)
{
Image img = (Image)imgitem.MyImages[i];
int y = bounds.Y + ((int)(bounds.Height / 2)) - ((int)(img.Height / 2)) + 1;
e.Graphics.DrawImage(img, x, y, img.Width, img.Height);
x += img.Width + 2;
}
}
}
int fonty = bounds.Y + ((int)(bounds.Height / 2)) - ((int)(e.Font.Height / 2));
e.Graphics.DrawString(item.Text, e.Font, new SolidBrush(e.ForeColor), x, fonty);
e.DrawFocusRectangle();
}
public class EXItem
{
private string _text = "";
private string _value = "";
public EXItem()
{
}
public EXItem(string text)
{
_text = text;
}
public string Text
{
get { return _text; }
set { _text = value; }
}
public string MyValue
{
get { return _value; }
set { _value = value; }
}
public override string ToString()
{
return _text;
}
}
public class EXImageItem : EXItem
{
private Image _image;
public EXImageItem()
{
}
public EXImageItem(string text)
{
this.Text = text;
}
public EXImageItem(Image image)
{
_image = image;
}
public EXImageItem(string text, Image image)
{
this.Text = text;
_image = image;
}
public EXImageItem(Image image, string value)
{
_image = image;
this.MyValue = value;
}
public EXImageItem(string text, Image image, string value)
{
this.Text = text;
_image = image;
this.MyValue = value;
}
public Image MyImage
{
get { return _image; }
set { _image = value; }
}
}
public class EXMultipleImagesItem : EXItem
{
private ArrayList _images;
public EXMultipleImagesItem()
{
}
public EXMultipleImagesItem(string text)
{
this.Text = text;
}
public EXMultipleImagesItem(ArrayList images)
{
_images = images;
}
public EXMultipleImagesItem(string text, ArrayList images)
{
this.Text = text;
_images = images;
}
public EXMultipleImagesItem(ArrayList images, string value)
{
_images = images;
this.MyValue = value;
}
public EXMultipleImagesItem(string text, ArrayList images, string value)
{
this.Text = text;
_images = images;
this.MyValue = value;
}
public ArrayList MyImages
{
get { return _images; }
set { _images = value; }
}
}
}
}

1116
ThirdParty/EXListView.cs vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -33,8 +33,8 @@ namespace DutyContent
} }
catch (Exception ex) catch (Exception ex)
{ {
MesgLog.Ex(ex, 30); Logger.Ex(ex, 30);
MesgLog.L("URL: {0}", url); Logger.L("URL: {0}", url);
} }
return null; return null;

16
ThirdParty/WinFormSupp.cs vendored Normal file
View file

@ -0,0 +1,16 @@
using System.Reflection;
using System.Windows.Forms;
namespace DutyContent.ThirdParty
{
static class WinFormSupp
{
public static void DoubleBuffered(Control control, bool enabled)
{
var prop = control.GetType().GetProperty(
"DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
prop.SetValue(control, enabled, null);
}
}
}

View file

@ -28,7 +28,7 @@ namespace DutyContent
} }
catch (Exception ex) catch (Exception ex)
{ {
MesgLog.Ex(ex, 31); Logger.Ex(ex, 31);
} }
}); });
} }
@ -44,7 +44,7 @@ namespace DutyContent
} }
catch (Exception ex) catch (Exception ex)
{ {
MesgLog.Ex(ex, 32); Logger.Ex(ex, 32);
return null; return null;
} }