Browse Source

Implemented right-to-left mirroring for dialogs and the main menu.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@961 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
3013f698f3
  1. 1
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  2. 2
      src/AddIns/Misc/AddInManager/Project/Src/ManagerForm.cs
  3. 4
      src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs
  4. 4
      src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs
  5. 55
      src/Main/Base/Project/Resources/CodeTemplatePanel.xfrm
  6. 4
      src/Main/Base/Project/Resources/EditStandardHeaderPanel.xfrm
  7. 1
      src/Main/Base/Project/Resources/FindPanel.xfrm
  8. 3
      src/Main/Base/Project/Resources/FontSelectionPanel.xfrm
  9. 4
      src/Main/Base/Project/Resources/GeneralTextEditorPanel.xfrm
  10. 1
      src/Main/Base/Project/Resources/ReplacePanel.xfrm
  11. 15
      src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopAboutPanels.cs
  12. 1
      src/Main/Base/Project/Src/Gui/Dialogs/TipOfTheDay.cs
  13. 7
      src/Main/Base/Project/Src/Gui/Dialogs/TreeViewOptions.cs
  14. 7
      src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
  15. 8
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceWindow.cs
  16. 2
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
  17. 2
      src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlForm.cs
  18. 1
      src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlUserControl.cs
  19. 1
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs
  20. 2
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplaceDialog.cs
  21. 1
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs
  22. 2
      src/Main/Core/Project/Src/Services/FileUtility/SaveErrorChooseDialog.cs
  23. 2
      src/Main/Core/Project/Src/Services/FileUtility/SaveErrorInformDialog.cs
  24. 1
      src/Main/Core/Project/Src/Services/MessageService/CustomDialog.cs
  25. 1
      src/Main/Core/Project/Src/Services/MessageService/InputBox.cs
  26. 41
      src/Main/Core/Project/Src/Services/MessageService/MessageService.cs
  27. 123
      src/Main/Core/Project/Src/Util/RightToLeftConverter.cs
  28. 11
      src/Main/StartUp/Project/Dialogs/ExceptionBox.cs

1
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs

@ -108,6 +108,7 @@ namespace ICSharpCode.FormsDesigner @@ -108,6 +108,7 @@ namespace ICSharpCode.FormsDesigner
this.loaderProvider = loaderProvider;
this.generator = generator;
p.BackColor = Color.White;
p.RightToLeft = RightToLeft.No;
this.viewContent = viewContent;
this.textAreaControlProvider = viewContent as ITextEditorControlProvider;

2
src/AddIns/Misc/AddInManager/Project/Src/ManagerForm.cs

@ -61,6 +61,8 @@ namespace ICSharpCode.AddInManager @@ -61,6 +61,8 @@ namespace ICSharpCode.AddInManager
closeButton.Text = ResourceService.GetString("Global.CloseButtonText");
showPreinstalledAddInsCheckBox.Text = ResourceService.GetString("AddInManager.ShowPreinstalledAddIns");
this.Text = ResourceService.GetString("AddInManager.Title");
RightToLeftConverter.ConvertRecursive(this);
CreateAddInList();
}

4
src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs

@ -225,7 +225,7 @@ namespace Plugins.RegExpTk { @@ -225,7 +225,7 @@ namespace Plugins.RegExpTk {
try {
Regex re = new Regex(((TextBox)ControlDictionary["RegularExpressionCompileTextBox"]).Text, options);
} catch (ArgumentException ae) {
MessageBox.Show(ResourceService.GetString("RegExpTk.Messages.CreationError") + " " + ae.Message);
MessageService.Show(ResourceService.GetString("RegExpTk.Messages.CreationError") + " " + ae.Message);
return;
}
@ -243,7 +243,7 @@ namespace Plugins.RegExpTk { @@ -243,7 +243,7 @@ namespace Plugins.RegExpTk {
try {
Regex.CompileToAssembly(rciArray, asmName);
} catch (ArgumentException ae) {
MessageBox.Show(ResourceService.GetString("RegExpTk.Messages.CompilationError") + " " + ae.Message);
MessageService.Show(ResourceService.GetString("RegExpTk.Messages.CompilationError") + " " + ae.Message);
}
string aboluteFileName = Path.GetFullPath(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text);

4
src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs

@ -264,7 +264,11 @@ namespace ICSharpCode.StartPage @@ -264,7 +264,11 @@ namespace ICSharpCode.StartPage
public virtual void RenderHeaderSection(StringBuilder builder)
{
//if (RightToLeftConverter.IsRightToLeft) {
// builder.Append("<html dir=\"rtl\"><head><title>");
//} else {
builder.Append("<html><head><title>");
//}
builder.Append(Title);
builder.Append("</title>\r\n");
builder.Append("<link rel='stylesheet' type='text/css' href='");

55
src/Main/Base/Project/Resources/CodeTemplatePanel.xfrm

@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
<AcceptsTab value="True" />
<AutoSize value="False" />
<Text value="" />
<RightToLeft value="No" />
</System.Windows.Forms.TextBox>
</Controls>
</System.Windows.Forms.Panel>
@ -58,6 +59,7 @@ @@ -58,6 +59,7 @@
<Location value="{X=8,Y=72}" />
<Size value="{Width=216, Height=112}" />
<HideSelection value="False" />
<RightToLeft value="No" />
<Columns>
<System.Windows.Forms.ColumnHeader>
<Width value="70" />
@ -92,6 +94,7 @@ @@ -92,6 +94,7 @@
<Location value="{X=88,Y=8}" />
<Size value="{Width=228, Height=21}" />
<DropDownStyle value="DropDownList" />
<RightToLeft value="No" />
</System.Windows.Forms.ComboBox>
<System.Windows.Forms.Label>
<Name value="extensionLabel" />
@ -103,54 +106,4 @@ @@ -103,54 +106,4 @@
</System.Windows.Forms.Label>
</Controls>
</System.Windows.Forms.UserControl>
<System.Windows.Forms.ColumnHeader>
<Width value="70" />
<Name value="columnHeader3" />
<Text value="Template" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="140" />
<Name value="columnHeader1" />
<Text value="${res:Dialog.Options.CodeTemplate.Description}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="70" />
<Name value="columnHeader7" />
<Text value="${res:Dialog.Options.CodeTemplate.Template}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="140" />
<Name value="columnHeader2" />
<Text value="${res:Dialog.Options.CodeTemplate.Description}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="140" />
<Name value="columnHeader6" />
<Text value="Description" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="140" />
<Name value="columnHeader5" />
<Text value="${res:Dialog.Options.CodeTemplate.Description}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="140" />
<Name value="columnHeader4" />
<Text value="${res:Dialog.Options.CodeTemplate.Description}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="70" />
<Name value="columnHeader9" />
<Text value="${res:Dialog.Options.CodeTemplate.Template}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="70" />
<Name value="columnHeader8" />
<Text value="${res:Dialog.Options.CodeTemplate.Template}" />
</System.Windows.Forms.ColumnHeader>
<System.Windows.Forms.ColumnHeader>
<Width value="70" />
<Name value="columnHeader" />
<Text value="${res:Dialog.Options.CodeTemplate.Template}" />
</System.Windows.Forms.ColumnHeader>
</Components>
</Components>

4
src/Main/Base/Project/Resources/EditStandardHeaderPanel.xfrm

@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
<AcceptsTab value="True" />
<AutoSize value="False" />
<Text value="" />
<RightToLeft value="No" />
</System.Windows.Forms.TextBox>
</Controls>
</System.Windows.Forms.Panel>
@ -50,7 +51,8 @@ @@ -50,7 +51,8 @@
<Location value="{X=144,Y=8}" />
<Size value="{Width=192, Height=21}" />
<DropDownStyle value="DropDownList" />
<RightToLeft value="No" />
</System.Windows.Forms.ComboBox>
</Controls>
</System.Windows.Forms.UserControl>
</Components>
</Components>

1
src/Main/Base/Project/Resources/FindPanel.xfrm

@ -53,7 +53,6 @@ @@ -53,7 +53,6 @@
</System.Windows.Forms.Button>
<System.Windows.Forms.CheckBox>
<Name value="matchWholeWordCheckBox" />
<RightToLeft value="No" />
<Location value="{X=8,Y=200}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:Dialog.NewProject.SearchReplace.MatchWholeWord}" />

3
src/Main/Base/Project/Resources/FontSelectionPanel.xfrm

@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
<Location value="{X=8,Y=32}" />
<Size value="{Width=216, Height=22}" />
<DropDownStyle value="DropDownList" />
<RightToLeft value="No" />
</System.Windows.Forms.ComboBox>
<System.Windows.Forms.Label>
<Name value="CreatedObject9" />
@ -49,4 +50,4 @@ @@ -49,4 +50,4 @@
</System.Windows.Forms.Label>
</Controls>
</System.Windows.Forms.UserControl>
</Components>
</Components>

4
src/Main/Base/Project/Resources/GeneralTextEditorPanel.xfrm

@ -83,11 +83,11 @@ @@ -83,11 +83,11 @@
<FormattingEnabled value="True" />
<DropDownStyle value="DropDownList" />
<Location value="{X=8,Y=40}" />
<RightToLeft value="No" />
</System.Windows.Forms.ComboBox>
<System.Windows.Forms.CheckBox>
<Name value="mouseWheelZoomCheckBox" />
<Location value="{X=192,Y=109}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:Dialog.Options.IDEOptions.TextEditor.General.MouseWheelZoomCheckBoxCheckBox}" />
<TabIndex value="6" />
<Size value="{Width=160, Height=24}" />
@ -104,7 +104,6 @@ @@ -104,7 +104,6 @@
<System.Windows.Forms.CheckBox>
<Name value="enableAAFontRenderingCheckBox" />
<Location value="{X=8,Y=108}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:Dialog.Options.IDEOptions.TextEditor.General.AntialiasedFontCheckBox}" />
<TabIndex value="5" />
<Size value="{Width=184, Height=24}" />
@ -136,6 +135,7 @@ @@ -136,6 +135,7 @@
<FormattingEnabled value="True" />
<DropDownStyle value="DropDownList" />
<Location value="{X=8,Y=40}" />
<RightToLeft value="No" />
</System.Windows.Forms.ComboBox>
</Controls>
</System.Windows.Forms.GroupBox>

1
src/Main/Base/Project/Resources/ReplacePanel.xfrm

@ -70,7 +70,6 @@ @@ -70,7 +70,6 @@
</System.Windows.Forms.Button>
<System.Windows.Forms.CheckBox>
<Name value="matchWholeWordCheckBox" />
<RightToLeft value="No" />
<Location value="{X=8,Y=248}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:Dialog.NewProject.SearchReplace.MatchWholeWord}" />

15
src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopAboutPanels.cs

@ -76,7 +76,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -76,7 +76,6 @@ namespace ICSharpCode.SharpDevelop.Gui
throwExceptionButton.Click += new EventHandler(ThrowExceptionButtonClick);
throwExceptionButton.FlatStyle = FlatStyle.System;
Controls.Add(throwExceptionButton);
}
class ClownFishException : System.Exception
@ -180,13 +179,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -180,13 +179,13 @@ namespace ICSharpCode.SharpDevelop.Gui
//
// listView
//
this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader,
this.columnHeader2,
this.columnHeader3});
this.columnHeader,
this.columnHeader2,
this.columnHeader3});
this.listView.FullRowSelect = true;
this.listView.GridLines = true;
this.listView.Sorting = SortOrder.Ascending;
@ -195,6 +194,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -195,6 +194,8 @@ namespace ICSharpCode.SharpDevelop.Gui
this.listView.Size = new System.Drawing.Size(248, 176);
this.listView.TabIndex = 0;
this.listView.View = System.Windows.Forms.View.Details;
//this.listView.RightToLeftLayout = true;
//this.listView.RightToLeft = RightToLeft;
//
// columnHeader3

1
src/Main/Base/Project/Src/Gui/Dialogs/TipOfTheDay.cs

@ -138,6 +138,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -138,6 +138,7 @@ namespace ICSharpCode.SharpDevelop.Gui
MaximizeBox = MinimizeBox = false;
ShowInTaskbar = false;
RightToLeftConverter.ConvertRecursive(this);
}
void ExitDialog(object sender, EventArgs e)

7
src/Main/Base/Project/Src/Gui/Dialogs/TreeViewOptions.cs

@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (node.IsExpanded) {
node.Collapse();
} else {
node.Expand();
node.Expand();
}
}
}
@ -143,6 +143,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -143,6 +143,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (descriptor != null && descriptor.DialogPanel != null && descriptor.DialogPanel.Control != null) {
descriptor.DialogPanel.ReceiveDialogMessage(DialogMessage.Activated);
ControlDictionary["optionControlPanel"].Controls.Clear();
RightToLeftConverter.ConvertRecursive(descriptor.DialogPanel.Control);
ControlDictionary["optionControlPanel"].Controls.Add(descriptor.DialogPanel.Control);
optionsPanelLabel.Text = descriptor.Label;
}
@ -207,7 +208,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -207,7 +208,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public TreeViewOptions(Properties properties, AddInTreeNode node)
public TreeViewOptions(Properties properties, AddInTreeNode node)
{
this.properties = properties;
@ -225,7 +226,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -225,7 +226,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
protected void InitializeComponent()
protected void InitializeComponent()
{
Owner = (Form)WorkbenchSingleton.Workbench;

7
src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs

@ -47,6 +47,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -47,6 +47,8 @@ namespace ICSharpCode.SharpDevelop.Gui
return fullscreen;
}
set {
if (fullscreen == value)
return;
fullscreen = value;
if (fullscreen) {
defaultWindowState = WindowState;
@ -125,7 +127,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -125,7 +127,6 @@ namespace ICSharpCode.SharpDevelop.Gui
public DefaultWorkbench()
{
RightToLeft = RightToLeftConverter.RightToLeft;
Text = ResourceService.GetString("MainWindow.DialogName");
Icon = ResourceService.GetIcon("Icons.SharpDevelopIcon");
@ -168,6 +169,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -168,6 +169,8 @@ namespace ICSharpCode.SharpDevelop.Gui
toolbarUpdateTimer.Interval = 500;
toolbarUpdateTimer.Start();
RightToLeftConverter.Convert(this);
}
public void CloseContent(IViewContent content)
@ -241,7 +244,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -241,7 +244,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public void RedrawAllComponents()
{
RightToLeft = RightToLeftConverter.RightToLeft;
RightToLeftConverter.ConvertRecursive(this);
foreach (ToolStripItem item in TopMenu.Items) {
if (item is IStatusUpdate)

8
src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceWindow.cs

@ -256,11 +256,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -256,11 +256,11 @@ namespace ICSharpCode.SharpDevelop.Gui
public bool CloseWindow(bool force)
{
if (!force && ViewContent != null && ViewContent.IsDirty) {
DialogResult dr = MessageBox.Show(
ResourceService.GetString("MainWindow.SaveChangesMessage"),
DialogResult dr = MessageBox.Show(ResourceService.GetString("MainWindow.SaveChangesMessage"),
ResourceService.GetString("MainWindow.SaveChangesMessageHeader") + " " + Title + " ?",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3,
RightToLeftConverter.IsRightToLeft ? MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign : 0);
switch (dr) {
case DialogResult.Yes:
if (content.FileName == null) {

2
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -80,6 +80,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -80,6 +80,8 @@ namespace ICSharpCode.SharpDevelop.Gui
public static void InitializeWorkbench()
{
workbench = new DefaultWorkbench();
MessageService.MainForm = workbench;
caller = new STAThreadCaller(workbench);
workbench.InitializeWorkspace();

2
src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlForm.cs

@ -83,7 +83,7 @@ namespace ICSharpCode.SharpDevelop.Gui.XmlForms @@ -83,7 +83,7 @@ namespace ICSharpCode.SharpDevelop.Gui.XmlForms
if (stream != null) {
xmlLoader.LoadObjectFromStream(this, stream);
}
RightToLeftConverter.Convert(this);
RightToLeftConverter.ConvertRecursive(this);
ResumeLayout(false);
}

1
src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlUserControl.cs

@ -87,7 +87,6 @@ namespace ICSharpCode.SharpDevelop.Gui.XmlForms @@ -87,7 +87,6 @@ namespace ICSharpCode.SharpDevelop.Gui.XmlForms
if (stream != null) {
xmlLoader.LoadObjectFromStream(this, stream);
}
RightToLeftConverter.Convert(this);
ResumeLayout(false);
}

1
src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs

@ -185,6 +185,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -185,6 +185,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public TextEditorDisplayBindingWrapper()
{
textAreaControl = CreateSharpDevelopTextAreaControl();
textAreaControl.RightToLeft = RightToLeft.No;
textAreaControl.Document.DocumentChanged += new DocumentEventHandler(TextAreaChangedEvent);
textAreaControl.ActiveTextAreaControl.Caret.CaretModeChanged += new EventHandler(CaretModeChanged);
textAreaControl.ActiveTextAreaControl.Enter += new EventHandler(CaretUpdate);

2
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplaceDialog.cs

@ -77,6 +77,8 @@ namespace SearchAndReplace @@ -77,6 +77,8 @@ namespace SearchAndReplace
toolStrip.Items.Add(replaceButton);
Controls.Add(toolStrip);
RightToLeftConverter.ConvertRecursive(this);
SetSearchAndReplaceMode();
FormLocationHelper.Apply(this, "ICSharpCode.SharpDevelop.Gui.SearchAndReplaceDialog.Location", false);
}

1
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs

@ -47,6 +47,7 @@ namespace SearchAndReplace @@ -47,6 +47,7 @@ namespace SearchAndReplace
Get<Button>("findNext").Click += new EventHandler(FindNextButtonClicked);
SetOptions();
RightToLeftConverter.ReConvertRecursive(this);
ResumeLayout(false);
}
}

2
src/Main/Core/Project/Src/Services/FileUtility/SaveErrorChooseDialog.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.Core @@ -32,7 +32,7 @@ namespace ICSharpCode.Core
this.Text = StringParser.Parse(dialogName);
// Must be called for initialization
this.InitializeComponents(chooseLocationEnabled);
RightToLeftConverter.Convert(this);
RightToLeftConverter.ConvertRecursive(this);
displayMessage = StringParser.Parse(message, new string[,] {
{"FileName", fileName},

2
src/Main/Core/Project/Src/Services/FileUtility/SaveErrorInformDialog.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.Core @@ -30,7 +30,7 @@ namespace ICSharpCode.Core
this.Text = StringParser.Parse(dialogName);
// Must be called for initialization
this.InitializeComponent2();
RightToLeftConverter.Convert(this);
RightToLeftConverter.ConvertRecursive(this);
displayMessage = StringParser.Parse(message, new string[,] {
{"FileName", fileName},

1
src/Main/Core/Project/Src/Services/MessageService/CustomDialog.cs

@ -82,6 +82,7 @@ namespace ICSharpCode.Core @@ -82,6 +82,7 @@ namespace ICSharpCode.Core
}
label.Text = message;
RightToLeftConverter.ConvertRecursive(this);
this.ResumeLayout(false);
}

1
src/Main/Core/Project/Src/Services/MessageService/InputBox.cs

@ -49,6 +49,7 @@ namespace ICSharpCode.Core @@ -49,6 +49,7 @@ namespace ICSharpCode.Core
label.Text = text;
textBox.Text = defaultValue;
this.DialogResult = DialogResult.Cancel;
RightToLeftConverter.ConvertRecursive(this);
}
#region Windows Forms Designer generated code

41
src/Main/Core/Project/Src/Services/MessageService/MessageService.cs

@ -100,7 +100,13 @@ namespace ICSharpCode.Core @@ -100,7 +100,13 @@ namespace ICSharpCode.Core
{
message = StringParser.Parse(message);
LoggingService.Warn(message);
MessageBox.Show(MessageService.MainForm, message, StringParser.Parse("${res:Global.WarningText}"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
MessageBox.Show(MessageService.MainForm,
message,
StringParser.Parse("${res:Global.WarningText}"),
MessageBoxButtons.OK,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button1,
GetOptions(message, message));
}
public static void ShowWarningFormatted(string formatstring, params string[] formatitems)
@ -110,7 +116,30 @@ namespace ICSharpCode.Core @@ -110,7 +116,30 @@ namespace ICSharpCode.Core
public static bool AskQuestion(string question, string caption)
{
return MessageBox.Show(MessageService.MainForm, StringParser.Parse(question), StringParser.Parse(caption), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes;
return MessageBox.Show(MessageService.MainForm,
StringParser.Parse(question),
StringParser.Parse(caption),
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1,
GetOptions(question, caption))
== DialogResult.Yes;
}
static MessageBoxOptions GetOptions(string text, string caption)
{
return IsRtlText(text) ? MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign : 0;
}
static bool IsRtlText(string text)
{
if (!RightToLeftConverter.IsRightToLeft)
return false;
foreach (char c in StringParser.Parse(text)) {
if (char.GetUnicodeCategory(c) == System.Globalization.UnicodeCategory.OtherLetter)
return true;
}
return false;
}
public static bool AskQuestionFormatted(string caption, string formatstring, params string[] formatitems)
@ -179,7 +208,13 @@ namespace ICSharpCode.Core @@ -179,7 +208,13 @@ namespace ICSharpCode.Core
{
message = StringParser.Parse(message);
LoggingService.Info(message);
MessageBox.Show(mainForm, message, StringParser.Parse(caption), MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show(mainForm,
message,
StringParser.Parse(caption),
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
GetOptions(message, caption));
}
static string Format(string formatstring, string[] formatitems)

123
src/Main/Core/Project/Src/Util/RightToLeftConverter.cs

@ -16,13 +16,13 @@ namespace ICSharpCode.Core @@ -16,13 +16,13 @@ namespace ICSharpCode.Core
/// </summary>
public static class RightToLeftConverter
{
public static RightToLeft RightToLeft {
public static bool IsRightToLeft {
get {
return RightToLeft.Inherit;
return ResourceService.Language.StartsWith("ar");
}
}
static AnchorStyles Convert(AnchorStyles anchor)
static AnchorStyles Mirror(AnchorStyles anchor)
{
bool right = (anchor & AnchorStyles.Right) == AnchorStyles.Right;
bool left = (anchor & AnchorStyles.Left ) == AnchorStyles.Left ;
@ -39,35 +39,116 @@ namespace ICSharpCode.Core @@ -39,35 +39,116 @@ namespace ICSharpCode.Core
return anchor;
}
static Point ConvertLocation(Control control)
static Point MirrorLocation(Control control)
{
return new Point(control.Parent.Size.Width - control.Location.X - control.Size.Width,
control.Location.Y);
return new Point(control.Parent.ClientSize.Width - control.Left - control.Width,
control.Top);
}
static DockStyle Convert(DockStyle dock)
/// <summary>
/// Mirrors a control and its child controls if right to left is activated.
/// Call this only for controls that aren't mirrored automatically by .NET!
/// </summary>
static void Mirror(Control control)
{
switch (dock) {
switch (control.Dock) {
case DockStyle.Left:
return DockStyle.Right;
control.Dock = DockStyle.Right;
break;
case DockStyle.Right:
return DockStyle.Left;
control.Dock = DockStyle.Left;
break;
case DockStyle.None:
control.Anchor = Mirror(control.Anchor);
control.Location = MirrorLocation(control);
break;
}
// Panels with RightToLeft = No won't have their children mirrored
if (control.RightToLeft != RightToLeft.Yes)
return;
foreach (Control child in control.Controls) {
Mirror(child);
}
return dock;
}
public static void Convert(Control control)
{
// control.RightToLeft = RightToLeft.Yes;
// control.Anchor = Convert(control.Anchor);
// control.Dock = Convert(control.Dock);
// if (control.Parent != null) {
// control.Location = ConvertLocation(control);
// }
//
// foreach (Control c in control.Controls) {
// Convert(c);
// }
bool isRTL = IsRightToLeft;
if (isRTL) {
if (control.RightToLeft != RightToLeft.Yes)
control.RightToLeft = RightToLeft.Yes;
} else {
if (control.RightToLeft == RightToLeft.Yes)
control.RightToLeft = RightToLeft.No;
}
ConvertLayout(control);
}
static void ConvertLayout(Control control)
{
bool isRTL = IsRightToLeft;
DateTimePicker picker = control as DateTimePicker;
Form form = control as Form;
ListView listView = control as ListView;
ProgressBar pg = control as ProgressBar;
TabControl tc = control as TabControl;
TrackBar trb = control as TrackBar;
TreeView treeView = control as TreeView;
if (form != null && form.RightToLeftLayout != isRTL)
form.RightToLeftLayout = isRTL;
if (listView != null && listView.RightToLeftLayout != isRTL)
listView.RightToLeftLayout = isRTL;
if (pg != null && pg.RightToLeftLayout != isRTL)
pg.RightToLeftLayout = isRTL;
if (tc != null && tc.RightToLeftLayout != isRTL)
tc.RightToLeftLayout = isRTL;
if (trb != null && trb.RightToLeftLayout != isRTL)
trb.RightToLeftLayout = isRTL;
if (treeView != null && treeView.RightToLeftLayout != isRTL)
treeView.RightToLeftLayout = isRTL;
}
static void ConvertLayoutRecursive(Control control)
{
bool isRTL = IsRightToLeft;
if (isRTL == (control.RightToLeft == RightToLeft.Yes)) {
ConvertLayout(control);
foreach (Control child in control.Controls) {
ConvertLayoutRecursive(child);
}
}
}
public static void ConvertRecursive(Control control)
{
if (IsRightToLeft == (control.RightToLeft == RightToLeft.Yes)) {
// already converted
return;
}
ReConvertRecursive(control);
}
public static void ReConvertRecursive(Control control)
{
Convert(control);
foreach (Control child in control.Controls) {
ConvertLayoutRecursive(child);
}
if (IsRightToLeft) {
if (control is Form) {
// direct children seem to be mirrored by .NET
foreach (Control child in control.Controls) {
foreach (Control subChild in child.Controls) {
Mirror(subChild);
}
}
} else {
foreach (Control child in control.Controls) {
Mirror(child);
}
}
}
}
}
}

11
src/Main/StartUp/Project/Dialogs/ExceptionBox.cs

@ -56,8 +56,15 @@ namespace ICSharpCode.SharpDevelop @@ -56,8 +56,15 @@ namespace ICSharpCode.SharpDevelop
string str = "";
str += ".NET Version : " + Environment.Version.ToString() + Environment.NewLine;
str += "OS Version : " + Environment.OSVersion.ToString() + Environment.NewLine;
string cultureName = null;
try {
str += "Current culture : " + CultureInfo.CurrentCulture.EnglishName + Environment.NewLine;
cultureName = CultureInfo.CurrentCulture.Name;
str += "Current culture : " + CultureInfo.CurrentCulture.EnglishName + " (" + cultureName + ")" + Environment.NewLine;
} catch {}
try {
if (cultureName == null || !cultureName.StartsWith(ResourceService.Language)) {
str += "Current UI language : " + ResourceService.Language + Environment.NewLine;
}
} catch {}
try {
if (SystemInformation.TerminalServerSession) {
@ -122,7 +129,7 @@ namespace ICSharpCode.SharpDevelop @@ -122,7 +129,7 @@ namespace ICSharpCode.SharpDevelop
+ Uri.EscapeDataString("Write an English description on how to reproduce the error and paste the exception text.");
StartUrl(url);
}
*/
*/
}
static void StartUrl(string url)

Loading…
Cancel
Save