Exemplo n.º 1
0
        public bool LoadFaceDefine(string path)
        {
            FaceDef newFaceDef = null;
            string  plistPath  = Path.Combine(path, "faceDef.plist");

            if (!File.Exists(plistPath))
            {
                System.Windows.Forms.MessageBox.Show(
                    String.Format("指定されたフォルダに顔パターン定義XMLファイル \"faceDef.plist\" が存在しません。\n\nフォルダ:\n{0}", path),
                    "MacFace for Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            try
            {
                newFaceDef = new MacFace.FaceDef(path);
            }
            catch (System.IO.IOException ie)
            {
                System.Windows.Forms.MessageBox.Show(
                    String.Format("顔パターン定義XMLファイルを読み込む際にエラーが発生しました。\n\n原因:\n{0}",
                                  ie.ToString()), "MacFace for Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return(false);
            }
            catch (System.Xml.XmlException xe)
            {
                System.Windows.Forms.MessageBox.Show(
                    String.Format("顔パターン定義XMLファイルを読込み中にエラーが発生しました。\n\n原因:\n{0}",
                                  xe.ToString()), "MacFace for Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return(false);
            }

            curFaceDef = newFaceDef;

            if (patternWindow != null)
            {
                // 顔パターン差し替え中は更新を止めておく
                if (updateTimer != null)
                {
                    updateTimer.Stop();
                }

                patternWindow.FaceDef = newFaceDef;
                patternWindow.Refresh();

                notifyIcon.Text = "MacFace - " + patternWindow.FaceDef.Title;

                // 更新再開
                if (updateTimer != null)
                {
                    updateTimer.Start();
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        private void AddPreviewListItem(string path)
        {
            try
            {
                FaceDef faceDef = new FaceDef(path);
                // 表示/選択した際に汚くならないようにあらかじめ白塗りして描画した画像を用意する。
                using (Image titleImage = faceDef.TitleImage)
                {
                    using (Bitmap titlePreviewImage = new Bitmap(titleImage.Width, titleImage.Height))
                    {
                        using (Graphics g = Graphics.FromImage(titlePreviewImage))
                        {
                            g.Clear(Color.White);
                            g.DrawRectangle(new Pen(Color.LightGray), 0, 0, 127, 127);
                            g.DrawImage(titleImage, 0, 0);
                        }
                        imageListFacePreviews.Images.Add(titlePreviewImage);
                    }
                }


                ListViewItem item = listViewFaces.Items.Add(faceDef.Title, imageListFacePreviews.Images.Count - 1);
                item.SubItems.Add(path);                    // 0: パス
                item.SubItems.Add(faceDef.Author);          // 1: 製作者
                item.SubItems.Add(faceDef.Version);         // 2: バージョン
                item.SubItems.Add(
                    (faceDef.WebSite != null ?
                     faceDef.WebSite.ToString() : ""));                    // 3: ウェブサイト

                if (_config.FaceDefPath == path)
                {
                    item.Selected = true;
                }
            }
            catch (Exception ex)
            {
                // TODO: Exception からもっと狭める。
                MessageBox.Show(ex.ToString(), "MacFace for Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }