public void miPasteFile_Click(object sender, RoutedEventArgs e) { UpdateCurrentTagByContextMenu(); string[] token = Clipboard.GetText().Split(new char[] { ClipboardConst.CommandSplitToken }, StringSplitOptions.RemoveEmptyEntries); if (token.Length == 2) { string arg = token[1]; string[] args = arg.Split(new char[] { ClipboardConst.ArgsSplitToken }, StringSplitOptions.RemoveEmptyEntries); switch (token[0]) { case ClipboardConst.KUMMERWU_TAG_COPY: { GUTag argTag = TagDB.GetTag(Guid.Parse(arg)); if (argTag != null) { TagDB.SetParent(SelectedTag, argTag); RedrawGraph(); } } break; case ClipboardConst.KUMMERWU_TAG_CUT: { GUTag argTag = TagDB.GetTag(Guid.Parse(arg)); if (argTag != null) { TagDB.ResetParent(SelectedTag, argTag); RedrawGraph(); } } break; case ClipboardConst.KUMMERWU_URI_CUT: MoveUris(args); break; case ClipboardConst.KUMMERWU_URI_COPY: UriDB.AddUris(args, new List <string>() { SelectedTag.Title }); //foreach (string uri in args) //{ // UriDB.AddUri(uri, new List<string>() { currentTag }); //} break; default: PasteFiles(); break; } } else { PasteFiles(); } }
public static GUTag Parse(string strGutag, ITagDB db) { Guid id = Guid.Empty; if (strGutag.IndexOf(SplitToken) != -1) { string sID = strGutag.Split(SplitToken)[0]; id = Guid.Parse(sID); } return(db.GetTag(id)); }
public void SearchByTxt(AutoCompleteTipsItem aItem) { //先在main中查找,如果有,切换焦点后返回 if (MainCanvas.ChangeSelectedByTxt(aItem) != null) { return; } //再在sub中查找,如果有,切换焦点后返回 if (SubCanvas.ChangeSelectedByTxt(aItem) != null) { MainCanvas.ClearSelected(); return; } //如果item精确对应到一个GUTag,直接使用该GUTag GUTag tag = aItem.Data as GUTag; if (tag == null) { List <GUTag> tags = TagDB.QueryTags(aItem.Content); if (tags.Count > 0) { tag = tags[0]; } } //如果不在视图中,但数据库中存在,TODO:如何有效的切换??是一个需要考虑的问题 if (tag != null) { GUTag mainRoot = TagDB.GetTag(StaticCfg.Ins.DefaultTagID); GUTag subRoot = mainRoot; GUTag subSel = subRoot; List <GUTag> parents = QueryParentHistory(tag); int cnt = parents.Count; if (cnt > 0) { subSel = parents[0]; subRoot = parents[Math.Min(3, cnt - 1)]; mainRoot = parents[Math.Min(6, cnt - 1)]; } ChangeRoot(mainRoot, subRoot, subSel); } //不存在精确匹配的tag else { } }