Пример #1
0
int32 SpinButton::ButtonAt(BPoint point) const
{
    if (ButtonFrame(kSpinButtonUp).Contains(point))
        return kSpinButtonUp;

    if (ButtonFrame(kSpinButtonDown).Contains(point))
        return kSpinButtonDown;

    return kSpinButtonNone;
}
Пример #2
0
void SpinButton::Draw(BRect updateRect)
{
    BRect rect = Bounds();

    if (IsFocus()) {
        SetHighColor(ui_color(B_KEYBOARD_NAVIGATION_COLOR));
        StrokeRect(rect);
    }
    else {
        DrawButton(rect, kSpinButtonNone);
    }

    DrawButton(ButtonFrame(kSpinButtonUp), kSpinButtonUp);
    DrawButton(ButtonFrame(kSpinButtonDown), kSpinButtonDown);
}
Пример #3
0
	void ComposeLBItem(uint32 iIdx, bool bSel, const iRect& irc)
	{
		iRect rc=irc;

		if (bSel) {
			gGfxMgr.BlitTile(PDGG_CTILE, gApp.Surface(),rc);
			ButtonFrame(gApp.Surface(),rc,0);
		}

		rc.DeflateRect(2);

		if (!m_pOwner) return;

		// School Level Name and Cost
		iStringT text(gTextMgr[TRID_SPNAME_MAGICARROW+m_spells[iIdx]]);
		uint8 cost = iBaseSpell::GetSpellCost((MAGIC_SPELL)m_spells[iIdx], m_pOwner);
		uint8 school = SPELL_DESCRIPTORS[m_spells[iIdx]].school;
		text.Addf(_T(" (%d)"), cost);
		iTextComposer::FontConfig fc(iTextComposer::FS_SMALL,MSCH_COLORS[school][0]);
		SpriteId icn = PDGG_MSCHICN_S+school;
		if (m_pOwner->ManaPts() < cost) {
			fc.cmpProps.alpha = 128;
		}
		gGfxMgr.Blit(icn, gApp.Surface(), rc.point());
		rc.x += 12;
		gTextComposer.TextOut(fc, gApp.Surface(),iPoint(rc.x,rc.y),text,rc, AlignLeft);
	}
Пример #4
0
void iHeroChild::OnCompose()
{
	iRect rc = GetScrRect();
	gGfxMgr.BlitTile(PDGG_BKTILE, gApp.Surface(),rc);
	gApp.Surface().Darken25Rect(rc);

	check(m_pHero);

	// Name
	iRect trc(rc.x,rc.y,rc.w,17);
	ButtonFrame(gApp.Surface(),trc,0);
	iStringT txt;
	txt.Addf(_T("#S0#FEEE%s#S2#FAFF %s #S0#FEEE%s %d"),gTextMgr[TRID_HERO_TYPE_KNIGHT+m_pHero->Type()],m_pHero->Name().CStr(),gTextMgr[TRID_LEVEL],m_pHero->Level());
	gTextComposer.TextOut(gApp.Surface(),trc,txt,trc,AlignCenter);
	gApp.Surface().HLine(iPoint(rc.x,rc.y+17),rc.x2(),cColor_Black);

	rc.DeflateRect(0,18,0,0);

	// Portrait
	/*
	gApp.Surface().FrameRect(iRect(rc.x+2,rc.y+1,50,50),cColor_Black);
	gGfxMgr.Blit(m_pHero->Proto()->m_icn48,gApp.Surface(),iPoint(rc.x+3,rc.y+2));
	ButtonFrame(gApp.Surface(),iRect(rc.x+3,rc.y+2,48,48),0);
	*/
}
Пример #5
0
	void ComposeLBItem(uint32 iIdx, bool bSel, const iRect& irc)
	{
		iTextComposer::FontConfig fc(dlgfc_plain);
		iRect rc=irc;

		if (bSel) {
			gGfxMgr.BlitTile(PDGG_CTILE, gApp.Surface(),rc);
			ButtonFrame(gApp.Surface(),rc,0);
		}

		rc.DeflateRect(2);
		iCastle* pCastle = *(m_pOwner->CastleFirst()+iIdx);

		// Glyph
		gApp.Surface().FillRect(iRect(rc.x,rc.y,34,22),cColor_Black);
		SpriteId sid = PDGG_CTL_SICONS + (pCastle->Proto()->Size()-1)*CTLT_COUNT + pCastle->Proto()->Type();
		gGfxMgr.Blit(sid,gApp.Surface(), iPoint(rc.x+1,rc.y+1));

		// Name
		rc.DeflateRect(36,0,0,0);
		rc.h = 10;
		gTextComposer.TextOut(dlgfc_topic,gApp.Surface(),rc,pCastle->Name(),rc,AlignTop);
		rc.y+=10;
		State state = GetItemState(iIdx);
		if (state == Occupied) {
			iTextComposer::FontConfig fc(iTextComposer::FS_SMALL,RGB16(255,128,128));
			gTextComposer.TextOut(fc,gApp.Surface(),rc,pCastle->Visitor()->Name(),rc,AlignTop);
		} else if (state == Normal) {
			iTextComposer::FontConfig fc(iTextComposer::FS_SMALL,RGB16(128,255,128));
			gTextComposer.TextOut(fc,gApp.Surface(),rc,gTextMgr[TRID_UNOCCUPIED],rc,AlignTop);
		} else {
			check(0);
		}
	}
Пример #6
0
void iCastleToolBar::OnCompose()
{
	iRect rect = GetScrRect();
	gApp.Surface().FillRect(rect,cColor_Black);
	sint32 rval = m_pTabSwitch->GetSize().w+1+33;

	iRect rc(rect.x+rval,rect.y+1,rect.w-(30+rval)-1,20);
	gGfxMgr.BlitTile(PDGG_BKTILE, gApp.Surface(), rc);
	ButtonFrame(gApp.Surface(), rc, 0);
}
Пример #7
0
void SpinButton::UpdateValue(int32 value)
{
    if (value != Value()) {
        SetValue(value);
        Invoke();
    }
    if (fButton != kSpinButtonNone && fButton != kSpinButtonWheel) {
        Invalidate(ButtonFrame(fButton));
    }
}
Пример #8
0
	void OnCompose()
	{
		if (m_pHero) {
			iRect rc = GetScrRect();
			SpriteId sid = m_pHero->Proto()->m_icn48;
			gGfxMgr.Blit(sid,gApp.Surface(), rc);
			ButtonFrame(gApp.Surface(),rc,GetButtonState());
			if (!IsEnabled()) gApp.Surface().Darken25Rect(rc);
			rc.InflateRect(1);
			gApp.Surface().FrameRect(rc,cColor_Black);
		}
	}
Пример #9
0
	void OnCompose()
	{
		iRect rc = GetScrRect();
		gApp.Surface().FrameRect(rc, cColor_Black);
		rc.DeflateRect(1);

		SpriteId icn = PDGG_CTL_SICONS+CTLT_COUNT*2+m_nt;
		//PDGG_CTL_SICONS + (NATION_COUNT-NATION_HIGHMEN)*2 + (m_nt-NATION_HIGHMEN)
		BlitIcon(gApp.Surface(), icn, rc);
		ButtonFrame(gApp.Surface(), rc, m_state);

		if (!IsEnabled()) gApp.Surface().FillRect(rc, cColor_Gray64,128);
	}
Пример #10
0
	void ComposeLBItem(uint32 iIdx, bool bSel, const iRect& irc)
	{
		iRect rc=irc;

		if (bSel) {
			gGfxMgr.BlitTile(PDGG_CTILE, gApp.Surface(),rc);
			ButtonFrame(gApp.Surface(),rc,0);
		}

		rc.DeflateRect(2);

		gTextComposer.TextOut(gApp.Surface(), rc, gTextComposer.CropString(m_strList[iIdx], dlgfc_splain, rc.w, true), rc, AlignLeft);
	}
Пример #11
0
	void OnCompose()
	{
		iRect rc = GetScrRect();
		gApp.Surface().FrameRect(rc, cColor_Black);
		rc.DeflateRect(1);
		gApp.Surface().FillRect(rc, PLAYER_COLORS[m_pid],96);
		ButtonFrame(gApp.Surface(), rc, m_state);		

		SpriteId sid = (m_pt == PT_HUMAN)?PDGG_ICN_PLT_HUMAN:PDGG_ICN_PLT_AI;
		iPoint op(rc.x + (sint32)(rc.w/2) - (sint32)(gGfxMgr.Dimension(sid).w/2), rc.y + (sint32)(rc.h/2) - (sint32)(gGfxMgr.Dimension(sid).h/2));
		gGfxMgr.Blit(sid, gApp.Surface(), op);
		/*
		if (m_pt == PT_HUMAN) gTextComposer.TextOut(dlgfc_stopic, gApp.Surface(), iPoint(), _T("Human"), rc, AlignCenter);
		else if (m_pt == PT_COMPUTER) gTextComposer.TextOut(dlgfc_splain, gApp.Surface(), iPoint(), _T("CPU"), rc, AlignCenter);
		*/

		if (!IsEnabled()) gApp.Surface().FillRect(rc, cColor_Gray64,128);
	}
Пример #12
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();
}
Пример #13
0
void iMeetToolBar::OnCompose()
{
	iRect rect = GetScrRect();
	gGfxMgr.BlitTile(PDGG_BKTILE, gApp.Surface(), iRect(rect.x,rect.y+1,rect.w-30,20));
	ButtonFrame(gApp.Surface(), iRect(rect.x,rect.y+1,rect.w-30,20), 0);
}