Mini Kabibi Habibi
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using DevExpress.LookAndFeel;
using DevExpress.Tutorials.Controls;
using DevExpress.Utils;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraBars.Ribbon.Gallery;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
namespace DevExpress.XtraBars.Demos.RibbonSimplePad {
public partial class frmMain : DevExpress.XtraBars.Ribbon.RibbonForm {
public frmMain() {
InitializeComponent();
CreateColorPopup(popupControlContainer1);
InitSkinGallery();
InitFontGallery();
InitColorGallery();
InitEditors();
InitSchemeCombo();
UserLookAndFeel.Default.StyleChanged += new EventHandler(OnLookAndFeelStyleChanged);
UserLookAndFeel.Default.SetSkinStyle("Office 2013");
}
void OnLookAndFeelStyleChanged(object sender, EventArgs e) {
UpdateSchemeCombo();
}
private void InitSchemeCombo() {
foreach(object obj in Enum.GetValues(typeof(RibbonControlColorScheme))) {
repositoryItemComboBox1.Items.Add(obj);
}
beScheme.EditValue = RibbonControlColorScheme.Yellow;
}
int documentIndex = 0;
ColorPopup cp;
frmFind dlgFind = null;
frmReplace dlgReplace = null;
GalleryItem fCurrentFontItem, fCurrentColorItem;
string DocumentName { get { return string.Format("New Document {0}", documentIndex); } }
void CreateNewDocument() {
CreateNewDocument(null);
}
void InitEditors() {
riicStyle.Items.Add(new ImageComboBoxItem("Office 2007", RibbonControlStyle.Office2007, -1));
riicStyle.Items.Add(new ImageComboBoxItem("Office 2010", RibbonControlStyle.Office2010, -1));
riicStyle.Items.Add(new ImageComboBoxItem("Office 2013", RibbonControlStyle.Office2013, -1));
riicStyle.Items.Add(new ImageComboBoxItem("MacOffice", RibbonControlStyle.MacOffice, -1));
biStyle.EditValue = ribbonControl1.RibbonStyle;
}
public void ShowHideFormatCategory() {
RibbonPageCategory selectionCategory = Ribbon.PageCategories[0] as RibbonPageCategory;
if(selectionCategory == null) return;
if(CurrentRichTextBox == null)
selectionCategory.Visible = false;
else
selectionCategory.Visible = CurrentRichTextBox.SelectionLength != 0;
if(selectionCategory.Visible) Ribbon.SelectedPage = selectionCategory.Pages[0];
}
void CreateNewDocument(string fileName) {
documentIndex++;
frmPad pad = new frmPad();
if(fileName != null)
pad.LoadDocument(fileName);
else
pad.DocName = DocumentName;
pad.MdiParent = this;
pad.Closed += new EventHandler(Pad_Closed);
pad.ShowPopupMenu += new EventHandler(Pad_ShowPopupMenu);
pad.ShowMiniToolbar += new EventHandler(pad_ShowMiniToolbar);
pad.Show();
InitNewDocument(pad.RTBMain);
}
void pad_ShowMiniToolbar(object sender, EventArgs e) {
if(string.IsNullOrEmpty(((RichTextBox)sender).SelectedText))
return;
ShowSelectionMiniToolbar();
}
void Pad_Closed(object sender, EventArgs e) {
CloseFind();
}
void Pad_ShowPopupMenu(object sender, EventArgs e) {
pmMain.RibbonToolbar = selectionMiniToolbar;
pmMain.ShowPopup(Control.MousePosition);
}
void CloseFind() {
if(dlgFind != null && dlgFind.RichText != CurrentRichTextBox) {
dlgFind.Close();
dlgFind = null;
}
if(dlgReplace != null && dlgReplace.RichText != CurrentRichTextBox) {
dlgReplace.Close();
dlgReplace = null;
}
}
private void CreateColorPopup(PopupControlContainer container) {
cp = new ColorPopup(container, iFontColor, this);
}
#region Init
private void frmMain_Activated(object sender, System.EventArgs e) {
InitPaste();
}
public void UpdateText() {
ribbonControl1.ApplicationCaption = "Ribbon Simple Pad";
ribbonControl1.ApplicationDocumentCaption = CurrentDocName + (CurrentModified ? "*" : "");
//Text = string.Format("Ribbon Simple Pad ({0})", CurrentDocName);
siDocName.Caption = string.Format(" {0}", CurrentDocName);
}
void ChangeActiveForm() {
UpdateText();
InitCurrentDocument(CurrentRichTextBox);
rtPad_SelectionChanged(CurrentRichTextBox, EventArgs.Empty);
CloseFind();
}
private void xtraTabbedMdiManager1_FloatMDIChildActivated(object sender, EventArgs e) {
ChangeActiveForm();
}
private void xtraTabbedMdiManager1_FloatMDIChildDeactivated(object sender, EventArgs e) {
BeginInvoke(new MethodInvoker(ChangeActiveForm));
}
private void frmMain_MdiChildActivate(object sender, System.EventArgs e) {
ChangeActiveForm();
}
void rtPad_SelectionChanged(object sender, System.EventArgs e) {
ShowHideFormatCategory();
RichTextBox rtPad = sender as RichTextBox;
InitFormat();
int line = 0, col = 0;
if(rtPad != null) {
InitEdit(rtPad.SelectionLength > 0);
line = rtPad.GetLineFromCharIndex(rtPad.SelectionStart) + 1;
col = rtPad.SelectionStart + 1;
}
else {
InitEdit(false);
}
siPosition.Caption = string.Format(" Line: {0} Position: {1} ", line, col);
CurrentFontChanged();
}
protected virtual void ShowSelectionMiniToolbar() {
Point pt = Control.MousePosition;
pt.Offset(0, -11);
selectionMiniToolbar.Alignment = ContentAlignment.TopRight;
selectionMiniToolbar.PopupMenu = null;
selectionMiniToolbar.Show(pt);
}
void rtPad_TextChanged(object sender, System.EventArgs e) {
if(CurrentForm == null) return;
CurrentForm.Modified = true;
InitCurrentDocument(CurrentRichTextBox);
}
protected void InitFormat() {
iBold.Enabled = SelectFont != null;
iItalic.Enabled = SelectFont != null;
iUnderline.Enabled = SelectFont != null;
iFont.Enabled = SelectFont != null;
iFontColor.Enabled = SelectFont != null;
if(SelectFont != null) {
iBold.Down = SelectFont.Bold;
iItalic.Down = SelectFont.Italic;
iUnderline.Down = SelectFont.Underline;
}
bool enabled = CurrentRichTextBox != null;
iProtected.Enabled = enabled;
iBullets.Enabled = enabled;
iAlignLeft.Enabled = enabled;
iAlignRight.Enabled = enabled;
iCenter.Enabled = enabled;
rgbiFont.Enabled = enabled;
rgbiFontColor.Enabled = enabled;
ribbonPageGroup9.ShowCaptionButton = enabled;
rpgFont.ShowCaptionButton = enabled;
rpgFontColor.ShowCaptionButton = enabled;
if(!enabled) ClearFormats();
if(CurrentRichTextBox != null) {
iProtected.Down = CurrentRichTextBox.SelectionProtected;
iBullets.Down = CurrentRichTextBox.SelectionBullet;
switch(CurrentRichTextBox.SelectionAlignment) {
case HorizontalAlignment.Left:
iAlignLeft.Down = true;
break;
case HorizontalAlignment.Center:
iCenter.Down = true;
break;
case HorizontalAlignment.Right:
iAlignRight.Down = true;
break;
}
}
}
void ClearFormats() {
iBold.Down = false;
iItalic.Down = false;
iUnderline.Down = false;
iProtected.Down = false;
iBullets.Down = false;
iAlignLeft.Down = false;
iAlignRight.Down = false;
iCenter.Down = false;
}
protected void InitPaste() {
bool enabledPase = CurrentRichTextBox != null && CurrentRichTextBox.CanPaste(DataFormats.GetFormat(0));
iPaste.Enabled = enabledPase;
sbiPaste.Enabled = enabledPase;
}
void InitUndo() {
iUndo.Enabled = CurrentRichTextBox != null ? CurrentRichTextBox.CanUndo : false;
iLargeUndo.Enabled = iUndo.Enabled;
}
protected void InitEdit(bool enabled) {
iCut.Enabled = enabled;
iCopy.Enabled = enabled;
iClear.Enabled = enabled;
iSelectAll.Enabled = CurrentRichTextBox != null ? CurrentRichTextBox.CanSelect : false;
InitUndo();
}
void InitNewDocument(RichTextBox rtbControl) {
rtbControl.SelectionChanged += new System.EventHandler(this.rtPad_SelectionChanged);
rtbControl.TextChanged += new System.EventHandler(this.rtPad_TextChanged);
}
void InitCurrentDocument(RichTextBox rtbControl) {
bool enabled = rtbControl != null;
iSaveAs.Enabled = enabled;
iClose.Enabled = enabled;
iPrint.Enabled = enabled;
sbiSave.Enabled = enabled;
sbiFind.Enabled = enabled;
iFind.Enabled = enabled;
iReplace.Enabled = enabled;
iSave.Enabled = CurrentModified;
SetModifiedCaption();
InitPaste();
InitFormat();
}
void SetModifiedCaption() {
if(CurrentForm == null) {
siModified.Caption = "";
return;
}
siModified.Caption = CurrentModified ? " Modified " : "";
}
#endregion
#region Properties
frmPad CurrentForm {
get {
if(this.ActiveMdiChild == null) return null;
if(xtraTabbedMdiManager1.ActiveFloatForm != null)
return xtraTabbedMdiManager1.ActiveFloatForm as frmPad;
return this.ActiveMdiChild as frmPad;
}
}
public RichTextBox CurrentRichTextBox {
get {
if(CurrentForm == null) return null;
return CurrentForm.RTBMain;
}
}
string CurrentDocName {
get {
if(CurrentForm == null) return "";
return CurrentForm.DocName;
}
}
bool CurrentModified {
get {
if(CurrentForm == null) return false;
return CurrentForm.Modified;
}
}
#endregion
#region File
void idNew_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
CreateNewDocument();
}
void iClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentForm != null) CurrentForm.Close();
}
void OpenFile() {
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Rich Text Files (*.rtf)|*.rtf";
dlg.Title = "Open";
if(dlg.ShowDialog() == DialogResult.OK) {
OpenFile(dlg.FileName);
}
}
public void OpenFile(string name) {
CreateNewDocument(name);
AddToMostRecentFiles(name, arMRUList);
AddToMostRecentFiles(name, recentItemsControl1.MRUFileList);
AddToMostRecentFolders(name, recentItemsControl1.MRUFolderList);
}
private void AddToMostRecentFiles(string name, MRUArrayList arMRUList) {
arMRUList.InsertElement(name);
}
private void AddToMostRecentFolders(string name, MRUArrayList arMRUList) {
name = Path.GetFullPath(name);
arMRUList.InsertElement(Path.GetDirectoryName(name));
}
void iOpen_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
OpenFile();
}
private void iPrint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
XtraMessageBox.Show(this, "Note that you can use the XtraPrinting Library to print the contents of the standard RichTextBox control.\r\nFor more information, see the main XtraPrinting demo.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
void iSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
Save();
}
void iSaveAs_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
SaveAs();
}
void Save() {
if(CurrentForm == null) return;
if(CurrentForm.NewDocument) {
SaveAs();
}
else {
CurrentRichTextBox.SaveFile(CurrentDocName, RichTextBoxStreamType.RichText);
CurrentForm.Modified = false;
}
SetModifiedCaption();
}
void SaveAs() {
if(CurrentForm != null) {
string s = CurrentForm.SaveAs();
if(s != string.Empty) {
AddToMostRecentFiles(s, arMRUList);
AddToMostRecentFiles(s, recentItemsControl1.MRUFileList);
AddToMostRecentFolders(s, recentItemsControl1.MRUFolderList);
}
UpdateText();
}
}
private void iExit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
Close();
}
private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
}
private void ribbonPageGroup1_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e) {
OpenFile();
}
private void ribbonPageGroup9_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e) {
SaveAs();
}
#endregion
#region Format
private FontStyle rtPadFontStyle() {
FontStyle fs = new FontStyle();
if(iBold.Down) fs |= FontStyle.Bold;
if(iItalic.Down) fs |= FontStyle.Italic;
if(iUnderline.Down) fs |= FontStyle.Underline;
return fs;
}
private void iBullets_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectionBullet = iBullets.Down;
InitUndo();
}
private void iFontStyle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectionFont = new Font(SelectFont, rtPadFontStyle());
}
private void iProtected_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectionProtected = iProtected.Down;
}
private void iAlign_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
if(iAlignLeft.Down)
CurrentRichTextBox.SelectionAlignment = HorizontalAlignment.Left;
if(iCenter.Down)
CurrentRichTextBox.SelectionAlignment = HorizontalAlignment.Center;
if(iAlignRight.Down)
CurrentRichTextBox.SelectionAlignment = HorizontalAlignment.Right;
InitUndo();
}
protected Font SelectFont {
get {
if(CurrentRichTextBox != null)
return CurrentRichTextBox.SelectionFont;
return null;
}
}
void ShowFontDialog() {
if(CurrentRichTextBox == null) return;
Font dialogFont = null;
if(SelectFont != null)
dialogFont = (Font)SelectFont.Clone();
else dialogFont = CurrentRichTextBox.Font;
XtraFontDialog dlg = new XtraFontDialog(dialogFont);
if(dlg.ShowDialog() == DialogResult.OK) {
CurrentRichTextBox.SelectionFont = dlg.ResultFont;
beiFontSize.EditValue = dlg.ResultFont.Size;
}
}
private void iFont_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
ShowFontDialog();
}
private void iFontColor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectionColor = cp.ResultColor;
}
#endregion
#region Edit
private void iUndo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.Undo();
CurrentForm.Modified = CurrentRichTextBox.CanUndo;
SetModifiedCaption();
InitUndo();
InitFormat();
}
private void iCut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.Cut();
InitPaste();
}
private void iCopy_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.Copy();
InitPaste();
}
private void iPaste_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.Paste();
}
private void iClear_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectedRtf = "";
}
private void iSelectAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectAll();
}
private void ribbonPageGroup2_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e) {
pmMain.ShowPopup(ribbonControl1.Manager, MousePosition);
}
#endregion
#region SkinGallery
void InitSkinGallery() {
DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(rgbiSkins, true);
}
#endregion
#region FontGallery
Image GetFontImage(int width, int height, string fontName, int fontSize) {
Rectangle rect = new Rectangle(0, 0, width, height);
Image fontImage = new Bitmap(width, height);
try {
using(Font fontSample = new Font(fontName, fontSize)) {
Graphics g = Graphics.FromImage(fontImage);
g.FillRectangle(Brushes.White, rect);
using(StringFormat fs = new StringFormat()) {
fs.Alignment = StringAlignment.Center;
fs.LineAlignment = StringAlignment.Center;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.DrawString("Aa", fontSample, Brushes.Black, rect, fs);
g.Dispose();
}
}
}
catch { }
return fontImage;
}
void InitFont(GalleryItemGroup groupDropDown, GalleryItemGroup galleryGroup) {
FontFamily[] fonts = FontFamily.Families;
for(int i = 0; i < fonts.Length; i++) {
if(!FontFamily.Families[i].IsStyleAvailable(FontStyle.Regular)) continue;
string fontName = fonts[i].Name;
GalleryItem item = new GalleryItem();
item.Caption = fontName;
item.Image = GetFontImage(32, 28, fontName, 12);
item.HoverImage = item.Image;
item.Description = fontName;
item.Hint = fontName;
try {
item.Tag = new Font(fontName, 9);
if(DevExpress.Utils.ControlUtils.IsSymbolFont((Font)item.Tag)) {
item.Tag = new Font(DevExpress.Utils.AppearanceObject.DefaultFont.FontFamily, 9);
item.Description += " (Symbol Font)";
}
}
catch {
continue;
}
groupDropDown.Items.Add(item);
galleryGroup.Items.Add(item);
}
}
void InitFontGallery() {
gddFont.Gallery.BeginUpdate();
rgbiFont.Gallery.BeginUpdate();
try
{
InitFont(gddFont.Gallery.Groups[0], rgbiFont.Gallery.Groups[0]);
}
finally {
gddFont.Gallery.EndUpdate();
rgbiFont.Gallery.EndUpdate();
}
beiFontSize.EditValue = 8;
}
void SetFont(string fontName, GalleryItem item) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectionFont = new Font(fontName, Convert.ToInt32(beiFontSize.EditValue), rtPadFontStyle());
if(item != null) CurrentFontItem = item;
}
private void gddFont_Gallery_ItemClick(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e) {
SetFont(e.Item.Caption, e.Item);
}
private void rpgFont_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e) {
ShowFontDialog();
}
private void rgbiFont_Gallery_ItemClick(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e) {
SetFont(e.Item.Caption, e.Item);
}
private void gddFont_Gallery_CustomDrawItemText(object sender, GalleryItemCustomDrawEventArgs e) {
DevExpress.XtraBars.Ribbon.ViewInfo.GalleryItemViewInfo itemInfo = e.ItemInfo as DevExpress.XtraBars.Ribbon.ViewInfo.GalleryItemViewInfo;
itemInfo.PaintAppearance.ItemDescriptionAppearance.Normal.DrawString(e.Cache, e.Item.Description, itemInfo.DescriptionBounds);
AppearanceObject app = itemInfo.PaintAppearance.ItemCaptionAppearance.Normal.Clone() as AppearanceObject;
app.Font = (Font)e.Item.Tag;
try {
e.Cache.Graphics.DrawString(e.Item.Caption, app.Font, app.GetForeBrush(e.Cache), itemInfo.CaptionBounds);
}
catch { }
e.Handled = true;
}
#endregion
#region ColorGallery
void InitColorGallery() {
gddFontColor.BeginUpdate();
foreach(Color color in DevExpress.XtraEditors.Popup.ColorListBoxViewInfo.WebColors) {
if(color == Color.Transparent) continue;
GalleryItem item = new GalleryItem();
item.Caption = color.Name;
item.Tag = color;
item.Hint = color.Name;
gddFontColor.Gallery.Groups[0].Items.Add(item);
rgbiFontColor.Gallery.Groups[0].Items.Add(item);
}
foreach(Color color in DevExpress.XtraEditors.Popup.ColorListBoxViewInfo.SystemColors) {
GalleryItem item = new GalleryItem();
item.Caption = color.Name;
item.Tag = color;
gddFontColor.Gallery.Groups[1].Items.Add(item);
}
gddFontColor.EndUpdate();
}
private void gddFontColor_Gallery_CustomDrawItemImage(object sender, GalleryItemCustomDrawEventArgs e) {
Color clr = (Color)e.Item.Tag;
using(Brush brush = new SolidBrush(clr)) {
e.Cache.FillRectangle(brush, e.Bounds);
e.Handled = true;
}
}
void SetResultColor(Color color, GalleryItem item) {
if(CurrentRichTextBox == null) return;
cp.ResultColor = color;
CurrentRichTextBox.SelectionColor = cp.ResultColor;
if(item != null) CurrentColorItem = item;
}
private void gddFontColor_Gallery_ItemClick(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e) {
SetResultColor((Color)e.Item.Tag, e.Item);
}
private void rpgFontColor_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e) {
if(CurrentRichTextBox == null) return;
if(cp == null)
CreateColorPopup(popupControlContainer1);
popupControlContainer1.ShowPopup(ribbonControl1.Manager, MousePosition);
}
private void rgbiFontColor_Gallery_ItemClick(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e) {
SetResultColor((Color)e.Item.Tag, e.Item);
}
#endregion
private void iFind_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
if(dlgReplace != null) dlgReplace.Close();
if(dlgFind != null) dlgFind.Close();
dlgFind = new frmFind(CurrentRichTextBox, Bounds);
AddOwnedForm(dlgFind);
dlgFind.Show();
}
private void iReplace_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
if(CurrentRichTextBox == null) return;
if(dlgReplace != null) dlgReplace.Close();
if(dlgFind != null) dlgFind.Close();
dlgReplace = new frmReplace(CurrentRichTextBox, Bounds);
AddOwnedForm(dlgReplace);
dlgReplace.Show();
}
private void iWeb_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
Process process = new Process();
process.StartInfo.FileName = "http://www.devexpress.com";
process.StartInfo.Verb = "Open";
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.Start();
}
private void iAbout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
DevExpress.Utils.About.AboutForm.Show(new DevExpress.Utils.About.ProductInfo(string.Empty, typeof(frmMain), DevExpress.Utils.About.ProductKind.DXperienceWin, DevExpress.Utils.About.ProductInfoStage.Registered));
}
string TextByCaption(string caption) {
return caption.Replace("&", "");
}
private void frmMain_Load(object sender, System.EventArgs e) {
arMRUList = new MRUArrayList(pcAppMenuFileLabels, imageCollection3.Images[0], imageCollection3.Images[1]);
arMRUList.LabelClicked += new EventHandler(OnMRUFileLabelClicked);
InitMostRecentFiles(arMRUList);
InitMostRecentFiles(recentItemsControl1.MRUFileList);
ribbonControl1.ForceInitialize();
GalleryDropDown skins = new GalleryDropDown();
skins.Ribbon = ribbonControl1;
DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGalleryDropDown(skins);
iPaintStyle.DropDownControl = skins;
CreateNewDocument();
barEditItem1.EditValue = (Bitmap)DevExpress.Utils.ResourceImageHelper.CreateImageFromResources("DevExpress.XtraBars.Demos.RibbonSimplePad.online.gif", typeof(frmMain).Assembly);
}
#region GalleryItemsChecked
GalleryItem GetColorItemByColor(Color color, BaseGallery gallery) {
foreach(GalleryItemGroup galleryGroup in gallery.Groups)
foreach(GalleryItem item in galleryGroup.Items)
if(item.Caption == color.Name)
return item;
return null;
}
GalleryItem GetFontItemByFont(string fontName, BaseGallery gallery) {
foreach(GalleryItemGroup galleryGroup in gallery.Groups)
foreach(GalleryItem item in galleryGroup.Items)
if(item.Caption == fontName)
return item;
return null;
}
GalleryItem CurrentFontItem {
get { return fCurrentFontItem; }
set {
if(fCurrentFontItem == value) return;
if(fCurrentFontItem != null) fCurrentFontItem.Checked = false;
fCurrentFontItem = value;
if(fCurrentFontItem != null) {
fCurrentFontItem.Checked = true;
MakeFontVisible(fCurrentFontItem);
}
}
}
void MakeFontVisible(GalleryItem item) {
gddFont.Gallery.MakeVisible(fCurrentFontItem);
rgbiFont.Gallery.MakeVisible(fCurrentFontItem);
}
GalleryItem CurrentColorItem {
get { return fCurrentColorItem; }
set {
if(fCurrentColorItem == value) return;
if(fCurrentColorItem != null) fCurrentColorItem.Checked = false;
fCurrentColorItem = value;
if(fCurrentColorItem != null) {
fCurrentColorItem.Checked = true;
MakeColorVisible(fCurrentColorItem);
}
}
}
void MakeColorVisible(GalleryItem item) {
gddFontColor.Gallery.MakeVisible(fCurrentColorItem);
rgbiFontColor.Gallery.MakeVisible(fCurrentColorItem);
}
void CurrentFontChanged() {
if(CurrentRichTextBox == null || CurrentRichTextBox.SelectionFont == null) return;
CurrentFontItem = GetFontItemByFont(CurrentRichTextBox.SelectionFont.Name, rgbiFont.Gallery);
CurrentColorItem = GetColorItemByColor(CurrentRichTextBox.SelectionColor, rgbiFontColor.Gallery);
}
private void gddFont_Popup(object sender, System.EventArgs e) {
MakeFontVisible(CurrentFontItem);
if(CurrentRichTextBox == null) return;
beiFontSize.EditValue = CurrentRichTextBox.SelectionFont.Size;
}
private void gddFontColor_Popup(object sender, System.EventArgs e) {
MakeColorVisible(CurrentColorItem);
}
#endregion
#region MostRecentFiles
MRUArrayList arMRUList = null;
private void frmMain_FormClosing(object sender, FormClosingEventArgs e) {
SaveMostRecentFiles(arMRUList, Application.StartupPath + "\\" + MRUArrayList.MRUFileName);
SaveMostRecentFiles(recentItemsControl1.MRUFolderList, Application.StartupPath + "\\" + MRUArrayList.MRUFolderName);
}
void InitMostRecentFiles(MRUArrayList arList) {
string fileName = Application.StartupPath + "\\" + MRUArrayList.MRUFileName;
string folderName = Application.StartupPath + "\\" + MRUArrayList.MRUFolderName;
arMRUList.Init(fileName, "Document1.rtf");
recentItemsControl1.MRUFileList.Init(fileName, "Document1.rtf");
recentItemsControl1.MRUFolderList.Init(folderName, Application.StartupPath);
}
void SaveMostRecentFiles(MRUArrayList arList, string fileName) {
try {
System.IO.StreamWriter sw = System.IO.File.CreateText(fileName);
for(int i = 0; i < arList.Count; i++) sw.WriteLine(string.Format("{0},{1}", arList[i].ToString(), arList.GetLabelChecked(arList[i].ToString())));
sw.Close();
}
catch { }
}
void OnMRUFileLabelClicked(object sender, EventArgs e) {
ribbonControl1.DeactivateKeyboardNavigation();
pmAppMain.HidePopup();
this.Refresh();
OpenFile(sender.ToString());
}
#endregion
private void ribbonControl1_ApplicationButtonDoubleClick(object sender, EventArgs e) {
if(ribbonControl1.RibbonStyle == RibbonControlStyle.Office2007)
this.Close();
}
private void barEditItem1_ItemPress(object sender, ItemClickEventArgs e) {
System.Diagnostics.Process.Start("http://www.devexpress.com");
}
private void biStyle_EditValueChanged(object sender, EventArgs e) {
RibbonControlStyle style = (RibbonControlStyle)biStyle.EditValue;
ribbonControl1.RibbonStyle = style;
if(style == RibbonControlStyle.Office2010 || style == RibbonControlStyle.MacOffice || style == RibbonControlStyle.Office2013) {
ribbonControl1.ApplicationButtonDropDownControl = this.backstageViewControl1;
}
else {
ribbonControl1.ApplicationButtonDropDownControl = pmAppMain;
}
UpdateSchemeCombo();
UpdateLookAndFeel();
}
void UpdateLookAndFeel() {
string skinName;
RibbonControlStyle style = ribbonControl1.RibbonStyle;
switch(style) {
case RibbonControlStyle.Default:
case RibbonControlStyle.Office2007:
skinName = "Office 2007 Blue";
break;
case RibbonControlStyle.Office2013:
skinName = "Office 2013";
break;
case RibbonControlStyle.Office2010:
case RibbonControlStyle.MacOffice:
default:
skinName = "Office 2010 Blue";
break;
}
UserLookAndFeel.Default.SetSkinStyle(skinName);
}
void UpdateSchemeCombo() {
if(ribbonControl1.RibbonStyle == RibbonControlStyle.MacOffice ||
ribbonControl1.RibbonStyle == RibbonControlStyle.Office2010 || ribbonControl1.RibbonStyle == RibbonControlStyle.Office2013) {
beScheme.Visibility = UserLookAndFeel.Default.ActiveSkinName.Contains("Office 2010") ? BarItemVisibility.Always : BarItemVisibility.Never;
}
else {
beScheme.Visibility = BarItemVisibility.Never;
}
}
private void sbExit_Click(object sender, EventArgs e) {
this.Close();
}
private void beiFontSize_EditValueChanged(object sender, EventArgs e) {
if(CurrentRichTextBox == null) return;
CurrentRichTextBox.SelectionFont = new Font(CurrentRichTextBox.SelectionFont.FontFamily, Convert.ToSingle(beiFontSize.EditValue), CurrentRichTextBox.SelectionFont.Style);
}
private void bvTabPrint_SelectedChanged(object sender, BackstageViewItemEventArgs e) {
if(e.Item == bvTabPrint) {
this.printControl1.RtfText = CurrentRichTextBox != null? CurrentRichTextBox.Rtf: "";
}
}
private void ribbonControl1_BeforeApplicationButtonContentControlShow(object sender, EventArgs e) {
this.printControl1.RtfText = CurrentRichTextBox == null ? "" : CurrentRichTextBox.Rtf;
this.exportControl1.RtfText = CurrentRichTextBox == null ? "" : CurrentRichTextBox.Rtf;
}
private void bvItemSave_ItemClick(object sender, BackstageViewItemEventArgs e) {
Save();
}
private void bvItemSaveAs_ItemClick(object sender, BackstageViewItemEventArgs e) {
SaveAs();
}
private void bvItemOpen_ItemClick(object sender, BackstageViewItemEventArgs e) {
OpenFile();
}
private void bvItemClose_ItemClick(object sender, BackstageViewItemEventArgs e) {
if(xtraTabbedMdiManager1.SelectedPage != null)
xtraTabbedMdiManager1.SelectedPage.MdiChild.Close();
}
private void bvItemExit_ItemClick(object sender, BackstageViewItemEventArgs e) {
Close();
}
private void beScheme_EditValueChanged(object sender, EventArgs e) {
ribbonControl1.ColorScheme = ((RibbonControlColorScheme)beScheme.EditValue);
}
void ribbonControl1_ResetLayout(object sender, ResetLayoutEventArgs e) {
ShowHideFormatCategory();
}
}
}