Mercurial > ~dholland > hg > ag > index.cgi
diff anagram/vaclgui/about.cpp @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/anagram/vaclgui/about.cpp Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,152 @@ +/* + * AnaGram, A System for Syntax Directed Programming + * Copyright 1997-2002 Parsifal Software. All Rights Reserved. + * See the file COPYING for license and usage terms. + * + * about.cpp + */ + +#include <ifont.hpp> + +#include "about.hpp" +#include "build.h" +#include "vaclgui.hpp" +#include "version.h" + +//#define INCLUDE_LOGGING +#include "log.h" + + +AboutBox::AboutBox() + : AgFrame( IFrameWindow::border + | dialogBackground + | IFrameWindow::systemMenu) + , canvas(nextChildId(), this, this, IRectangle(), + IMultiCellCanvas::classDefaultStyle + | IWindow::clipChildren) + , anaGramIcon(nextChildId(), &canvas, &canvas, iconHandle,IRectangle(), + IIconControl::classDefaultStyle + | IIconControl::fillBackground) + , textBlock(nextChildId(), &canvas, &canvas, IRectangle(), + ISetCanvas::verticalDecks + | ISetCanvas::packTight + | ISetCanvas::centerAlign + | IWindow::clipChildren + | IWindow::visible) + , titleLines(&textBlock) + , copyrightNotice(&textBlock) + //, licenseBox(nextChildId(), &textBlock, &textBlock) + //, licensee(&textBlock, IRectangle(), + // IStaticText::classDefaultStyle + // | IStaticText::border3D), + , address(&textBlock) + , buildInfo(&textBlock) +{ + LOGSECTION("AboutBox::AboutBox"); + IPaintHandler::handleEventsFor(&canvas); + IPaintHandler::handleEventsFor(&textBlock); + IFont headFont("Arial", 12); + IFont textFont("Arial", 8); + windowTitle.setText("About AnaGram"); + + LOGV(headFont.name()) LCV(headFont.pointSize()); + LOGV(textFont.name()) LCV(textFont.pointSize()); + + titleLines.setFont(headFont); + buildInfo.setFont(textFont); + copyrightNotice.setFont(textFont); + //licensee.setFont(textFont); + //licenseBox.setFont(textFont); + address.setFont(textFont); + + anaGramIcon.sizeTo(anaGramIcon.minimumSize()); + + int leading = textFont.maxSize().height() + textFont.externalLeading(); + + titleLines.setMargin(leading/2, leading/2); + titleLines.setVTab(leading/2); + titleLines.setText( + "AnaGram LALR Parser Generator\n" VERSIONSTRING + ); + LOGV(titleLines.minimumSize()); + textBlock.setDeckCount(1); + + copyrightNotice.setMargin(leading/2, leading/2); + copyrightNotice.setVTab(leading/2); + copyrightNotice.setText( + "Copyright 1993-2002 Parsifal Software. " + "All rights reserved.\n" + "Copyright 2006, 2007 David A. Holland. " + "All rights reserved.\n" + "\n" + "This version of AnaGram is free software.\n" + "There is NO WARRANTY.\n" + "See \"license\" in the help system for details.\n" + ); + + //licenseBox.setText("This copy of AnaGram is registered to:"); + //licensee.setText(licenseeText().pointer()); + //licensee.setMargin(leading, leading); + //licensee.setVTab(leading/2); + + //ISize minSize = licenseBox.minimumSize(); + //ISize licenseeSize = licensee.minimumSize(); + //if (licenseeSize.width() < minSize.width()) { + // licenseeSize.setWidth(minSize.width()); + //} + //licensee.setMinimumSize(licenseeSize); + + //LOGV(licensee.minimumSize()); + + address.setMargin(leading/2, leading/2); + address.setVTab(leading/2); + address.setText("\n\vThe AnaGram web site is\n" + "http://www.parsifalsoft.com/"); + + AgString bi1 = "\n\vBuilt "; + AgString bi2 = build_date; + AgString bi3 = "\non "; + AgString bi4 = build_os; + AgString bi = bi1.concat(bi2).concat(bi3).concat(bi4); + buildInfo.setMargin(leading/2, leading/2); + buildInfo.setVTab(leading/2); + buildInfo.setText(bi.pointer()); + + canvas.setColumnWidth(1, 16); + canvas.setColumnWidth(5, 16); + canvas.setRowHeight(1, 16); + canvas.setRowHeight(5, 16); + canvas.setColumnWidth(2, 32); + canvas.setColumnWidth(3, 0, true); + canvas.setColumnWidth(4, 32); + LOGV(canvas.rowHeight(5)); + canvas.setRowHeight(2, 32); + canvas.setRowHeight(3, 0, true); + LOGV(canvas.rowHeight(2)); + canvas.addToCell(&anaGramIcon, 2, 2, 1, 1); + LOGV(canvas.rowHeight(2)); + canvas.addToCell(&textBlock, 3, 2, 1, 3); + ISize canvasSize = canvas.minimumSize(); + LOGV(canvasSize.asString()); + ISize frameSize = frameRectFor(IRectangle(canvasSize)).size(); + setClient(&canvas); + sizeTo(frameSize); + registerTitle("About AnaGram"); + LOGV(canvas.rowHeight(2)); +} + +AboutBox::~AboutBox() { + IPaintHandler::stopHandlingEventsFor(&canvas); + IPaintHandler::stopHandlingEventsFor(&textBlock); +} + +Boolean AboutBox::paintWindow(IPaintEvent &event) { + LOGSECTION("AboutBox::paintWindow"); + LOGV(event.rect().asString()); + LOGV((int) event.controlWindow()); + LOGV((int) event.dispatchingWindow()); + LOGV(position().asString()); + event.clearBackground(IGUIColor::dialogBgnd); + return false; +} +