Home | History | Annotate | Download | only in gtk_standalone
      1 /*
      2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
      3  *
      4  * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
      5  *
      6  * The contents of this file are subject to the terms of either the GNU Lesser
      7  * General Public License Version 2.1 only ("LGPL") or the Common Development and
      8  * Distribution License ("CDDL")(collectively, the "License"). You may not use this
      9  * file except in compliance with the License. You can obtain a copy of the CDDL at
     10  * http://www.opensource.org/licenses/cddl1.php and a copy of the LGPLv2.1 at
     11  * http://www.opensource.org/licenses/lgpl-license.php. See the License for the
     12  * specific language governing permissions and limitations under the License. When
     13  * distributing the software, include this License Header Notice in each file and
     14  * include the full text of the License in the License file as well as the
     15  * following notice:
     16  *
     17  * NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
     18  * (CDDL)
     19  * For Covered Software in this distribution, this License shall be governed by the
     20  * laws of the State of California (excluding conflict-of-law provisions).
     21  * Any litigation relating to this License shall be subject to the jurisdiction of
     22  * the Federal Courts of the Northern District of California and the state courts
     23  * of the State of California, with venue lying in Santa Clara County, California.
     24  *
     25  * Contributor(s):
     26  *
     27  * If you wish your version of this file to be governed by only the CDDL or only
     28  * the LGPL Version 2.1, indicate your decision by adding "[Contributor]" elects to
     29  * include this software in this distribution under the [CDDL or LGPL Version 2.1]
     30  * license." If you don't indicate a single choice of license, a recipient has the
     31  * option to distribute your version of this file under either the CDDL or the LGPL
     32  * Version 2.1, or to extend the choice of license to its licensees as provided
     33  * above. However, if you add LGPL Version 2.1 code and therefore, elected the LGPL
     34  * Version 2 license, then the option applies only if the new code is made subject
     35  * to such option by the copyright holder.
     36  */
     37 
     38 #ifdef HAVE_CONFIG_H
     39 #include <config.h>
     40 #endif
     41 
     42 #include <stdio.h>
     43 #include <locale.h>
     44 #include <iconv.h>
     45 
     46 #include <gtk/gtk.h>
     47 #include <gdk/gdk.h>
     48 #include <gdk/gdkx.h>
     49 #include <X11/Xlib.h>
     50 
     51 #include "imi_data.h"
     52 #include "imi_context.h"
     53 
     54 #include "imi_view_modern.h"
     55 #include "imi_gtkwin.h"
     56 #include "ic_history.h"
     57 
     58 int main(int argc, char* argv[])
     59 {
     60     #ifdef DEBUG
     61         printf("sizef 'long double' %d, size 'of double' %d, size of 'float' %d \n", sizeof(long double), sizeof(double), sizeof(float));
     62 
     63         double test_array[] = { 3.0, 2.0, 1.5, 1.0, 0.5, 0.25, 0.0, -0.0, -0.25, -0.5, -1.0, -2.0, -3.0 };
     64         char valbuf[256];
     65 
     66         for (int i=0, sz=sizeof(test_array)/sizeof(double); i < sz; ++i) {
     67             TLongExpFloat lef(test_array[i]);
     68             lef.toString(valbuf);
     69             printf("value %lf ==> %s\n", test_array[i], valbuf);
     70         }
     71         fflush(stdout);
     72     #endif
     73 
     74     setlocale(LC_ALL, "zh_CN.UTF-8");
     75     gtk_init(&argc, &argv);
     76 
     77     int  vt = CIMIViewFactory::SVT_CLASSIC;
     78     bool bgbk = true;
     79 
     80     for (int i=1; i < argc; ++i) {
     81         if (strcmp(argv[i], "-modern") == 0)
     82             vt = CIMIViewFactory::SVT_MODERN;
     83         else if (strcmp(argv[i], "-nogbk") == 0)
     84             bgbk = false;
     85     }
     86 
     87     iconv_t ich = (iconv_t)(-1);
     88     CIMIData* pdata = NULL;
     89     CIMIContext *pic = NULL;
     90     CIMIView *pv = NULL;
     91     CGTKWinHandler *pwh = NULL;
     92     CBigramHistory *phist = NULL;
     93 
     94     try {
     95         CSunpinyinOptions pref;
     96         iconv_t ich = iconv_open("UTF-8", TWCHAR_ICONV_NAME);
     97         CBigramHistory::initClass();
     98         phist = new CBigramHistory();
     99 
    100         pdata = new CIMIData();
    101         pdata->loadResource("data/lm_sc.t3g", "data/pydict_sc.bin");
    102 
    103         pic = new CIMIContext();
    104         pic->setHistoryMemory(phist);
    105         pic->setCoreData(pdata);
    106         pic->setNonCompleteSyllable(true);
    107         pic->clear();
    108 
    109         pv = CIMIViewFactory::createView(vt);
    110         pref.m_GBK = bgbk;
    111         pv->setPreference(&pref);
    112         pv->attachIC(pic);
    113 
    114         /* FIXME: we should add the candidate window size to preferences */
    115         pv->s_CandiWindowSize = 10;
    116 
    117         pwh = new CGTKWinHandler(pv);
    118         pv->attachWinHandler(pwh);
    119 
    120         pwh->createWindows();
    121         gtk_main();
    122 
    123 	delete pwh;
    124 	delete pic;
    125 	delete pv;
    126 	delete pdata;
    127 	delete phist;
    128 
    129         iconv_close(ich);
    130     } catch (...) {
    131         fprintf(stderr, "error, unknown exception!\n");
    132         fflush(stderr);
    133         return 1;
    134     }
    135 
    136     return 0;
    137 }
    138