/* */
1 /* -*- coding: utf-8; mode: c++; -*-
2 * Concordance to A. S. Pushkin's Works - Concordance header
3 * $Id: Concordance.hpp 16 2013-11-04 16:38:10Z isao $
4 * Copyright (C) 2012, isao yasuda
5 */
6
7 #ifndef CONCORDANCE_CLASSDEF
8 #define CONCORDANCE_CLASSDEF
9
10 #include <Wt/WServer>
11 #include <Wt/WApplication>
12 #include <Wt/WResource>
13 #include <Wt/WContainerWidget>
14 #include <Wt/WEnvironment>
15 #include <Wt/WHBoxLayout>
16 #include <Wt/WTabWidget>
17 #include <Wt/WLineEdit>
18 #include <Wt/WIntValidator>
19 #include <Wt/WGroupBox>
20 #include <Wt/WButtonGroup>
21 #include <Wt/WRadioButton>
22 #include <Wt/WPushButton>
23 #include <Wt/WCheckBox>
24 #include <Wt/WTable>
25 #include <Wt/WTableCell>
26 #include <Wt/WText>
27 #include <Wt/WBreak>
28 #include <Wt/WAnimation>
29 #include <boost/tokenizer.hpp>
30 #include <boost/locale.hpp>
31 #include <boost/timer.hpp>
32 #include <boost/regex.hpp>
33 #include <boost/bind.hpp>
34 #include "SharedMemoryCommon.hpp"
35 #include "SharedMemoryTree.hpp"
36 #include "RussianLemmatizer.hpp"
37 #include "Query.hpp"
38 #include "DeclareFunctions.hpp"
39
40 using namespace Wt;
41 using namespace boost::interprocess;
42 typedef std::pair<std::string, std::string> string_type;
43
44 // KWIC 最大行
45 static const int MAXLINES = 10000;
46 // 近接隣接距離最大値
47 extern int MAXDIST;
48 // キーボードタイプ
49 enum kbdtype { none = 0, yawerty = 1, jcuken = 2 };
50 // Wt ロギング種別
51 enum logkind { INFO = 0, WARN = 1, ERROR = 2 };
52 // Wt ロギング
53 void logging(const char* mesg, logkind kind);
54 // UserAgent チェック
55 bool checkAgent(std::string& agent);
56
57 // コンコーダンスクラス
58 class Concordance : public WApplication {
59 WLineEdit* expEdit; // 式入力エリア
60 WPushButton* button1; // サブミットボタン
61 WButtonGroup* wbg0; // 見出語形 or 出現形 ツリー選択ボタングループ
62 WButtonGroup* wbg1; // 見出語変換選択ボタングループ
63 WGroupBox* gbox; // ジャンルチェックボックス
64 WCheckBox *g0, *g1, *g2, *g3, *g4, *g5, *g6, *g7,
65 *g8, *g9, *g10, *g11, *g12; // ジャンル 00-11 + 12(all)
66 WLineEdit* lenpEdit; // 前テキスト長エリア
67 WLineEdit* lenaEdit; // 後テキスト長エリア
68 std::vector<int> genrev; // 対象ジャンル vector
69 WText* wmesg; // 式ラベル
70 WText* pmesg; // 式出力エリア
71 WText* cmesg; // エラー/終了メッセージエリア
72 WText* foot; // footer 出力エリア
73 WTable* ctbl; // コンコーダンス KWIC 表
74 WTabWidget* tabs; // tab
75 WContainerWidget* frame; // 全体フレーム
76 WContainerWidget* iframe;// input area frame
77 WContainerWidget* iarea; // input area
78 WContainerWidget* kwic; // KWIC tab
79 WContainerWidget* opts; // option tab
80 WContainerWidget* rkbd; // keyboard tab
81 WContainerWidget* genr; // genre tab
82 WContainerWidget* desc; // description tab
83 WContainerWidget* rk[4]; // keyboard row
84 WPushButton* bk[35];// key buttons
85 kbdtype keytype; // keyboard type
86 tl::lemmatizer lem; // lemmatizer instance
87 std::string agent; // UserAgent
88 std::string ipadr; // IP Address
89 // debug
90 std::string wparm; // parameter
91 int cprelen; // context length pre
92 int caftlen; // context length aft
93 void clearvse();
94 void clearother();
95 void clearself();
96 void generate();
97 void tabchange();
98 void keyboard();
99 void keyinput00();
100 void keyinput01();
101 void keyinput02();
102 void keyinput03();
103 void keyinput04();
104 void keyinput05();
105 void keyinput06();
106 void keyinput07();
107 void keyinput08();
108 void keyinput09();
109 void keyinput10();
110 void keyinput11();
111 void keyinput12();
112 void keyinput13();
113 void keyinput14();
114 void keyinput15();
115 void keyinput16();
116 void keyinput17();
117 void keyinput18();
118 void keyinput19();
119 void keyinput20();
120 void keyinput21();
121 void keyinput22();
122 void keyinput23();
123 void keyinput24();
124 void keyinput25();
125 void keyinput26();
126 void keyinput27();
127 void keyinput28();
128 void keyinput29();
129 void keyinput30();
130 void keyinput31();
131 void keyinput32();
132 void keyinput33();
133 void keyinput(WPushButton* bt);
134 void makeinput(WString& et);
135 void errorsend(const std::string& emsg);
136 void tabKwic();
137 void tabOpts();
138 void tabRkbd();
139 void tabGenr();
140 void tabDesc();
141 void setprelength();
142 void setaftlength();
143 public:
144 Concordance(const WEnvironment& env);
145 };
146
147 #endif
/* */