string strLoadedFile; // �ҷ��� ������ ��ü �̸�

        #endregion Fields

        #region Constructors

        public NotepadClone()
        {
            // �Ӽ��� �����ϱ� ���� executing assembly�� ����
            Assembly asmbly = Assembly.GetExecutingAssembly();

            // strAppTitle(���α׷��� Ÿ��Ʋ�� �̸�) �ʵ带 �����ϱ� ���� AssemblyTitle �Ӽ��� ����
            // Assembly�� ����� ����� ���� Ư���� �迭�� �˻��� Title�� �ִ´�
            AssemblyTitleAttribute title = (AssemblyTitleAttribute)asmbly.
                GetCustomAttributes(typeof(AssemblyTitleAttribute), false)[0];
            strAppTitle = title.Title;

            // strAppData(��ü�����̸�) ���� �̸��� �����ϱ� ���� AssemblyProduct �Ӽ��� ����
            AssemblyProductAttribute product = (AssemblyProductAttribute)asmbly.
                GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0];
            // GetFolderPath�� ������ ���������� �ĺ��Ǵ� �ý��� Ư�� ������ ��θ� �������� Path.Combine���� ���ڿ� �迭�� �� ��η� ����
            strAppData = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
                "Petzold\\" + product.Product + "\\" + product.Product + ".Settings.xml");

            DockPanel dock = new DockPanel();   // DockPanel ����
            Content = dock;                     // Content ������Ƽ�� DockPanel ��ü �Ҵ�

            menu = new Menu();                  // �޴� ����
            dock.Children.Add(menu);            // DockPanel�� �ڽļӼ� ���� Menu �߰�
            DockPanel.SetDock(menu, Dock.Top);  // Menu�� ��ܺκп� ����

            status = new StatusBar();           // ���¹� ����
            dock.Children.Add(status);          // DockPanel�� �ڽļӼ� ���� ���¹� �߰�
            DockPanel.SetDock(status, Dock.Bottom); // ���¹ٸ� �ϴܺκп� ����

            statLineCol = new StatusBarItem();  // ���� ���� �����ֱ� ���� StatusBarItem ����
            statLineCol.HorizontalAlignment = HorizontalAlignment.Right;    // statLineCol�� ��ġ�� �θ��ҿ� �Ҵ�� ���̾ƿ� ������ �����ʿ� �����
            status.Items.Add(statLineCol);      // ���¹ٿ� statLineCol �߰�
            DockPanel.SetDock(statLineCol, Dock.Right); // statLineCol�� �����ʺκп� ����

               // Ŭ���̾�Ʈ ������ ���� �κ��� ä�� �ؽ�Ʈ �ڽ� ����
            txtbox = new TextBox();             // �ؽ�Ʈ�ڽ� ����
            txtbox.AcceptsReturn = true;        // �ؽ�Ʈ�ڽ��� �� �ٲ� ���ڸ� ����� �� �ִ�
            txtbox.AcceptsTab = true;           // TabŰ�� ���� �� �� ������ ���� ���� ��Ʈ�ѷ� ��Ŀ���� �̵��ϴ� ��� �ش�
                                                // ��Ʈ�ѿ� �� ���ڸ� �Է����� ���θ� ��Ÿ���� �� ����
            txtbox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;  // ���� ��ũ�� ���븦 �ڵ����� ����
            txtbox.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; // ���� ��ũ�� ���븦 �ڵ����� ����
            txtbox.TextChanged += TextBoxOnTextChanged; // �ؽ�Ʈ�ڽ��� �����Է��� �߻��ϸ� TextBoxOnTextChanged �̺�Ʈ ȣ��
            txtbox.SelectionChanged += TextBoxOnSelectionChanged;   // �ؽ�Ʈ ���� ������ ����� ��쿡 TextBoxOnSelectionChanged �̺�Ʈ ȣ��
            dock.Children.Add(txtbox);          // DockPanel�� �ڽļӼ� ���� �ؽ�Ʈ�ڽ� �߰�

            // ��� ž ���� �޴� �׸� ����
            AddFileMenu(menu);          // in NotepadClone.File.cs
            AddEditMenu(menu);          // in NotepadClone.Edit.cs
            AddFormatMenu(menu);        // in NotepadClone.Format.cs
            AddViewMenu(menu);          // in NotepadClone.View.cs
            AddHelpMenu(menu);          // in NotepadClone.Help.cs

            // ������ ����Ǹ鼭 �����س��� ������ �ҷ��ͼ� settings�� ����
            settings = (NotepadCloneSettings) LoadSettings();

            // ����� ������ Windowstate�� ����
            WindowState = settings.WindowState;

            if (settings.RestoreBounds != Rect.Empty)
            {
                Left = settings.RestoreBounds.Left;
                Top = settings.RestoreBounds.Top;
                Width = settings.RestoreBounds.Width;
                Height = settings.RestoreBounds.Height;
            }

            // Rect�� ������� ������ RestoreBounds(â�� ũ��� ��ġ)�� ����
            if (settings.RestoreBounds != Rect.Empty)
            {
                Left = settings.RestoreBounds.Left;
                Top = settings.RestoreBounds.Top;
                Width = settings.RestoreBounds.Width;
                Height = settings.RestoreBounds.Height;
            }

            txtbox.TextWrapping = settings.TextWrapping;                // �ؽ�Ʈ�ڽ��� settings�� �ٹٲ� ����� ����
            txtbox.FontFamily = new FontFamily(settings.FontFamily);    // �ؽ�Ʈ�ڽ��� �۲��йи��� settings�� �۲��йи��� ����
            txtbox.FontStyle = (FontStyle)new FontStyleConverter().    //  �ؽ�Ʈ�ڽ��� �۲ý�Ÿ���� settings�� �۲ý�Ÿ�Ϸ� ����
                                ConvertFromString(settings.FontStyle);
            txtbox.FontWeight = (FontWeight)new FontWeightConverter(). // �ؽ�Ʈ�ڽ��� �۲õβ��� settings�� �۲õβ��� ����
                                ConvertFromString(settings.FontWeight);
            txtbox.FontStretch = (FontStretch)new FontStretchConverter(). // �ؽ�Ʈ�ڽ��� �۲ô��̱⸦ settings�� �۲ô��̱�� ����
                                ConvertFromString(settings.FontStretch);
            txtbox.FontSize = settings.FontSize;                            // �ؽ�Ʈ�ڽ��� �۲�ũ�⸦ settings�� �۲�ũ��� ����

            // Loaded �̺�Ʈ �ڵ鷯 ����
            Loaded += WindowOnLoaded;

            // �ؽ�Ʈ�ڽ��� ��Ŀ�� ����
            txtbox.Focus();
        }
Example #2
0
        public NotepadClone()
        {
            //Title = "Notepad Clone";

            Assembly asmbly = Assembly.GetExecutingAssembly();

            // get AssemblyTitle attribute
            AssemblyTitleAttribute title =
                (AssemblyTitleAttribute)asmbly
                .GetCustomAttributes(typeof(AssemblyTitleAttribute), false)[0];

            strAppTitle = title.Title;

            // get AssemblyProduct
            AssemblyProductAttribute product =
                (AssemblyProductAttribute)asmbly
                .GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0];

            strAppData = Path.Combine(
                Environment.GetFolderPath(
                    Environment.SpecialFolder.LocalApplicationData),
                "Petzold\\" + product.Product + "\\" + product.Product + ".Settings.xml");

            DockPanel dock = new DockPanel();

            Content = dock;

            // main menu
            menu = new Menu();
            dock.Children.Add(menu);
            DockPanel.SetDock(menu, Dock.Top);

            //status bar
            status = new StatusBar();
            dock.Children.Add(status);
            DockPanel.SetDock(status, Dock.Bottom);

            statLineCol = new StatusBarItem()
            {
                HorizontalAlignment = HorizontalAlignment.Center
            };
            status.Items.Add(statLineCol);
            DockPanel.SetDock(statLineCol, Dock.Right);

            // textbox
            txtbox = new TextBox()
            {
                AcceptsReturn = true,
                AcceptsTab    = true,
                VerticalScrollBarVisibility   = ScrollBarVisibility.Auto,
                HorizontalScrollBarVisibility = ScrollBarVisibility.Auto
            };
            txtbox.TextChanged      += TextBoxOnTextChanged;
            txtbox.SelectionChanged += TextBoxOnSelectionChanged;
            dock.Children.Add(txtbox);

            // Create menu commands
            AddFileMenu(menu);
            AddEditMenu(menu);
            AddFormatMenu(menu);
            AddViewMenu(menu);
            AddHelpMenu(menu);

            // load settings
            settings = (NotepadCloneSettings)LoadSettings();

            // apply settins
            WindowState = settings.WindowState;

            if (settings.RestoreBounds != Rect.Empty)
            {
                Left   = settings.RestoreBounds.Left;
                Top    = settings.RestoreBounds.Top;
                Width  = settings.RestoreBounds.Width;
                Height = settings.RestoreBounds.Height;
            }

            txtbox.TextWrapping = settings.TextWrapping;
            txtbox.FontFamily   = new FontFamily(settings.FontFamily);
            txtbox.FontStyle    = (FontStyle) new FontStyleConverter().ConvertFromString(settings.FontStyle);
            txtbox.FontWeight   = (FontWeight) new FontWeightConverter().ConvertFromString(settings.FontWeight);
            txtbox.FontStretch  = (FontStretch) new FontStretchConverter().ConvertFromString(settings.FontStretch);
            txtbox.FontSize     = settings.FontSize;

            // Load handler
            Loaded += WindowOnLoaded;

            // set focus
            txtbox.Focus();
        }
        string strLoadedFile; // Fully qualified loaded file name.

        #endregion Fields

        #region Constructors

        public NotepadClone()
        {
            // Get this executing assembly to access attributes.
            Assembly asmbly = Assembly.GetExecutingAssembly();

            // Get the AssemblyTitle attribute for the strAppTitle field.
            AssemblyTitleAttribute title = (AssemblyTitleAttribute)asmbly.
                GetCustomAttributes(typeof(AssemblyTitleAttribute), false)[0];
            strAppTitle = title.Title;

            // Get the AssemblyProduct attribute for the strAppData file name.
            AssemblyProductAttribute product = (AssemblyProductAttribute)asmbly.
                GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0];
            strAppData = Path.Combine(
                Environment.GetFolderPath(
                    Environment.SpecialFolder.LocalApplicationData),
                        "Petzold\\" + product.Product + "\\" +
                        product.Product + ".Settings.xml");

            // Create DockPanel as content of window.
            DockPanel dock = new DockPanel();
            Content = dock;

            // Create Menu docked at top.
            menu = new Menu();
            dock.Children.Add(menu);
            DockPanel.SetDock(menu, Dock.Top);

            // Create StatusBar docked at bottom.
            status = new StatusBar();
            dock.Children.Add(status);
            DockPanel.SetDock(status, Dock.Bottom);

            // Create StatusBarItem to display line and column.
            statLineCol = new StatusBarItem();
            statLineCol.HorizontalAlignment = HorizontalAlignment.Right;
            status.Items.Add(statLineCol);
            DockPanel.SetDock(statLineCol, Dock.Right);

            // Create TextBox to fill remainder of client area.
            txtbox = new TextBox();
            txtbox.AcceptsReturn = true;
            txtbox.AcceptsTab = true;
            txtbox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            txtbox.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
            txtbox.TextChanged += TextBoxOnTextChanged;
            txtbox.SelectionChanged += TextBoxOnSelectionChanged;
            dock.Children.Add(txtbox);

            // Create all the top-level menu items.
            AddFileMenu(menu);          // in NotepadClone.File.cs
            AddEditMenu(menu);          // in NotepadClone.Edit.cs
            AddFormatMenu(menu);        // in NotepadClone.Format.cs
            AddViewMenu(menu);          // in NotepadClone.View.cs
            AddHelpMenu(menu);          // in NotepadClone.Help.cs

            // Load settings saved from previous run.
            settings = (NotepadCloneSettings) LoadSettings();

            // Apply saved settings.
            WindowState = settings.WindowState;

            if (settings.RestoreBounds != Rect.Empty)
            {
                Left = settings.RestoreBounds.Left;
                Top = settings.RestoreBounds.Top;
                Width = settings.RestoreBounds.Width;
                Height = settings.RestoreBounds.Height;
            }

            txtbox.TextWrapping = settings.TextWrapping;
            txtbox.FontFamily = new FontFamily(settings.FontFamily);
            txtbox.FontStyle = (FontStyle) new FontStyleConverter().
                                ConvertFromString(settings.FontStyle);
            txtbox.FontWeight = (FontWeight) new FontWeightConverter().
                                ConvertFromString(settings.FontWeight);
            txtbox.FontStretch = (FontStretch) new FontStretchConverter().
                                ConvertFromString(settings.FontStretch);
            txtbox.FontSize = settings.FontSize;

            // Install handler for Loaded event.
            Loaded += WindowOnLoaded;

            // Set focus to TextBox.
            txtbox.Focus();
        }
Example #4
0
 // virtual method for loading settings
 protected virtual object LoadSettings()
 {
     return(NotepadCloneSettings.Load(typeof(NotepadCloneSettings), strAppData));
 }