Пример #1
0
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();
}
Пример #2
0
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();
}
Пример #3
0
	// 項目を選択する
	void SelectItem( const TreeItem& item ) {
		// 説明更新
		::SetDlgItemText( WindowHandle, IDC_DESCRIPTION_EDIT, item.Description.c_str() );

		// 選択肢更新
		::EnableWindow( OptionList, TRUE );
		UpdateItemList( item );
		
		// デフォルトボタン更新
		SetDefaultButtonEnable( item.Defalut != item.Value );
	}
Пример #4
0
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();
}
Пример #5
0
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();
}
Пример #6
0
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();
}
Пример #7
0
/////////////////////////////////////////////////////////////////////////////
// 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);

  }
Пример #8
0
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);
}
Пример #9
0
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();
}
Пример #10
0
void MainWindow::UpdateItemTree()
{
  UpdateItemList();
}