Пример #1
0
        private void MakeInputOutput(string dir)
        {
            try
            {
                //open input file
                string input = Path.Combine(dir, "input.txt");
                LocalDirectory.CreateFile(input);
                inputTextBox.ReadOnly = false;
                OpenedInput           = input;
                OpenInputFile(input);

                //open output file
                string output = Path.Combine(dir, "output.txt");
                LocalDirectory.CreateFile(output);
                OpenedOutput = output;
                OpenOutputFile(output);

                //open correct output file
                string correct = Path.Combine(dir, "correct.txt");
                LocalDirectory.CreateFile(correct);
                correctOutputTextBox.ReadOnly = false;
                OpenedCorrect = correct;
                OpenCorrectFile(correct);
            }
            catch { }
        }
Пример #2
0
        private void ProcessDirectory(LocalDirectory parentDirectory, IO.DirectoryInfo directoryInfo)
        {
            if (parentDirectory == null)
            {
                throw new ArgumentNullException(nameof(parentDirectory));
            }

            if (directoryInfo == null)
            {
                throw new ArgumentNullException(nameof(directoryInfo));
            }

            try
            {
                LocalDirectory directory = (LocalDirectory)parentDirectory.GetSubdirectory(directoryInfo.Name);

                if (directory == null)
                {
                    directory = parentDirectory.CreateSubDirectory(directoryInfo.Name, directoryInfo.FullName);
                }

                foreach (var fileInfo in directoryInfo.EnumerateFiles().Where(f => !f.Name.StartsWith(".")))
                {
                    IndexingFile?.Invoke(this, new FilenameEventArgs(fileInfo.FullName));

                    LocalFile file = (LocalFile)directory.GetFile(fileInfo.Name);
                    if (file == null)
                    {
                        file = directory.CreateFile(fileInfo);
                    }
                    else
                    {
                        // XXX: Update file info
                    }

                    if (string.IsNullOrEmpty(file.InfoHash))
                    {
                        this.hasher.HashFile(file);
                    }
                }

                foreach (var subDirectoryInfo in directoryInfo.EnumerateDirectories().Where(d => !d.Name.StartsWith(".")))
                {
                    //ProcessDirectory(directory, subDirectoryInfo);
                    this.queue.Add(new QueueItem(directory, subDirectoryInfo), this.cancellation.Token);
                }
            }
            catch (ThreadAbortException)
            {
                // Canceled, ignore error.
            }
            catch (Exception ex)
            {
                this.loggingService.LogError("Error while re-indexing shared files:", ex);

                ErrorIndexing?.Invoke(this, new ErrorEventArgs(ex));
            }
        }
Пример #3
0
        public void AddProblem(long pnum)
        {
            //get code path
            string path = LocalDirectory.GetCodesPath(pnum);

            if (string.IsNullOrEmpty(path))
            {
                return;
            }

            //get language
            CodeFileCreator cfc = new CodeFileCreator();

            if (cfc.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            Structures.Language lang = cfc.Language;
            cfc.Dispose();

            //get file extension
            string ext = ".cpp";

            if (lang == Structures.Language.C)
            {
                ext = ".c";
            }
            else if (lang == Structures.Language.Java)
            {
                ext = ".java";
            }
            else if (lang == Structures.Language.Pascal)
            {
                ext = ".pascal";
            }

            //create code file
            string name = Path.GetFileName(path);

            CreateFile(path, name, ext);

            //create input-output
            string input   = Path.Combine(path, "input.txt");
            string output  = Path.Combine(path, "output.txt");
            string correct = Path.Combine(path, "correct.txt");

            LocalDirectory.CreateFile(input);
            LocalDirectory.CreateFile(output);
            LocalDirectory.CreateFile(correct);
            ParseInputOutput(pnum, input, correct);

            //select created problem
            this.BeginInvoke((MethodInvoker) delegate
            {
                ExpandAndSelect(LocateProblem(pnum), ExpandSelectType.SelecFirstChild);
            });
        }
Пример #4
0
        public static void CreateFile(string par, string name, string ext, bool trial = true)
        {
            if (string.IsNullOrEmpty(par))
            {
                return;
            }

            int    tcount = 1;
            string path   = Path.Combine(par, name + ext);

            while (trial && File.Exists(path))
            {
                path = Path.Combine(par, string.Format("{0} ({1}){2}", name, tcount, ext));
                ++tcount;
            }
            LocalDirectory.CreateFile(path);
        }