Пример #1
0
bool EditorWidgets::save(std::string _fileName)
{
	std::string _instance = "Editor";

	MyGUI::xml::xmlDocument doc;
	std::string file(MyGUI::helper::getResourcePath(_fileName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME));
	if (file.empty()) {
		file = _fileName;
	}

	doc.createInfo();
	MyGUI::xml::xmlNodePtr root = doc.createRoot("MyGUI");
	root->addAttributes("type", "Layout");

	for (std::vector<WidgetContainer*>::iterator iter = widgets.begin(); iter != widgets.end(); ++iter)
	{
		// в корень только сирот
		if (null == (*iter)->widget->getParent()) serialiseWidget(*iter, root);
	}

	if (false == doc.save(file)) {
		LOGGING(LogSection, Error, _instance << " : " << doc.getLastError());
		return false;
	}

	return true;
}
Пример #2
0
bool EditorWidgets::load(std::string _fileName)
{
	std::string _instance = "Editor";

	MyGUI::xml::xmlDocument doc;
	std::string file(MyGUI::helper::getResourcePath(_fileName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME));
	if (file.empty())
	{
		if (false == doc.open(_fileName)) {
			LOGGING(LogSection, Error, _instance << " : '" << _fileName << "' not found");
			return false;
		}
	}
	else if (false == doc.open(file))
	{
		LOGGING(LogSection, Error, _instance << " : " << doc.getLastError());
		return false;
	}

	MyGUI::xml::xmlNodePtr root = doc.getRoot();
	if ( (null == root) || (root->getName() != "MyGUI") ) {
		LOGGING(LogSection, Error, _instance << " : '" << _fileName << "', tag 'MyGUI' not found");
		return false;
	}

	std::string type;
	if (root->findAttribute("type", type)) {
		if (type == "Layout")
		{
			// берем детей и крутимся
			MyGUI::xml::xmlNodeIterator widget = root->getNodeIterator();
			while (widget.nextNode("Widget")) parseWidget(widget, 0);
		}
		
	}
	return true;
}
Пример #3
0
void EditorWidgets::parseWidget(MyGUI::xml::xmlNodeIterator & _widget, MyGUI::WidgetPtr _parent)
{
	WidgetContainer * container = new WidgetContainer();
	// парсим атрибуты виджета
	MyGUI::IntCoord coord;
	MyGUI::Align align = MyGUI::ALIGN_DEFAULT;

	_widget->findAttribute("name", container->name);
	_widget->findAttribute("type", container->type);
	_widget->findAttribute("skin", container->skin);
	_widget->findAttribute("layer", container->layer);
	if (_widget->findAttribute("align", container->align)) align = MyGUI::SkinManager::getInstance().parseAlign(container->align);
	if (_widget->findAttribute("position", container->position)) coord = MyGUI::IntCoord::parse(container->position);
	if (_widget->findAttribute("position_real", container->position_real)) coord = MyGUI::Gui::getInstance().convertRelativeToInt(MyGUI::FloatCoord::parse(container->position_real), _parent);

	// в гуе на 2 одноименных виджета ругается и падает, а у нас будет просто переименовывать
	if (false == container->name.empty())
	{
		WidgetContainer * iter = find(container->name);
		if (null != iter)
		{
			LOGGING(LogSection, Warning, "widget with same name name '" << container->name << "'. Renamed");
			static long renameN=0;
			container->name = MyGUI::utility::toString(container->name, renameN++);
		}
	}

	std::string tmpname = container->name;
	if (tmpname.empty()) 
	{
		tmpname = MyGUI::utility::toString(container->type, global_counter);
		global_counter++;
	}

	//может и не стоит
	tmpname = "LayoutEditor_" + tmpname;

	if (null == _parent) {
		container->widget = MyGUI::Gui::getInstance().createWidgetT(container->type, container->skin, coord, align, container->layer, tmpname);
		add(container);
	}
	else
	{
		container->widget = _parent->createWidgetT(container->type, container->skin, coord, align, tmpname);
		add(container);
	}

	// берем детей и крутимся
	MyGUI::xml::xmlNodeIterator widget = _widget->getNodeIterator();
	while (widget.nextNode()) {

		std::string key, value;

		if (widget->getName() == "Widget") parseWidget(widget, container->widget);
		else if (widget->getName() == "Property") {

			// парсим атрибуты
			if (false == widget->findAttribute("key", key)) continue;
			if (false == widget->findAttribute("value", value)) continue;
			// и парсим свойство
			if (("Message_Modal" != key) && ("Window_AutoAlpha" != key)) MyGUI::WidgetManager::getInstance().parse(container->widget, key, value);
			container->mProperty.push_back(std::make_pair(key, value));
		}
		else if (widget->getName() == "UserString") {
			// парсим атрибуты
			if (false == widget->findAttribute("key", key)) continue;
			if (false == widget->findAttribute("value", value)) continue;
			container->mUserString.insert(std::make_pair(key, value));
		}

	};
}
Пример #4
0
void EditorWidgets::parseWidget(MyGUI::xml::xmlNodeIterator & _widget, MyGUI::WidgetPtr _parent)
{
	WidgetContainer * container = new WidgetContainer();
	// парсим атрибуты виджета
	MyGUI::IntCoord coord;
	MyGUI::Align align = MyGUI::ALIGN_DEFAULT;

	_widget->findAttribute("name", container->name);
	_widget->findAttribute("type", container->type);
	_widget->findAttribute("skin", container->skin);
	_widget->findAttribute("layer", container->layer);
	if (_widget->findAttribute("align", container->align)) align = MyGUI::SkinManager::getInstance().parseAlign(container->align);
	if (_widget->findAttribute("position", container->position)) coord = MyGUI::IntCoord::parse(container->position);
	if (_widget->findAttribute("position_real", container->position_real)) coord = MyGUI::Gui::getInstance().convertRelativeToInt(MyGUI::FloatCoord::parse(container->position_real), _parent);

	// в гуе на 2 одноименных виджета ругается и падает, а у нас будет просто переименовывать
	if (false == container->name.empty())
	{
		WidgetContainer * iter = find(container->name);
		if (null != iter)
		{
			static long renameN=0;
			std::string mess = MyGUI::utility::toString("widget with same name name '", container->name, "'. Renamed to '", container->name, renameN, "'.");
			LOGGING(LogSection, Warning, mess);
			MyGUI::Message::_createMessage("Warning", mess, "", "LayoutEditor_Popup", true, null, MyGUI::Message::IconWarning | MyGUI::Message::Ok);
			container->name = MyGUI::utility::toString(container->name, renameN++);
		}
	}

	std::string tmpname = container->name;
	if (tmpname.empty()) 
	{
		tmpname = MyGUI::utility::toString(container->type, global_counter);
		global_counter++;
	}

	//может и не стоит
	tmpname = "LayoutEditor_" + tmpname;

	if (null == _parent) {
		container->widget = MyGUI::Gui::getInstance().createWidgetT(container->type, container->skin, coord, align, container->layer, tmpname);
		add(container);
	}
	else
	{
		container->widget = _parent->createWidgetT(container->type, container->skin, coord, align, tmpname);
		add(container);
	}

	// берем детей и крутимся
	MyGUI::xml::xmlNodeIterator widget = _widget->getNodeIterator();
	while (widget.nextNode()) {

		std::string key, value;

		if (widget->getName() == "Widget") parseWidget(widget, container->widget);
		else if (widget->getName() == "Property") {

			// парсим атрибуты
			if (false == widget->findAttribute("key", key)) continue;
			if (false == widget->findAttribute("value", value)) continue;

			// и парсим свойство
			try{
				if (("Message_Modal" != key) && ("Window_AutoAlpha" != key) && ("Window_Snap" != key))
					MyGUI::WidgetManager::getInstance().parse(container->widget, key, value);
				Ogre::Root::getSingleton().renderOneFrame();
			}
			catch(...)
			{
				MyGUI::Message::_createMessage("Warning", "No such " + key + ": '" + value + "'", "", "LayoutEditor_Popup", true, null, MyGUI::Message::IconWarning | MyGUI::Message::Ok);
				if (key == "Image_Texture") MyGUI::WidgetManager::getInstance().parse(container->widget, key, "");
			}// for incorrect meshes or textures

			container->mProperty.push_back(std::make_pair(key, value));
		}
		else if (widget->getName() == "UserString") {
			// парсим атрибуты
			if (false == widget->findAttribute("key", key)) continue;
			if (false == widget->findAttribute("value", value)) continue;
			container->mUserString.insert(std::make_pair(key, value));
		}

	};
}
Пример #5
0
 ~ScopedLogger()
 {
   LOGGING(logger_, str_ << " out ");
 }
Пример #6
0
 ScopedLogger(Logger const &logger, std::string const& str):logger_(logger), str_(str)
 {
   LOGGING(logger_, str_ << " in  ");
 }
Пример #7
0
int HDFSAccessor::initialize()
{
    if (!m_initialized)
    {
        char dependenciesPath[MAX_PATH];
        size_t pathSize = MAX_PATH;
        memset(dependenciesPath, 0, sizeof(dependenciesPath));
        bool isNewEnv = false;
        JNIEnv* env = JVMState::instance()->getEnv(&isNewEnv);
        Utilities::getJavaDependenciesPath(dependenciesPath, &pathSize);

        jclass wfxLauncherClass = env->FindClass("org/cgc/wfx/FSClientLauncher");

        if (JVMState::instance()->exceptionExists(env) || wfxLauncherClass == NULL)
        {
            LOGGING("Unable to find Java launcher jar %s", JAVA_LAUNCHER_VAL)
            assert(false);
        }

        jstring depsPathStr = env->NewStringUTF(dependenciesPath);
        jmethodID getPairInstanceMethodId = env->GetStaticMethodID(wfxLauncherClass, "getPairInstance",
                                                                   "(Ljava/lang/String;)Lorg/cgc/wfx/WfxPair;");
        assert(getPairInstanceMethodId != NULL);

        jobject wfxPairObj = env->CallStaticObjectMethod(wfxLauncherClass, getPairInstanceMethodId, depsPathStr);

        if (!JVMState::instance()->exceptionExists(env) && wfxPairObj != NULL)
        {
            jclass wfxPairClass = env->GetObjectClass(wfxPairObj);

            s_WfxPairMetIdInitFS = env->GetMethodID(wfxPairClass, "initFS", "()V");
            assert(s_WfxPairMetIdInitFS != NULL);

            s_WfxPairMetIdGetFolderContent = env->GetMethodID(wfxPairClass, "getFolderContent", "(Ljava/lang/String;)[Ljava/lang/String;");
            assert(s_WfxPairMetIdGetFolderContent != NULL);

            s_WfxPairMetIdGetFileInfo = env->GetMethodID(wfxPairClass, "getFileInformation",
                                                         "(Ljava/lang/String;Ljava/lang/String;)Lorg/cgc/wfx/FileInformation;");
            assert(s_WfxPairMetIdGetFileInfo != NULL);

            s_WfxPairMetIdMkDir = env->GetMethodID(wfxPairClass, "mkDir", "(Ljava/lang/String;)Z");
            assert(s_WfxPairMetIdMkDir != NULL);

            s_WfxPairMetIdDelPath = env->GetMethodID(wfxPairClass, "deletePath", "(Ljava/lang/String;)Z");
            assert(s_WfxPairMetIdDelPath != NULL);

            s_WfxPairMetIdRenPath = env->GetMethodID(wfxPairClass, "renamePath", "(Ljava/lang/String;Ljava/lang/String;)Z");
            assert(s_WfxPairMetIdRenPath != NULL);

            s_WfxPairMetIdCopyPath = env->GetMethodID(wfxPairClass, "copyPath", "(Ljava/lang/String;Ljava/lang/String;)Z");
            assert(s_WfxPairMetIdCopyPath != NULL);

            s_WfxPairMetIdGetPath = env->GetMethodID(wfxPairClass, "getFile",
                                                     "(Ljava/lang/String;Ljava/lang/String;Lorg/cgc/wfx/Progress;)V");
            assert(s_WfxPairMetIdGetPath != NULL);

            s_WfxPairMetIdPutPath = env->GetMethodID(wfxPairClass, "putFile",
                                                     "(Ljava/lang/String;Ljava/lang/String;ZLorg/cgc/wfx/Progress;)V");

            assert(s_WfxPairMetIdPutPath != NULL);

            s_WfxPairMetIdfileExists = env->GetMethodID(wfxPairClass, "fileExists", "(Ljava/lang/String;)Z");
            assert(s_WfxPairMetIdfileExists != NULL);

            initFileEnumerator(env);

            initProgressInfo(env);

            if (!JVMState::instance()->exceptionExists(env))
            {
                m_wfxPairObj = env->NewGlobalRef(wfxPairObj);
                env->CallVoidMethod(m_wfxPairObj, s_WfxPairMetIdInitFS);
                if (JVMState::instance()->exceptionExists(env))
                {
                    assert(false);
                }
            } else
            {
                LOGGING("Fail on obtaining WfxPair instance. Please check the existence of hdfs_wfx.jar inside of ~/.config/hdfs_wfx/java/deps/ folder")
                assert(false);
            }
            env->DeleteLocalRef(depsPathStr);
            env->DeleteLocalRef(wfxPairObj);
            env->DeleteLocalRef(wfxPairClass);
            env->DeleteLocalRef(wfxLauncherClass);
            if (isNewEnv)
            {
                JVMState::instance()->releaseEnv();
            }
            m_initialized = true;
            return 0;
        } else
        {
            LOGGING("Unable to find Java launcher jar %s and its WfxPair class", JAVA_LAUNCHER_VAL)
            assert(false);
        }
        if (isNewEnv)
        {
            JVMState::instance()->releaseEnv();
        }
        return -1;
    } else
    {
        return 0;
    }
}