Example #1
0
void ToolbarManager::applyTo(CReBarCtrl& ReBar, const string& aName) const {
	dcassert(ReBar.IsWindow());

	ToolbarEntry* t = getToolbarEntry(aName);
	if(t != NULL) {
		StringTokenizer<string> id(t->getID(), ',');
		StringList& idList = id.getTokens();
		StringTokenizer<string> cx(t->getCX(), ',');
		StringList& cxList = cx.getTokens();
		StringTokenizer<string> bl(t->getBreakLine(), ',');
		StringList& blList = bl.getTokens();

                const int bandCount = min(t->getBandCount(), (int) ReBar.GetBandCount());
		for(int i = 0; i < bandCount; i++) {
			ReBar.MoveBand(ReBar.IdToIndex(Util::toInt(idList[i])), i);
			REBARBANDINFO rbi;
			rbi.cbSize = sizeof(rbi);
			rbi.fMask = RBBIM_ID | RBBIM_SIZE | RBBIM_STYLE;
			ReBar.GetBandInfo(i, &rbi);

			rbi.cx = Util::toInt(cxList[i]);
			if(Util::toInt(blList[i]) > 0)
				rbi.fStyle|=RBBS_BREAK;
			else
				rbi.fStyle&= (~RBBS_BREAK);

			ReBar.SetBandInfo(i, &rbi);
		}
	}
}
Example #2
0
int ToolbarData::insertItem(String toolbar, String item, int position)
{
	XOJ_CHECK_TYPE(ToolbarData);

	printf("ToolbarData::insertItem(%s, %s, %i);\n", toolbar.c_str(), item.c_str(),
	       position);

	g_return_val_if_fail(isPredefined() == false, -1);

	std::vector<ToolbarEntry>::iterator it;
	for (it = this->contents.begin(); it != this->contents.end(); it++)
	{
		ToolbarEntry& e = *it;

		if (e.getName().equals(toolbar))
		{
			printf("Toolbar found: %s\n", toolbar.c_str());

			int id = e.insertItem(item, position);

			printf("return %i\n", id);
			return id;
		}
	}

	ToolbarEntry newEntry;
	newEntry.setName(toolbar);
	int id = newEntry.addItem(item);
	this->contents.push_back(newEntry);

	return id;
}
Example #3
0
ToolbarEntry* ToolbarManager::getToolbarEntry(const string& aName) const {
	for(ToolbarEntry::Iter i = toolbarEntries.begin(); i != toolbarEntries.end(); ++i) {
		ToolbarEntry* t = *i;
		if(Util::stricmp(t->getName(), aName) == 0) {
			return t;
		}
	}
	return NULL;
}
Example #4
0
void ToolbarManager::getFrom(CReBarCtrl& ReBar, const string& aName) {
	dcassert(ReBar.IsWindow());
	removeToolbarEntry(getToolbarEntry(aName));

	ToolbarEntry* t = new ToolbarEntry();
	string id, cx, bl,dl;
	t->setName(aName);
	t->setBandCount(ReBar.GetBandCount());

	for(int i = 0; i < t->getBandCount(); i++) {
		dl = ((i > 0) ? "," : "");
		REBARBANDINFO rbi;
		rbi.cbSize = sizeof(rbi);
		rbi.fMask = RBBIM_ID | RBBIM_SIZE | RBBIM_STYLE;
		ReBar.GetBandInfo(i, &rbi);
		id += dl + Util::toString(rbi.wID);
		cx += dl + Util::toString(rbi.cx);
		bl += dl + (((rbi.fStyle & RBBS_BREAK) != 0) ? "1" : "0");

	}

	t->setID(id);
	t->setCX(cx);
	t->setBreakLine(bl);
	toolbarEntries.push_back(t);
}
Example #5
0
void ToolbarData::load(GKeyFile* config, const char* group)
{
	XOJ_CHECK_TYPE(ToolbarData);

	gsize length = 0;
	gchar** keys = g_key_file_get_keys(config, group, &length, NULL);
	if (keys == NULL)
	{
		return;
	}

	gchar* name = g_key_file_get_locale_string(config, group, "name", NULL, NULL);
	if (name != NULL)
	{
		this->name = name;
		g_free(name);
	}

	for (gsize i = 0; i < length; i++)
	{
		if (strcmp(keys[i], "name") == 0 || strncmp(keys[i], "name[", 5) == 0)
		{
			continue;
		}

		ToolbarEntry e;
		gsize keyLen = 0;
		e.setName(keys[i]);
		gchar** list = g_key_file_get_string_list(config, group, keys[i], &keyLen,
		                                          NULL);

		for (gsize x = 0; x < keyLen; x++)
		{
			String s = list[x];
			e.addItem(s.trim());
		}

		this->contents.push_back(e);

		g_strfreev(list);
	}

	g_strfreev(keys);
}
Example #6
0
void ToolbarManager::load(SimpleXML& aXml) {
	if(aXml.findChild("Rebars")) {
		aXml.stepIn();
		while(aXml.findChild("Rebar")) {
			ToolbarEntry* t = new ToolbarEntry();
			t->setName(aXml.getChildAttrib("Name"));
			t->setID(aXml.getChildAttrib("ID"));
			t->setCX(aXml.getChildAttrib("CX"));
			t->setBreakLine(aXml.getChildAttrib("BreakLine"));
			t->setBandCount(aXml.getIntChildAttrib("BandCount"));
			toolbarEntries.push_back(t);
		}
		aXml.stepOut();
	} else {
		// Default toolbar layout - for MainFrame rebar 
		ToolbarEntry* t = new ToolbarEntry();
		t->setName("MainToolBar");
		t->setID("60160,60163,60161,60162");
		t->setCX("1056,214,731,268");
		t->setBreakLine("1,0,1,0");
		t->setBandCount(4);
		toolbarEntries.push_back(t);
	}
}