コード例 #1
0
ファイル: TreeView.cpp プロジェクト: kamalsirsa/vtp
void MyTreeCtrl::RefreshTreeStatus(Builder *pBuilder)
{
	VTLOG("(Refreshing Tree Status)\n");

	wxTreeItemId root = GetRootItem();
	wxTreeItemId parent, item;

	wxTreeItemIdValue cookie;
	for (parent = GetFirstChild(root, cookie); parent; parent = GetNextChild(root, cookie))
	{
		wxTreeItemIdValue cookie2;
		for (item = GetFirstChild(parent, cookie2); item; item = GetNextChild(parent, cookie2))
		{
			MyTreeItemData *data = (MyTreeItemData *)GetItemData(item);
			if (data)
			{
				SetItemText(item, MakeItemName(data->m_pLayer));
				if (data->m_pLayer == pBuilder->GetActiveLayer())
					SelectItem(item);
				if (data->m_pLayer->GetVisible())
				{
					SetItemFont(item, *wxNORMAL_FONT);
					SetItemTextColour(item, wxColour(0,0,0));
				}
				else
				{
					SetItemFont(item, *wxITALIC_FONT);
					SetItemTextColour(item, wxColour(80,80,80));
				}
			}
		}
	}
}
コード例 #2
0
ファイル: shortcuts.cpp プロジェクト: alexlav/conemu
void Shortcuts::EditItem(VMenu* Menu, ShortcutItem* Item, bool Root)
{
	string strNewDir = Item->strFolder;
	string strNewPluginModule = Item->strPluginModule;
	string strNewPluginFile = Item->strPluginFile;
	string strNewPluginData = Item->strPluginData;

	DialogBuilder Builder(MFolderShortcutsTitle, HelpFolderShortcuts);
	Builder.AddText(MFSShortcut);
	Builder.AddEditField(&strNewDir, 50, L"FS_Path", DIF_EDITPATH);
	if (!strNewPluginModule.IsEmpty())
	{
		Builder.AddSeparator();
		Builder.AddText(MFSShortcutModule);
		Builder.AddEditField(&strNewPluginModule, 50, nullptr, DIF_READONLY);
		Builder.AddText(MFSShortcutFile);
		Builder.AddEditField(&strNewPluginFile, 50, nullptr, DIF_READONLY);
		Builder.AddText(MFSShortcutData);
		Builder.AddEditField(&strNewPluginData, 50, nullptr, DIF_READONLY);
	}
	Builder.AddOKCancel();

	if (Builder.ShowDialog())
	{
		Unquote(strNewDir);

		if (!IsLocalRootPath(strNewDir))
			DeleteEndSlash(strNewDir);

		bool Save=true;
		string strTemp(strNewDir);
		apiExpandEnvironmentStrings(strNewDir,strTemp);

		if (apiGetFileAttributes(strTemp) == INVALID_FILE_ATTRIBUTES)
		{
			Save=!Message(MSG_WARNING | MSG_ERRORTYPE, 2, MSG(MError), strNewDir, MSG(MSaveThisShortcut), MSG(MYes), MSG(MNo));
		}

		if (Save)
		{
			Item->strPluginData.Clear();
			Item->strPluginFile.Clear();
			Item->strPluginModule.Clear();
			Item->strFolder = strNewDir;

			MenuItemEx* MenuItem = Menu->GetItemPtr();
			MenuItem->strName = Item->strFolder;
			if(Root)
			{
				MakeItemName(Menu->GetSelectPos(), MenuItem);
			}
			Menu->SetPosition(-1, -1, -1, -1);
			Menu->SetUpdateRequired(TRUE);
			Menu->Show();
		}
	}
}
コード例 #3
0
ファイル: TreeView.cpp プロジェクト: kamalsirsa/vtp
void MyTreeCtrl::RefreshTreeItems(Builder *pBuilder)
{
	VTLOG1("Refreshing Tree Items:");

	// Deleting the previous items can call OnSelChanged, which can cause VTB
	//  to forget the active layer, so indicate that this is not user input.
	m_bUser = false;
	DeleteAllItems();
	m_bUser = true;

	rootId = AddRoot(_("Layers"));
	SetItemBold(rootId);

	int	image, imageSel;

	wxTreeItemId elevId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Grid, _("Elevation"));
	SetItemData(elevId, new MyTreeItemData(LT_ELEVATION));

	wxTreeItemId imageId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Image, _("Images"));
	SetItemData(imageId, new MyTreeItemData(LT_IMAGE));

	wxTreeItemId buildId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Building, _("Structures"));
	SetItemData(buildId, new MyTreeItemData(LT_STRUCTURE));

	wxTreeItemId roadId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Road, _("Roads"));
	SetItemData(roadId, new MyTreeItemData(LT_ROAD));

	wxTreeItemId vegId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Veg1, _("Vegetation"));
	SetItemData(vegId, new MyTreeItemData(LT_VEG));

	wxTreeItemId waterId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Water, _("Water"));
	SetItemData(waterId, new MyTreeItemData(LT_WATER));

	wxTreeItemId utilityId = AddRootItem(MyTreeCtrl::TreeCtrlIcon_Utility, _("Utilities"));
	SetItemData(utilityId, new MyTreeItemData(LT_UTILITY));

	wxTreeItemId rawId =	AddRootItem(MyTreeCtrl::TreeCtrlIcon_Raw, _("Raw"));
	SetItemData(rawId, new MyTreeItemData(LT_RAW));

	image = TreeCtrlIcon_File;
	imageSel = TreeCtrlIcon_FileSelected;
	vtLayerPtr lp;
	int iLayers = 0;
	if (pBuilder) iLayers = pBuilder->NumLayers();
	wxTreeItemId hSelectedItem;
	for (int i = 0; i < iLayers; i++)
	{
		lp = pBuilder->GetLayer(i);

		wxString str = MakeItemName(lp);

		wxTreeItemId hItem;
		switch (lp->GetType())
		{
		case LT_ELEVATION:
			hItem = AppendItem(elevId, str, image, imageSel);
			break;
		case LT_IMAGE:
			hItem = AppendItem(imageId, str, image, imageSel);
			break;
		case LT_ROAD:
			hItem = AppendItem(roadId, str, image, imageSel);
			break;
		case LT_STRUCTURE:
			hItem = AppendItem(buildId, str, image, imageSel);
			break;
		case LT_VEG:
			hItem = AppendItem(vegId, str, image, imageSel);
			break;
		case LT_WATER:
			hItem = AppendItem(waterId, str, image, imageSel);
			break;
		case LT_UTILITY:
			hItem = AppendItem(utilityId, str, image, imageSel);
			break;
		case LT_RAW:
			hItem = AppendItem(rawId, str, image, imageSel);
			break;
		case LT_UNKNOWN:
		case LAYER_TYPES:
			// Keep picky compilers quiet.
			break;
		}
		if (hItem.IsOk())
		{
			SetItemData(hItem, new MyTreeItemData(lp));

			if (lp == pBuilder->GetActiveLayer())
				hSelectedItem = hItem;
			if (!lp->GetVisible())
			{
				SetItemFont(hItem, *wxITALIC_FONT);
				SetItemTextColour(hItem, wxColour(80,80,80));
			}
		}
	}
	VTLOG(" %d layers.\n", iLayers);

	// Expand the groups after they have all their items.  It doesn't work
	//  to expand before, because then not all items are shown.
	Expand(elevId);
	Expand(imageId);
	Expand(roadId);
	Expand(buildId);
	Expand(vegId);
	Expand(waterId);
	Expand(utilityId);
	Expand(rawId);

	// Wait until all the groups are expanded, before highlighting the
	//  selected item, so that it will definitely be in view.
	if (hSelectedItem.IsOk())
		SelectItem(hSelectedItem);
}
コード例 #4
0
ファイル: shortcuts.cpp プロジェクト: alexlav/conemu
void Shortcuts::Configure()
{
	VMenu FolderList(MSG(MFolderShortcutsTitle),nullptr,0,ScrY-4);
	FolderList.SetFlags(VMENU_WRAPMODE);
	FolderList.SetHelp(HelpFolderShortcuts);
	FolderList.SetPosition(-1,-1,0,0);
	FolderList.SetBottomTitle(MSG(MFolderShortcutBottom));

	for (int I=0; I < 10; I++)
	{
		MenuItemEx ListItem={};
		MakeItemName(I, &ListItem);
		FolderList.AddItem(&ListItem);
	}

	FolderList.Show();

	while (!FolderList.Done())
	{
		DWORD Key=FolderList.ReadInput();
		int Pos = FolderList.GetSelectPos();
		ShortcutItem* Item = Items[Pos].First();

		switch (Key)
		{
		case KEY_NUMDEL:
		case KEY_DEL:
		case KEY_NUMPAD0:
		case KEY_INS:
		case KEY_SHIFTINS:
		case KEY_SHIFTNUMPAD0:
			{
				MenuItemEx* MenuItem = FolderList.GetItemPtr();
				if (Key == KEY_INS || Key == KEY_NUMPAD0 || Key&KEY_SHIFT)
				{
					if(!Item || Key&KEY_SHIFT)
					{
						Item = Items[Pos].Push();
					}
					Panel *ActivePanel=CtrlObject->Cp()->ActivePanel;
					CtrlObject->CmdLine->GetCurDir(Item->strFolder);
					if (ActivePanel->GetMode() == PLUGIN_PANEL)
					{
						OpenPluginInfo Info;
						ActivePanel->GetOpenPluginInfo(&Info);
						string strTemp;
						PluginHandle *ph = (PluginHandle*)ActivePanel->GetPluginHandle();
						Item->strPluginModule = ph->pPlugin->GetModuleName();
						Item->strPluginFile = Info.HostFile;
						Item->strPluginData = Info.ShortcutData;
					}
					MakeItemName(Pos, MenuItem);
				}
				else
				{
					if(Item)
					{
						Items[Pos].Delete(Item);
						MakeItemName(Pos, MenuItem);
					}
				}
				DWORD Flags = MenuItem->Flags;
				MenuItem->Flags = 0;
				FolderList.UpdateItemFlags(FolderList.GetSelectPos(), Flags);
				FolderList.SetPosition(-1, -1, -1, -1);
				FolderList.SetUpdateRequired(TRUE);
				FolderList.Show();
			}
			break;

		case KEY_F4:
			{
				if(!Item)
				{
					Item = Items[Pos].Push();
				}
				if(Items[Pos].Count()>1)
				{
					FolderList.ProcessKey(KEY_ENTER);
				}
				else
				{
					EditItem(&FolderList, Item, true);
				}
			}
			break;

		default:
			FolderList.ProcessInput();
			break;
		}
	}

	FolderList.Hide();

	int ExitCode = FolderList.Modal::GetExitCode();

	if(ExitCode>=0)
	{
		CtrlObject->Cp()->ActivePanel->ExecShortcutFolder(ExitCode);
	}
}