Exemplo n.º 1
0
int EBuffer::FoldOpen(int Line) { /*FOLD00*/
  int f = FindFold(Line);
  int l;
  int level, toplevel;
  int top;

  if (f == -1) return 0;

  if (FF[f].open == 1) return 1;  // already open

  if (Modify() == 0) return 0;

  if (BFI(this, BFI_Undo)) {
    if (PushULong(Line) == 0) return 0;

    if (PushUChar(ucFoldOpen) == 0) return 0;
  }

  FF[f].open = 1;
  top        = FF[f].line;
  toplevel   = FF[f].level;

  //    printf("Fold starts with %d\n", FF[f].line);
  if (ShowRow(FF[f].line) == 0) return 0;

  while (f < FCount) {
    level = FF[f].level;

    if (FF[f].open == 1) {
      // fold is open
      if (f == FCount - 1) {
        for (l = FF[f].line; l < RCount; l++)
          if (l != top) if (ShowRow(l) == 0) return 0;
      } else {
        for (l = FF[f].line; l < FF[f + 1].line; l++)
          if (l != top) if (ShowRow(l) == 0) return 0;
      }
      f++;
    } else { // fold is closed
      // show head line
      if (ShowRow(FF[f].line) == 0) return 0;

      // skip closed folds
      while ((f < FCount) && (level < FF[f + 1].level)) f++;
      f++;
    }

    if ((f < FCount) && (FF[f].level <= toplevel)) break;
  }
  return 1;
}
Exemplo n.º 2
0
void
FlightSetupPanel::ShowAltitude(fixed altitude)
{
  if (fabs(altitude - last_altitude) >= fixed(1)) {
    last_altitude = altitude;
    LoadValue(Altitude, altitude, UnitGroup::ALTITUDE);
  }

  ShowRow(Altitude);
}