Esempio n. 1
0
static bool
WaypointInTerrainRange(WAYPOINT *List, RasterTerrain &terrain)
{
  if (WaypointOutOfTerrainRangeDontAskAgain == 1){
    return(true);
  }

  if (!terrain.isTerrainLoaded()) {
    return(true);
  }

  if (terrain.WaypointIsInTerrainRange(List->Location)) {
    return true;
  } else {
    if (WaypointOutOfTerrainRangeDontAskAgain == 0){

      TCHAR sTmp[250];
      int res;

      _stprintf(sTmp, gettext(TEXT("Waypoint #%d \"%s\" \r\nout of Terrain bounds\r\n\r\nLoad anyway?")),
                List->Number, List->Name);

      res = dlgWaypointOutOfTerrain(sTmp);

      switch(res){
      case wpTerrainBoundsYes:
        return true;
      case wpTerrainBoundsNo:
        return false;
      case wpTerrainBoundsYesAll:
        WaypointOutOfTerrainRangeDontAskAgain = 1;
        WaypointsOutOfRange = 1;
        SetToRegistry(szRegistryWaypointsOutOfRange,
                      WaypointsOutOfRange);
	Profile::StoreRegistry();
        return true;
      case mrCancel:
      case wpTerrainBoundsNoAll:
        WaypointOutOfTerrainRangeDontAskAgain = 2;
        WaypointsOutOfRange = 2;
        SetToRegistry(szRegistryWaypointsOutOfRange,
                      WaypointsOutOfRange);
	Profile::StoreRegistry();
        return false;
      }

    } else {
      if (WaypointOutOfTerrainRangeDontAskAgain == 2)
        return(false);
      if (WaypointOutOfTerrainRangeDontAskAgain == 1)
        return(true);
    }
    return false;
  }
}
codeINSTALL_EXIT Install_Exit(
                              HWND    hwndParent,
                              LPCTSTR pszInstallDir,
                              WORD    cFailedDirs,
                              WORD    cFailedFiles,
                              WORD    cFailedRegKeys,
                              WORD    cFailedRegVals,
                              WORD    cFailedShortcuts
                              )
{
    SetStringToRegistry(REG_MOBILEREMOTE_DLL, L"MobileRemoteDRV.dll");
    SetToRegistry(REG_MOBILEREMOTE_INDEX, 1);
    SetToRegistry(REG_MOBILEREMOTE_ORDER, 0);
    SetStringToRegistry(REG_MOBILEREMOTE_PREFIX, L"L2C");

    return codeINSTALL_EXIT_DONE;
}
Esempio n. 3
0
codeUNINSTALL_INIT Uninstall_Init(
    HWND        hwndParent,
    LPCTSTR     pszInstallDir
    )
{
    SetToRegistry(REG_Disabled, 1);
    // Kill process here
    KillProcess(TEXT("Flipper.exe"));
    return codeUNINSTALL_INIT_CONTINUE;
}
Esempio n. 4
0
bool SetValueRegistryOnChange(WndForm* wfm,
			      const TCHAR* field,
			      const TCHAR* reg,
			      short &value) {
  if (SetValueOnChange(wfm, field, value)) {
    SetToRegistry(reg, (DWORD)value);
    return true;
  } else {
    return false;
  }
}
Esempio n. 5
0
void	AccelerometerProcessing(int UpDown)
{
  DWORD Temp;
  if (UpDown==0) {
    AccelerometerZero*= GPS_INFO.Gload;
    if (AccelerometerZero<1) {
      AccelerometerZero = 100;
    }
    Temp = (int)AccelerometerZero;
    SetToRegistry(szRegistryAccelerometerZero,Temp);
  }
}
Esempio n. 6
0
codeINSTALL_EXIT Install_Exit(
    HWND    hwndParent,
    LPCTSTR pszInstallDir,
    WORD    cFailedDirs,
    WORD    cFailedFiles,
    WORD    cFailedRegKeys,
    WORD    cFailedRegVals,
    WORD    cFailedShortcuts
    )
{
    // We have to set these values here, because cabwiz doesn't like negative reg values
    KillProcess(TEXT("ctlpnl.exe"));

    SetToRegistry(REG_Disabled, 0);

    LaunchProgram(L"\\Program Files\\mobilesrc\\flipper\\FlipperConfig.exe", L"");
    return codeINSTALL_EXIT_DONE;
}
Esempio n. 7
0
void XCSoarInterface::PreloadInitialisation(bool ask) {
  if (ask) {
#ifdef PNA
    CleanRegistry(); // VENTA2-FIX for PNA we can't delete all registries..by now
#endif
  }

  SetToRegistry(TEXT("XCV"), 1);

#ifdef DEBUG_TRANSLATIONS
  ReadLanguageFile();
#endif

  // Registry (early)

  if (ask) {
    Profile::RestoreRegistry();
    Profile::ReadRegistrySettings();

    // CreateProgressDialog(gettext(TEXT("Initialising")));

  } else {
    dlgStartupShowModal();
    Profile::RestoreRegistry();
    Profile::ReadRegistrySettings();

    CreateProgressDialog(gettext(TEXT("Initialising")));
  }

  // Interface (before interface)
  if (!ask) {
#ifndef DEBUG_TRANSLATIONS
    ReadLanguageFile();
#endif
    status_messages.LoadFile();
    InputEvents::readFile();
  }

}
Esempio n. 8
0
void dlgTopologyShowModal(void){

  if (LKTopo<1) { 
	MessageBoxX (hWndMainWindow, 
	// LKTOKEN  _@M502_ = "Only LKMaps can be configured, sorry!" 
		gettext(TEXT("_@M502_")), 
		TEXT(""), MB_OK);
  	return;
  }

  WndProperty *wp;
  char filename[MAX_PATH];
  LocalPathS(filename, TEXT("dlgTopology.xml"));
  wf = dlgLoadFromXML(CallBackTable,                        
		      filename, 
		      hWndMainWindow,
		      TEXT("IDR_XML_TOPOLOGY"));

  if (!wf) return;

  setVariables();

  changed = false;

  wf->ShowModal();


  wp = (WndProperty*)wf->FindByName(TEXT("prpCat10"));
  if (wp) {
	if (HaveZoomTopology(5)) 
	if ( LKTopoZoomCat05 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat05 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat05, (DWORD)LKTopoZoomCat05);
		ChangeZoomTopology(5,LKTopoZoomCat05,0);
		changed = true;
	}
  }
  if (wp) {
	if (HaveZoomTopology(10)) 
	if ( LKTopoZoomCat10 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat10 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat10, (DWORD)LKTopoZoomCat10);
		ChangeZoomTopology(10,LKTopoZoomCat10,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat20"));
  if (wp) {
	if (HaveZoomTopology(20)) 
	if ( LKTopoZoomCat20 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat20 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat20, (DWORD)LKTopoZoomCat20);
		ChangeZoomTopology(20,LKTopoZoomCat20,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat30"));
  if (wp) {
	if (HaveZoomTopology(30)) 
	if ( LKTopoZoomCat30 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat30 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat30, (DWORD)LKTopoZoomCat30);
		ChangeZoomTopology(30,LKTopoZoomCat30,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat40"));
  if (wp) {
	if (HaveZoomTopology(40)) 
	if ( LKTopoZoomCat40 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat40 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat40, (DWORD)LKTopoZoomCat40);
		ChangeZoomTopology(40,LKTopoZoomCat40,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat50"));
  if (wp) {
	if (HaveZoomTopology(50)) 
	if ( LKTopoZoomCat50 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat50 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat50, (DWORD)LKTopoZoomCat50);
		ChangeZoomTopology(50,LKTopoZoomCat50,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat60"));
  if (wp) {
	if (HaveZoomTopology(60)) 
	if ( LKTopoZoomCat60 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat60 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat60, (DWORD)LKTopoZoomCat60);
		ChangeZoomTopology(60,LKTopoZoomCat60,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat70"));
  if (wp) {
	if (HaveZoomTopology(70)) 
	if ( LKTopoZoomCat70 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat70 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat70, (DWORD)LKTopoZoomCat70);
		ChangeZoomTopology(70,LKTopoZoomCat70,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat80"));
  if (wp) {
	if (HaveZoomTopology(80)) 
	if ( LKTopoZoomCat80 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat80 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat80, (DWORD)LKTopoZoomCat80);
		ChangeZoomTopology(80,LKTopoZoomCat80,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat90"));
  if (wp) {
	if (HaveZoomTopology(90)) 
	if ( LKTopoZoomCat90 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat90 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat90, (DWORD)LKTopoZoomCat90);
		ChangeZoomTopology(90,LKTopoZoomCat90,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat100"));
  if (wp) {
	if (HaveZoomTopology(100)) 
	if ( LKTopoZoomCat100 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat100 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat100, (DWORD)LKTopoZoomCat100);
		ChangeZoomTopology(100,LKTopoZoomCat100,0);
		changed = true;
	}
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpCat110"));
  if (wp) {
	if (HaveZoomTopology(110)) 
	if ( LKTopoZoomCat110 != wp->GetDataField()->GetAsFloat()) {
		LKTopoZoomCat110 = wp->GetDataField()->GetAsFloat();
		SetToRegistry(szRegistryLKTopoZoomCat110, (DWORD)LKTopoZoomCat110);
		ChangeZoomTopology(110,LKTopoZoomCat110,0);
		changed = true;
	}
  }


  if (changed) {
    StoreRegistry();
    MessageBoxX (hWndMainWindow, 
	// LKTOKEN  _@M732_ = "Topology configuration saved." 
		 gettext(TEXT("_@M732_")), 
		 TEXT(""), MB_OK);
  }


  delete wf;
  wf = NULL;

}
Esempio n. 9
0
void
SetHome(const WayPointList &way_points, RasterTerrain &terrain,
        SETTINGS_COMPUTER &settings,
        const bool reset, const bool set_location)
{
  StartupStore(TEXT("SetHome\n"));

  // check invalid home waypoint or forced reset due to file change
  // VENTA3
  if (reset || !way_points.verify_index(0) ||
      !way_points.verify_index(settings.HomeWaypoint)) {
    settings.HomeWaypoint = -1;
  }
  // VENTA3 -- reset Alternates
  if (reset
      || !way_points.verify_index(settings.Alternate1)
      || !way_points.verify_index(settings.Alternate2)) {
    settings.Alternate1= -1;
    settings.Alternate2= -1;
  }
  // check invalid task ref waypoint or forced reset due to file change
  if (reset || !way_points.verify_index(settings.TeamCodeRefWaypoint)) {
    settings.TeamCodeRefWaypoint = -1;
  }

  if (!way_points.verify_index(settings.HomeWaypoint)) {
    // search for home in waypoint list, if we don't have a home
    settings.HomeWaypoint = -1;
    for (unsigned i = 0; way_points.verify_index(i); ++i)
      {
        if ((way_points.get(i).Flags & HOME) == HOME)
          {
            if (settings.HomeWaypoint== -1) {
              settings.HomeWaypoint = i;
	      break; // only search for one
            }
          }
      }
  }
  // set team code reference waypoint if we don't have one
  if (settings.TeamCodeRefWaypoint== -1) {
    settings.TeamCodeRefWaypoint =
      settings.HomeWaypoint;
  }

  if (set_location) {
    if (way_points.verify_index(settings.HomeWaypoint)) {
      // OK, passed all checks now
      StartupStore(TEXT("Start at home waypoint\n"));
      const WAYPOINT &home = way_points.get(settings.HomeWaypoint);
      device_blackboard.SetStartupLocation(home.Location, home.Altitude);
    } else {

      // no home at all, so set it from center of terrain if available
      GEOPOINT loc;
      if (terrain.GetTerrainCenter(&loc)) {
	StartupStore(TEXT("Start at terrain center\n"));
	device_blackboard.SetStartupLocation(loc, 0);
      }
    }
  }

  //
  // Save the home waypoint number in the resgistry
  //
  // VENTA3> this is probably useless, since HomeWayPoint &c were currently
  //         just loaded from registry.
  SetToRegistry(szRegistryHomeWaypoint,settings.HomeWaypoint);
  SetToRegistry(szRegistryAlternate1,settings.Alternate1);
  SetToRegistry(szRegistryAlternate2,settings.Alternate2);
  SetToRegistry(szRegistryTeamcodeRefWaypoint,settings.TeamCodeRefWaypoint);
}
Esempio n. 10
0
void dlgTimeGatesShowModal(void){

  WndProperty *wp;
  char filename[MAX_PATH];
  LocalPathS(filename, TEXT("dlgTimeGates.xml"));
  wf = dlgLoadFromXML(CallBackTable,                        
		      filename, 
		      hWndMainWindow,
		      TEXT("IDR_XML_TIMEGATES"));

  if (!wf) return;
  
  setVariables();

  changed = false;

  wf->ShowModal();
  // TODO enhancement: implement a cancel button that skips all this below after exit.


  wp = (WndProperty*)wf->FindByName(TEXT("prpPGNumberOfGates"));
  if (wp) {
    if ( PGNumberOfGates != wp->GetDataField()->GetAsInteger()) {
      PGNumberOfGates = wp->GetDataField()->GetAsInteger();
      SetToRegistry(szRegistryPGNumberOfGates, PGNumberOfGates);
      changed = true;
    }
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpPGOpenTimeH"));
  if (wp) {
    if ( PGOpenTimeH != wp->GetDataField()->GetAsInteger()) {
      PGOpenTimeH = wp->GetDataField()->GetAsInteger();
      SetToRegistry(szRegistryPGOpenTimeH, PGOpenTimeH);
      changed = true;
    }
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpPGOpenTimeM"));
  if (wp) {
    if ( PGOpenTimeM != wp->GetDataField()->GetAsInteger()) {
      PGOpenTimeM = wp->GetDataField()->GetAsInteger();
      SetToRegistry(szRegistryPGOpenTimeM, PGOpenTimeM);
      changed = true;
    }
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpPGGateIntervalTime"));
  if (wp) {
    if ( PGGateIntervalTime != wp->GetDataField()->GetAsInteger()) {
      PGGateIntervalTime = wp->GetDataField()->GetAsInteger();
      SetToRegistry(szRegistryPGGateIntervalTime, PGGateIntervalTime);
      changed = true;
    }
  }
  wp = (WndProperty*)wf->FindByName(TEXT("prpPGStartOut"));
  if (wp) {
    if ( PGStartOut != wp->GetDataField()->GetAsInteger()) {
      PGStartOut = wp->GetDataField()->GetAsInteger();
      SetToRegistry(szRegistryPGStartOut, PGStartOut);
      changed = true;
    }
  }

  if (changed) {

     PGOpenTime=((PGOpenTimeH*60)+PGOpenTimeM)*60;
     PGCloseTime=PGOpenTime+(PGGateIntervalTime*PGNumberOfGates*60);
     if (PGCloseTime>86399) PGCloseTime=86399; // 23:59:59
     ActiveGate=-1;

    StoreRegistry();
    MessageBoxX (hWndMainWindow, 
	// LKTOKEN  _@M168_ = "Changes to configuration saved." 
		 gettext(TEXT("_@M168_")), 
		 TEXT(""), MB_OK);
  }


  delete wf;
  wf = NULL;

}
Esempio n. 11
0
void dlgInfoPagesShowModal(void){

  WndProperty *wp;
  char filename[MAX_PATH];
  LocalPathS(filename, TEXT("dlgInfoPages.xml"));
  wf = dlgLoadFromXML(CallBackTable,                        
		      filename, 
		      hWndMainWindow,
		      TEXT("IDR_XML_INFOPAGES"));

  if (!wf) return;

  setVariables();

  changed = false;

  wf->ShowModal();

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP11"));
  if (wp) {
	if (ConfIP11 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP11 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP11, (DWORD)(ConfIP11));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP12"));
  if (wp) {
	if (ConfIP12 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP12 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP12, (DWORD)(ConfIP12));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP13"));
  if (wp) {
	if (ConfIP13 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP13 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP13, (DWORD)(ConfIP13));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP14"));
  if (wp) {
	if (ConfIP14 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP14 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP14, (DWORD)(ConfIP14));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP15"));
  if (wp) {
	if (ConfIP15 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP15 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP15, (DWORD)(ConfIP15));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP16"));
  if (wp) {
	if (ConfIP16 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP16 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP16, (DWORD)(ConfIP16));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP21"));
  if (wp) {
	if (ConfIP21 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP21 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP21, (DWORD)(ConfIP21));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP22"));
  if (wp) {
	if (ConfIP22 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP22 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP22, (DWORD)(ConfIP22));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP23"));
  if (wp) {
	if (ConfIP23 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP23 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP23, (DWORD)(ConfIP23));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP24"));
  if (wp) {
	if (ConfIP24 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP24 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP24, (DWORD)(ConfIP24));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP31"));
  if (wp) {
	if (ConfIP31 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP31 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP31, (DWORD)(ConfIP31));
		changed=true;
	}
  }

  wp = (WndProperty*)wf->FindByName(TEXT("prpIP32"));
  if (wp) {
	if (ConfIP32 != (wp->GetDataField()->GetAsBoolean())) {
		ConfIP32 = (wp->GetDataField()->GetAsBoolean());
		SetToRegistry(szRegistryConfIP32, (DWORD)(ConfIP32));
		changed=true;
	}
  }

  if (changed) {
    StoreRegistry();
    UpdateConfIP();
    MessageBoxX (hWndMainWindow,
                 gettext(TEXT("_@M1608_")), // infopages config saved
                 TEXT(""), MB_OK);
  }


  delete wf;
  wf = NULL;

}
Esempio n. 12
0
void
ButtonLabel::GetButtonPosition(unsigned i, RECT rc, int *x, int *y,
    int *sizex, int *sizey)
{
  TCHAR reggeompx[50];
  TCHAR reggeompy[50];
  TCHAR reggeomsx[50];
  TCHAR reggeomsy[50];

  _stprintf(reggeompx, TEXT("ScreenButtonPosX%d"), i);
  _stprintf(reggeompy, TEXT("ScreenButtonPosY%d"), i);
  _stprintf(reggeomsx, TEXT("ScreenButtonSizeX%d"), i);
  _stprintf(reggeomsy, TEXT("ScreenButtonSizeY%d"), i);

  GetFromRegistry(reggeompx,*x);
  GetFromRegistry(reggeompy,*y);
  GetFromRegistry(reggeomsx,*sizex);
  GetFromRegistry(reggeomsy,*sizey);

  bool geometrychanged = true; // JMW testing

  if ((*sizex == 0) || (*sizey == 0) || geometrychanged) {
    // not defined in registry so go with defaults
    // these will be saved back to registry
    int hwidth = (rc.right - rc.left) / 4;
    int hheight = (rc.bottom - rc.top) / 4;

    switch (ButtonLabelGeometry) {
    case 0: // portrait
      if (i == 0) {
        *sizex = IBLSCALE(52);
        *sizey = IBLSCALE(37);
        *x = rc.left - (*sizex); // JMW make it offscreen for now
        *y = rc.bottom - (*sizey);
      } else {
        if (i < 5) {
          *sizex = IBLSCALE(52);
          *sizey = IBLSCALE(40);
          *x = rc.left + 3 + hwidth * (i - 1);
          *y = rc.bottom - (*sizey);
        } else {
          *sizex = IBLSCALE(80);
          *sizey = IBLSCALE(40);
          *x = rc.right - (*sizex);
          int k = rc.bottom - rc.top - IBLSCALE(46);

          if (is_altair()) {
            k = rc.bottom - rc.top;
            // JMW need upside down button order for rotated Altair
            *y = rc.bottom - (i - 5) * k / 5 - (*sizey) - IBLSCALE(20);
          } else {
            *y = rc.top + (i - 5) * k / 6 + (*sizey / 2 + IBLSCALE(3));
          }
        }
      }
      break;

    case 1: // landscape
      hwidth = (rc.right - rc.left) / 5;
      hheight = (rc.bottom - rc.top) / 5;

      if (i == 0) {
        *sizex = IBLSCALE(52);
        *sizey = IBLSCALE(20);
        *x = rc.left - (*sizex); // JMW make it offscreen for now
        *y = (rc.top);
      } else {
        if (i < 5) {
          *sizex = IBLSCALE(52);
          *sizey = is_altair() ? IBLSCALE(20) : IBLSCALE(35);
          *x = rc.left + 3;
          *y = (rc.top + hheight * i - (*sizey) / 2);
        } else {
          *sizex = IBLSCALE(60);
          *sizey = is_altair() ? IBLSCALE(40) : IBLSCALE(35);
          *x = rc.left + hwidth * (i - 5);
          *y = (rc.bottom - (*sizey));
        }
      }
      break;
    }

    SetToRegistry(reggeompx, *x);
    SetToRegistry(reggeompy, *y);
    SetToRegistry(reggeomsx, *sizex);
    SetToRegistry(reggeomsy, *sizey);
  }
}