• R/O
  • SSH
  • HTTPS

customtool: 提交


Commit MetaInfo

修订版6 (tree)
时间2014-03-23 00:28:23
作者hogepiyo

Log Message

(empty log message)

更改概述

差异

--- TSOSorter/Source/TextResource.Designer.cs (revision 5)
+++ TSOSorter/Source/TextResource.Designer.cs (revision 6)
@@ -871,6 +871,15 @@
871871 }
872872
873873 /// <summary>
874+ /// 対象となるTAHファイルが存在しません。 に類似しているローカライズされた文字列を検索します。
875+ /// </summary>
876+ public static string NoFileInFileView {
877+ get {
878+ return ResourceManager.GetString("NoFileInFileView", resourceCulture);
879+ }
880+ }
881+
882+ /// <summary>
874883 /// 何もしない に類似しているローカライズされた文字列を検索します。
875884 /// </summary>
876885 public static string Nothing {
--- TSOSorter/Source/MainForm.Designer.cs (revision 5)
+++ TSOSorter/Source/MainForm.Designer.cs (revision 6)
@@ -59,6 +59,8 @@
5959 this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
6060 this.timer1 = new System.Windows.Forms.Timer(this.components);
6161 this.toolTipBlockExt = new System.Windows.Forms.ToolTip(this.components);
62+ this.buttonPrev = new System.Windows.Forms.Button();
63+ this.buttonNext = new System.Windows.Forms.Button();
6264 this.menuStrip1.SuspendLayout();
6365 this.splitContainerAll.Panel1.SuspendLayout();
6466 this.splitContainerAll.Panel2.SuspendLayout();
@@ -152,7 +154,7 @@
152154 // オプションToolStripMenuItem
153155 //
154156 this.オプションToolStripMenuItem.Name = "オプションToolStripMenuItem";
155- this.オプションToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
157+ this.オプションToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
156158 this.オプションToolStripMenuItem.Text = "オプション...";
157159 this.オプションToolStripMenuItem.Click += new System.EventHandler(this.OptionsToolStripMenuItem_Click);
158160 //
@@ -225,6 +227,8 @@
225227 //
226228 // splitContainerTop.Panel1
227229 //
230+ this.splitContainerTop.Panel1.Controls.Add(this.buttonNext);
231+ this.splitContainerTop.Panel1.Controls.Add(this.buttonPrev);
228232 this.splitContainerTop.Panel1.Controls.Add(this.checkBoxBlockExtChange);
229233 this.splitContainerTop.Panel1.Controls.Add(this.comboBoxPartsType);
230234 this.splitContainerTop.Panel1.Controls.Add(this.checkBoxRecursive);
@@ -243,7 +247,7 @@
243247 // checkBoxBlockExtChange
244248 //
245249 this.checkBoxBlockExtChange.AutoSize = true;
246- this.checkBoxBlockExtChange.Location = new System.Drawing.Point(9, 68);
250+ this.checkBoxBlockExtChange.Location = new System.Drawing.Point(2, 77);
247251 this.checkBoxBlockExtChange.Name = "checkBoxBlockExtChange";
248252 this.checkBoxBlockExtChange.Size = new System.Drawing.Size(117, 16);
249253 this.checkBoxBlockExtChange.TabIndex = 8;
@@ -296,7 +300,7 @@
296300 // checkBoxRecursive
297301 //
298302 this.checkBoxRecursive.AutoSize = true;
299- this.checkBoxRecursive.Location = new System.Drawing.Point(9, 3);
303+ this.checkBoxRecursive.Location = new System.Drawing.Point(22, 47);
300304 this.checkBoxRecursive.Name = "checkBoxRecursive";
301305 this.checkBoxRecursive.Size = new System.Drawing.Size(123, 16);
302306 this.checkBoxRecursive.TabIndex = 0;
@@ -328,7 +332,7 @@
328332 // checkBoxAtTAH
329333 //
330334 this.checkBoxAtTAH.AutoSize = true;
331- this.checkBoxAtTAH.Location = new System.Drawing.Point(9, 25);
335+ this.checkBoxAtTAH.Location = new System.Drawing.Point(2, 59);
332336 this.checkBoxAtTAH.Name = "checkBoxAtTAH";
333337 this.checkBoxAtTAH.Size = new System.Drawing.Size(81, 16);
334338 this.checkBoxAtTAH.TabIndex = 5;
@@ -418,6 +422,26 @@
418422 this.timer1.Enabled = true;
419423 this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
420424 //
425+ // buttonPrev
426+ //
427+ this.buttonPrev.Location = new System.Drawing.Point(3, 3);
428+ this.buttonPrev.Name = "buttonPrev";
429+ this.buttonPrev.Size = new System.Drawing.Size(75, 23);
430+ this.buttonPrev.TabIndex = 9;
431+ this.buttonPrev.Text = "前の00番";
432+ this.buttonPrev.UseVisualStyleBackColor = true;
433+ this.buttonPrev.Click += new System.EventHandler(this.buttonPrev_Click);
434+ //
435+ // buttonNext
436+ //
437+ this.buttonNext.Location = new System.Drawing.Point(96, 3);
438+ this.buttonNext.Name = "buttonNext";
439+ this.buttonNext.Size = new System.Drawing.Size(75, 23);
440+ this.buttonNext.TabIndex = 10;
441+ this.buttonNext.Text = "次の00番";
442+ this.buttonNext.UseVisualStyleBackColor = true;
443+ this.buttonNext.Click += new System.EventHandler(this.buttonNext_Click);
444+ //
421445 // MainForm
422446 //
423447 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -487,6 +511,8 @@
487511 private System.Windows.Forms.CheckBox checkBoxBlockExtChange;
488512 private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCheckExt;
489513 private System.Windows.Forms.ToolTip toolTipBlockExt;
514+ private System.Windows.Forms.Button buttonPrev;
515+ private System.Windows.Forms.Button buttonNext;
490516 }
491517 }
492518
--- TSOSorter/Source/MainForm.cs (revision 5)
+++ TSOSorter/Source/MainForm.cs (revision 6)
@@ -54,6 +54,14 @@
5454
5555 // ブロック処理
5656 doBlockExtChange();
57+
58+ // 存在したら選択する
59+ if (FileViewer.DataGridView.Rows.Count > 0)
60+ {
61+ FileViewer.DataGridView.ClearSelection();
62+ FileViewer.DataGridView.Rows[0].Cells[0].Selected = true;
63+ FileViewer.doAfterSelectRow(0);
64+ }
5765 }
5866
5967 /** ツリーボックスのクリア
@@ -553,7 +561,296 @@
553561
554562 }
555563
564+ /** TAH内ファイルで、正しい00番のファイルかどうか
565+ * */
566+ public bool isValidZeroFileInTah(string strRelPath, string strPartType)
567+ {
568+ if (Path.GetExtension(strRelPath).ToLower() != ".tbn")
569+ {
570+ // skip
571+ return false;
572+ }
573+ // フォルダパス削除
574+ string strOnlyFileName = Path.GetFileName(strRelPath);
575+ // 種別確認
576+ // 種別が異なる
577+ if (strOnlyFileName.Substring(9, 1) != strPartType)
578+ {
579+ return false;
580+ }
556581
582+ try
583+ {
584+ // if 接尾辞が00以外...
585+ if( strOnlyFileName.Substring(10, 2) != "00") {
586+ return false;
587+ }
588+ }
589+ catch (Exception ex)
590+ {
591+ // チェック失敗
592+ Debug.Write(ex.Message);
593+ }
594+ return true;
595+ }
596+
597+ /** エントリーの中を、指定したインデックスからスタートして検索する
598+ * 見つかった場合選択状態にする
599+ * TODO 選択は外でやった方が良いかも
600+ * @retval true 見つかった
601+ * false 見つからなかった
602+ * */
603+ private bool selectPrevTah(int nStartIndex, int nEndIndex, int nStep, List<ArcsTahFilesEntry> entries, string strPartType,
604+ int nFileViewIndex)
605+ {
606+ // TAHファイル内の情報を逆順に走査
607+ for (int i = nStartIndex; nStep > 0 ? ( i <= nEndIndex) : (i >= nEndIndex); i += nStep)
608+ {
609+
610+ string strRelFilePath = entries[i].path;//TAHViewer.DataGridView.Rows[i].Cells[(int)TAHViewer.ColumnType.FILE_NAME].Value as string;
611+
612+ // validチェック
613+ if (!isValidZeroFileInTah(strRelFilePath, strPartType))
614+ {
615+ continue;
616+ }
617+
618+ // FileViewer選択
619+ FileViewer.DataGridView.Rows[nFileViewIndex].Cells[0].Selected = true;
620+ // 指定行までスクロール
621+ FileViewer.DataGridView.FirstDisplayedScrollingRowIndex = nFileViewIndex;
622+
623+ // tah viewerをセットアップ
624+ FileViewer.doAfterSelectRow(nFileViewIndex);
625+
626+ // TAHに情報が出ると思うので、存在すれば選択する
627+ if (TAHViewer.DataGridView.Rows.Count > i)
628+ {
629+ TAHViewer.DataGridView.ClearSelection();
630+ TAHViewer.DataGridView.Rows[i].Cells[0].Selected = true;
631+ // 指定行までスクロール
632+ TAHViewer.DataGridView.FirstDisplayedScrollingRowIndex = i;
633+ }
634+ return true;
635+ }
636+ return false;
637+ }
638+ /** 指定したFileViewer表の行から上を走査する
639+ * TAH内のファイルは、TAHViewerの下から順に走査。
640+ * 今のところ、一周回った走査はしない
641+ * @param[in] nEndRowIndex 走査の終端。このインデックス自体も含むので注意
642+ * @retval true 見つかった
643+ * */
644+ private bool selectPrevZero( int nStartRowIndex, int nEndRowIndex, int nStep)
645+ {
646+/* if (nStartRowIndex < 0)
647+ {
648+ if (nStep > 0)
649+ {
650+ Debug.WriteLine("selectPrevZero: Under bounds");
651+ return false;
652+ }
653+ else
654+ {
655+ nStartRowIndex = FileViewer.DataGridView.Rows.Count - 1;
656+ }
657+ }
658+ else if (nStartRowIndex >= FileViewer.DataGridView.Rows.Count)
659+ {
660+ if (nStep < 0)
661+ {
662+ Debug.WriteLine("selectPrevZero: Over bounds");
663+ return false;
664+ }
665+ else
666+ {
667+ nStartRowIndex = 0;
668+ }
669+ }*/
670+
671+ // パーツタイプ文字列
672+ string strPartType = getCategoryStringFromComboBoxPartsType();
673+ FileDatabase filedb = TDCGExplorer.FileDB;
674+ ArcsDatabase arcsdb = TDCGExplorer.ArcsDB;
675+ // ファイルを最後から順に見ていく
676+ for (int f = nStartRowIndex; (nStep > 0) ? (f <= nEndRowIndex) : (f >= 0); f += nStep)
677+ {
678+ //
679+ FileEntry fentry = filedb.getFileEntry(
680+ int.Parse( FileViewer.DataGridView.Rows[f].Cells[(int)FileViewer.ColumnType.FILEROWID].Value.ToString() ));
681+ if (fentry == null)
682+ {
683+ continue;
684+ }
685+ // 最後を選択する
686+ // FileViewer.DataGridView.Rows[FileViewer.DataGridView.Rows.Count - 1].Cells[0].Selected = true;
687+
688+ // TAHファイル情報のうち、最後の00番を選択する
689+
690+ // TAHファイル情報取得
691+ ArcsTahEntry tahentry = arcsdb.GetTah(fentry.m_strPath);
692+
693+ // TAHファイル内のものを取得
694+ List<ArcsTahFilesEntry> entries = arcsdb.GetTahFilesPath(tahentry.id);
695+
696+ int MAX_FILES_IN_TAH = entries.Count;
697+ // 逆順走査の場合、一番下から検索する
698+ if (nStep < 0 && selectPrevTah(MAX_FILES_IN_TAH - 1, 0, nStep, entries, strPartType, f))
699+ {
700+ // 見つかった
701+ return true;
702+ }
703+ else if (nStep > 0 && selectPrevTah(0, MAX_FILES_IN_TAH - 1, nStep, entries, strPartType, f))
704+ { // 下方向へ走査の場合、一番上から検索する
705+ return true;
706+ }
707+ }
708+ return false;
709+ }
710+
711+
712+ private void commonStepZero(int nStep)
713+ {
714+ // 選択しているFileView検出
715+ // ファイルビューに何も無い
716+ if (FileViewer.DataGridView.Rows.Count <= 0)
717+ {
718+ TDCGExplorer.SetToolTips(TextResource.NoFileInFileView);
719+ return;
720+ }
721+
722+ string strPartType = getCategoryStringFromComboBoxPartsType();
723+ FileDatabase filedb = TDCGExplorer.FileDB;
724+ ArcsDatabase arcsdb = TDCGExplorer.ArcsDB;
725+
726+ int MAX_FILES = FileViewer.DataGridView.Rows.Count;
727+ // if 選択行が空=未選択...
728+ if (FileViewer.DataGridView.SelectedRows.Count <= 0)
729+ {
730+
731+ // nStep==-1 :最後のファイルから走査する
732+ // nStep==1 :最初のファイルから走査する
733+ selectPrevZero(nStep > 0 ? 0 : (MAX_FILES - 1), nStep > 0 ? (MAX_FILES - 1) : 0, nStep);
734+ }
735+ else
736+ { // 選択状態である
737+ // 選択行を取得
738+ int nSelectedRowIndex = FileViewer.DataGridView.SelectedRows[0].Index;
739+
740+ // TAHファイル内で選択されたものをチェック
741+ // 選択されていない
742+ if (TAHViewer.DataGridView.SelectedRows.Count <= 0)
743+ {
744+ // Step分次から走査
745+ int nStartRowIndex = nSelectedRowIndex + nStep;
746+ int nEndRowIndex = nStep > 0 ? (MAX_FILES - 1) : 0;
747+ if (nStartRowIndex < 0)
748+ {
749+ // 一番下から0まで
750+ nStartRowIndex = MAX_FILES - 1;
751+ }
752+ else if (nStartRowIndex >= MAX_FILES)
753+ {
754+ // 一番上からMAX_FILES-1まで
755+ nStartRowIndex = 0;
756+ }
757+ // 開始位置はStep分ずらした箇所から。
758+ selectPrevZero(nSelectedRowIndex + nStep, nStep > 0 ? (nSelectedRowIndex - 1) : 0, nStep);
759+ }
760+ else
761+ {
762+ // 選択しているTAH内ファイル
763+ // TAH内順番インデックス
764+ int nSelectedIndexInTah = int.Parse(
765+ TAHViewer.DataGridView.SelectedRows[0].Cells[(int)TAHViewer.ColumnType.ID].Value.ToString());
766+
767+ // そこから上方向に走査
768+ FileEntry fentry = filedb.getFileEntry(
769+ int.Parse(
770+ FileViewer.DataGridView.SelectedRows[0].Cells[(int)FileViewer.ColumnType.FILEROWID].Value.ToString()));
771+ ArcsTahEntry tahentry = arcsdb.GetTah(fentry.m_strPath);
772+ List<ArcsTahFilesEntry> entries = arcsdb.GetTahFilesPath(tahentry.id);
773+
774+ int MAX_FILES_IN_TAH = TAHViewer.DataGridView.Rows.Count; // TAHファイル内一覧の行数
775+
776+ // TAHファイル内一覧にて、TAHViewerで選択した行からStepずらしたところから走査
777+ if (!selectPrevTah(nSelectedIndexInTah + nStep, nStep > 0 ? (MAX_FILES_IN_TAH - 1) : 0, nStep, entries, strPartType, nSelectedRowIndex))
778+ { //
779+ // 前/次のTAHファイルを走査していく
780+ selectPrevZero(nSelectedRowIndex + nStep, nStep > 0 ? (MAX_FILES - 1) : 0, nStep);
781+
782+ }
783+ }
784+ }
785+ }
786+ /** 前へボタン
787+ */
788+ private void buttonPrev_Click(object sender, EventArgs e)
789+ {
790+ commonStepZero(-1);
791+/* // 選択しているFileView検出
792+ // ファイルビューに何も無い
793+ if( FileViewer.DataGridView.Rows.Count <= 0 ) {
794+ TDCGExplorer.SetToolTips( TextResource.NoFileInFileView);
795+ return;
796+ }
797+
798+ string strPartType = getCategoryStringFromComboBoxPartsType();
799+ FileDatabase filedb = TDCGExplorer.FileDB;
800+ ArcsDatabase arcsdb = TDCGExplorer.ArcsDB;
801+
802+ // if 選択行が空=未選択...
803+ if (FileViewer.DataGridView.SelectedRows.Count <= 0)
804+ {
805+ int MAX_FILES = FileViewer.DataGridView.Rows.Count;
806+ // 最後のファイルから走査する
807+ selectPrevZero(MAX_FILES - 1, 0, -1);
808+ }
809+ else
810+ { // 選択状態である
811+ // 選択行を取得
812+ int nSelectedRowIndex = FileViewer.DataGridView.SelectedRows[0].Index;
813+
814+ // TAHファイル内で選択されたものをチェック
815+ // 選択されていない
816+ if (TAHViewer.DataGridView.SelectedRows.Count <= 0)
817+ {
818+ // 前方向に走査する
819+ // 開始位置は一つ上の位置から
820+ selectPrevZero(nSelectedRowIndex - 1, 0, -1);
821+ }
822+ else
823+ {
824+ // 選択しているTAH内ファイル
825+ // TAH内順番インデックス
826+ int nSelectedIndexInTah = int.Parse(
827+ TAHViewer.DataGridView.SelectedRows[0].Cells[(int)TAHViewer.ColumnType.ID].Value.ToString() );
828+
829+ // そこから上方向に走査
830+ FileEntry fentry = filedb.getFileEntry(
831+ int.Parse(
832+ FileViewer.DataGridView.SelectedRows[0].Cells[(int)FileViewer.ColumnType.FILEROWID].Value.ToString() ));
833+ ArcsTahEntry tahentry = arcsdb.GetTah( fentry.m_strPath );
834+ List<ArcsTahFilesEntry> entries = arcsdb.GetTahFilesPath(tahentry.id);
835+
836+ // 前のTAH内ファイルを選択
837+ if (!selectPrevTah(nSelectedIndexInTah - 1, 0, -1, entries, strPartType, nSelectedRowIndex))
838+ {
839+ // 前のTAHファイルを走査していく
840+ selectPrevZero(nSelectedRowIndex - 1, 0 ,-1);
841+
842+ }
843+ }
844+ }*/
845+ }
846+ /** 次へボタン
847+ * */
848+ private void buttonNext_Click(object sender, EventArgs e)
849+ {
850+ commonStepZero(1);
851+ }
852+
853+
557854 }
558855
559856 }
--- TSOSorter/Source/TAHViewer.cs (revision 5)
+++ TSOSorter/Source/TAHViewer.cs (revision 6)
@@ -23,10 +23,22 @@
2323 private ContextMenuStrip contextMenuStrip1;
2424 private System.ComponentModel.IContainer components;
2525 private DataGridView dataGridView1;
26-
26+ public DataGridView DataGridView
27+ {
28+ get { return dataGridView1; }
29+ }
2730 // private string m_strTahDBPath; // 作業用DB
2831 private GenericTahInfo info; // TAH情報
2932
33+ public enum ColumnType
34+ {
35+ ID,
36+ FILE_NAME,
37+ FILE_TYPE,
38+ HASH_CODE,
39+ FILE_SIZE,
40+ CATEGORY,
41+ }
3042 /** コンストラクタ
3143 * */
3244 public TAHViewer()
Show on old repository browser