view anagram/vaclgui/dvplug.cpp @ 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.
 *
 * dvplug.cpp
 */

#include "action.h"
#include "dvplug.hpp"
#include "dc.h"
#include "p.h"
#include "stacks.h"
#include "wm1.h"

//#define INCLUDE_LOGGING
#include "log.h"


AgDataViewPlug::~AgDataViewPlug() {
  LOGSECTION("AgDataViewPlug::~AgDataViewPlug");
  LOGV((int) this) LCV(displayControl->usage_count);
}

IColor AgDataViewPlug::color[10] = {
  IColor::blue, IColor::white,             // table body
  IColor:: darkRed, IColor::white,         // cursor bar
  IColor::paleGray, IColor::black,         // head title
  IColor::white, IColor::darkBlue,         // column head titles
  IColor::paleGray, IColor::black          // foot title
};

void AgDataViewPlug::disconnect() {
  displayControl.discardData();
}

void AgDataViewPlug::setFocus() {
  dataView->setFocus();
}

int AgDataViewPlug::getCursorLine() {
  //LOGSECTION("AgDataViewPlug::getCursorLine");
  return dataView->getCursorLine();
}

unsigned AgDataViewPlug::nColumns() {
  int *tabs = displayControl->tab_stops;
  if (tabs == 0) {
    return 1;
  }
  unsigned i = 1;
  while (*tabs++) {
    i++;
  }
  return i;
}

void AgDataViewPlug::show() {
  pop_up_window(displayControl);
}

AgString AgDataViewPlug::getLine(unsigned k) {
  extern char *string_base;

  LOGSECTION("AgDataViewPlug::getLine");
  LOGV((int) (dc *) displayControl);
  displayControl->getLine(k);
  LOGV(string_base);
  return buildAgString();
}

AgString AgDataViewPlug::findHelpTopic() {
  displayControl->des->c_loc_doc.y = getCursorLine();
  return displayControl->findHelpTopic();
}

int AgDataViewPlug::syntaxDependent() {
  return displayControl->syntax_dependent;
}

unsigned AgDataViewPlug::nLines() { return displayControl->des->d_size.y; }
int AgDataViewPlug::nextChildId() { return ::nextChildId(); }

AgString AgDataViewPlug::fileName() { return simple_file_name; }
AgString AgDataViewPlug::headTitle() {
  return displayControl->head_title;
}
AgString AgDataViewPlug::columnHeadTitle() {
  return displayControl->columnHeadTitle;
}
AgString AgDataViewPlug::footTitle() {
  return displayControl->foot_title;
}

AgArray<AgMenuItem> AgDataViewPlug::auxMenu() {
  LOGSECTION("AgDataViewPlug::auxMenu");
  LOGV((int) dataView);
  LOGV((int) dataView->frameWindow);
  dc::MenuOption **auxMenu = displayControl->getAuxWinMenu();
  LOGV((int) auxMenu);
  int n = 0;
  int i;
  if (auxMenu) {
    while (auxMenu[n]) {
      n++;
    }
  }
  LOGV(n);
  LOGV((int) dataView->frameWindow);
  LOGV((int) (dc *) displayControl);
  AgArray<AgMenuItem> menu(n);
  for (i = 0; i < n; i++) {
    LOGV(i) LCV(auxMenu[i]->option_name);
    LOGV((int) dataView->frameWindow);
    menu[i] = AgMenuItem(auxMenu[i]->option_name,
			 AgClassAction<dc>(*displayControl,
					   auxMenu[i]->action),
			 (dc *) displayControl);
    LOGV((int) menu[i].displayControl);
    LOGV((int) dataView->frameWindow);
  }
  return menu;
}

void AgDataViewPlug::synchCursor(unsigned ln) {
  LOGSECTION("AgDataViewPlug::synchCursor");
  LOGV((int) (dc *) displayControl);
  displayControl->synchCursor(ln);
}