예제 #1
0
        private void ButLoad_Click(object sender, EventArgs e)
        {
            object[] loadVehicle;
            bool     IsDecompressed = false;

            if (OpenFD.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            string filePath = OpenFD.FileName;

            try
            {
                if (GetSer(filePath) == null)
                {
                    if (DecompressFile(ref filePath) == false)
                    {
                        MessageBox.Show("Не загружен файл для разархивации.");
                        return;
                    }
                    else
                    {
                        IsDecompressed = true;
                    }
                }

                ISer ser = GetSer(filePath);
                if (ser == null)
                {
                    MessageBox.Show("Десериализация не удалась!");
                    return;
                }

                loadVehicle = ser.Deserialize(filePath);
                foreach (Vehicle vehicle in loadVehicle)
                {
                    Vehicles.Add(vehicle);
                }
                RefreshVehicleList();

                if (IsDecompressed)
                {
                    File.Delete(filePath);
                    IsDecompressed = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
예제 #2
0
파일: Form1.cs 프로젝트: LePasse/Plugins
        private void button7_Click(object sender, EventArgs e)
        {
            if (comboBox3.SelectedIndex != -1)
            {
                ISer meth = (ISer)Activator.CreateInstance(Type.GetType("Serial." + comboBox3.Text));

                if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }
                string filename = saveFileDialog1.FileName;
                meth.Serialize(allObj, filename);
                pm.Plugins[comboBox4.SelectedIndex].Compress(filename);
            }
        }
예제 #3
0
파일: Form1.cs 프로젝트: LePasse/Plugins
        private void button8_Click(object sender, EventArgs e)
        {
            if (comboBox3.SelectedIndex != -1)
            {
                allObj.Clear();
                ISer meth = (ISer)Activator.CreateInstance(Type.GetType("Serial." + comboBox3.Text));

                if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }
                string          filename = openFileDialog1.FileName;
                Regex           regex    = new Regex(@"(\.[\w]+){0,1}$");
                MatchCollection matches  = regex.Matches(filename);
                string          exten    = matches[0].Groups[0].Value;
                if (matches.Count != 1)
                {
                    bool flag = false;
                    foreach (var plugin in pm.Plugins)
                    {
                        if (exten == plugin.Extension)
                        {
                            filename = plugin.Decompress(filename);
                            flag     = true;
                        }
                    }
                    if (flag)
                    {
                        allObj = meth.Deserialize(filename);
                        comboBox2.Items.Clear();
                        int c = 0;
                        foreach (Object obj in allObj)
                        {
                            comboBox2.Items.Add(obj.ToString() + ++c);
                        }
                        File.Delete(filename);
                    }
                    else
                    {
                        MessageBox.Show("Плагин не загружен");
                    }
                }
                else
                {
                    MessageBox.Show("Не указано расширение файла");
                }
            }
        }
예제 #4
0
        private void ButSave_Click(object sender, EventArgs e)
        {
            if (lvVehicles.SelectedItems.Count == 0)
            {
                return;
            }
            object[] vehicle = new object[lvVehicles.SelectedItems.Count];
            ListView.SelectedIndexCollection indexs = lvVehicles.SelectedIndices;
            int i = 0;

            foreach (int index in indexs)
            {
                vehicle[i] = Vehicles[index];
                i++;
            }
            ISer ser = (ISer)Activator.CreateInstance(Sers[ComboBSers.SelectedIndex]);

            SaveFD.Filter = ser.FileExtension;
            if (SaveFD.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            string filePath = SaveFD.FileName;

            ser.Serialize(vehicle, filePath);

            DialogResult choice = MessageBox.Show("Заархивировать файл?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (choice == DialogResult.Yes)
            {
                if (ComboBArchiving.SelectedIndex == -1)
                {
                    MessageBox.Show("Не загружены файлы для архивации.");
                    return;
                }
                Assembly   assembly = Assembly.LoadFile(Plugins[ComboBArchiving.SelectedIndex]);
                object     obj      = assembly.CreateInstance("Compressions");
                Type       type     = obj.GetType();
                MethodInfo method   = type.GetMethod("Compress");
                method.Invoke(obj, new object[] { filePath });
                File.Delete(filePath);
            }
        }
예제 #5
0
        private ISer GetSer(string filepath)
        {
            ISer ser  = null;
            bool flag = false;

            foreach (Type serType in Sers)
            {
                ser = (ISer)Activator.CreateInstance(serType);
                if ((ser.FileExtension).IndexOf(Path.GetExtension(filepath)) != -1)
                {
                    flag = true;
                    break;
                }
            }
            if (flag)
            {
                return(ser);
            }
            else
            {
                return(null);
            }
        }