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 #ifndef SUNPINYIN_IMI_GTK_WIN_H 39 #define SUNPINYIN_IMI_GTK_WIN_H 40 41 #include "portability.h" 42 43 #include <X11/Xlib.h> 44 #include <gtk/gtk.h> 45 #include <gdk/gdk.h> 46 #include <gdk/gdkkeysyms.h> 47 #include "KeycodeIIIM2GDK.h" 48 49 #include "imi_winHandler.h" 50 51 class CGTKWinHandler : public CIMIWinHandler 52 { 53 public: 54 CGTKWinHandler(CIMIView* pv); 55 56 bool createWindows(void); 57 58 /* Inherited methods implementation */ 59 /*@{*/ 60 virtual ~CGTKWinHandler(); 61 62 /** Update window's preedit area using a GTK widget. */ 63 virtual void updatePreedit(const IPreeditString* ppd); 64 65 /** Update window's candidates area using a GTK widget. */ 66 virtual void updateCandidates(const ICandidateList* pcl); 67 68 /** Update status of current session using a GTK buttons. */ 69 virtual void updateStatus(int key, int value); 70 /*@}*/ 71 72 protected: 73 void switchCN(bool cn); 74 void switchFullPunc(bool full); 75 void switchFullSimbol(bool full); 76 77 protected: 78 /*@{*/ 79 static const char *hanzi_image_file_name; 80 static const char *eng_image_file_name; 81 static const char *cnpunc_image_file_name; 82 static const char *enpunc_image_file_name; 83 static const char *fullwidth_image_file_name; 84 static const char *halfwidth_image_file_name; 85 /*@}*/ 86 87 /*@{*/ 88 static GtkWidget *hanzi_image; 89 static GtkWidget *eng_image; 90 static GtkWidget *cnpunc_image; 91 static GtkWidget *enpunc_image; 92 static GtkWidget *fullwidth_image; 93 static GtkWidget *halfwidth_image; 94 /*@}*/ 95 96 protected: 97 iconv_t m_iconv; 98 99 /*@{*/ 100 CIMIView *mp_view; 101 102 /** Main window */ 103 GtkWidget *m_pWin; 104 105 /** Candidate window */ 106 GtkWidget *m_CandidataArea; 107 108 /** Candidate window */ 109 GtkWidget *m_PreeditArea; 110 111 /** Button for CN/EN state*/ 112 GtkWidget *m_pLangButton; 113 114 /** Button for FULL/HALF Punc state */ 115 GtkWidget *m_pPuncButton; 116 117 /** Button for FULL/HALF Simbol state */ 118 GtkWidget *m_pSimbButton; 119 /*@}*/ 120 121 private: 122 /** load the images representing CN/EN, FULL/HALF PUNC|Simbol Simbol STATE*/ 123 void 124 load_images(); 125 126 private: 127 char m_buf[512]; 128 }; 129 130 #endif 131