changeset 50:638e1ad05cae

small changes.
author pyon@macmini
date Fri, 24 Apr 2020 22:22:12 +0900
parents 8384ca56f1b4
children 4e14902379da
files src/kaigo/horori/Readme.txt src/kaigo/horori/horori.fbp src/kaigo/horori/searcher/image/space.tif src/kaigo/horori/searcher/include/searcher.h src/kaigo/horori/searcher/include/utils.h src/kaigo/horori/searcher/server/make_freebsd.bat src/kaigo/horori/searcher/server/passwd src/kaigo/horori/searcher/src/searcher.cpp src/kaigo/horori/searcher/src/utils.cpp
diffstat 9 files changed, 443 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/src/kaigo/horori/Readme.txt	Thu Apr 23 22:54:58 2020 +0900
+++ b/src/kaigo/horori/Readme.txt	Fri Apr 24 22:22:12 2020 +0900
@@ -21,12 +21,13 @@
   * merger.exe
 	通称:マージャ
 	機能:審査会資料を作成するためのツール
-	   主治医名や被保険者番号等をマスク処理しA3サイズに割付する
+	   主治医名や被保険者番号等をマスク処理を行い、A3用紙に割付する枠組みを提供する
 
   * searcher.exe
 	通称:サーチャー!
 	機能:マークシートや意見書を閲覧・印刷するツール
-	   一括で複数の利用者の最新のマークシートなどを印刷できる機能もある
+	   一括で複数の利用者の最新のマークシートなどを印刷できる機能や
+	   Cドライブのフォルダやサーバ上のDBを表示させる機能もある
 
   ※ それぞれのプログラム用に設定ファイル(.conf)が用意されているが、通常変更する必要はない
      削除してはいけない
@@ -49,8 +50,5 @@
 = ファイル構成
 =-----------------
 
-  * hhsdb.csv
-	被保険者の情報が入っている
-
   * Readme.txt
 	このファイル
--- a/src/kaigo/horori/horori.fbp	Thu Apr 23 22:54:58 2020 +0900
+++ b/src/kaigo/horori/horori.fbp	Fri Apr 24 22:22:12 2020 +0900
@@ -3170,7 +3170,7 @@
                 </object>
             </object>
         </object>
-        <object class="Frame" expanded="1">
+        <object class="Frame" expanded="0">
             <property name="aui_managed">0</property>
             <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
             <property name="bg">217,217,217</property>
@@ -3198,7 +3198,7 @@
             <property name="window_style">wxTAB_TRAVERSAL</property>
             <property name="xrc_skip_sizer">1</property>
             <event name="OnClose">OnClose</event>
-            <object class="wxGridBagSizer" expanded="1">
+            <object class="wxGridBagSizer" expanded="0">
                 <property name="empty_cell_size"></property>
                 <property name="flexible_direction">wxBOTH</property>
                 <property name="growablecols"></property>
@@ -3209,14 +3209,14 @@
                 <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
                 <property name="permission">none</property>
                 <property name="vgap">0</property>
-                <object class="gbsizeritem" expanded="1">
+                <object class="gbsizeritem" expanded="0">
                     <property name="border">5</property>
                     <property name="colspan">1</property>
                     <property name="column">0</property>
                     <property name="flag">wxEXPAND | wxALL</property>
                     <property name="row">0</property>
                     <property name="rowspan">11</property>
-                    <object class="wxNotebook" expanded="1">
+                    <object class="wxNotebook" expanded="0">
                         <property name="BottomDockable">1</property>
                         <property name="LeftDockable">1</property>
                         <property name="RightDockable">1</property>
@@ -3891,7 +3891,7 @@
                         <object class="notebookpage" expanded="0">
                             <property name="bitmap"></property>
                             <property name="label">繝。繝ウ繝繝翫Φ繧ケ</property>
-                            <property name="select">1</property>
+                            <property name="select">0</property>
                             <object class="wxPanel" expanded="0">
                                 <property name="BottomDockable">1</property>
                                 <property name="LeftDockable">1</property>
@@ -5608,6 +5608,278 @@
                                 </object>
                             </object>
                         </object>
+                        <object class="notebookpage" expanded="0">
+                            <property name="bitmap"></property>
+                            <property name="label">險ュ螳</property>
+                            <property name="select">1</property>
+                            <object class="wxPanel" expanded="0">
+                                <property name="BottomDockable">1</property>
+                                <property name="LeftDockable">1</property>
+                                <property name="RightDockable">1</property>
+                                <property name="TopDockable">1</property>
+                                <property name="aui_layer"></property>
+                                <property name="aui_name"></property>
+                                <property name="aui_position"></property>
+                                <property name="aui_row"></property>
+                                <property name="best_size"></property>
+                                <property name="bg"></property>
+                                <property name="caption"></property>
+                                <property name="caption_visible">1</property>
+                                <property name="center_pane">0</property>
+                                <property name="close_button">1</property>
+                                <property name="context_help"></property>
+                                <property name="context_menu">1</property>
+                                <property name="default_pane">0</property>
+                                <property name="dock">Dock</property>
+                                <property name="dock_fixed">0</property>
+                                <property name="docking">Left</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="floatable">1</property>
+                                <property name="font"></property>
+                                <property name="gripper">0</property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="max_size"></property>
+                                <property name="maximize_button">0</property>
+                                <property name="maximum_size"></property>
+                                <property name="min_size"></property>
+                                <property name="minimize_button">0</property>
+                                <property name="minimum_size"></property>
+                                <property name="moveable">1</property>
+                                <property name="name">m_panelSetup</property>
+                                <property name="pane_border">1</property>
+                                <property name="pane_position"></property>
+                                <property name="pane_size"></property>
+                                <property name="permission">protected</property>
+                                <property name="pin_button">1</property>
+                                <property name="pos"></property>
+                                <property name="resize">Resizable</property>
+                                <property name="show">1</property>
+                                <property name="size"></property>
+                                <property name="subclass">; ; forward_declare</property>
+                                <property name="toolbar_pane">0</property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <object class="wxBoxSizer" expanded="0">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizerSetup</property>
+                                    <property name="orient">wxHORIZONTAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="0">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxDataViewListCtrl" expanded="0">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="context_menu">1</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_dataViewListCtrlPw</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_VERT_RULES</property>
+                                            <property name="subclass">; ; forward_declare</property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <object class="dataViewListColumn" expanded="0">
+                                                <property name="align">wxALIGN_LEFT</property>
+                                                <property name="ellipsize"></property>
+                                                <property name="flags">wxDATAVIEW_COL_RESIZABLE</property>
+                                                <property name="label">ID</property>
+                                                <property name="mode">wxDATAVIEW_CELL_EDITABLE</property>
+                                                <property name="name">m_dataViewListColumnUId</property>
+                                                <property name="permission">protected</property>
+                                                <property name="type">Text</property>
+                                                <property name="width">-1</property>
+                                            </object>
+                                            <object class="dataViewListColumn" expanded="0">
+                                                <property name="align">wxALIGN_LEFT</property>
+                                                <property name="ellipsize"></property>
+                                                <property name="flags">wxDATAVIEW_COL_RESIZABLE</property>
+                                                <property name="label">Name</property>
+                                                <property name="mode">wxDATAVIEW_CELL_EDITABLE</property>
+                                                <property name="name">m_dataViewListColumnUName</property>
+                                                <property name="permission">protected</property>
+                                                <property name="type">Text</property>
+                                                <property name="width">-1</property>
+                                            </object>
+                                            <object class="dataViewListColumn" expanded="0">
+                                                <property name="align">wxALIGN_LEFT</property>
+                                                <property name="ellipsize"></property>
+                                                <property name="flags">wxDATAVIEW_COL_RESIZABLE</property>
+                                                <property name="label">Group</property>
+                                                <property name="mode">wxDATAVIEW_CELL_EDITABLE</property>
+                                                <property name="name">m_dataViewListColumnUGroup</property>
+                                                <property name="permission">protected</property>
+                                                <property name="type">Text</property>
+                                                <property name="width">-1</property>
+                                            </object>
+                                            <object class="dataViewListColumn" expanded="0">
+                                                <property name="align">wxALIGN_LEFT</property>
+                                                <property name="ellipsize"></property>
+                                                <property name="flags">wxDATAVIEW_COL_RESIZABLE</property>
+                                                <property name="label">Password</property>
+                                                <property name="mode">wxDATAVIEW_CELL_EDITABLE</property>
+                                                <property name="name">m_dataViewListColumnUPw</property>
+                                                <property name="permission">protected</property>
+                                                <property name="type">Text</property>
+                                                <property name="width">-1</property>
+                                            </object>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="0">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="0">
+                                            <property name="BottomDockable">1</property>
+                                            <property name="LeftDockable">1</property>
+                                            <property name="RightDockable">1</property>
+                                            <property name="TopDockable">1</property>
+                                            <property name="aui_layer"></property>
+                                            <property name="aui_name"></property>
+                                            <property name="aui_position"></property>
+                                            <property name="aui_row"></property>
+                                            <property name="best_size"></property>
+                                            <property name="bg"></property>
+                                            <property name="caption"></property>
+                                            <property name="caption_visible">1</property>
+                                            <property name="center_pane">0</property>
+                                            <property name="close_button">1</property>
+                                            <property name="context_help"></property>
+                                            <property name="context_menu">1</property>
+                                            <property name="default_pane">0</property>
+                                            <property name="dock">Dock</property>
+                                            <property name="dock_fixed">0</property>
+                                            <property name="docking">Left</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="floatable">1</property>
+                                            <property name="font"></property>
+                                            <property name="gripper">0</property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="max_size"></property>
+                                            <property name="maximize_button">0</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength"></property>
+                                            <property name="min_size"></property>
+                                            <property name="minimize_button">0</property>
+                                            <property name="minimum_size"></property>
+                                            <property name="moveable">1</property>
+                                            <property name="name">m_textCtrlUPassword</property>
+                                            <property name="pane_border">1</property>
+                                            <property name="pane_position"></property>
+                                            <property name="pane_size"></property>
+                                            <property name="permission">protected</property>
+                                            <property name="pin_button">1</property>
+                                            <property name="pos"></property>
+                                            <property name="resize">Resizable</property>
+                                            <property name="show">1</property>
+                                            <property name="size"></property>
+                                            <property name="style">wxTE_PASSWORD|wxTE_PROCESS_ENTER</property>
+                                            <property name="subclass">; ; forward_declare</property>
+                                            <property name="toolbar_pane">0</property>
+                                            <property name="tooltip"></property>
+                                            <property name="validator_data_type"></property>
+                                            <property name="validator_style">wxFILTER_NONE</property>
+                                            <property name="validator_type">wxDefaultValidator</property>
+                                            <property name="validator_variable"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnTextEnter">OnUPassword</event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="0">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="0">
+                                            <property name="BottomDockable">1</property>
+                                            <property name="LeftDockable">1</property>
+                                            <property name="RightDockable">1</property>
+                                            <property name="TopDockable">1</property>
+                                            <property name="aui_layer"></property>
+                                            <property name="aui_name"></property>
+                                            <property name="aui_position"></property>
+                                            <property name="aui_row"></property>
+                                            <property name="best_size"></property>
+                                            <property name="bg"></property>
+                                            <property name="bitmap"></property>
+                                            <property name="caption"></property>
+                                            <property name="caption_visible">1</property>
+                                            <property name="center_pane">0</property>
+                                            <property name="close_button">1</property>
+                                            <property name="context_help"></property>
+                                            <property name="context_menu">1</property>
+                                            <property name="current"></property>
+                                            <property name="default">0</property>
+                                            <property name="default_pane">0</property>
+                                            <property name="disabled"></property>
+                                            <property name="dock">Dock</property>
+                                            <property name="dock_fixed">0</property>
+                                            <property name="docking">Left</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="floatable">1</property>
+                                            <property name="focus"></property>
+                                            <property name="font"></property>
+                                            <property name="gripper">0</property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">菫晏ュ</property>
+                                            <property name="margins"></property>
+                                            <property name="markup">0</property>
+                                            <property name="max_size"></property>
+                                            <property name="maximize_button">0</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="min_size"></property>
+                                            <property name="minimize_button">0</property>
+                                            <property name="minimum_size"></property>
+                                            <property name="moveable">1</property>
+                                            <property name="name">m_buttonPw</property>
+                                            <property name="pane_border">1</property>
+                                            <property name="pane_position"></property>
+                                            <property name="pane_size"></property>
+                                            <property name="permission">protected</property>
+                                            <property name="pin_button">1</property>
+                                            <property name="pos"></property>
+                                            <property name="position"></property>
+                                            <property name="pressed"></property>
+                                            <property name="resize">Resizable</property>
+                                            <property name="show">1</property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass">; ; forward_declare</property>
+                                            <property name="toolbar_pane">0</property>
+                                            <property name="tooltip"></property>
+                                            <property name="validator_data_type"></property>
+                                            <property name="validator_style">wxFILTER_NONE</property>
+                                            <property name="validator_type">wxDefaultValidator</property>
+                                            <property name="validator_variable"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnSavePw</event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
                     </object>
                 </object>
                 <object class="gbsizeritem" expanded="0">
Binary file src/kaigo/horori/searcher/image/space.tif has changed
--- a/src/kaigo/horori/searcher/include/searcher.h	Thu Apr 23 22:54:58 2020 +0900
+++ b/src/kaigo/horori/searcher/include/searcher.h	Fri Apr 24 22:22:12 2020 +0900
@@ -1,5 +1,5 @@
 // Filename   : searcher.h
-// Last Change: 2020-04-23 譛ィ 16:23:44.
+// Last Change: 2020-04-24 驥 09:50:28.
 //
 #pragma once
 
@@ -110,7 +110,7 @@
 		wxDataViewColumn*   m_dataViewListColumnProgress;
 		wxDataViewColumn*   m_dataViewListColumnDummy;
 
-		// Index
+		// Mainte(Index)
 		wxStaticText* m_staticTextIndex;
 		wxStaticText* m_staticTextDrive;
 		wxStaticText* m_staticTextYear;
@@ -155,6 +155,16 @@
 		wxButton*         m_buttonRegImg;
 		wxTextCtrl*       m_textCtrlLastIndex;
 
+		// Setup
+		wxPanel*            m_panelSetup;
+		wxDataViewListCtrl* m_dataViewListCtrlPw;
+		wxDataViewColumn*   m_dataViewListColumnUId;
+		wxDataViewColumn*   m_dataViewListColumnUName;
+		wxDataViewColumn*   m_dataViewListColumnUGroup;
+		wxDataViewColumn*   m_dataViewListColumnUPw;
+		wxTextCtrl*         m_textCtrlUPassword;
+		wxButton*           m_buttonPw;
+
 		// Right-Pane
 		wxSearchCtrl*       m_searchCtrl;
 		wxButton*           m_buttonHist;
@@ -196,6 +206,9 @@
 		virtual void OnUploadHhsDB(wxCommandEvent& event);
 		virtual void OnUploadImage(wxCommandEvent& event);
 
+		virtual void OnUPassword(wxCommandEvent& event);
+		virtual void OnSavePw(wxCommandEvent& event);
+
 		virtual void OnChar(wxKeyEvent& event);
 		virtual void OnHist(wxCommandEvent& event);
 		virtual void OnSelectAnyListItem(wxDataViewEvent& event);
@@ -212,6 +225,8 @@
 		void LoadBookImage(MyStaticBitmap& mysb, wxString file);
 		void LoadBookImages();
 		void ReadCSV();
+		void LoadPasswd(bool show);
+		void SavePasswd();
 		void RemoveTemp();
 		void MaskImage1();
 
--- a/src/kaigo/horori/searcher/include/utils.h	Thu Apr 23 22:54:58 2020 +0900
+++ b/src/kaigo/horori/searcher/include/utils.h	Fri Apr 24 22:22:12 2020 +0900
@@ -1,5 +1,5 @@
 // Filename   : utils.h
-// Last Change: 2020-04-21 火 09:30:58.
+// Last Change: 2020-04-24 金 14:33:33.
 //
 #pragma once
 
@@ -9,4 +9,5 @@
 wxRect ZeroRect();
 bool TarDir(wxString dir, wxString tarfile);
 bool Gzip(wxString infile, wxString gzfile);
+wxString XoR(wxString s, int x);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kaigo/horori/searcher/server/make_freebsd.bat	Fri Apr 24 22:22:12 2020 +0900
@@ -0,0 +1,6 @@
+set GOARCH=amd64
+set GOOS=freebsd
+
+go build searcher.go
+
+set GOOS=windows
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kaigo/horori/searcher/server/passwd	Fri Apr 24 22:22:12 2020 +0900
@@ -0,0 +1,30 @@
+user/taro:螻ア逕ー縲螟ェ驛:1+1
+user/hanako:譫励闃ア蟄:1*1
+chosa/miho:蟆冗伐蠍九鄒守ゥ:]x##&%'%
+chosa/makiko:貂豌エ蟾昴逵樒エ蟄:]x##&#'%
+chosa/satoko:闍・蝓弱驥悟ュ:]x##%"'%
+chosa/michiru:菴舌譛ィ縲貅:]x##% '%
+chosa/noriko:菴占陸縲豕募ュ:]x##&''%
+chosa/akiko:闍・逡代譏主ュ:]x##$ '%
+chosa/yukiko:豁ヲ阯、縲繧縺榊ュ:]x##%.'%
+chosa/junko:譁ー逕ー縲豺ウ蟄:]x##$&'%
+chosa/mayumi:螟ァ荳翫逵溽罰鄒:]x##$''%
+chosa/wakako:髟キ豐シ縲豁悟・亥ュ:]x##%''%
+chosa/mariko:蝣蟾昴逵溽炊蟄:]x##%&'%
+chosa/yukari:邏ー莠輔繧縺九j:]x##&.'%
+chosa/etsuko:螟ゥ驕薙謔ヲ蟄:]x##%#'%
+chosa/suzuka:荳画オヲ縲驤エ鬥:]x##%$'%
+chosa/natsumi:鬮俶ゥ九螂域エ・鄒:]x##%/'%
+chosa/koko:貂。霎コ縲豬ゥ蟄:]x##$"'%
+chosa/chusaku:阯、蜴溘蠢閾」:]x##%"'&
+chosa/mutsumi:荳画オヲ縲逹ヲ鄒:]x##%.'&
+chosa/kotomi:蟾晁カ翫逅エ鄒:]x##$''&
+kyufu/nobuko:譚セ譛ャ縲莨ク蟄:]x##&!'&
+kyufu/yuta:譬玲棊縲逾仙、ェ:]x##%/'&
+nintei/natsuki:縺ェ縺」縺。繧繧 笘笘笘笘笘笘笘:]x##$%'&
+nintei/hiroto:隘ソ譚代陬穂ココ 笘:]x##&#'&
+nintei/mayumi:縺セ繧縺ソ 笘:]x##$#'&
+nintei/keiya:莨願陸縲蝨ュ蜩 笘:]x###%'&
+nintei/miyuki:蜷画搗縲鄒守罰蝟 笘:]x####'&
+nintei/momoko:譽ョ蜈縲逋セ蟄 笘:]x##%!'%
+star/jojo:謇ソ螟ェ驛 笘繝:]x#####"
--- a/src/kaigo/horori/searcher/src/searcher.cpp	Thu Apr 23 22:54:58 2020 +0900
+++ b/src/kaigo/horori/searcher/src/searcher.cpp	Fri Apr 24 22:22:12 2020 +0900
@@ -1,5 +1,5 @@
 // Filename   : searcher.cpp
-// Last Change: 2020-04-23 譛ィ 17:22:18.
+// Last Change: 2020-04-24 驥 15:08:22.
 //
 #include <wx/msgdlg.h>
 #include <wx/dir.h>
@@ -10,6 +10,9 @@
 #include "utils.h"
 #include "net.h"
 
+#define PWPREFIX "Jo"
+#define PWXORN 23
+
 /** MyStaticBitmap **/
 MyStaticBitmap::MyStaticBitmap(wxScrolledWindow *parent, wxWindowID id, const wxBitmap &label, const wxPoint &pos, const wxSize &size, long style, const wxString &name)
     : wxStaticBitmap(parent, id, label, pos, size, style, name)
@@ -177,6 +180,9 @@
 	m_buttonRegHhs->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnUploadHhsDB), NULL, this);
 	m_buttonRegImg->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnUploadImage), NULL, this);
 
+	m_textCtrlUPassword->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(SearchFrame::OnUPassword), NULL, this);
+	m_buttonPw->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnSavePw), NULL, this);
+
 	m_searchCtrl->Connect(wxEVT_CHAR, wxKeyEventHandler(SearchFrame::OnChar), NULL, this);
 	m_buttonHist->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnHist), NULL, this);
 	m_dataViewListCtrlAny->Connect(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler(SearchFrame::OnSelectAnyListItem), NULL, this);
@@ -210,6 +216,9 @@
 	m_buttonRegHhs->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnUploadHhsDB), NULL, this);
 	m_buttonRegImg->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnUploadImage), NULL, this);
 
+	m_textCtrlUPassword->Disconnect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(SearchFrame::OnUPassword), NULL, this);
+	m_buttonPw->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnSavePw), NULL, this);
+
 	m_searchCtrl->Disconnect(wxEVT_CHAR, wxKeyEventHandler(SearchFrame::OnChar), NULL, this);
 	m_buttonHist->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SearchFrame::OnHist), NULL, this);
 	m_dataViewListCtrlAny->Disconnect(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler(SearchFrame::OnSelectAnyListItem), NULL, this);
@@ -287,15 +296,34 @@
 
 void SearchFrame::OnPageChanged(wxNotebookEvent& event)
 {
-	if (!m_usergroup.StartsWith(wxT("star"))) {
-		int n = event.GetSelection();
-		if (n != 5 && n != 6) return;
+	int n = event.GetSelection();
+	int m = event.GetOldSelection();
+
+	// setup
+	if (!m_usergroup.StartsWith(wxT("star")) && n == 7) {
+		m_notebook->ChangeSelection(m);
+		wxMessageBox(wxT("you can't view this page."));
+		return;
+	}
+	if (n == 7) LoadPasswd(false);
 
-		int m = event.GetOldSelection();
+	// batch-print & maintenance
+	if (!m_usergroup.StartsWith(wxT("nintei")) && !(m_usergroup.StartsWith(wxT("star")))) {
+		if (n != 5 && n != 6) return;
 		m_notebook->ChangeSelection(m);
+		wxMessageBox(wxT("you can't view this page."));
+		return;
+	}
+}
 
-		wxMessageBox(wxT("you can't view this page."));
-	}
+void SearchFrame::OnRead(wxCommandEvent& WXUNUSED(event))
+{
+	ReadCSV();
+}
+
+void SearchFrame::OnFile(wxFileDirPickerEvent& WXUNUSED(event))
+{
+	ReadCSV();
 }
 
 void SearchFrame::OnIdxYearChoice(wxCommandEvent& WXUNUSED(evnet))
@@ -610,14 +638,14 @@
 	wxMessageBox(wxT("upload done."));
 }
 
-void SearchFrame::OnRead(wxCommandEvent& WXUNUSED(event))
+void SearchFrame::OnUPassword(wxCommandEvent& WXUNUSED(event))
 {
-	ReadCSV();
+	wxMessageBox("upw");
 }
 
-void SearchFrame::OnFile(wxFileDirPickerEvent& WXUNUSED(event))
+void SearchFrame::OnSavePw(wxCommandEvent& WXUNUSED(event))
 {
-	ReadCSV();
+	wxMessageBox("save pw");
 }
 
 void SearchFrame::OnHist(wxCommandEvent& WXUNUSED(event))
@@ -740,6 +768,9 @@
 			wxString cpy = m_workdir + wxFILE_SEP_PATH + wxT("0");
 			wxCopyFile(org, cpy, true);	// backup for mask
 
+			wxDateTime now = wxDateTime::Now();
+			wxString nowstr = now.Format(wxT("%Y/%m/%d %H:%M"), wxDateTime::GMT9).c_str();
+
 			wxString html;
 			html = wxT("<html><body>\n");
 
@@ -748,7 +779,8 @@
 				if (m_checkBoxMask->IsChecked()) MaskImage1();
 				for (int i = 0; i < 5; i++) {
 					html += wxT("<img src=\"") + wxString::Format(wxT("%s/%d"), m_workdir, i + 1) + imgsz + wxT("/>");
-					html += wxT("<div align=right><font size=-2><u>") + m_searchCtrl->GetValue() + wxT("</u></font></div>");
+					html += wxT("<div align=right><font size=-2><u>") + m_searchCtrl->GetValue();
+					html += wxT( "@" ) + m_usergroup + wxT( "#" ) + nowstr + wxT("</u></font></div>");
 					if (i == 2 && m_checkBoxBoth->IsChecked()) {
 						html += wxT("<img src=\"./image/space.tif\"") + imgsz + wxT("/>");
 					}
@@ -782,6 +814,7 @@
 		Close();
 		return;
 	}
+	wxString x = XoR(PWPREFIX + m_textCtrlPasswd->GetValue(), PWXORN);
 
 	m_user = wxEmptyString;
 	m_notebook->ChangeSelection(0);
@@ -790,7 +823,7 @@
 	wxString buf = HttpGetText(m_addr, m_port, url);
 	wxArrayString idpw = wxSplit(buf, ':', '\\');
 	for (int i = 2; i < idpw.GetCount(); i += 3) {
-		if (idpw[i].IsSameAs(m_textCtrlPasswd->GetValue())) {
+		if (idpw[i].IsSameAs(x)) {
 			m_user = idpw[i - 1];
 			m_usergroup = idpw[i - 2];
 		}
@@ -1006,6 +1039,28 @@
 	bSizerMainte->Fit(m_panelMainte);
 	m_notebook->AddPage(m_panelMainte, wxT("繝。繝ウ繝繝翫Φ繧ケ"), false);
 
+	m_panelSetup = new wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+	wxBoxSizer* bSizerSetup = new wxBoxSizer(wxHORIZONTAL);
+
+	m_dataViewListCtrlPw = new wxDataViewListCtrl(m_panelSetup, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_VERT_RULES);
+	m_dataViewListColumnUId    = m_dataViewListCtrlPw->AppendTextColumn(wxT("  ID"),       wxDATAVIEW_CELL_EDITABLE,  80, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE);
+	m_dataViewListColumnUName  = m_dataViewListCtrlPw->AppendTextColumn(wxT("  Name"),     wxDATAVIEW_CELL_EDITABLE, 180, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE);
+	m_dataViewListColumnUGroup = m_dataViewListCtrlPw->AppendTextColumn(wxT("  Group"),    wxDATAVIEW_CELL_EDITABLE,  80, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE);
+	m_dataViewListColumnUPw    = m_dataViewListCtrlPw->AppendTextColumn(wxT("  Password"), wxDATAVIEW_CELL_EDITABLE,  -1, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE);
+	bSizerSetup->Add(m_dataViewListCtrlPw, 1, wxEXPAND|wxALL, 5);
+
+	m_textCtrlUPassword = new wxTextCtrl(m_panelSetup, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD|wxTE_PROCESS_ENTER);
+	bSizerSetup->Add(m_textCtrlUPassword, 0, wxALL, 5);
+
+	m_buttonPw = new wxButton(m_panelSetup, wxID_ANY, wxT("菫晏ュ"), wxDefaultPosition, wxDefaultSize, 0);
+	bSizerSetup->Add(m_buttonPw, 0, wxALL, 5);
+
+	m_panelSetup->SetSizer(bSizerSetup);
+	m_panelSetup->Layout();
+	bSizerSetup->Fit(m_panelSetup);
+	m_notebook->AddPage(m_panelSetup, wxT("險ュ螳"), true);
+
+
 	gbSizer->Add(m_notebook, wxGBPosition(0, 0), wxGBSpan(9, 1), wxEXPAND|wxALL, 5);
 	m_notebook->SetSelection(0);
 
@@ -1053,7 +1108,7 @@
 	gbSizer->Add(m_gauge, wxGBPosition(7, 1), wxGBSpan(1, 2), wxALL, 5);
 
 	m_textCtrlPasswd = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD|wxTE_PROCESS_ENTER);
-	m_textCtrlPasswd->SetMaxLength(8);
+	m_textCtrlPasswd->SetMaxLength(16);
 	gbSizer->Add(m_textCtrlPasswd, wxGBPosition(8, 1), wxGBSpan(1, 2), wxALL|wxALIGN_BOTTOM, 5);
 
 	this->SetSizer(gbSizer);
@@ -1276,6 +1331,35 @@
 	imgfile.SaveFile(file, wxBITMAP_TYPE_TIFF);
 }
 
+void SearchFrame::LoadPasswd(bool show)
+{
+	m_dataViewListCtrlPw->DeleteAllItems();
+
+	wxString url = wxT("/pw/");
+	wxString buf = HttpGetText(m_addr, m_port, url);
+	wxArrayString idpw = wxSplit(buf, ':', '\\');
+	wxVector<wxVariant> data;
+	for (int r = 0; r < idpw.GetCount() / 3; r++) {
+		int i = r * 3;
+		wxArrayString x = wxSplit(idpw[i], '/', '\\');
+		data.push_back(wxVariant(x[1]));
+		data.push_back(wxVariant(idpw[i + 1]));
+		data.push_back(wxVariant(x[0]));
+		//if (!show) idpw[i + 2] = wxT("********");
+		//data.push_back(wxVariant(idpw[i + 2]));
+		wxString pw = XoR(idpw[i + 2], PWXORN);
+		pw.Replace(PWPREFIX, wxEmptyString, false);
+		data.push_back(wxVariant(pw));
+
+		m_dataViewListCtrlPw->AppendItem(data);
+		data.clear();
+	}
+}
+
+void SearchFrame::SavePasswd()
+{
+}
+
 void SearchFrame::RemoveTemp()
 {
 	for (int p = 0; p < 5; p++) {
--- a/src/kaigo/horori/searcher/src/utils.cpp	Thu Apr 23 22:54:58 2020 +0900
+++ b/src/kaigo/horori/searcher/src/utils.cpp	Fri Apr 24 22:22:12 2020 +0900
@@ -1,5 +1,5 @@
 // Filename   : utils.cpp
-// Last Change: 2020-04-22 水 09:21:01.
+// Last Change: 2020-04-24 金 14:00:37.
 //
 #include <wx/wx.h>
 #include <wx/dir.h>
@@ -66,3 +66,12 @@
 	return true;
 }
 
+wxString XoR(wxString s, int x)
+{
+	wxString t;
+	for (int i = 0; i < s.Len(); i++) {
+		t += wxString::Format(wxT("%c"), s[i].GetValue() ^ x); 
+	}
+	return t;
+}
+