root/ConcordanceInit.cpp

/* [previous][next][first][last][top][bottom][index][help] */
   1 /* -*- coding: utf-8; mode: c++; -*-
   2  * Concordance to A. S. Pushkin's Works - Constructor
   3  * $Id: ConcordanceInit.cpp 16 2013-11-04 16:38:10Z isao $
   4  * Copyright (C) 2012, isao yasuda
   5  */
   6 
   7 #include "Concordance.hpp"
   8 
   9 using namespace Wt;
  10 using namespace boost::interprocess;
  11 
  12 // Lemmatizer Russian Grammatical Resources
  13 const char* dict =
  14     "/usr/local/share/turglem/russian/dict_russian.auto";
  15 const char* prdm =
  16     "/usr/local/share/turglem/russian/paradigms_russian.bin";
  17 const char* pred =
  18     "/usr/local/share/turglem/russian/prediction_russian.auto";
  19 
  20 // コンコーダンスクラス・コンストラクタ: 画面を作成する
  21 Concordance::Concordance(const WEnvironment& env)
  22     : WApplication(env)
  23 {
  24     // Lemmatizer 辞書リソースのロード
  25     try {
  26         lem.load_lemmatizer(dict, prdm, pred);
  27     } catch (const std::exception& e) {
  28         logging("Lemmatizer error.", ERROR);
  29         std::cerr << "Lemmatizer error: " << e.what() << "\n";
  30     }
  31 
  32     // Request Parameter print
  33     /*
  34     const Http::ParameterMap pmap = env.getParameterMap();
  35     for (Http::ParameterMap::iterator pmapit = pmap.begin();
  36          pmapit != pmap.end(); pmapit++) {
  37         std::cout << pmapit->first() << ": ";
  38         for (Http::ParameterValues::iterator pvit = (pmapit->second()).begin();
  39              pvit != (pmapit->second()).end(); pvit++) {
  40             std::cout << *pvit << ";";
  41         }
  42         std::cout << std::endl;
  43     }
  44     */
  45 
  46     // ユーザ情報セット
  47     agent = env.userAgent();
  48     ipadr = env.clientAddress();
  49     if (!env.getParameterValues("page").empty()) {
  50         wparm = env.getParameterValues("page")[0];
  51     } else {
  52         wparm = "EMPTY";
  53     }
  54     std::cerr << "- IP Address: " << ipadr << "\n"
  55               << "- User-Agent: " << agent << "\n"
  56               << "- Parameter: "  << wparm << "\n";
  57 
  58     // メッセージファイル message.xml の指定
  59     messageResourceBundle().use(appRoot() + "message");
  60     // タイトル
  61     setTitle(L"Динамический Конкорданс к сочинениям А. С. Пушкина");
  62     // スタイルシート
  63     useStyleSheet("style.css");
  64     // theme
  65     setCssTheme("polished");
  66 
  67     // ウィンドウ全体フレーム
  68     frame = new WContainerWidget(root());
  69     frame->setStyleClass("frame");
  70 
  71     // message.xml から header を出力
  72     frame->addWidget(new WText(WString::tr("header"), XHTMLText));
  73 
  74     // 式入力エリア,オプションエリアのボックス
  75     iframe = new WContainerWidget(frame);
  76     iframe->setStyleClass("inner");
  77 
  78     // 式入力エリアの生成
  79     WString emptxt = WString::tr("emptytext");
  80     makeinput(emptxt);
  81 
  82     // タブインタフェース
  83     tabs = new WTabWidget(frame);
  84     // WAnimation animation(WAnimation::SlideInFromRight, WAnimation::EaseIn);
  85     // tabs->contentsStack()->setTransitionAnimation(animation, true);
  86     kwic = new WContainerWidget(frame);
  87     opts = new WContainerWidget(frame);
  88     rkbd = new WContainerWidget(frame);
  89     genr = new WContainerWidget(frame);
  90     desc = new WContainerWidget(frame);
  91     tabs->addTab(kwic, WString::tr("tabkwic"));
  92     tabs->addTab(opts, WString::tr("tabopts"));
  93     tabs->addTab(rkbd, WString::tr("tabrkbd"));
  94     tabs->addTab(genr, WString::tr("tabgenr"));
  95     tabs->addTab(desc, WString::tr("tabdesc"));
  96     tabKwic();
  97     tabs->setCurrentWidget(kwic); // KWICテーブル用
  98     tabOpts();
  99     tabs->setCurrentWidget(opts); // オプション用
 100     tabRkbd();
 101     tabs->setCurrentWidget(rkbd); // 疑似キーボード用
 102     tabGenr();
 103     tabs->setCurrentWidget(genr); // ジャンル一覧用
 104     tabDesc();
 105     tabs->setCurrentWidget(desc); // 説明用 (初期状態表示)
 106     tabs->currentChanged().connect(this, &Concordance::tabchange);
 107 
 108     // フッタを message.xml から出力
 109     foot = new WText(frame);
 110     foot->setTextFormat(XHTMLText);
 111     foot->setText(WString::tr("footer"));
 112 }

/* [previous][next][first][last][top][bottom][index][help] */