示例#1
0
void MapServerDlg::OnInitDialog(wxInitDialogEvent& event)
{
	GetBaseUrl()->Clear();
	int numservers = m_pServers->size();
	for (int i = 0; i < numservers; i++)
	{
		wxString str(m_pServers->at(i).m_url, wxConvUTF8);
		GetBaseUrl()->Append(str);
	}
	// If no selection, pick the first server
	if (m_pServers->m_iSelected == -1 && numservers > 0)
		m_pServers->m_iSelected = 0;
	// Keep selection in range
	if (m_pServers->m_iSelected >= numservers)
		m_pServers->m_iSelected = numservers-1;
	// Apply selection
	if (m_pServers->m_iSelected != -1)
		GetBaseUrl()->SetSelection(m_pServers->m_iSelected);
	m_iServer = m_pServers->m_iSelected;

	UpdateEnabling();
	UpdateLayerList();
	UpdateLayerDescription();

	m_bSetting = true;
	wxWindow::OnInitDialog(event);
	m_bSetting = false;
}
示例#2
0
void LocationDlg::SetAnimContainer(vtAnimContainer *ac)
{
	m_pAnimPaths = ac;
	m_iAnim = -1;
	RefreshAnims();
	UpdateSlider();
	UpdateEnabling();
}
示例#3
0
void LocationDlg::OnRecord1( wxCommandEvent &event )
{
	TransferDataFromWindow();

	vtAnimPathEngine *engine = GetEngine(m_iAnim);
	vtTransform *xform = (vtTransform *) engine->GetTarget();
	vtAnimPath *path = engine->GetAnimationPath();

	FPoint3 pos = xform->GetTrans();
	FQuat rot = xform->GetOrient();
	ControlPoint cp(pos, rot);

	float fTime;
	if (path->NumPoints() == 0)
		fTime = 0;
	else
	{
		if (m_bRecordInterval)
		{
			// Record Interval: Append an element whose time is the desired number
			//  of seconds after the last point.
			fTime = path->GetLastTime() + m_fRecordSpacing;
		}
		else
		{
			// RecordLinear: Append an element whose time is derived from the linear
			//  distance from the last point.
			ControlPoint &prev_cp =
			path->GetTimeControlPointMap().rbegin()->second;
			float dist = (pos - prev_cp.m_Position).Length();

			// convert directly at 1 meter/second
			fTime = path->GetLastTime() + dist;
		}
	}
	path->Insert(fTime, cp);
	path->ProcessPoints();

	wxString str;
	str.Printf(_("%d: time %lf"), path->NumPoints()-1, fTime);

	// Find the current animation
	wxTreeItemId CurrentAnimation = GetAnimTree()->GetItemParent(m_current);
	if (CurrentAnimation == m_root)
		CurrentAnimation = m_current;
	GetAnimTree()->AppendItem(CurrentAnimation, str);

	RefreshAnimsText();
	UpdateEnabling();   // Smooth might be allowed now
}
示例#4
0
void LayerDlg::OnSelChanged( wxTreeEvent &event )
{
	m_item = event.GetItem();

	LayerItemData *data = GetLayerDataFromItem(m_item);
	if (data && data->m_layer != NULL)
	{
		vtLayer *newlay = data->m_layer;
		vtLayer *oldlay = m_pTerrain->GetActiveLayer();
		if (newlay != oldlay)
		{
			m_pTerrain->SetActiveLayer(newlay);
			UpdateTreeTerrain();
		}
	}

	UpdateEnabling();
}
示例#5
0
LocationDlg::LocationDlg( wxWindow *parent, wxWindowID id, const wxString &title,
	const wxPoint &position, const wxSize& size, long style ) :
	LocationDlgBase( parent, id, title, position, size, style )
{
	m_bActive = true;
	m_bLoop = true;
	m_bContinuous = false;
	m_bSmooth = true;
	m_bPosOnly = false;
	m_iAnim = -1;
	m_iPos = 0;
	m_fSpeed = 1.0f;
	m_bSetting = false;
	m_fRecordSpacing = 1.0f;
	m_bRecordLinear = true;
	m_bRecordInterval = false;

	m_pSaver = NULL;
	m_pAnimPaths = NULL;

	m_pLocList = GetLoclist();

	// Work around wxFormDesigner's lack of support for limiting to smallest size
	GetSizer()->SetSizeHints(this);

	AddValidator(this, ID_ACTIVE, &m_bActive);
	AddValidator(this, ID_LOOP, &m_bLoop);
	AddValidator(this, ID_CONTINUOUS, &m_bContinuous);
	AddValidator(this, ID_SMOOTH, &m_bSmooth);
	AddValidator(this, ID_POS_ONLY, &m_bPosOnly);
	AddNumValidator(this, ID_SPEED, &m_fSpeed, 2);
	AddValidator(this, ID_SPEEDSLIDER, &m_iSpeed);
	AddNumValidator(this, ID_RECORD_SPACING, &m_fRecordSpacing);
	AddValidator(this, ID_ANIM_POS, &m_iPos);

	AddValidator(this, ID_RECORD_LINEAR, &m_bRecordLinear);
	AddValidator(this, ID_RECORD_INTERVAL, &m_bRecordInterval);

	RefreshButtons();
	UpdateEnabling();
}
示例#6
0
void LayerDlg::RefreshTreeContents()
{
	if (!m_pTree)
		return;

	// start with a blank slate
	m_pTree->DeleteAllItems();

	switch (g_App.m_state)
	{
	case AS_Terrain:
		RefreshTreeTerrain();
		break;
	case AS_Orbit:
		RefreshTreeSpace();
		break;
	default:
		break;
	}
	m_item = m_pTree->GetSelection();
	UpdateEnabling();
}
示例#7
0
void InstanceDlg::OnInitDialog(wxInitDialogEvent& event)
{
	GetChoiceFile()->Clear();
	for (uint i = 0; i < m_contents.size(); i++)
	{
		vtContentManager *mng = m_contents[i];
		vtString str = mng->GetFilename();
		wxString ws(str, wxConvUTF8);
		GetChoiceFile()->Append(ws);
	}
	GetChoiceFile()->Select(0);

	GetChoiceType()->Clear();
	GetChoiceType()->Append(_("(All)"));
	GetChoiceType()->Select(0);

	UpdateLoc();
	UpdateEnabling();
	UpdateContentItems();

	wxDialog::OnInitDialog(event);
}
示例#8
0
void LocationDlg::OnTreeSelChanged( wxTreeEvent &event )
{
	int previous = m_iAnim;

	m_current = event.GetItem();
	wxTreeItemId selid = m_current;
	if (selid.IsOk())
	{
		// If they click on a subitem (point), look at its parent
		wxTreeItemId parent = GetAnimTree()->GetItemParent(selid);
		if (parent != m_root)
			selid = parent;

		// Look through the tree to find the index
		wxTreeItemIdValue cookie;
		wxTreeItemId id;
		int count = 0;
		for (id = GetAnimTree()->GetFirstChild(m_root, cookie);
			id.IsOk();
			id = GetAnimTree()->GetNextChild(m_root, cookie))
		{
			if (id == selid)
				m_iAnim = count;
			count++;
		}
	}
	else
		m_iAnim = -1;

	if (previous != m_iAnim)
	{
		UpdateEnabling();
		GetValues();
		UpdateSlider();
		ValuesToSliders();
		TransferToWindow();
	}
}
示例#9
0
void LocationDlg::OnTreeKeyDown( wxTreeEvent &event )
{
	if (event.GetKeyCode() != WXK_DELETE)
	{
		event.Skip();
		return;
	}
	wxTreeItemId selid = m_current;
	wxTreeItemId parent = GetAnimTree()->GetItemParent(selid);
	if (parent == m_root)
	{
		// delete anim
		m_pAnimPaths->erase(m_pAnimPaths->begin() + m_iAnim);
		m_iAnim = -1;
		RefreshAnims();
		UpdateEnabling();
	}
	else
	{
		// delete point
		wxTreeItemIdValue cookie;
		wxTreeItemId id;
		int count = 0;
		for (id = GetAnimTree()->GetFirstChild(parent, cookie);
			id.IsOk();
			id = GetAnimTree()->GetNextChild(parent, cookie))
		{
			if (id == selid)
				break;
			count++;
		}

		vtAnimPath *anim = GetAnim(m_iAnim);
		anim->RemovePoint(count);

		GetAnimTree()->Delete(m_current);
	}
}
示例#10
0
//==============================================================================================
// FUNCTION: ClearDisplay
// PURPOSE:  
//
void CMCTeleClientDlg::ClearDisplay()
{
   // enable / disable connection parameter widgets
   UpdateEnabling();

   // clear the telegraph parameter display fields
	m_cstrMode           = "";
	m_cstrPriSignal      = "";
   m_cstrPriAlpha       = "";
	m_cstrPriScaleFactor = "";
	m_cstrPriLPFCutoff   = "";
	m_cstrSecSignal      = "";
   m_cstrSecAlpha       = "";
	m_cstrSecScaleFactor = "";
	m_cstrSecLPFCutoff   = "";
	m_cstrMembraneCap    = "";
	m_cstrExtCmdSens     = "";
   m_cstrAppVer         = "";
	m_cstrDSPVer         = "";
	m_cstrFirmwareVer    = "";
	m_cstrSN             = "";

   UpdateData(FALSE);
}
示例#11
0
//==============================================================================================
// FUNCTION: UpdateDisplay
// PURPOSE:  
//
void CMCTeleClientDlg::UpdateDisplay()
{
   // enable / disable connection parameter widgets
   UpdateEnabling();

   // update the telegraph parameter display fields
   const unsigned int cuMaxDisplayStringSize = 128;
   char pszTemp[cuMaxDisplayStringSize];

   ///////////////////////////////////////////////////////////////////
   // operating mode
   ///////////////////////////////////////////////////////////////////
   if(m_mctdCurrentState.uOperatingMode < MCTG_MODE_NUMCHOICES)
   {
      sprintf( pszTemp, MCTG_MODE_NAMES[m_mctdCurrentState.uOperatingMode] );
   } 
   else
   {
      // this data is out of range
      // handle as you will
      sprintf(pszTemp, "Invalid Operating Mode!");
   }
	m_cstrMode = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // primary scaled output signal
   ///////////////////////////////////////////////////////////////////
   if(m_mctdCurrentState.uScaledOutSignal < AXMCD_OUT_NAMES_NUMCHOICES)
   {
      sprintf( pszTemp, MCTG_OUT_GLDR_LONG_NAMES[m_mctdCurrentState.uScaledOutSignal] );
   } 
   else
   {
      // this data is out of range
      // handle as you will
	   sprintf(pszTemp, "Go Bombers!");
   }
	m_cstrPriSignal = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // secondary scaled output signal
   ///////////////////////////////////////////////////////////////////
   if(m_mctdCurrentState.uRawOutSignal < AXMCD_OUT_NAMES_NUMCHOICES)
   {
      sprintf( pszTemp, MCTG_OUT_GLDR_LONG_NAMES[m_mctdCurrentState.uRawOutSignal] );
   } 
   else
   {
      // this data is out of range
      // handle as you will
	   sprintf(pszTemp, "Go Bombers!");
   }
	m_cstrSecSignal = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // primary alpha
   ///////////////////////////////////////////////////////////////////
   sprintf(pszTemp, "%.3f", m_mctdCurrentState.dAlpha);
	m_cstrPriAlpha = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // secondary alpha
   ///////////////////////////////////////////////////////////////////
   sprintf(pszTemp, "%.3f", m_mctdCurrentState.dSecondaryAlpha);
	m_cstrSecAlpha = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // primary scale factor and units
   ///////////////////////////////////////////////////////////////////
   switch( m_mctdCurrentState.uScaleFactorUnits )
   {
      case MCTG_UNITS_VOLTS_PER_VOLT:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/V", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MILLIVOLT:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/mV", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MICROVOLT:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/µV", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_AMP:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/A", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MILLIAMP:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/mA", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MICROAMP:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/µA", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_NANOAMP:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/nA", m_mctdCurrentState.dScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_PICOAMP:
      {
         m_cstrPriScaleFactor.Format( "%0.2f V/pA", m_mctdCurrentState.dScaleFactor );
         break;
      }
      default:
      {
         // invalid units identifier
         ASSERT( FALSE );
         break;
      }
   }
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // secondary scale factor and units
   ///////////////////////////////////////////////////////////////////
   switch( m_mctdCurrentState.uRawScaleFactorUnits )
   {
      case MCTG_UNITS_VOLTS_PER_VOLT:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/V", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MILLIVOLT:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/mV", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MICROVOLT:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/µV", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_AMP:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/A", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MILLIAMP:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/mA", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_MICROAMP:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/µA", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_NANOAMP:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/nA", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      case MCTG_UNITS_VOLTS_PER_PICOAMP:
      {
         m_cstrSecScaleFactor.Format( "%0.2f V/pA", m_mctdCurrentState.dRawScaleFactor );
         break;
      }
      default:
      {
         // invalid units identifier
         ASSERT( FALSE );
         break;
      }
   }
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // primary LPF cutoff
   ///////////////////////////////////////////////////////////////////
   if(m_mctdCurrentState.dLPFCutoff >= MCTG_LPF_BYPASS )
   {
	   sprintf(pszTemp, "%.0f Hz", m_mctdCurrentState.dLPFCutoff);
	   strcat(pszTemp, " ( Bypass )");
   }
   else
   {
	   sprintf(pszTemp, "%.0f Hz", m_mctdCurrentState.dLPFCutoff);
   }
	m_cstrPriLPFCutoff = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // secocndary LPF cutoff
   ///////////////////////////////////////////////////////////////////
   if(m_mctdCurrentState.dSecondaryLPFCutoff >= MCTG_LPF_BYPASS )
   {
	   sprintf(pszTemp, "%.0f Hz", m_mctdCurrentState.dSecondaryLPFCutoff);
	   strcat(pszTemp, " ( Bypass )");
   }
   else
   {
	   sprintf(pszTemp, "%.0f Hz", m_mctdCurrentState.dSecondaryLPFCutoff);
   }
	m_cstrSecLPFCutoff = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // membrane capacitance
   ///////////////////////////////////////////////////////////////////
   if(m_mctdCurrentState.dMembraneCap == MCTG_NOMEMBRANECAP)
   {
      sprintf(pszTemp, "N/A");
   }
   else
   {
      sprintf(pszTemp, "%.3f pF", m_mctdCurrentState.dMembraneCap * 1.0e12);
   }
	m_cstrMembraneCap = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // external command sensitivity
   ///////////////////////////////////////////////////////////////////
   switch( m_mctdCurrentState.uOperatingMode )
   {
      case MCTG_MODE_VCLAMP:
      {
         if( m_mctdCurrentState.dExtCmdSens <= 0.0 )
         {
            sprintf(pszTemp, "OFF");
         }
         else
         {
            sprintf(pszTemp, "%.0f mV/V", m_mctdCurrentState.dExtCmdSens * 1.0e3);
         }
         break;
      }
      case MCTG_MODE_ICLAMP:
      case MCTG_MODE_ICLAMPZERO:
      {
         if( m_mctdCurrentState.dExtCmdSens <= 0.0   )
         {
            sprintf(pszTemp, "OFF");
         }
         else if( m_mctdCurrentState.dExtCmdSens < 1.0e-9 )
         {
            sprintf(pszTemp, "%.0f pA/V", m_mctdCurrentState.dExtCmdSens * 1.0e12);
         }
         else
         {
            sprintf(pszTemp, "%.0f nA/V", m_mctdCurrentState.dExtCmdSens * 1.0e9);
         }
         break;
      }
      default:
      {
         sprintf(pszTemp, "Invalid Operating Mode!");
         break;
      }
   }
	m_cstrExtCmdSens = pszTemp;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // application version number
   ///////////////////////////////////////////////////////////////////
   m_cstrAppVer = m_mctdCurrentState.szAppVersion;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // firmware version number
   ///////////////////////////////////////////////////////////////////
   m_cstrFirmwareVer = m_mctdCurrentState.szFirmwareVersion;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // DSP version number
   ///////////////////////////////////////////////////////////////////
   m_cstrDSPVer = m_mctdCurrentState.szDSPVersion;
   ///////////////////////////////////////////////////////////////////

   ///////////////////////////////////////////////////////////////////
   // Serial number number
   ///////////////////////////////////////////////////////////////////
   m_cstrSN = m_mctdCurrentState.szSerialNumber;
   ///////////////////////////////////////////////////////////////////

   UpdateData(FALSE);
}
示例#12
0
void LocationDlg::OnRadio( wxCommandEvent &event )
{
	TransferDataFromWindow();
	UpdateEnabling();
}
示例#13
0
void MapServerDlg::OnRadio( wxCommandEvent &event )
{
	TransferDataFromWindow();
	UpdateEnabling();
}
示例#14
0
void InstanceDlg::OnRadio( wxCommandEvent &event )
{
	TransferDataFromWindow();
	UpdateEnabling();
}