コード例 #1
0
ファイル: lwf_core.cpp プロジェクト: ElAleyo/lwf
Button *LWF::SearchButtonInstance(string instanceName) const
{
	size_t pos = instanceName.find(".");
	if (pos != string::npos) {
		vector<string> names = Utility::Split(instanceName, '.');
		if (names[0] != data->strings[m_rootMovieStringId])
			return 0;

		Movie *m = rootMovie.get();
		for (size_t i = 1; i < names.size(); ++i) {
			if (i == names.size() - 1) {
				return m->SearchButtonInstance(names[i], false);
			} else {
				m = m->SearchMovieInstance(names[i], false);
				if (!m)
					return 0;
			}
		}

		return 0;
	}

	int stringId = GetStringId(instanceName);
	if (stringId == -1)
		return rootMovie->SearchButtonInstance(instanceName, true);

	return SearchButtonInstance(stringId);
}
コード例 #2
0
ファイル: lwf_event.cpp プロジェクト: 435886030/lwf
int LWF::AddButtonEventHandler(string instanceName,
	const ButtonEventHandlerDictionary &h, ButtonKeyPressHandler kh)
{
	if (h.empty())
		return -1;

	int instId = SearchInstanceId(GetStringId(instanceName));
	if (instId >= 0)
		return AddButtonEventHandler(instId, h, kh);

	if (instanceName.find('.') == string::npos)
		return -1;

	SetInteractive();

	ButtonEventHandlersDictionary::iterator it =
		m_buttonEventHandlersByFullName.find(instanceName);
	if (it == m_buttonEventHandlersByFullName.end()) {
		m_buttonEventHandlersByFullName[instanceName] = ButtonEventHandlers();
		it = m_buttonEventHandlersByFullName.find(instanceName);
	}
	int id = GetEventOffset();
	it->second.Add(id, h, kh);

	Button *b = SearchButtonInstance(instId);
	if (b)
		b->AddHandlers(&it->second);

	return id;
}
コード例 #3
0
ファイル: lwf_movie.cpp プロジェクト: KitoHo/lwf
Button *Movie::SearchButtonInstance(string instanceName, bool recursive) const
{
	int stringId = lwf->GetStringId(instanceName);
	if (stringId != -1)
		return SearchButtonInstance(lwf->GetStringId(instanceName), recursive);

	if (!m_attachedMovies.empty() && recursive) {
		AttachedMovieList::const_iterator it(m_attachedMovieList.begin()),
			itend(m_attachedMovieList.end());
		for (; it != itend; ++it) {
			if (it->second) {
				Button *button =
					it->second->SearchButtonInstance(instanceName, recursive);
				if (button)
					return button;
			}
		}
	}

	if (!m_attachedLWFs.empty()) {
		AttachedLWFList::const_iterator
			it(m_attachedLWFList.begin()), itend(m_attachedLWFList.end());
		for (; it != itend; ++it) {
			if (it->second) {
				LWF *child = it->second->child.get();
				Button *button = child->rootMovie->SearchButtonInstance(
					instanceName, recursive);
				if (button)
					return button;
			}
		}
	}

	return 0;
}