SettingsDialog::SettingsDialog(const Rect & rect, SettingsDialogDelegate *newDelegate) : UIControl(rect) , delegate(newDelegate) { ControlsFactory::CustomizeDialogFreeSpace(this); Rect dialogRect(rect.dx/4, rect.dy/8, rect.dx / 2, rect.dy * 3 /4); dialogPanel = new DraggableDialog(dialogRect); ControlsFactory::CustomizeDialog(dialogPanel); AddControl(dialogPanel); UIStaticText * header = new UIStaticText(Rect(0, 0, dialogRect.dx, ControlsFactory::BUTTON_HEIGHT)); header->SetFont(ControlsFactory::GetFontLight()); header->SetText(LocalizedString(L"settings.header")); header->SetAlign(ALIGN_HCENTER | ALIGN_VCENTER); dialogPanel->AddControl(header); SafeRelease(header); propertyList = new PropertyList( Rect(0, ControlsFactory::BUTTON_HEIGHT, dialogRect.dx, dialogRect.dy - ControlsFactory::BUTTON_HEIGHT * 2), this); dialogPanel->AddControl(propertyList); float32 buttonY = dialogRect.dy - ControlsFactory::BUTTON_HEIGHT; float32 buttonX = (dialogRect.dx - ControlsFactory::BUTTON_WIDTH) / 2.f; UIButton *btnClose = ControlsFactory::CreateButton(Vector2(buttonX, buttonY), LocalizedString(L"dialog.close")); btnClose->AddEvent(UIControl::EVENT_TOUCH_UP_INSIDE, Message(this, &SettingsDialog::OnClose)); dialogPanel->AddControl(btnClose); SafeRelease(btnClose); propertyList->AddIntProperty("settingsdialog.screenwidth", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddIntProperty("settingsdialog.screenheight", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("settingsdialog.autosave", PropertyList::PROPERTY_IS_EDITABLE); languages.push_back("en"); languages.push_back("ru"); propertyList->AddComboProperty("settingsdialog.language", languages); propertyList->AddBoolProperty("settingsdialog.output", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("settingsdialog.cameraspeed1", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("settingsdialog.cameraspeed2", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("settingsdialog.cameraspeed3", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("settingsdialog.cameraspeed4", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddIntProperty("settingsdialog.leftpanelwidth", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddIntProperty("settingsdialog.rightpanelwidth", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddBoolProperty("settingsdialog.drawgrid", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddBoolProperty("settingsdialog.imposters", PropertyList::PROPERTY_IS_EDITABLE); }
void EDA_DRAW_FRAME::FocusOnLocation( const wxPoint& aPos, bool aWarpCursor, bool aCenterView ) { if( aCenterView ) { wxWindow* dialog = findDialog( GetChildren() ); // If a dialog partly obscures the window, then center on the uncovered area. if( dialog ) { wxRect dialogRect( GetGalCanvas()->ScreenToClient( dialog->GetScreenPosition() ), dialog->GetSize() ); GetGalCanvas()->GetView()->SetCenter( aPos, dialogRect ); } else GetGalCanvas()->GetView()->SetCenter( aPos ); } if( aWarpCursor ) GetGalCanvas()->GetViewControls()->SetCursorPosition( aPos ); else GetGalCanvas()->GetViewControls()->SetCrossHairCursorPosition( aPos ); }