Example #1
0
	int KObject::GetInt(const char* name, int defaultValue)
	{
		SharedValue prop = this->Get(name);
		if (prop->IsInt())
		{
			return prop->ToInt();
		}
		else
		{
			return defaultValue;
		}
	}
Example #2
0
	bool MenuItem::IsSubMenu()
	{
		SharedValue type = this->RawGet("type");
		return (type->IsInt() && type->ToInt() == SUBMENU);
	}
Example #3
0
	bool MenuItem::IsItem()
	{
		SharedValue type = this->RawGet("type");
		return (type->IsInt() && type->ToInt() == ITEM);
	}
Example #4
0
	bool MenuItem::IsSeparator()
	{
		SharedValue type = this->RawGet("type");
		return (type->IsInt() && type->ToInt() == SEP);
	}
Example #5
0
	MonkeyBinding::MonkeyBinding(Host *host, SharedKObject global) :
		global(global),
		registration(0),
		logger(Logger::Get("Monkey"))
	{
		std::string resourcesPath = host->GetApplication()->GetResourcesPath();
		std::string userscriptsPath = FileUtils::Join(
			resourcesPath.c_str(), "userscripts", NULL);

		if (FileUtils::IsDirectory(userscriptsPath))
		{
			logger->Debug("Found userscripts directory at: %s\n", userscriptsPath.c_str());
			std::vector<std::string> files;
			FileUtils::ListDir(userscriptsPath,files);
			if (files.size()>0)
			{
				std::vector<std::string>::iterator iter = files.begin();
				while(iter!=files.end())
				{
					std::string file = (*iter++);
					std::string fn = FileUtils::Join(userscriptsPath.c_str(),file.c_str(),NULL);
					Poco::Path path(fn);
					if (path.getExtension() == "js")
					{
						Poco::FileInputStream f(fn);
						std::string line;
						std::ostringstream str;
						bool found = false, start = false;
						VectorOfPatterns includes;
						VectorOfPatterns excludes;
						while (!f.eof())
						{
							std::getline(f, line);
							if (line.find("// ==UserScript==") == 0)
							{
								found = true;
							}
							else if (found && !start)
							{
								std::string::size_type i = line.find("// @include");
								if (i == 0)
								{
									std::string url = FileUtils::Trim(line.substr(i+12).c_str());
									includes.push_back(PatternMatcher(url));
									continue;
								}
								i = line.find("// @exclude");
								if (i == 0)
								{
									std::string url = FileUtils::Trim(line.substr(i+12).c_str());
									excludes.push_back(PatternMatcher(url));
								}
								else if (line.find("// ==/UserScript==") == 0)
								{
									start = true;
									str << "(function(){\n";
								}
								//TODO: @require
							}
							else if (start)
							{
								str << line << "\n";
							}
						}
						if (found && start)
						{
							str << "\n})();";
							try
							{
								std::pair<VectorOfPatterns,VectorOfPatterns> r(includes,excludes);
								scripts.push_back(std::pair<std::pair< VectorOfPatterns,VectorOfPatterns >,std::string>(r,str.str()));
							}
							catch(Poco::RegularExpressionException &e)
							{
								std::cerr << "Exception loading user script: " << fn << " Exception: " << e.what() << std::endl;
							}
						}
					}
				}
				
				if (scripts.size()>0)
				{
					this->SetMethod("callback",&MonkeyBinding::Callback);
					SharedValue v = global->CallNS("API.register",Value::NewString("ti.UI.window.page.load"),this->Get("callback"));
					this->registration = v->ToInt();
				}
			}
		}
	}