Ejemplo n.º 1
0
        protected void OnButtonLoadImageClicked(object sender, EventArgs e)
        {
            FileChooserDialog Chooser = new FileChooserDialog("Выберите svg для загрузки...",
                this,
                FileChooserAction.Open,
                "Отмена", ResponseType.Cancel,
                "Загрузить", ResponseType.Accept );

            FileFilter Filter = new FileFilter();
            Filter.Name = "SVG изображение";
            Filter.AddMimeType("image/svg+xml");
            Filter.AddPattern("*.svg");
            Chooser.AddFilter(Filter);

            Filter = new FileFilter();
            Filter.Name = "Все файлы";
            Filter.AddPattern("*.*");
            Chooser.AddFilter(Filter);

            if((ResponseType) Chooser.Run () == ResponseType.Accept)
            {
                Chooser.Hide();
                MainClass.StatusMessage("Загрузка изображения основы...");
                if(entryName.Text == "")
                {
                    entryName.Text = System.IO.Path.GetFileNameWithoutExtension(Chooser.Filename);
                }
                using (FileStream fs = new FileStream(Chooser.Filename, FileMode.Open, FileAccess.Read))
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        fs.CopyTo(ms);
                        SVGHelper FrameTest = new SVGHelper();
                        byte[] NewFile = ms.ToArray();
                        if(FrameTest.LoadImage(NewFile))
                        {
                            ImageHelper = FrameTest;
                            ImageHelper.PrepairForDBSave();
                            ImageChanged = true;
                        }
                        else
                        {
                            MessageDialog md = new MessageDialog ( this, DialogFlags.DestroyWithParent,
                                MessageType.Warning,
                                ButtonsType.Ok,
                                "Не удалось загрузить изображение основы. Для успешной загрузки формат файла должен быть svg. " +
                                "В файле изображения должен быть прямоугольник(rect) с id=framework указывающий положение рамки в которую вставлюятся кубы. " +
                                "Размерность исходного изображения должна быть 1 куб.");
                            md.Run ();
                            md.Destroy();
                        }
                    }
                }
                drawBasis.QueueDraw();
                MainClass.StatusMessage("Ok");
            }
            Chooser.Destroy ();
        }
Ejemplo n.º 2
0
        public void Fill(int id)
        {
            ItemId = id;
            NewItem = false;

            MainClass.StatusMessage(String.Format ("Запрос основы №{0}...", id));
            string sql = "SELECT basis.* FROM basis WHERE basis.id = @id";
            try
            {
                SqliteCommand cmd = new SqliteCommand(sql, (SqliteConnection) QSMain.ConnectionDB);

                cmd.Parameters.AddWithValue("@id", id);

                using(SqliteDataReader rdr = cmd.ExecuteReader())
                {
                    rdr.Read();

                    labelId.Text = rdr["id"].ToString();
                    entryName.Text = rdr["name"].ToString();
                    spinW.Value = rdr.GetDouble(rdr.GetOrdinal("width"));
                    spinH.Value = rdr.GetDouble(rdr.GetOrdinal("delta_h"));
                    spinL.Value = rdr.GetDouble(rdr.GetOrdinal("delta_l"));

                    if(rdr["image"] != DBNull.Value)
                    {
                        int size = DBWorks.GetInt(rdr, "image_size", 0);
                        byte[] ImageFile = new byte[size];
                        rdr.GetBytes(rdr.GetOrdinal("image"), 0, ImageFile, 0, size);
                        ImageHelper = new SVGHelper();
                        ImageHelper.LoadImage(ImageFile);
                        drawBasis.QueueDraw();
                    }
                }

                sql = "SELECT * FROM basis_items WHERE basis_id = @id";
                cmd = new SqliteCommand(sql, (SqliteConnection)QSMain.ConnectionDB);
                cmd.Parameters.AddWithValue("@id", id);
                using(SqliteDataReader rdr = cmd.ExecuteReader())
                {
                    while(rdr.Read())
                    {
                        TreeIter iter;
                        int nomenclatureId = rdr.GetInt32(rdr.GetOrdinal("item_id"));
                        if(NomenclatureStore.GetIterFirst(out iter))
                        {
                            do
                            {
                                if((int) NomenclatureStore.GetValue(iter, (int)NomenclatureCol.nomenclature_id) == nomenclatureId)
                                {
                                    NomenclatureStore.SetValue(iter, (int)NomenclatureCol.id, (object) rdr.GetInt64(rdr.GetOrdinal("id")));
                                    NomenclatureStore.SetValue(iter, (int)NomenclatureCol.count, rdr.GetInt32(rdr.GetOrdinal("count")));
                                    NomenclatureStore.SetValue(iter, (int)NomenclatureCol.selected, true);
                                }
                            }
                            while(NomenclatureStore.IterNext(ref iter));
                        }
                    }
                }

                MainClass.StatusMessage("Ok");
                this.Title = entryName.Text;
            }
            catch (Exception ex)
            {
                QSMain.ErrorMessageWithLog(this, "Ошибка получения информации о типе шкафа!", logger, ex);
            }
            TestCanSave();
        }
 public Cupboard()
 {
     Cubes = new List<Cube>();
     BorderImage = new SVGHelper();
 }