📄 atr_main.cpp
字号:
attr->SetButtonType(ZAF_FLAT_BUTTON);
attr->SetHzJustify(ZAF_HZ_LEFT);
attr->SetSendMessageWhenSelected(true);
attr->SetValue(TST_SET_FONT_SMALL);
fontCombo->Add(attr);
attr = new ZafButton(0, 0, 15, 1, new ZafStringData("Dialog"));
attr->SetButtonType(ZAF_FLAT_BUTTON);
attr->SetHzJustify(ZAF_HZ_LEFT);
attr->SetSendMessageWhenSelected(true);
attr->SetValue(TST_SET_FONT_DIALOG);
fontCombo->Add(attr);
attr = new ZafButton(0, 0, 15, 1, new ZafStringData("System"));
attr->SetButtonType(ZAF_FLAT_BUTTON);
attr->SetHzJustify(ZAF_HZ_LEFT);
attr->SetSendMessageWhenSelected(true);
attr->SetValue(TST_SET_FONT_SYSTEM);
fontCombo->Add(attr);
attr = new ZafButton(0, 0, 15, 1, new ZafStringData("Application"));
attr->SetButtonType(ZAF_FLAT_BUTTON);
attr->SetHzJustify(ZAF_HZ_LEFT);
attr->SetSendMessageWhenSelected(true);
attr->SetValue(TST_SET_FONT_APPLICATION);
fontCombo->Add(attr);
attr = new ZafButton(0, 0, 15, 1, new ZafStringData("Fixed"));
attr->SetButtonType(ZAF_FLAT_BUTTON);
attr->SetHzJustify(ZAF_HZ_LEFT);
attr->SetSendMessageWhenSelected(true);
attr->SetValue(TST_SET_FONT_FIXED);
fontCombo->Add(attr);
Add(fontCombo);
// Create store button.
ZafButton *store = new ZafButton(1, 10, 10, 1, new ZafStringData("Store *"));
store->SetAutoSize(false);
store->SetSendMessageWhenSelected(true);
store->SetValue(TST_STORE);
Add(store);
// Create event log button.
ZafButton *eventLog = new ZafButton(12, 10, 10, 1, new ZafStringData("Event Log"));
eventLog->SetStringID(ZAF_ITEXT("EVENT_LOG"));
eventLog->SetAutoSize(false);
eventLog->SetSendMessageWhenSelected(true);
eventLog->SetValue(TST_SHOW_EVENT_LOG);
Add(eventLog);
// Create duplicate button.
ZafButton *duplicate = new ZafButton(23, 10, 11, 1, new ZafStringData("Duplicate *"));
duplicate->SetAutoSize(false);
duplicate->SetSendMessageWhenSelected(true);
duplicate->SetValue(TST_DUPLICATE);
Add(duplicate);
// Create redraw button.
ZafButton *redraw = new ZafButton(35, 10, 11, 1, new ZafStringData("Redraw **"));
redraw->SetAutoSize(false);
redraw->SetSendMessageWhenSelected(true);
redraw->SetValue(TST_REDRAW);
Add(redraw);
// Create addSubtract button.
ZafButton *addSubtract = new ZafButton(50, 10, 11, 1, new ZafStringData("Subtract"));
addSubtract->SetStringID(ZAF_ITEXT("ADD_SUBTRACT"));
addSubtract->SetAutoSize(false);
addSubtract->SetSendMessageWhenSelected(true);
addSubtract->SetValue(TST_SUBTRACT_TESTOBJECT);
Add(addSubtract);
Add(new ZafPrompt(60, 0, 25, new ZafStringData("Object")));
}
GenericTestWin::GenericTestWin(const ZafIChar *name, ZafObjectPersistence &persist) :
ZafWindow(name, persist),
attrList(0), testObject(0), testObjectParent(0), testObjectSibling(0)
{
// Initialize pointers to important objects.
attrList = DynamicPtrCast(GetObject(ZAF_ITEXT("ATTR_LIST")), ZafVtList);
testObject = GetObject(ZAF_ITEXT("TEST_OBJECT"));
// Persisted windows don't have a derived test object, so don't track events.
ZafWindowObject *eventLog = GetObject(ZAF_ITEXT("EVENT_LOG"));
eventLog->SetDisabled(true);
}
GenericTestWin::GenericTestWin(GenericTestWin ©): ZafWindow(copy),
attrList(0), testObject(0), testObjectParent(0), testObjectSibling(0)
{
// Initialize pointers to important objects.
attrList = DynamicPtrCast(GetObject(ZAF_ITEXT("ATTR_LIST")), ZafVtList);
testObject = GetObject(ZAF_ITEXT("TEST_OBJECT"));
// Copied windows don't have a derived test object, so don't track events.
ZafWindowObject *eventLog = GetObject(ZAF_ITEXT("EVENT_LOG"));
eventLog->SetDisabled(true);
}
GenericTestWin::~GenericTestWin(void)
{
// Delete testObject if it is not attached to the window.
/* START BLOCK COMMENT
** if (!testObject->screenID)
** delete testObject;
END BLOCK COMMENT */
}
ZafEventType GenericTestWin::Draw(const ZafEventStruct &event, ZafEventType ccode)
{
ZafWindow::Draw(event, ccode);
// Compute the actual draw region.
ZafRegionStruct drawRegion = BeginDraw();
ZafPaletteStruct lightShadow = LogicalPalette(ZAF_PM_LIGHT_SHADOW, 0);
ZafPaletteStruct darkShadow = LogicalPalette(ZAF_PM_DARK_SHADOW, 0);
ZafPaletteStruct whiteShadow = lightShadow;
// Copy the background colors to the foreground since display->Line() uses
// the foreground color. The "shadow" palettes have different colors in
// the foreground and background entries so they can generate two shades
// of shadow.
whiteShadow.colorForeground = whiteShadow.colorBackground;
// Draw a divider line between the settings and the test object(s).
ZafWindowObject *object = GetObject(ZAF_ITEXT("BACK_COLOR_COMBO"));
int column = drawRegion.left + object->zafRegion.right + 2 * display->cellWidth;
int top = drawRegion.top;
int bottom = drawRegion.bottom;
display->SetPalette(darkShadow);
display->Line(column, top, column, bottom);
display->SetPalette(whiteShadow);
display->Line(column + 1, top, column + 1, bottom);
EndDraw();
return (ccode);
}
ZafEventType GenericTestWin::Event(const ZafEventStruct &event)
{
ZafEventType ccode = event.type;
// Update count for attribute item.
if (ccode >= TST_TOGGLE_FIRST && ccode <= TST_TOGGLE_LAST)
{
for (int count = 0; AttributeTable[count].text; count++)
if (AttributeTable[count].value == ccode)
{
AttributeTable[count].count++;
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)ccode);
ZafIChar buf[64];
sprintf(buf, ZAF_ITEXT("%s %d"), AttributeTable[count].text, AttributeTable[count].count);
attr->SetText(buf);
break;
}
}
switch (ccode)
{
case S_INITIALIZE:
ZafWindow::Event(event);
testObjectParent = DynamicPtrCast(testObject->parent, ZafWindow);
break;
// TST_TOGGLE_*** sets testObject's attribute to the selected status of
// the attribute check box. It then updates the attribute check box
// using the attribute accessor function to test if the attribute was
// successfully set.
case TST_TOGGLE_BORDERED:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_BORDERED);
testObject->SetBordered(attr->Selected());
attr->SetSelected(testObject->Bordered());
}
break;
case TST_TOGGLE_VISIBLE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_VISIBLE);
testObject->SetVisible(attr->Selected());
attr->SetSelected(testObject->Visible());
}
break;
case TST_TOGGLE_ACCEPT_DROP:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_ACCEPT_DROP);
testObject->SetAcceptDrop(attr->Selected());
attr->SetSelected(testObject->AcceptDrop());
}
break;
case TST_TOGGLE_AUTOMATIC_UPDATE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_AUTOMATIC_UPDATE);
testObject->SetAutomaticUpdate(attr->Selected());
attr->SetSelected(testObject->AutomaticUpdate(false));
}
break;
case TST_TOGGLE_CHANGED:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_CHANGED);
testObject->SetChanged(attr->Selected());
attr->SetSelected(testObject->Changed());
}
break;
case TST_TOGGLE_COPY_DRAGGABLE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_COPY_DRAGGABLE);
testObject->SetCopyDraggable(attr->Selected());
attr->SetSelected(testObject->CopyDraggable());
}
break;
case TST_TOGGLE_LINK_DRAGGABLE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_LINK_DRAGGABLE);
testObject->SetLinkDraggable(attr->Selected());
attr->SetSelected(testObject->LinkDraggable());
}
break;
case TST_TOGGLE_MOVE_DRAGGABLE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_MOVE_DRAGGABLE);
testObject->SetMoveDraggable(attr->Selected());
attr->SetSelected(testObject->MoveDraggable());
}
break;
case TST_TOGGLE_FOCUS:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_FOCUS);
testObject->SetFocus(attr->Selected());
attr->SetSelected(testObject->Focus());
}
break;
case TST_TOGGLE_NONCURRENT:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_NONCURRENT);
testObject->SetNoncurrent(attr->Selected());
attr->SetSelected(testObject->Noncurrent());
}
break;
case TST_TOGGLE_DISABLED:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_DISABLED);
testObject->SetDisabled(attr->Selected());
attr->SetSelected(testObject->Disabled());
}
break;
case TST_TOGGLE_OSDRAW:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_OSDRAW);
testObject->SetOSDraw(attr->Selected());
attr->SetSelected(testObject->OSDraw());
}
break;
case TST_TOGGLE_PARENTDRAW_BORDER:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_PARENTDRAW_BORDER);
testObject->SetParentDrawBorder(attr->Selected());
attr->SetSelected(testObject->ParentDrawBorder());
}
break;
case TST_TOGGLE_PARENTPALETTE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_PARENTPALETTE);
testObject->SetParentPalette(attr->Selected());
attr->SetSelected(testObject->ParentPalette());
}
break;
case TST_TOGGLE_PARENTDRAW_FOCUS:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_PARENTDRAW_FOCUS);
testObject->SetParentDrawFocus(attr->Selected());
attr->SetSelected(testObject->ParentDrawFocus());
}
break;
case TST_TOGGLE_SELECTED:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_SELECTED);
testObject->SetSelected(attr->Selected());
attr->SetSelected(testObject->Selected());
}
break;
case TST_TOGGLE_EDIT_MODE:
{
ZafWindowObject *attr = attrList->GetObject((ZafNumberID)TST_TOGGLE_EDIT_MODE);
testObject->SetEditMode(attr->Selected());
attr->SetSelected(testObject->EditMode());
}
break;
case TST_SET_TOOL_TIP:
{
ZafComboBox *helpTipCombo = DynamicPtrCast(GetObject(ZAF_ITEXT("TOOL_TIP_COMBO")), ZafComboBox);
ZafStringID stringID = helpTipCombo->Current()->StringID();
if (!strcmp(stringID, ZAF_ITEXT("None")))
{
testObject->SetHelpObjectTip(ZAF_NULLP(ZafIChar));
testObject->SetQuickTip(ZAF_NULLP(ZafIChar));
}
else if (!strcmp(stringID, ZAF_ITEXT("Single")))
{
ZafIChar *text = ZAF_ITEXT("Single line help object tip");
testObject->SetHelpObjectTip(text);
text = ZAF_ITEXT("Single line quick tip");
testObject->SetQuickTip(text);
}
else
{
ZafIChar *text = ZAF_ITEXT("Multi-line help object text");
testObject->SetHelpObjectTip(text);
text = ZAF_ITEXT("Multi-line \nquick tip.");
testObject->SetQuickTip(text);
}
const ZafIChar *quickTip = testObject->QuickTip();
if (!quickTip)
helpTipCombo->First()->SetSelected(true);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -