view anagram/vaclgui/multiline.hpp @ 14:a02e9434072e

Fix friend declaration for gcc10. XXX: did not check it against the IBM compiler, might end up needing XXX: to be conditional.
author David A. Holland
date Tue, 31 May 2022 00:59:42 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1997-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * multiline.hpp
 */

#ifndef MULTILINE_HPP
#define MULTILINE_HPP

#include <ipainhdr.hpp>
#include <istattxt.hpp>

#include "agstring.h"
#include "base.h"

class MultiLineText
  : public IStaticText
  , public IPaintHandler
{
private:
  int nLines;
  AgString textString;
  ISize margin;
  int vTab;

public:
  MultiLineText(IWindow *owner,
                IRectangle r = IRectangle(),
                IStaticText::Style s = IStaticText::classDefaultStyle)
    : IStaticText(nextChildId(), owner, owner, r, s)
    , nLines(0)
    , margin(8,8)
    , vTab(0)
  {
    IPaintHandler::handleEventsFor(this);
  }
  ~MultiLineText() {
    IPaintHandler::stopHandlingEventsFor(this);
  }
  MultiLineText &setTextString(AgString s);

  // otherwise the compiler complains that this is hidden
  virtual IStaticText &setText(const IResourceId &ir) {
    return IStaticText::setText(ir);
  }

  virtual MultiLineText &setText(const char *s);
  Boolean paintWindow(IPaintEvent &event);
  ISize calcMinimumSize() const;
  MultiLineText &setMargin(ISize s) { margin = s; return *this; }
  MultiLineText &setMargin(int w, int h) { margin = ISize(w,h); return *this; }
  MultiLineText &setVTab(int v) { vTab = v; return *this; }
};

#endif /* MULTILINE_HPP */