コード例 #1
0
        public static DialogResult RenameItem(TreeView treeView, Dictionary <string, Gist> gists, bool showRoot)
        {
            DialogResult result = DialogResult.None;

            if (treeView.SelectedNode != null && treeView.SelectedNode.Name != AllGistsKey)
            {
                try
                {
                    var strs = treeView.SelectedNode.Name.Split('/');
                    var gist = gists[strs[0]];
                    var file = gist.Files[strs[1]];

                    var fileNameDialog = new dlgFilename(file.Filename);
                    if ((result = fileNameDialog.ShowDialog()) == DialogResult.OK &&
                        fileNameDialog.Filename != file.Filename)
                    {
                        if (Utils.IsFilenameSafe(fileNameDialog.Filename))
                        {
                            bool save = true;
                            if (gist.Files.FirstOrDefault(gistFile => gistFile.Key == fileNameDialog.Filename).Key != null &&
                                (result = MessageBox.Show(
                                     $"Do you want to replace existing file \"{fileNameDialog.Filename}\""
                                     , string.Empty, MessageBoxButtons.YesNo)) != DialogResult.Yes)
                            {
                                save   = false;
                                result = DialogResult.No;
                            }

                            if (save)
                            {
                                var fileContent  = Utils.SendRequest(file.RawUrl);
                                var renamingGist = new UpdatedGist
                                {
                                    Files = new Dictionary <string, UpdatedFile>
                                    {
                                        {
                                            file.Filename,
                                            new UpdatedFile
                                            {
                                                Filename = fileNameDialog.Filename, Content = fileContent
                                            }
                                        }
                                    }
                                };
                                var bytes = Encoding.UTF8.GetBytes(JsonSerializer.SerializeToString(renamingGist));

                                try
                                {
                                    var responseGist = Utils.SendJsonRequest <Gist>(
                                        $"{Main.ApiUrl}/gists/{gist.Id}?access_token={Main.Token}",
                                        WebRequestMethod.Patch, null, bytes);
                                    gists[gist.Id] = responseGist;
                                    RebuildTreeView(treeView, gists, showRoot);
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(
                                        $"Unable to rename gist \"{file.Filename}\".{Environment.NewLine}Error message: {ex.Message}");
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("File containts invalid characters");
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Unable to rename gist or file." + Environment.NewLine + "Error message: " + ex.Message);
                }
            }
            return(result);
        }
コード例 #2
0
ファイル: GuiUtils.cs プロジェクト: KvanTTT/NppGist
        public static DialogResult RenameItem(TreeView treeView, Dictionary<string, Gist> gists, bool showRoot)
        {
            DialogResult result = DialogResult.None;
            if (treeView.SelectedNode != null && treeView.SelectedNode.Name != AllGistsKey)
            {
                var strs = treeView.SelectedNode.Name.Split('/');
                var gist = gists[strs[0]];
                var file = gist.Files[strs[1]];

                var fileNameDialog = new dlgFilename(file.Filename);
                if ((result = fileNameDialog.ShowDialog()) == DialogResult.OK &&
                    fileNameDialog.Filename != file.Filename)
                {
                    if (Utils.IsFilenameSafe(fileNameDialog.Filename))
                    {
                        string oldFileName = file.Filename;
                        bool save = true;
                        if (gist.Files.FirstOrDefault(gistFile => gistFile.Key == fileNameDialog.Filename).Key != null &&
                            (result = MessageBox.Show(string.Format("Do you want to replace existing file \"{0}\"", fileNameDialog.Filename)
                                , string.Empty, MessageBoxButtons.YesNo)) != DialogResult.Yes)
                        {
                            save = false;
                            result = DialogResult.No;
                        }

                        if (save)
                        {
                            var fileContent = Utils.SendRequest(file.RawUrl);
                            var renamingGist = new UpdatedGist();
                            renamingGist.Files = new Dictionary<string, UpdatedFile>()
                            {
                                { file.Filename,
                                new UpdatedFile
                                {
                                    Filename = fileNameDialog.Filename,
                                    Content = fileContent
                                }}
                            };
                            var bytes = Encoding.UTF8.GetBytes(JsonSerializer.SerializeToString<UpdatedGist>(renamingGist));

                            try
                            {
                                var responseGist = Utils.SendJsonRequest<Gist>(string.Format("{0}/gists/{1}?access_token={2}", Main.ApiUrl, gist.Id, Main.Token),
                                    WebRequestMethod.Patch, null, bytes);
                                gists[gist.Id] = responseGist;
                                RebuildTreeView(treeView, gists, showRoot);
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(string.Format("Unable to reaname gist \"{0}\".{1}Error message: {2}",
                                    file.Filename, Environment.NewLine, ex.Message));
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("File containts invalid characters");
                    }
                }
            }
            return result;
        }