FormatOptionsPage::FormatOptionsPage(ZLDialogContent &dialogTab) { const ZLResource &styleResource = ZLResource::resource(KEY_STYLE); myComboEntry = new ComboOptionEntry(*this, styleResource[KEY_BASE].value()); myComboEntry->addValue(myComboEntry->initialValue()); ZLTextStyleCollection &collection = ZLTextStyleCollection::instance(); ZLTextKind styles[] = { REGULAR, TITLE, SECTION_TITLE, SUBTITLE, H1, H2, H3, H4, H5, H6, ANNOTATION, EPIGRAPH, PREFORMATTED, AUTHOR, DATEKIND, POEM_TITLE, STANZA, VERSE }; const int STYLES_NUMBER = sizeof(styles) / sizeof(ZLTextKind); for (int i = 0; i < STYLES_NUMBER; ++i) { const ZLTextStyleDecoration *decoration = collection.decoration(styles[i]); if (decoration != 0) { myComboEntry->addValue(styleResource[decoration->name()].value()); } } dialogTab.addOption(ZLResourceKey("optionsFor"), myComboEntry); { const std::string &name = myComboEntry->initialValue(); ZLTextBaseStyle &baseStyle = collection.baseStyle(); registerEntries(dialogTab, KEY_LINESPACING, new ZLTextLineSpaceOptionEntry(baseStyle.LineSpacePercentOption, dialogTab.resource(KEY_LINESPACING), false), KEY_DUMMY, 0,//new ZLSimpleSpinOptionEntry("First Line Indent", baseStyle.firstLineIndentDeltaOption(), -300, 300, 1), name ); registerEntries(dialogTab, KEY_ALIGNMENT, new ZLTextAlignmentOptionEntry(baseStyle.AlignmentOption, dialogTab.resource(KEY_ALIGNMENT), false), KEY_DUMMY, 0, name ); } for (int i = 0; i < STYLES_NUMBER; ++i) { ZLTextStyleDecoration *d = collection.decoration(styles[i]); if ((d != 0) && (d->isFullDecoration())) { ZLTextFullStyleDecoration *decoration = (ZLTextFullStyleDecoration*)d; const std::string &name = styleResource[decoration->name()].value(); registerEntries(dialogTab, KEY_SPACEBEFORE, new ZLSimpleSpinOptionEntry(decoration->SpaceBeforeOption, 1), KEY_LEFTINDENT, new ZLSimpleSpinOptionEntry(decoration->LeftIndentOption, 1), name ); registerEntries(dialogTab, KEY_SPACEAFTER, new ZLSimpleSpinOptionEntry(decoration->SpaceAfterOption, 1), KEY_RIGHTINDENT, new ZLSimpleSpinOptionEntry(decoration->RightIndentOption, 1), name ); registerEntries(dialogTab, KEY_LINESPACING, new ZLTextLineSpaceOptionEntry(decoration->LineSpacePercentOption, dialogTab.resource(KEY_LINESPACING), true), KEY_FIRSTLINEINDENT, new ZLSimpleSpinOptionEntry(decoration->FirstLineIndentDeltaOption, 1), name ); registerEntries(dialogTab, KEY_ALIGNMENT, new ZLTextAlignmentOptionEntry(decoration->AlignmentOption, dialogTab.resource(KEY_ALIGNMENT), true), KEY_DUMMY, 0, name ); } } myComboEntry->onValueSelected(0); }
StyleOptionsPage::StyleOptionsPage(ZLDialogContent &dialogTab, ZLPaintContext &context) { myComboEntry = new ComboOptionEntry(*this, "Options For", "Base"); myComboEntry->addValue(myComboEntry->initialValue()); TextStyleCollection &collection = TextStyleCollection::instance(); const int STYLES_NUMBER = 32; TextKind styles[STYLES_NUMBER] = { REGULAR, TITLE, SECTION_TITLE, SUBTITLE, H1, H2, H3, H4, H5, H6, CONTENTS_TABLE_ENTRY, RECENT_BOOK_LIST, LIBRARY_AUTHOR_ENTRY, LIBRARY_BOOK_ENTRY, ANNOTATION, EPIGRAPH, AUTHOR, DATE, POEM_TITLE, STANZA, VERSE, CITE, HYPERLINK, FOOTNOTE, ITALIC, EMPHASIS, BOLD, STRONG, DEFINITION, DEFINITION_DESCRIPTION, PREFORMATTED, CODE }; for (int i = 0; i < STYLES_NUMBER; ++i) { const TextStyleDecoration *decoration = collection.decoration(styles[i]); if (decoration != 0) { myComboEntry->addValue(decoration->name()); } } dialogTab.addOption(myComboEntry); { const std::string &name = myComboEntry->initialValue(); BaseTextStyle &baseStyle = collection.baseStyle(); registerEntries(dialogTab, new FontFamilyOptionEntry(baseStyle.FontFamilyOption, context, false), new ZLSimpleBooleanOptionEntry(BOLD_STRING, baseStyle.BoldOption), name ); registerEntries(dialogTab, new ZLSimpleSpinOptionEntry("Size", baseStyle.FontSizeOption, 2), new ZLSimpleBooleanOptionEntry(ITALIC_STRING, baseStyle.ItalicOption), name ); registerEntry(dialogTab, new ZLSimpleBooleanOptionEntry("Auto Hyphenations", baseStyle.AutoHyphenationOption), name ); } for (int i = 0; i < STYLES_NUMBER; ++i) { TextStyleDecoration *decoration = collection.decoration(styles[i]); if (decoration != 0) { const std::string &name = decoration->name(); registerEntries(dialogTab, new FontFamilyOptionEntry(decoration->FontFamilyOption, context, true), new ZLSimpleBoolean3OptionEntry(BOLD_STRING, decoration->BoldOption), name ); registerEntries(dialogTab, new ZLSimpleSpinOptionEntry("Size Difference", decoration->FontSizeDeltaOption, 2), new ZLSimpleBoolean3OptionEntry(ITALIC_STRING, decoration->ItalicOption), name ); registerEntries(dialogTab, new ZLSimpleBoolean3OptionEntry("Allow Hyphenations", decoration->AllowHyphenationsOption), 0, name ); } } myComboEntry->onValueChange(myComboEntry->initialValue()); }