Exemplo n.º 1
0
        /// <summary>
        /// Метод всеобщей сортировки слиянием. Постепенно происходит слияние массива из нескольких упорядоченных подмассивов
        /// </summary>
        /// <param name="Array">Массив всех элементов</param>
        /// <param name="start">Массив, обозначающий разделение подпоследовательностей</param>
        /// <returns>Возвращает отсортированный массив</returns>
        public ClassMerge[] BigMerge(ClassMerge[] Array, int[] start)
        {
            int ArrNum  = start.Length;
            int Numbers = Array.Length;

            int[] end = new int[ArrNum]; //массив будущих концов интервалов - изначально равен массиву стартовых разделителей
            for (int o = 0; o < ArrNum; o++)
            {
                end[o] = start[o];
            }
            ClassMerge[] Temp   = new ClassMerge[Numbers]; //новый массив, куда будут помещаться отсортированные элементы
            int          Zapoln = 0;

            while (Zapoln != Numbers)          //пока новый массив не заполнится
            {
                int[] sravn = new int[ArrNum]; //массив для сравнения элементов подмассивов
                int   k     = 0;
                for (k = 0; k < ArrNum - 1; k++)
                {
                    if (end[k] < start[k + 1])
                    {
                        sravn[k] = Array[end[k]].K; //добавляем в массив для сравнений элемент, если данный интервал себя не исчерпал
                    }
                }
                if (end[ArrNum - 1] < Array.Length)
                {
                    sravn[ArrNum - 1] = Array[end[end.Length - 1]].K; //последний элемент проверяем отдельно
                }
                int small = WhoisSmallest(sravn);                     //ищем номер подмассива, где элемент минимален
                Temp[Zapoln] = Array[end[small]];                     //добавляем новый элемент
                end[small]++;                                         //конец подинтервала продвигается
                Zapoln++;
            }
            return(Temp);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Run the merge tool. Tag of a sender may contain an individual file name.
        /// </summary>
        private void MenuMergeTool(object sender, EventArgs e)
        {
            string file = (sender as ToolStripMenuItem).Tag as string ?? "";
            string cmd  = "mergetool " + ClassMerge.GetMergeCmd() + " \"" + file + "\"";

            status.Repo.RunCmd(cmd);
            App.DoRefresh();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Apply changed settings
        /// </summary>
        public void ApplyChanges()
        {
            if (comboBoxPath.Tag != null || textArgs.Tag != null)
            {
                string    name = Path.GetFileNameWithoutExtension(comboBoxPath.Text.Trim());
                AppHelper app  = new AppHelper(name, comboBoxPath.Text, textArgs.Text.Trim());
                Properties.Settings.Default.MergeAppHelper = app.ToString();

                ClassMerge.Configure(app);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Apply changed settings
        /// </summary>
        public void ApplyChanges()
        {
            if (comboBoxPath.Tag != null || textArgs.Tag != null)
            {
                try
                {
                    string    name = Path.GetFileNameWithoutExtension(comboBoxPath.Text.Trim());
                    AppHelper app  = new AppHelper(name, comboBoxPath.Text, textArgs.Text.Trim());
                    Properties.Settings.Default.MergeAppHelper = app.ToString();

                    ClassMerge.Configure(app);
                }
                catch (Exception ex)
                {
                    App.PrintLogMessage(ex.Message, MessageType.Error);
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Initialize pertinent settings
        /// </summary>
        /// <param name="options">All git global settings</param>
        public void Init(string[] options)
        {
            // Detect all merge utilities on the system and populate a listbox
            helpers = ClassMerge.GetDetected();
            comboBoxPath.Items.Clear();
            foreach (var appHelper in helpers)
            {
                comboBoxPath.Items.Add(appHelper.Path);
            }

            // Get our program default merge tool and set the listbox text
            AppHelper app = new AppHelper(Properties.Settings.Default.MergeAppHelper);

            comboBoxPath.Text = app.Path;
            textArgs.Text     = app.Args;

            // Add the dirty (modified) value changed helper
            comboBoxPath.TextChanged += ControlDirtyHelper.ControlDirty;
            textArgs.TextChanged     += ControlDirtyHelper.ControlDirty;
        }
Exemplo n.º 6
0
        /// <summary>
        /// Добавление элемента
        /// </summary>
        /// <param name="T">инф. поле</param>
        /// <param name="K">ключ. поле</param>
        /// <returns>Возвращает новый элемент</returns>
        public ClassMerge AddElement(int T, int K)
        {
            ClassMerge Element = new ClassMerge(T, K);

            return(Element);
        }