HRESULT STDMETHODCALLTYPE
Win32WebKitUIDelegate::createWebViewWithRequest(
	/* [in] */ IWebView *sender,
	/* [in] */ IWebURLRequest *request,
	/* [in] */ IPropertyBag *features,
	/* [retval][out] */ IWebView **newWebView)
{
	
	WindowConfig *config = new WindowConfig();
	BSTR burl;
	request->URL(&burl);
	std::string url = _bstr_t(burl);
	
	if (url.size() > 0)
	{
		config->SetURL(url);
	}
	
	int fullscreen = PropertyBagGetIntProperty(features, L"fullscreen");
	if (fullscreen != -1)
	{
		config->SetFullscreen(fullscreen == 1);
	}
	int x = PropertyBagGetIntProperty(features, L"x");
	if (x != -1)
	{
		config->SetX(x);
	}
	int y = PropertyBagGetIntProperty(features, L"y");
	if (y != -1)
	{
		config->SetY(y);
	}
	int width = PropertyBagGetIntProperty(features, L"width");
	if (width != -1)
	{
		config->SetWidth(width);
	}
	int height = PropertyBagGetIntProperty(features, L"height");
	if (height != -1)
	{
		config->SetHeight(height);
	}
	
	AutoUserWindow parent = this->window->GetAutoPtr();
	AutoUserWindow window = UIBinding::GetInstance()->CreateWindow(config, parent);
	window->Open();
	
	*newWebView = window.cast<Win32UserWindow>()->GetWebView();
	return S_OK;
}
Beispiel #2
0
/*static*/
AutoPtr<WindowConfig> WindowConfig::FromProperties(KObjectRef properties)
{
	WindowConfig* c = new WindowConfig();
	c->SetID(properties->GetString("id", c->GetID()));
	c->SetURL(properties->GetString("url", c->GetURL()));
	c->SetURLRegex(properties->GetString("urlRegex", c->GetURLRegex()));
	c->SetTitle(properties->GetString("title", c->GetTitle()));
	c->SetContents(properties->GetString("contents", c->GetContents()));
	c->SetURLRegex(properties->GetString("baseURL", c->GetBaseURL()));
	c->SetX(properties->GetInt("x", c->GetX()));
	c->SetY(properties->GetInt("y", c->GetY()));
	c->SetWidth(properties->GetInt("width", c->GetWidth()));
	c->SetMinWidth(properties->GetInt("minWidth", c->GetMinWidth()));
	c->SetMaxWidth(properties->GetInt("maxWidth", c->GetMaxWidth()));
	c->SetHeight(properties->GetInt("height", c->GetHeight()));
	c->SetMinHeight(properties->GetInt("minHeight", c->GetMinHeight()));
	c->SetMaxHeight(properties->GetInt("maxHeight", c->GetMaxHeight()));
	c->SetMaximizable(CoerceBool(properties, "maximizable", c->IsMaximizable()));
	c->SetMinimizable(CoerceBool(properties, "minimizable", c->IsMinimizable()));
	c->SetCloseable(CoerceBool(properties, "closeable", c->IsCloseable()));
	c->SetResizable(CoerceBool(properties, "resizable", c->IsResizable()));
	c->SetFullscreen(CoerceBool(properties, "fullscreen", c->IsFullscreen()));
	c->SetMaximized(CoerceBool(properties, "maximized", c->IsMaximized()));
	c->SetMinimized(CoerceBool(properties, "minimized", c->IsMinimized()));
	c->SetUsingChrome(CoerceBool(properties, "usingChrome", c->IsUsingChrome()));
	c->SetToolWindow(CoerceBool(properties, "toolWindow", c->IsToolWindow()));
	c->SetTopMost(CoerceBool(properties, "topMost", c->IsTopMost()));
	c->SetVisible(CoerceBool(properties, "visible", c->IsVisible()));
	c->SetTransparentBackground(CoerceBool(properties,
		"transparentBackground", c->HasTransparentBackground()));
	c->SetTransparency(properties->GetDouble("transparency", c->GetTransparency()));

#ifdef OS_OSX
	c->SetTexturedBackground(properties->GetDouble("texturedBackground", c->HasTexturedBackground()));
#endif

	EnforceMaxMinConstraints(c);
	EnforceTransparentBackgroundSettings(c);
	return c;
}
Beispiel #3
0
/*static*/
AutoPtr<WindowConfig> WindowConfig::FromWindowConfig(AutoPtr<WindowConfig> config)
{
	WindowConfig* newConfig = new WindowConfig();

	// Just use defaults given a NULL instance.
	if (config.isNull())
		return newConfig;

	newConfig->SetURL(config->GetURL());
	newConfig->SetTitle(config->GetTitle());
	newConfig->SetX(config->GetX());
	newConfig->SetY(config->GetY());
	newConfig->SetWidth(config->GetWidth());
	newConfig->SetMinWidth(config->GetMinWidth());
	newConfig->SetMaxWidth(config->GetMaxWidth());
	newConfig->SetHeight(config->GetHeight());
	newConfig->SetMinHeight(config->GetMinHeight());
	newConfig->SetMaxHeight(config->GetMaxHeight());
	newConfig->SetVisible(config->IsVisible());
	newConfig->SetMaximizable(config->IsMaximizable());
	newConfig->SetMinimizable(config->IsMinimizable());
	newConfig->SetResizable(config->IsResizable());
	newConfig->SetFullscreen(config->IsFullscreen());
	newConfig->SetMaximized(config->IsMaximized());
	newConfig->SetMinimized(config->IsMinimized());
	newConfig->SetUsingChrome(config->IsUsingChrome());
	newConfig->SetUsingScrollbars(config->IsUsingScrollbars());
	newConfig->SetTopMost(config->IsTopMost());
	newConfig->SetTransparency(config->GetTransparency());
	newConfig->SetTransparentBackground(config->HasTransparentBackground());
#ifdef OS_OSX
	newConfig->SetTexturedBackground(config->HasTexturedBackground());
#endif

	return newConfig;
}
Beispiel #4
0
/*static*/
AutoPtr<WindowConfig> WindowConfig::FromXMLNode(xmlNodePtr element)
{
	WindowConfig* config = new WindowConfig();

	xmlNodePtr child = element->children;
	while (child)
	{
		if (child->type != XML_ELEMENT_NODE)
		{
			child = child->next;
			continue;
		}

		// This should always be a UTF-8, so we can just cast
		// the node name here to a char*
		std::string nodeName(reinterpret_cast<char*>(
			const_cast<xmlChar*>(child->name)));

		if (nodeName == "id")
		{
			config->SetID(ConfigUtils::GetNodeValue(child));
		}
		else if (nodeName == "title")
		{
			config->SetTitle(ConfigUtils::GetNodeValue(child));
		}
		else if (nodeName == "url")
		{
			config->SetURL(ConfigUtils::GetNodeValue(child));
		}
		else if (nodeName == "url-regex")
		{
			config->SetURLRegex(ConfigUtils::GetNodeValue(child));
		}
		else if (nodeName == "maximizable")
		{
			config->SetMaximizable(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "minimizable")
		{
			config->SetMinimizable(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "closeable")
		{
			config->SetCloseable(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "resizable")
		{
			config->SetResizable(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "fullscreen")
		{
			config->SetFullscreen(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "maximized")
		{
			config->SetMaximized(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "minimized")
		{
			config->SetMinimized(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "chrome")
		{
			config->SetUsingChrome(ConfigUtils::GetNodeValueAsBool(child));
			std::string scrollbars(ConfigUtils::GetPropertyValue(child, "scrollbars"));
			if (!scrollbars.empty())
			{
				config->SetUsingScrollbars(ConfigUtils::StringToBool(scrollbars));
			}
		}
		else if (nodeName == "tool-window")
		{
			config->SetToolWindow(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "transparency")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetTransparency((float) atof(value.c_str()));
		}
		else if (nodeName == "transparent-background")
		{
			config->SetTransparentBackground(
				ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "x")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetX(atoi(value.c_str()));
		}
		else if (nodeName == "y")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetY(atoi(value.c_str()));
		}
		else if (nodeName == "width")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetWidth(atoi(value.c_str()));
		}
		else if (nodeName == "height")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetHeight(atoi(value.c_str()));
		}
		else if (nodeName == "visible")
		{
			config->SetVisible(ConfigUtils::GetNodeValueAsBool(child));
		}
		else if (nodeName == "min-width")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetMinWidth(atoi(value.c_str()));
		}
		else if (nodeName == "max-width")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetMaxWidth(atoi(value.c_str()));
		}
		else if (nodeName == "min-height")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetMinHeight(atoi(value.c_str()));
		}
		else if (nodeName == "max-height")
		{
			std::string value(ConfigUtils::GetNodeValue(child));
			config->SetMaxHeight(atoi(value.c_str()));
		}
		else if (nodeName == "top-most")
		{
			config->SetTopMost(ConfigUtils::GetNodeValueAsBool(child));
		}
#ifdef OS_OSX
		else if (nodeName == "texturedBackground" || nodeName == "textured-background")
		{
			config->SetTexturedBackground(ConfigUtils::GetNodeValueAsBool(child));
		}
#endif
		child = child->next;
	}

	EnforceMaxMinConstraints(config);
	EnforceTransparentBackgroundSettings(config);
	return config;
}