Created
December 18, 2015 16:32
-
-
Save unix-junkie/68bdf8420d6c7b7925f4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdlib.h> | |
#include <wchar.h> | |
#include <Xm/XmAll.h> | |
void addLine(Widget parent, | |
char *keyWidgetName, | |
char *keyLabel, | |
char *valueWidgetName, | |
const XmString valueLabel); | |
int main(int argc, char *argv[]) { | |
XtAppContext appContext; | |
const char *applicationClass = "XmUnicodeTest"; | |
String fallbackResources[] = { | |
"*.labelSingleByte.fontList: -monotype-arial-medium-r-normal--*-90-*-*-p-*-microsoft-cp1251", | |
"*.labelUnicode.fontList: -monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1", | |
NULL, | |
}; | |
const Widget topLevel = XtVaAppInitialize(&appContext, applicationClass, NULL, 0, &argc, argv, fallbackResources, NULL); | |
const Widget mainWindow = XmCreateMainWindow(topLevel, "mainWindow", NULL, 0); | |
XtManageChild(mainWindow); | |
const Widget rowColumn = XmCreateRowColumn(mainWindow, "rowColumn", NULL, 0); | |
XtManageChild(rowColumn); | |
XtVaSetValues(rowColumn, XmNpacking, XmPACK_COLUMN, NULL); | |
XtVaSetValues(rowColumn, XmNorientation, XmHORIZONTAL, NULL); | |
const XmStringCharSet unicodeCharset = "UTF-8"; | |
char *mbs = "Sample Text \u0410\u0411\u0412\u0413\u0414\u0415\u0401"; | |
wchar_t *wcs = L"Sample Text \u0410\u0411\u0412\u0413\u0414\u0415\u0401"; | |
char *singleByteLabelClass = "labelSingleByte"; | |
char *unicodeLabelClass = "labelUnicode"; | |
int columnCount = 0; | |
{ | |
const XmString labelString = XmStringCreate(mbs, unicodeCharset); | |
addLine(rowColumn, "key", "XmStringCreate(multi-byte string, \"UTF-8\"), UTF-8 font:", unicodeLabelClass, labelString); | |
XmStringFree(labelString); | |
columnCount++; | |
} | |
{ | |
const XmString labelString = XmStringCreateLtoR(mbs, unicodeCharset); | |
addLine(rowColumn, "key", "XmStringCreateLtoR(multi-byte string, \"UTF-8\"), UTF-8 font:", unicodeLabelClass, labelString); | |
XmStringFree(labelString); | |
columnCount++; | |
} | |
{ | |
const XmString labelString = XmStringGenerate(mbs, NULL, XmMULTIBYTE_TEXT, NULL); | |
addLine(rowColumn, "key", "XmStringGenerate(XmMULTIBYTE_TEXT), CP1251 font:", singleByteLabelClass, labelString); | |
XmStringFree(labelString); | |
columnCount++; | |
} | |
{ | |
const XmString labelString = XmStringGenerate(wcs, NULL, XmWIDECHAR_TEXT, NULL); | |
addLine(rowColumn, "key", "XmStringGenerate(XmWIDECHAR_TEXT), CP1251 font:", singleByteLabelClass, labelString); | |
XmStringFree(labelString); | |
columnCount++; | |
} | |
{ | |
const XmString labelString = XmStringGenerate(mbs, NULL, XmMULTIBYTE_TEXT, NULL); | |
addLine(rowColumn, "key", "XmStringGenerate(XmMULTIBYTE_TEXT), UTF-8 font:", unicodeLabelClass, labelString); | |
XmStringFree(labelString); | |
columnCount++; | |
} | |
{ | |
const XmString labelString = XmStringGenerate(wcs, NULL, XmWIDECHAR_TEXT, NULL); | |
addLine(rowColumn, "key", "XmStringGenerate(XmWIDECHAR_TEXT), UTF-8 font:", unicodeLabelClass, labelString); | |
XmStringFree(labelString); | |
columnCount++; | |
} | |
XtVaSetValues(rowColumn, XmNnumColumns, columnCount, NULL); // For XmHORIZONTAL orientation, this is actually a number of rows | |
XtRealizeWidget(topLevel); | |
XtAppMainLoop(appContext); | |
return 0; | |
} | |
void addLine(Widget parent, | |
char *keyWidgetName, | |
char *keyLabel, | |
char *valueWidgetName, | |
const XmString valueLabel) { | |
const Widget label0 = XmCreateLabel(parent, keyWidgetName, NULL, 0); | |
XtManageChild(label0); | |
const XmString labelString0 = XmStringCreate(keyLabel, XmSTRING_DEFAULT_CHARSET); | |
XtVaSetValues(label0, XmNlabelString, labelString0, NULL); | |
XmStringFree(labelString0); | |
const Widget label1 = XmCreateLabel(parent, valueWidgetName, NULL, 0); | |
XtManageChild(label1); | |
XtVaSetValues(label1, XmNlabelString, valueLabel, NULL); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment