void LevelEditor::UpdateLayerList() { if (!_level) return; int row = LayerList.GetCurrentRow(); LayerList.Clear(); for (int i = 0; i < _level->GetLayers().GetCount(); ++i) { LayerList.Add(i, _level->GetLayers()[i].GetName()); } if (row >= 0 && row < LayerList.GetRowCount()) LayerList.SetCursor(row); if (row < 0 && LayerList.GetRowCount()) LayerList.SetCursor(0); MapLevel* level = EditView.GetCurrentLevel(); if (!level) return; else level->ClearEditPoints(); _item = -1; UpdateItemList(); }
void FormEdit::OpenObjectProperties(const Vector<int>& indexes) { if (!_View.IsLayout()) return; String temp = _TempObjectName; _TempObjectName.Clear(); _ItemList.EndEdit(false, false, false); int row = _ItemList.GetCurrentRow(); if (row >= 0 && !temp.IsEmpty()) { _View.GetCurrentLayout()->GetObjects()[row].Set("Variable", temp); _ItemList.Set(row, 1, temp); } _LayoutList.EndEdit(); if (indexes.GetCount() == 1) { FormObject* pI = _View.GetObject(indexes[0]); if (!pI) return; _ItemProperties._Options.EndEdit(); _ItemProperties.Generate(pI, indexes[0]); } if (indexes.GetCount() == 0) { _ItemProperties._Options.EndEdit(); _ItemProperties._Headers.Clear(); _ItemProperties._Options.Clear(); } UpdateItemList(); }
// 項目を選択する void SelectItem( const TreeItem& item ) { // 説明更新 ::SetDlgItemText( WindowHandle, IDC_DESCRIPTION_EDIT, item.Description.c_str() ); // 選択肢更新 ::EnableWindow( OptionList, TRUE ); UpdateItemList( item ); // デフォルトボタン更新 SetDefaultButtonEnable( item.Defalut != item.Value ); }
void LevelEditor::OnItemProperties() { int layer = LayerList.GetCurrentRow(); if (layer < 0) return; Layer& lay = _level->GetLayers()[layer]; int row = ItemList.GetCurrentRow(); if (row < 0) return; lay.GetRooms()[row].OpenProperties(); UpdateItemList(); }
void LevelEditor::OnItemRemove() { int layer = LayerList.GetCurrentRow(); if (layer < 0) return; Layer& lay = _level->GetLayers()[layer]; int row = ItemList.GetCurrentRow(); if (row < 0) return; if (!PromptYesNo(t_("Remove the selected item from level?"))) return; lay.GetRooms().Remove(row); UpdateItemList(); }
void LevelEditor::OnItemAdd() { int layer = LayerList.GetCurrentRow(); if (layer < 0) return; Layer& lay = _level->GetLayers()[layer]; Room room; room.SetName(NFormat(t_("Room #%d"), lay.GetRooms().GetCount() + 1)); if (room.OpenProperties() != IDOK) return; lay.GetRooms().Add(room); UpdateItemList(); }
///////////////////////////////////////////////////////////////////////////// // FUNCTION....: UpdateObject // // DESCRIPTION.: // ///////////////////////////////////////////////////////////////////////////// static void UpdateObject( HWND hDlg, OBJECTID objID ) { char text[MENU_MAX_TEXT+1]; LRESULT index; LPMENUINFO pMenuInfo; pMenuInfo = (LPMENUINFO)AObjLockData(objID, MENU_INFO_DATA); pMenuInfo->status &= (~MENU_NEVER_EDITED); if (IsDlgButtonChecked(hDlg, BTN_DISABLED)) pMenuInfo->status |= MENU_DISABLED; else pMenuInfo->status &= (~MENU_DISABLED); if (IsDlgButtonChecked(hDlg, BTN_POPUP)) pMenuInfo->status |= MENU_POPUP; else pMenuInfo->status &= (~MENU_POPUP); index = SendDlgItemMessage(hDlg, CB_TEXTTO, CB_GETCURSEL, 0, 0L); if (index == CB_ERR) pMenuInfo->sendText = 0L; else pMenuInfo->sendText = (OBJECTID) SendDlgItemMessage(hDlg, CB_TEXTTO, CB_GETITEMDATA, WPARAM(index), 0L); index = SendDlgItemMessage(hDlg, CB_INDEXTO, CB_GETCURSEL, 0, 0L); if (index == CB_ERR) pMenuInfo->sendIndex = 0L; else pMenuInfo->sendIndex = (OBJECTID)SendDlgItemMessage(hDlg, CB_INDEXTO, CB_GETITEMDATA, WPARAM(index), 0L); pMenuInfo->itemCount = UpdateItemList(hDlg, objID); GetDlgItemText(hDlg, SLE_TITLE, (LPSTR)text, MENU_MAX_TEXT); AObjSetData(objID, MENU_TITLE_DATA, LPSTR(text), lstrlen(text)+1); AObjUnlockData(objID, MENU_INFO_DATA); }
void CUITrade::OpenUI() { if(IsVisible() == TRUE || GetHide() == FALSE ) return; if (UIMGR()->GetInventory()->IsLocked() == TRUE || UIMGR()->GetInventory()->IsLockedArrange() == TRUE) { UIMGR()->GetInventory()->ShowLockErrorMessage(); return; } UIMGR()->GetInventory()->Lock(TRUE, TRUE, LOCK_TRADE); SetVisible(TRUE); Hide(FALSE); if (m_pBtnOk != NULL) m_pBtnOk->SetEnable(FALSE); UpdateItemList(); UIMGR()->RearrangeOrder(UI_TRADE, TRUE); }
void FormEdit::UpdateChildCount(int count) { for (int i = 0; i < _Ctrls.GetCount(); ++i) _CtrlContainer.RemoveChild(&_Ctrls[i]); _Ctrls.Clear(); _ItemList.Clear(); _Temporaries.Clear(); if (!_View.IsLayout()) { UpdateItemList(); return; } // if (_ViewMode == VIEW_MODE_WIREFRAME) // return; for (int i = 0; i < count; ++i) { if (!_View.GetObject(i)) continue; String type = (*_View.GetObjects())[i].Get("Type"); Font font = _View.GetFont(); int h = _View.ZoomY((*_View.GetObjects())[i].GetNumber("Font.Height")); if (h != 0) font.Height(h); if (font.GetHeight() == 0) font.Height(StdFont().GetHeight()); _ItemList.AddRow(type, (*_View.GetObjects())[i].Get("Variable")); if ((*_View.GetObjects())[i].GetBool("OutlineDraw", false) && _ViewMode != VIEW_MODE_AS_IS) { if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( _Ctrls.Create<StaticRect>() ); } else if (type == "Button") { Button* b = &_Ctrls.Create<Button>(); b->SetFont(font); if (_ViewMode == VIEW_MODE_AS_IS) b->SetLabel((*_View.GetObjects())[i].Get("Label")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "DropDate") { DropDate *b = &_Ctrls.Create<DropDate>(); b->SetFont(font); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "GridCtrl") { GridCtrl *b = &_Ctrls.Create<GridCtrl>(); // b->SetFont(font); TODO #ifdef PLATFORM_WIN32 b->Chameleon(); #endif String src = (*_View.GetObjects())[i].Get("Grid.Columns"); ReplaceString(src, ";", "\r\n"); StringStream s; s.Open(src); IniFile f; f.Load(s); Vector<String> names = f.EnumNames("Columns"); for (int j = 0; j < names.GetCount(); ++j) { int n = ScanInt(names[j]); Vector<String> values = f.GetArray("Columns", names[j]); if (values.GetCount() != 3) continue; if (values[1] == "Left") b->AddColumn(values[0]).HeaderAlignCenterLeft(); else if (values[1] == "Right") b->AddColumn(values[0]).HeaderAlignCenterRight(); else b->AddColumn(values[0]).HeaderAlignCenter(); } if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "EditField") { EditField *b = &_Ctrls.Create<EditField>(); b->SetFont(font); if (_ViewMode == VIEW_MODE_AS_IS) b->SetText((*_View.GetObjects())[i].Get("DefaultData")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "EditInt") { EditInt *b = &_Ctrls.Create<EditInt>(); b->SetFont(font); if (_ViewMode == VIEW_MODE_AS_IS) b->SetText((*_View.GetObjects())[i].Get("DefaultData")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "ProgressBar") { ProgressIndicator *b = &_Ctrls.Create<ProgressIndicator>(); b->Set(0, 100); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "TabCtrl") { TabCtrl* e = &_Ctrls.Create<TabCtrl>(); TabCtrl::Style& style = e->StyleDefault().Write(); style.font = font; style.tabheight = font.GetHeight() + VertLayoutZoom(10); e->SetStyle(style); String src = (*_View.GetObjects())[i].Get("Tab.Content"); ReplaceString(src, ";", "\r\n"); StringStream s; s.Open(src); IniFile f; f.Load(s); Vector<String> names = f.EnumNames("Tabs"); VectorMap<int, Vector<String> > cache; int tabCount = 0; for (int j = 0; j < names.GetCount(); ++j) { int n = ScanInt(names[j]); if (AsString(n) != names[j]) continue; Vector<String> values = f.GetArray("Tabs", names[j]); if (values.GetCount() != 3) continue; Container *cont = &_Temporaries.Create<Container>(); Form *f = &_Temporaries.Create<Form>(); if (values[0] != t_("Current form")) { if (!f->Load(GetFileDirectory(_File) + "\\" + values[0])) continue; } else { int lay = _View.HasLayout(values[1]); if (lay < 0) continue; f->GetLayouts().Add() <<= _View.GetLayouts()[lay]; } if (!f->Layout(values[1], font)) continue; cont->Set(*f, f->GetSize()); cont->SizePos(); e->Add(*cont, values[2]); tabCount++; } int activeTab = -1; if (tabCount) { activeTab = (*_View.GetObjects())[i].GetNumber("Tab.Active", 0, 0); if (activeTab >= tabCount) { activeTab = tabCount - 1; e->Set(activeTab); } e->Set(activeTab); } (*_View.GetObjects())[i].SetNumber("Tab.Active", activeTab); (*_View.GetObjects())[i].SetNumber("Tab.Count", tabCount); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( e->NoWantFocus() ); } else if (type == "Form") { Form f; String path = (*_View.GetObjects())[i].Get("Form.Path"); (*_View.GetObjects())[i].Get("Form.PathType") == "Relative" ? f.Load(::GetFileDirectory(_File) + "\\" + path) : f.Load(path); f.Layout((*_View.GetObjects())[i].Get("Form.Layout"), font); ImageDraw w(f.GetSize()); f.DrawCtrl(w); ImageBuffer buf(w); StaticImage *s = &_Ctrls.Create<StaticImage>(); s->SetImage(buf); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.AddChild( s ); } else { Label *b = &_Ctrls.Create<Label>(); b->SetFont(font); Color fontColor = DefaultInk(); LoadFromString(fontColor, Decode64((*_View.GetObjects())[i].Get("Font.Color", StoreAsString(fontColor)))); b->SetInk(fontColor); String align = (*_View.GetObjects())[i].Get("Text.Align"); if (align == "Center") b->SetAlign(ALIGN_CENTER); if (align == "Right") b->SetAlign(ALIGN_RIGHT); if (align == "Left") b->SetAlign(ALIGN_LEFT); if (_ViewMode == VIEW_MODE_AS_IS) b->SetLabel((*_View.GetObjects())[i].Get("Label")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } String frame = (*_View.GetObjects())[i].Get("Frame"); Ctrl* c = NULL; if (_Ctrls.GetCount()) c = &_Ctrls[_Ctrls.GetCount() - 1]; if (c) { if (frame == "Null frame") c->SetFrame(NullFrame()); if (frame == "Field frame") c->SetFrame(FieldFrame()); if (frame == "Inset frame") c->SetFrame(InsetFrame()); if (frame == "Outset frame") c->SetFrame(OutsetFrame()); if (frame == "Thin inset frame") c->SetFrame(ThinInsetFrame()); if (frame == "Thin outset frame") c->SetFrame(ThinOutsetFrame()); if (frame == "Black frame") c->SetFrame(BlackFrame()); if (frame == "Button frame") c->SetFrame(ButtonFrame()); if (frame == "Top separator frame") c->SetFrame(TopSeparatorFrame()); if (frame == "Left separator frame") c->SetFrame(LeftSeparatorFrame()); if (frame == "Right separator frame") c->SetFrame(RightSeparatorFrame()); if (frame == "Bottom separator frame") c->SetFrame(BottomSeparatorFrame()); } } UpdateItemList(); UpdateChildAllPos(); }
void MainWindow::UpdateItemTree() { UpdateItemList(); }