diff --git a/.gitignore b/.gitignore index 87db769cc..e6ddca7ae 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,4 @@ test-results .nuget/ packages/ .vs/ - +.idea/ diff --git a/Directory.Build.props b/Directory.Build.props_ similarity index 81% rename from Directory.Build.props rename to Directory.Build.props_ index 938c2baf1..0899982af 100644 --- a/Directory.Build.props +++ b/Directory.Build.props_ @@ -3,7 +3,7 @@ true v4.7.2 - net472 + net472;netstandard2 diff --git a/Directory.Build.targets b/Directory.Build.targets_ similarity index 86% rename from Directory.Build.targets rename to Directory.Build.targets_ index 4f5ba19f5..5b783229b 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets_ @@ -1,7 +1,7 @@ true - net472 + net472;netstandard2.0 true diff --git a/TestApps/Gtk3Test/AssemblyInfo.cs b/TestApps/Gtk3Test/AssemblyInfo.cs index 31ea115bd..97d6a0d90 100644 --- a/TestApps/Gtk3Test/AssemblyInfo.cs +++ b/TestApps/Gtk3Test/AssemblyInfo.cs @@ -42,7 +42,7 @@ // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0")] // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/TestApps/GtkOnMacTest/GtkOnMacTest.csproj b/TestApps/GtkOnMacTest/GtkOnMacTest.csproj index 7972aa331..1a86ac915 100644 --- a/TestApps/GtkOnMacTest/GtkOnMacTest.csproj +++ b/TestApps/GtkOnMacTest/GtkOnMacTest.csproj @@ -7,6 +7,7 @@ WinExe GtkOnMacTest GtkOnMacTest + v4.7.2 true @@ -45,10 +46,6 @@ {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} Samples - - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD} - Xwt.Gtk - {E95833C9-90AA-4366-9262-0A1BED148249} Xwt.Gtk.Mac @@ -57,5 +54,9 @@ {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} Xwt + + {F2DE3BAD-78D5-4470-96F3-7FACB7391408} + Xwt.Gtk2 + diff --git a/TestApps/GtkSharpTest/GtkSharpTest.csproj b/TestApps/GtkSharpTest/GtkSharpTest.csproj new file mode 100644 index 000000000..2bc803f07 --- /dev/null +++ b/TestApps/GtkSharpTest/GtkSharpTest.csproj @@ -0,0 +1,29 @@ + + + net6 + Exe + + + false + + + TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0 + + + + TRACE;RELEASE;NETSTANDARD;NETSTANDARD2_0 + + + + + + + + + AssemblyInfo.cs + + + Main.cs + + + diff --git a/TestApps/GtkTest/AssemblyInfo.cs b/TestApps/GtkTest/AssemblyInfo.cs index 42b248993..8fa938a28 100644 --- a/TestApps/GtkTest/AssemblyInfo.cs +++ b/TestApps/GtkTest/AssemblyInfo.cs @@ -42,7 +42,7 @@ // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0")] // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/TestApps/GtkTest/GtkTest.csproj b/TestApps/GtkTest/GtkTest.csproj index 0feba48a5..4d624656c 100644 --- a/TestApps/GtkTest/GtkTest.csproj +++ b/TestApps/GtkTest/GtkTest.csproj @@ -1,81 +1,21 @@ - - + - Debug - AnyCPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55} + net472 Exe - GtkTest - GtkTest + + + false - True - full - False - bin\Debug - DEBUG; - prompt - 4 - False - 6 + TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0 - pdbonly - true - bin\Release - prompt - 4 - False - true - 6 - - - True - bin\x86\Debug\ - DEBUG; - full - x86 - prompt - true - false - 4 - False - 6 - - - bin\x86\Release\ - x86 - prompt - false - false - false - pdbonly - 4 - true - true - false - 6 + + TRACE;RELEASE;NETSTANDARD;NETSTANDARD2_0 - - - - - - - - - - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} - Xwt - - - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD} - Xwt.Gtk - - - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} - Samples - + + + - \ No newline at end of file + diff --git a/TestApps/GtkTest/GtkTest.csproj_ b/TestApps/GtkTest/GtkTest.csproj_ new file mode 100644 index 000000000..0feba48a5 --- /dev/null +++ b/TestApps/GtkTest/GtkTest.csproj_ @@ -0,0 +1,81 @@ + + + + Debug + AnyCPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55} + Exe + GtkTest + GtkTest + + + True + full + False + bin\Debug + DEBUG; + prompt + 4 + False + 6 + + + pdbonly + true + bin\Release + prompt + 4 + False + true + 6 + + + True + bin\x86\Debug\ + DEBUG; + full + x86 + prompt + true + false + 4 + False + 6 + + + bin\x86\Release\ + x86 + prompt + false + false + false + pdbonly + 4 + true + true + false + 6 + + + + + + + + + + + + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} + Xwt + + + {C3887A93-B2BD-4097-8E2F-3A063EFF32FD} + Xwt.Gtk + + + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} + Samples + + + \ No newline at end of file diff --git a/TestApps/MixedGtkMacTest/MixedGtkMacTest.csproj b/TestApps/MixedGtkMacTest/MixedGtkMacTest.csproj index a9226b6e7..377885e65 100644 --- a/TestApps/MixedGtkMacTest/MixedGtkMacTest.csproj +++ b/TestApps/MixedGtkMacTest/MixedGtkMacTest.csproj @@ -7,6 +7,7 @@ Exe MixedGtkMacTest MixedGtkMacTest + v4.7.2 True @@ -46,9 +47,9 @@ {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} Xwt - - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD} - Xwt.Gtk + + {F2DE3BAD-78D5-4470-96F3-7FACB7391408} + Xwt.Gtk2 {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} diff --git a/TestApps/Samples/Samples.csproj b/TestApps/Samples/Samples.csproj index 01e07561a..360ca2776 100644 --- a/TestApps/Samples/Samples.csproj +++ b/TestApps/Samples/Samples.csproj @@ -1,134 +1,19 @@ - - + - Debug - AnyCPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} - Library - Samples - Samples + netstandard2.0 + + + false - True - full - False - bin\Debug - DEBUG; - prompt - 4 - False - 6 + TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0 - pdbonly - true - bin\Release - prompt - 4 - False - true - 6 + + TRACE;RELEASE;NETSTANDARD;NETSTANDARD2_0 - - - ..\Xwt\System.Xaml.dll - - - - - - - - - - - - - - True - PreserveNewest - - - True - False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} - Xwt - + @@ -153,6 +38,34 @@ zoom-panel-dark@2x.9.png + + + + add-simple-16.png + + + add-simple-16@2x.png + + + add-simple-disabled-16.png + + + add-simple-disabled-16@2x.png + + + remove-simple-16.png + + + remove-simple-16@2x.png + + + remove-simple-disabled-16.png + + + remove-simple-disabled-16@2x.png + + + Samples\ninep-ss.9.png ninep-ss.9.png @@ -201,41 +114,5 @@ icons\zoom-in-16~sel%402x.png zoom-in-16~sel@2x.png - - add-simple-16.png - - - add-simple-16@2x.png - - - remove-simple-16.png - - - remove-simple-16@2x.png - - - remove-simple-disabled-16.png - - - remove-simple-disabled-16@2x.png - - - add-simple-disabled-16.png - - - add-simple-disabled-16@2x.png - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/TestApps/Samples/Samples.csproj_ b/TestApps/Samples/Samples.csproj_ new file mode 100644 index 000000000..181cf6dab --- /dev/null +++ b/TestApps/Samples/Samples.csproj_ @@ -0,0 +1,216 @@ + + + + Debug + AnyCPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} + Library + Samples + Samples + v4.7 + + 18.04 + + + True + full + False + bin\Debug + DEBUG; + prompt + 4 + False + false + + + pdbonly + true + bin\Release + prompt + 4 + False + true + false + + + + + ..\Xwt\System.Xaml.dll + + + + + + + + + + + + + + True + PreserveNewest + + + True + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} + Xwt + + + + + class.png + + + package.png + + + cow.jpg + True + + + document-generic.png + + + document-generic@2x.png + + + zoom-panel-dark.9.png + + + zoom-panel-dark@2x.9.png + + + Samples\ninep-ss.9.png + ninep-ss.9.png + + + Samples\ninep-st.9.png + ninep-st.9.png + + + Samples\ninep-ts.9.png + ninep-ts.9.png + + + Samples\ninep-tt.9.png + ninep-tt.9.png + + + icons\zoom-in-16.png + zoom-in-16.png + + + icons\zoom-in-16%402x.png + zoom-in-16@2x.png + + + icons\zoom-in-16~dark.png + zoom-in-16~dark.png + + + icons\zoom-in-16~dark%402x.png + zoom-in-16~dark@2x.png + + + icons\zoom-in-16~dark~sel.png + zoom-in-16~dark~sel.png + + + icons\zoom-in-16~dark~sel%402x.png + zoom-in-16~dark~sel@2x.png + + + icons\zoom-in-16~sel.png + zoom-in-16~sel.png + + + icons\zoom-in-16~sel%402x.png + zoom-in-16~sel@2x.png + + + + + + + + + + + + + \ No newline at end of file diff --git a/Testing/GtkTestRunner.csproj b/Testing/GtkTestRunner.csproj index 9b13958f5..25d03fd12 100644 --- a/Testing/GtkTestRunner.csproj +++ b/Testing/GtkTestRunner.csproj @@ -8,6 +8,7 @@ GtkTestRunner GtkTestRunner bin\GtkTestRunner.exe + v4.7.2 True @@ -116,16 +117,6 @@ - - - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD} - Xwt.Gtk - - - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} - Xwt - - @@ -158,4 +149,14 @@ + + + {F2DE3BAD-78D5-4470-96F3-7FACB7391408} + Xwt.Gtk2 + + + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} + Xwt + + \ No newline at end of file diff --git a/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj b/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj index 71ed75cbe..8bb5fd7c7 100644 --- a/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj +++ b/Xwt.Gtk.Mac/Xwt.Gtk.Mac.csproj @@ -84,13 +84,13 @@ - - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD} - Xwt.Gtk - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3} Xwt + + {F2DE3BAD-78D5-4470-96F3-7FACB7391408} + Xwt.Gtk2 + diff --git a/Xwt.Gtk/GtkInterop/DllImportFontConfig.cs b/Xwt.Gtk/GtkInterop/DllImportFontConfig.cs new file mode 100644 index 000000000..2ec224b08 --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportFontConfig.cs @@ -0,0 +1,16 @@ +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportFontConfig { +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool d_FcConfigAppFontAddFile(System.IntPtr config, string fontPath); + + public static d_FcConfigAppFontAddFile FcConfigAppFontAddFile = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Fontconfig), "FcConfigAppFontAddFile")); +#else + [System.Runtime.InteropServices.DllImport (GtkInterop.LIBFONTCONFIG)] + public static extern bool FcConfigAppFontAddFile (System.IntPtr config, string fontPath); +#endif + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkInterop/DllImportGObj.cs b/Xwt.Gtk/GtkInterop/DllImportGObj.cs new file mode 100644 index 000000000..b058a8e9d --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportGObj.cs @@ -0,0 +1,31 @@ +using System; +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportGObj { +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_g_object_get_data(IntPtr source, string name); + public static d_g_object_get_data g_object_get_data = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.GObject), "g_object_get_data")); +#else + [DllImport (GtkInterop.LIBGOBJECT, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr g_object_get_data (IntPtr source, string name); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_g_object_set_data(IntPtr source, string name, IntPtr data); + public static d_g_object_set_data g_object_set_data = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.GObject), "g_object_set_data")); +#else + +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_g_signal_stop_emission_by_name(IntPtr raw, string name); + public static d_g_signal_stop_emission_by_name g_signal_stop_emission_by_name = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.GObject), "g_signal_stop_emission_by_name")); +#else + [DllImport(GtkInterop.LIBGOBJECT, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr g_signal_stop_emission_by_name(IntPtr raw, string name); +#endif + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkInterop/DllImportGdk.cs b/Xwt.Gtk/GtkInterop/DllImportGdk.cs new file mode 100644 index 000000000..35fdce43c --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportGdk.cs @@ -0,0 +1,36 @@ +using System; +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportGdk { +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gdk_pixbuf_get_from_window(IntPtr win, int src_x, int src_y, int width, int height); + public static d_gdk_pixbuf_get_from_window gdk_pixbuf_get_from_window = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gdk), "gdk_pixbuf_get_from_window")); + +#else + [DllImport (GtkInterop.LIBGDK)] + public static extern IntPtr gdk_pixbuf_get_from_window(IntPtr win, int src_x, int src_y, int width, int height); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate bool d_gdk_keymap_add_virtual_modifiers(IntPtr keymap, ref Gdk.ModifierType state); + public static d_gdk_keymap_add_virtual_modifiers gdk_keymap_add_virtual_modifiers = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gdk), "gdk_keymap_add_virtual_modifiers")); +#else + //introduced in GTK 2.20 + [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] + public extern static bool gdk_keymap_add_virtual_modifiers (IntPtr keymap, ref Gdk.ModifierType state); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gdk_quartz_set_fix_modifiers(bool fix); + public static d_gdk_quartz_set_fix_modifiers gdk_quartz_set_fix_modifiers = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gdk), "gdk_quartz_set_fix_modifiers")); +#else + //Custom patch in Mono Mac w/GTK+ 2.24.8+ + [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] + public extern static bool gdk_quartz_set_fix_modifiers (bool fix); +#endif + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkInterop/DllImportGtk.cs b/Xwt.Gtk/GtkInterop/DllImportGtk.cs new file mode 100644 index 000000000..70ec56640 --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportGtk.cs @@ -0,0 +1,268 @@ +using System; +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportGtk { + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_gdk_pixbuf_get_from_surface(IntPtr surface, int src_x, int src_y, int width, int height); + + public static d_gdk_pixbuf_get_from_surface gdk_pixbuf_get_from_surface = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gdk), "gdk_pixbuf_get_from_surface")); + +#else + [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gdk_pixbuf_get_from_surface (IntPtr surface, int src_x, int src_y, int width, int height); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_font_selection_get_preview_entry(IntPtr raw); + public static d_gtk_font_selection_get_preview_entry gtk_font_selection_get_preview_entry = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_font_selection_get_preview_entry")); + +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_font_selection_get_preview_entry (IntPtr raw); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_font_chooser_dialog_new(IntPtr title, IntPtr parent); + public static d_gtk_font_chooser_dialog_new gtk_font_chooser_dialog_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_font_chooser_dialog_new")); + +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr gtk_font_chooser_dialog_new(IntPtr title, IntPtr parent); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_font_chooser_widget_get_type(); + public static d_gtk_font_chooser_widget_get_type gtk_font_chooser_widget_get_type = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_font_chooser_widget_get_type")); + +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_font_chooser_widget_get_type(); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate bool d_gdk_event_get_scroll_deltas(IntPtr eventScroll, out double deltaX, out double deltaY); + public static d_gdk_event_get_scroll_deltas gdk_event_get_scroll_deltas = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gdk_event_get_scroll_deltas")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public extern static bool gdk_event_get_scroll_deltas (IntPtr eventScroll, out double deltaX, out double deltaY); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_scrolled_window_set_overlay_policy(IntPtr sw, Gtk.PolicyType hpolicy, Gtk.PolicyType vpolicy); + public static d_gtk_scrolled_window_set_overlay_policy gtk_scrolled_window_set_overlay_policy = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_scrolled_window_set_overlay_policy")); +#else + [DllImport (GtkInterop.LIBGTK)] + public static extern void gtk_scrolled_window_set_overlay_policy (IntPtr sw, Gtk.PolicyType hpolicy, Gtk.PolicyType vpolicy); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_scrolled_window_get_overlay_policy(IntPtr sw, out Gtk.PolicyType hpolicy, out Gtk.PolicyType vpolicy); + public static d_gtk_scrolled_window_get_overlay_policy gtk_scrolled_window_get_overlay_policy = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_scrolled_window_get_overlay_policy")); +#else + [DllImport (GtkInterop.LIBGTK)] + public static extern void gtk_scrolled_window_get_overlay_policy (IntPtr sw, out Gtk.PolicyType hpolicy, out Gtk.PolicyType vpolicy); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate bool d_gtk_tree_view_get_tooltip_context(IntPtr raw, ref int x, ref int y, bool keyboard_tip, out IntPtr model, out IntPtr path, IntPtr iter); + public static d_gtk_tree_view_get_tooltip_context gtk_tree_view_get_tooltip_context = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_tree_view_get_tooltip_context")); + +#else + + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern bool gtk_tree_view_get_tooltip_context (IntPtr raw, ref int x, ref int y, bool keyboard_tip, out IntPtr model, out IntPtr path, IntPtr iter); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_image_menu_item_set_always_show_image(IntPtr menuitem, bool alwaysShow); + public static d_gtk_image_menu_item_set_always_show_image gtk_image_menu_item_set_always_show_image = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_image_menu_item_set_always_show_image")); + +#else + + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_image_menu_item_set_always_show_image (IntPtr menuitem, bool alwaysShow); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_icon_source_set_scale(IntPtr source, double scale); + public static d_gtk_icon_source_set_scale gtk_icon_source_set_scale = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_icon_source_set_scale")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_icon_source_set_scale (IntPtr source, double scale); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_icon_source_set_scale_wildcarded(IntPtr source, bool setting); + public static d_gtk_icon_source_set_scale_wildcarded gtk_icon_source_set_scale_wildcarded = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_icon_source_set_scale_wildcarded")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_icon_source_set_scale_wildcarded (IntPtr source, bool setting); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate double d_gtk_widget_get_scale_factor(IntPtr widget); + public static d_gtk_widget_get_scale_factor gtk_widget_get_scale_factor = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_widget_get_scale_factor")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern double gtk_widget_get_scale_factor (IntPtr widget); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate double d_gdk_screen_get_monitor_scale_factor(IntPtr widget, int monitor); + public static d_gdk_screen_get_monitor_scale_factor gdk_screen_get_monitor_scale_factor = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gdk_screen_get_monitor_scale_factor")); +#else + [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] + public static extern double gdk_screen_get_monitor_scale_factor (IntPtr widget, int monitor); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_icon_set_render_icon_scaled(IntPtr handle, IntPtr style, int direction, int state, int size, IntPtr widget, IntPtr intPtr, ref double scale); + public static d_gtk_icon_set_render_icon_scaled gtk_icon_set_render_icon_scaled = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_icon_set_render_icon_scaled")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_icon_set_render_icon_scaled (IntPtr handle, IntPtr style, int direction, int state, int size, IntPtr widget, IntPtr intPtr, ref double scale); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_message_dialog_get_message_area(IntPtr raw); + public static d_gtk_message_dialog_get_message_area gtk_message_dialog_get_message_area = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_message_dialog_get_message_area")); +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_message_dialog_get_message_area(IntPtr raw); +#endif + + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_binding_set_find(string setName); + public static d_gtk_binding_set_find gtk_binding_set_find = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_binding_set_find")); +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_binding_set_find (string setName); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_binding_entry_remove(IntPtr bindingSet, uint keyval, Gdk.ModifierType modifiers); + public static d_gtk_binding_entry_remove gtk_binding_entry_remove = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_binding_entry_remove")); +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_binding_entry_remove (IntPtr bindingSet, uint keyval, Gdk.ModifierType modifiers); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_object_set_data(IntPtr raw, IntPtr key, IntPtr data); + public static d_gtk_object_set_data gtk_object_set_data = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_object_set_data")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_object_set_data (IntPtr raw, IntPtr key, IntPtr data); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gdk_x11_drawable_get_xid(IntPtr window); + public static d_gdk_x11_drawable_get_xid gdk_x11_drawable_get_xid = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gdk_x11_drawable_get_xid")); +#else + [DllImport (GtkInterop.LIBGTK)] + public static extern IntPtr gdk_x11_drawable_get_xid (IntPtr window); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate bool d_gtk_selection_data_set_uris(IntPtr raw, IntPtr[] uris); + public static d_gtk_selection_data_set_uris gtk_selection_data_set_uris = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_selection_data_set_uris")); +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern bool gtk_selection_data_set_uris(IntPtr raw, IntPtr[] uris); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_selection_data_get_uris(IntPtr raw); + public static d_gtk_selection_data_get_uris gtk_selection_data_get_uris = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_selection_data_get_uris")); + +#else + [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_selection_data_get_uris(IntPtr raw); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_label_set_attributes(IntPtr label, IntPtr attrList); + public static d_gtk_label_set_attributes gtk_label_set_attributes = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_label_set_attributes")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_label_set_attributes (IntPtr label, IntPtr attrList); + +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_spinner_new(); + public static d_gtk_spinner_new gtk_spinner_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_spinner_new")); +#else + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr gtk_spinner_new(); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_spinner_start(IntPtr raw); + public static d_gtk_spinner_start gtk_spinner_start = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_spinner_start")); + +#else + + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_spinner_start(IntPtr raw); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_gtk_spinner_stop(IntPtr raw); + public static d_gtk_spinner_stop gtk_spinner_stop = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_spinner_stop")); + +#else + + [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] + public static extern void gtk_spinner_stop(IntPtr raw); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_gtk_spinner_get_type(); + public static d_gtk_spinner_get_type gtk_spinner_get_type = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_spinner_get_type")); + +#else + + [DllImport(GtkInterop.LIBGTK)] + public static extern IntPtr gtk_spinner_get_type(); +#endif + + /* +Pattern: + +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_funcname(IntPtr raw, ...); + public static d_funcname funcname = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.*), "funcname")); +#else + + + + */ + } + +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkInterop/DllImportPango.cs b/Xwt.Gtk/GtkInterop/DllImportPango.cs new file mode 100644 index 000000000..95de8fef1 --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportPango.cs @@ -0,0 +1,153 @@ +using System; +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportPango { +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_style_new(Pango.Style style); + public static d_pango_attr_style_new pango_attr_style_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_style_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_style_new (Pango.Style style); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_stretch_new(Pango.Stretch stretch); + public static d_pango_attr_stretch_new pango_attr_stretch_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_stretch_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_stretch_new (Pango.Stretch stretch); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_weight_new(Pango.Weight weight); + public static d_pango_attr_weight_new pango_attr_weight_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_weight_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_weight_new (Pango.Weight weight); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_foreground_new(ushort red, ushort green, ushort blue); + public static d_pango_attr_foreground_new pango_attr_foreground_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_foreground_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_foreground_new (ushort red, ushort green, ushort blue); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_background_new(ushort red, ushort green, ushort blue); + public static d_pango_attr_background_new pango_attr_background_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_background_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_background_new (ushort red, ushort green, ushort blue); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_underline_new(Pango.Underline underline); + public static d_pango_attr_underline_new pango_attr_underline_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_underline_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_underline_new (Pango.Underline underline); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_strikethrough_new(bool strikethrough); + public static d_pango_attr_strikethrough_new pango_attr_strikethrough_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_strikethrough_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_strikethrough_new (bool strikethrough); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_font_desc_new(IntPtr desc); + public static d_pango_attr_font_desc_new pango_attr_font_desc_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_font_desc_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_font_desc_new (IntPtr desc); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_list_new(); + public static d_pango_attr_list_new pango_attr_list_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_list_new")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_list_new (); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_list_unref(IntPtr list); + public static d_pango_attr_list_unref pango_attr_list_unref = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_list_unref")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern void pango_attr_list_unref (IntPtr list); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_list_insert(IntPtr list, IntPtr attr); + public static d_pango_attr_list_insert pango_attr_list_insert = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_list_insert")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern void pango_attr_list_insert (IntPtr list, IntPtr attr); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_layout_set_attributes(IntPtr layout, IntPtr attrList); + public static d_pango_layout_set_attributes pango_layout_set_attributes = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_layout_set_attributes")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern void pango_layout_set_attributes (IntPtr layout, IntPtr attrList); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_list_splice(IntPtr attr_list, IntPtr other, Int32 pos, Int32 len); + public static d_pango_attr_list_splice pango_attr_list_splice = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_list_splice")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] + public static extern void pango_attr_list_splice (IntPtr attr_list, IntPtr other, Int32 pos, Int32 len); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_size_new_absolute(int size); + public static d_pango_attr_size_new_absolute pango_attr_size_new_absolute = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_size_new_absolute")); + +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_size_new_absolute (int size); +#endif + +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attribute_copy(IntPtr raw); + public static d_pango_attribute_copy pango_attribute_copy = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attribute_copy")); +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr pango_attribute_copy (IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate IntPtr d_pango_attr_iterator_get(IntPtr raw, int type); + public static d_pango_attr_iterator_get pango_attr_iterator_get = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Pango), "pango_attr_iterator_get")); +#else + [DllImport (GtkInterop.LIBPANGO, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr pango_attr_iterator_get (IntPtr raw, int type); +#endif + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkInterop/DllImportPangoCairo.cs b/Xwt.Gtk/GtkInterop/DllImportPangoCairo.cs new file mode 100644 index 000000000..5b807fe96 --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportPangoCairo.cs @@ -0,0 +1,18 @@ +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportPangoCairo { +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] + public delegate void d_pango_cairo_font_map_set_default(System.IntPtr fontmap); + public static d_pango_cairo_font_map_set_default pango_cairo_font_map_set_default = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.PangoCairo), "pango_cairo_font_map_set_default")); + +#else + [System.Runtime.InteropServices.DllImport (GtkInterop.LIBPANGOCAIRO)] + public static extern void pango_cairo_font_map_set_default (System.IntPtr fontmap); +#endif + + + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkInterop/DllImportWebkit.cs b/Xwt.Gtk/GtkInterop/DllImportWebkit.cs new file mode 100644 index 000000000..494326df3 --- /dev/null +++ b/Xwt.Gtk/GtkInterop/DllImportWebkit.cs @@ -0,0 +1,179 @@ +using System; +using System.Runtime.InteropServices; +using Xwt.GtkBackend; + +namespace Xwt.Interop { + public static class DllImportWebkit { +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_network_request_new(IntPtr uri); + + public static d_webkit_network_request_new webkit_network_request_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_network_request_new")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_network_request_new(IntPtr uri); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_network_request_get_type(); + + public static d_webkit_network_request_get_type webkit_network_request_get_type = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_network_request_get_type")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_network_request_get_type(); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_network_request_get_uri(IntPtr raw); + + public static d_webkit_network_request_get_uri webkit_network_request_get_uri = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_network_request_get_uri")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_network_request_get_uri(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_network_request_set_uri(IntPtr raw, IntPtr uri); + + public static d_webkit_network_request_set_uri webkit_network_request_set_uri = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_network_request_set_uri")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_network_request_set_uri(IntPtr raw, IntPtr uri); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_web_view_new(); + + public static d_webkit_web_view_new webkit_web_view_new = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_new")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_web_view_new(); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_web_view_get_type(); + + public static d_webkit_web_view_get_type webkit_web_view_get_type = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_get_type")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_web_view_get_type(); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_load_uri(IntPtr raw, IntPtr uri); + + public static d_webkit_web_view_load_uri webkit_web_view_load_uri = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_load_uri")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_load_uri(IntPtr raw, IntPtr uri); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_web_view_get_uri(IntPtr raw); + + public static d_webkit_web_view_get_uri webkit_web_view_get_uri = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_get_uri")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_web_view_get_uri(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool d_webkit_web_view_get_full_content_zoom(IntPtr raw); + + public static d_webkit_web_view_get_full_content_zoom webkit_web_view_get_full_content_zoom = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_get_full_content_zoom")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern bool webkit_web_view_get_full_content_zoom(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_set_full_content_zoom(IntPtr raw, bool full_content_zoom); + + public static d_webkit_web_view_set_full_content_zoom webkit_web_view_set_full_content_zoom = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_set_full_content_zoom")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_set_full_content_zoom(IntPtr raw, bool full_content_zoom); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_stop_loading(IntPtr raw); + + public static d_webkit_web_view_stop_loading webkit_web_view_stop_loading = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_stop_loading")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_stop_loading(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_reload(IntPtr raw); + + public static d_webkit_web_view_reload webkit_web_view_reload = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_reload")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_reload(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool d_webkit_web_view_can_go_back(IntPtr raw); + + public static d_webkit_web_view_can_go_back webkit_web_view_can_go_back = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_can_go_back")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern bool webkit_web_view_can_go_back(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_go_back(IntPtr raw); + + public static d_webkit_web_view_go_back webkit_web_view_go_back = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_go_back")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_go_back(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool d_webkit_web_view_can_go_forward(IntPtr raw); + + public static d_webkit_web_view_can_go_forward webkit_web_view_can_go_forward = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_can_go_forward")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern bool webkit_web_view_can_go_forward(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_go_forward(IntPtr raw); + + public static d_webkit_web_view_go_forward webkit_web_view_go_forward = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_go_forward")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_go_forward(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void d_webkit_web_view_load_string(IntPtr raw, IntPtr content, IntPtr mime_type, IntPtr encoding, IntPtr base_uri); + + public static d_webkit_web_view_load_string webkit_web_view_load_string = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_load_string")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern void webkit_web_view_load_string (IntPtr raw, IntPtr content, IntPtr mime_type, IntPtr encoding, IntPtr base_uri); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr d_webkit_web_view_get_title(IntPtr raw); + + public static d_webkit_web_view_get_title webkit_web_view_get_title = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_get_title")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern IntPtr webkit_web_view_get_title(IntPtr raw); +#endif +#if XWT_GTKSHARP3 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate double d_webkit_web_view_get_progress(IntPtr raw); + + public static d_webkit_web_view_get_progress webkit_web_view_get_progress = FuncLoader.LoadFunction(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_view_get_progress")); +#else + [DllImport (GtkInterop.LIBWEBKIT)] + public static extern double webkit_web_view_get_progress(IntPtr raw); +#endif + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkSharpInterop/FuncLoader.cs b/Xwt.Gtk/GtkSharpInterop/FuncLoader.cs new file mode 100644 index 000000000..0a310861f --- /dev/null +++ b/Xwt.Gtk/GtkSharpInterop/FuncLoader.cs @@ -0,0 +1,101 @@ +using System; +using System.Runtime.InteropServices; + +class FuncLoader +{ + private class Windows + { + [DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)] + public static extern IntPtr GetProcAddress(IntPtr hModule, string procName); + + [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)] + public static extern IntPtr LoadLibraryW(string lpszLib); + } + + private class Linux + { + [DllImport("libdl.so.2")] + public static extern IntPtr dlopen(string path, int flags); + + [DllImport("libdl.so.2")] + public static extern IntPtr dlsym(IntPtr handle, string symbol); + } + + private class OSX + { + [DllImport("/usr/lib/libSystem.dylib")] + public static extern IntPtr dlopen(string path, int flags); + + [DllImport("/usr/lib/libSystem.dylib")] + public static extern IntPtr dlsym(IntPtr handle, string symbol); + } + + [DllImport("libc")] + private static extern int uname(IntPtr buf); + + private const int RTLD_LAZY = 0x0001; + private const int RTLD_GLOBAL = 0x0100; + + public static bool IsWindows, IsOSX; + + static FuncLoader() + { + switch (Environment.OSVersion.Platform) + { + case PlatformID.Win32NT: + case PlatformID.Win32S: + case PlatformID.Win32Windows: + case PlatformID.WinCE: + IsWindows = true; + break; + case PlatformID.MacOSX: + IsOSX = true; + break; + case PlatformID.Unix: + try + { + var buf = Marshal.AllocHGlobal(8192); + if (uname(buf) == 0 && Marshal.PtrToStringAnsi(buf) == "Darwin") + IsOSX = true; + + Marshal.FreeHGlobal(buf); + } + catch { } + + break; + } + } + + public static IntPtr LoadLibrary(string libname) + { + if (IsWindows) + return Windows.LoadLibraryW(libname); + + if (IsOSX) + return OSX.dlopen(libname, RTLD_GLOBAL | RTLD_LAZY); + + return Linux.dlopen(libname, RTLD_GLOBAL | RTLD_LAZY); + } + + public static IntPtr GetProcAddress(IntPtr library, string function) + { + var ret = IntPtr.Zero; + + if (IsWindows) + ret = Windows.GetProcAddress(library, function); + else if (IsOSX) + ret = OSX.dlsym(library, function); + else + ret = Linux.dlsym(library, function); + + return ret; + } + + public static T LoadFunction(IntPtr procaddress) + { + if (procaddress == IntPtr.Zero) + return default(T); + + return Marshal.GetDelegateForFunctionPointer(procaddress); + } +} diff --git a/Xwt.Gtk/GtkSharpInterop/GLibrary.cs b/Xwt.Gtk/GtkSharpInterop/GLibrary.cs new file mode 100644 index 000000000..f4eb1e586 --- /dev/null +++ b/Xwt.Gtk/GtkSharpInterop/GLibrary.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; + +class GLibrary +{ + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool SetDllDirectory(string lpPathName); + + private static Dictionary _libraries; + private static Dictionary _customlibraries; + private static Dictionary _libraryDefinitions; + + static GLibrary() + { + _customlibraries = new Dictionary(); + _libraries = new Dictionary(); + _libraryDefinitions = new Dictionary(); + _libraryDefinitions[Library.GLib] = new[] { "libglib-2.0-0.dll", "libglib-2.0.so.0", "libglib-2.0.0.dylib", "glib-2.dll" }; + _libraryDefinitions[Library.GObject] = new[] { "libgobject-2.0-0.dll", "libgobject-2.0.so.0", "libgobject-2.0.0.dylib", "gobject-2.dll" }; + _libraryDefinitions[Library.Cairo] = new[] { "libcairo-2.dll", "libcairo.so.2", "libcairo.2.dylib", "cairo.dll" }; + _libraryDefinitions[Library.Gio] = new[] { "libgio-2.0-0.dll", "libgio-2.0.so.0", "libgio-2.0.0.dylib", "gio-2.dll" }; + _libraryDefinitions[Library.Atk] = new[] { "libatk-1.0-0.dll", "libatk-1.0.so.0", "libatk-1.0.0.dylib", "atk-1.dll" }; + _libraryDefinitions[Library.Pango] = new[] { "libpango-1.0-0.dll", "libpango-1.0.so.0", "libpango-1.0.0.dylib", "pango-1.dll" }; + _libraryDefinitions[Library.Gdk] = new[] { "libgdk-3-0.dll", "libgdk-3.so.0", "libgdk-3.0.dylib", "gdk-3.dll" }; + _libraryDefinitions[Library.GdkPixbuf] = new[] { "libgdk_pixbuf-2.0-0.dll", "libgdk_pixbuf-2.0.so.0", "libgdk_pixbuf-2.0.dylib", "gdk_pixbuf-2.dll" }; + _libraryDefinitions[Library.Gtk] = new[] { "libgtk-3-0.dll", "libgtk-3.so.0", "libgtk-3.0.dylib", "gtk-3.dll" }; + _libraryDefinitions[Library.PangoCairo] = new[] { "libpangocairo-1.0-0.dll", "libpangocairo-1.0.so.0", "libpangocairo-1.0.0.dylib", "pangocairo-1.dll" }; + _libraryDefinitions[Library.Fontconfig] = new[] { "fontconfig.dll", "libfontconfig.so.1", "libfontconfig.1.dylib", "fontconfig.dll" }; + // + _libraryDefinitions[Library.Webkit] = new[] { "libwebkitgtk-3.0-0.dll", "libwebkitgtk-3.0.so.0", "libwebkitgtk-3.0.0.dylib", "libwebkitgtk-3.dll" }; + } + + public static IntPtr Load(Library library) + { + var ret = IntPtr.Zero; + if (_libraries.TryGetValue(library, out ret)) + return ret; + + if (FuncLoader.IsWindows) + { + ret = FuncLoader.LoadLibrary(_libraryDefinitions[library][0]); + + if (ret == IntPtr.Zero) + { + SetDllDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Gtk", "3.24")); + ret = FuncLoader.LoadLibrary(_libraryDefinitions[library][0]); + } + } + else if (FuncLoader.IsOSX) + { + ret = FuncLoader.LoadLibrary(_libraryDefinitions[library][2]); + + if (ret == IntPtr.Zero) + { + ret = FuncLoader.LoadLibrary("/usr/local/lib/" + _libraryDefinitions[library][2]); + } + } + else + ret = FuncLoader.LoadLibrary(_libraryDefinitions[library][1]); + + if (ret == IntPtr.Zero) + { + for (int i = 0; i < _libraryDefinitions[library].Length; i++) + { + ret = FuncLoader.LoadLibrary(_libraryDefinitions[library][i]); + + if (ret != IntPtr.Zero) + break; + } + } + + if (ret == IntPtr.Zero) + { + var err = library + ": " + string.Join(", ", _libraryDefinitions[library]); + throw new DllNotFoundException(err); + } + + _libraries[library] = ret; + return ret; + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkSharpInterop/GtkSharpWorkarounds.cs b/Xwt.Gtk/GtkSharpInterop/GtkSharpWorkarounds.cs new file mode 100644 index 000000000..a3cfe3fa7 --- /dev/null +++ b/Xwt.Gtk/GtkSharpInterop/GtkSharpWorkarounds.cs @@ -0,0 +1,80 @@ +using System; +using System.Runtime.InteropServices; +using Gdk; +using Gtk; +using Xwt.CairoBackend; + +namespace Xwt.GtkBackend { + public static class GtkSharpWorkarounds { + + public static Color ToGdkColor(this Gdk.RGBA color)=>new Color((byte)(color.Red * 255), (byte)(color.Green * 255), (byte)(color.Blue * 255)); + + static void StyleContextSandbox(Gtk.StyleContext ctx) { + + Console.WriteLine($"{string.Join(",",ctx.ListClasses())}"); + } + + public static Gdk.Color ColorFor(this Gtk.StyleContext ctx, string postfix, Gtk.StateType state) { + var prefix = string.Empty; + // see: https://developer.gnome.org/gtk3/stable/gtk-migrating-GtkStyleContext-css.html + // examples: (see: gtk.css) selected_bg_color insensitive_bg_color base_color theme_text_color insensitive_base_color theme_unfocused_fg_color theme_unfocused_text_color theme_unfocused_bg_color + + switch (state) { + case StateType.Normal: + prefix = "theme_unfocused_"; + break; + case StateType.Active: + break; + case StateType.Prelight: + break; + case StateType.Selected: + prefix = "selected_"; + break; + case StateType.Insensitive: + prefix = "insensitive_"; + break; + case StateType.Inconsistent: + break; + case StateType.Focused: + break; + default: + throw new ArgumentOutOfRangeException(nameof(state), state, null); + } + if (ctx.LookupColor($"{prefix}{postfix}_color", out var col)) { + return col.ToGdkColor(); + } + + ctx.LookupColor("base_color", out col); + return col.ToGdkColor(); + } + + public static Gdk.Color Background(this Gtk.Style it, Gtk.StateType state) { + + return it.Context.ColorFor("bg", state); + } + + public static Gdk.Color Dark(this Gtk.Style it, Gtk.StateType state) + { + // TODO + return it.Foreground(state); + + } + + public static Gdk.Color Foreground(this Gtk.Style it, Gtk.StateType state) + { + return it.Context.ColorFor("fg", state); + + } + + public static Gdk.Color Base(this Gtk.Style it, Gtk.StateType state) + { + return it.Context.ColorFor("", state); + } + + public static void ModifyBase(this Gtk.Widget it, Gtk.StateType state, Gdk.Color color) { + // TODO + } + + + } +} \ No newline at end of file diff --git a/Xwt.Gtk/GtkSharpInterop/Library.cs b/Xwt.Gtk/GtkSharpInterop/Library.cs new file mode 100644 index 000000000..b02259f2d --- /dev/null +++ b/Xwt.Gtk/GtkSharpInterop/Library.cs @@ -0,0 +1,16 @@ + +enum Library +{ + GLib, + GObject, + Cairo, + Gio, + Atk, + Pango, + PangoCairo, + Gdk, + GdkPixbuf, + Gtk, + Fontconfig, + Webkit +} \ No newline at end of file diff --git a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRenderer.cs b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRenderer.cs index 22670f386..04c51aae9 100644 --- a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRenderer.cs +++ b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRenderer.cs @@ -152,7 +152,7 @@ protected override void OnRender (Cairo.Context cr, Gtk.Widget widget, Gdk.Recta }); Parent.EndDrawing (); } - + protected override void OnGetSize (Gtk.Widget widget, ref Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height) { Size size = new Size (); @@ -164,6 +164,7 @@ protected override void OnGetSize (Gtk.Widget widget, ref Gdk.Rectangle cell_are height = (int) size.Height; x_offset = y_offset = 0; } + } } diff --git a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererImage.cs b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererImage.cs index ec2628933..ac705c00c 100644 --- a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererImage.cs +++ b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererImage.cs @@ -86,7 +86,7 @@ protected override void OnRender (Cairo.Context cr, Gtk.Widget widget, Gdk.Recta pix.Draw (Context, cr, Util.GetScaleFactor (widget), cell_area.X + x_offset, cell_area.Y + y_offset, img); } - + protected override void OnGetSize (Gtk.Widget widget, ref Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height) { if (image.IsNull) { @@ -101,5 +101,6 @@ protected override void OnGetSize (Gtk.Widget widget, ref Gdk.Rectangle cell_are } else x_offset = y_offset = 0; } + } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/BoxBackendGtk3.cs b/Xwt.Gtk/Xwt.GtkBackend/BoxBackendGtk3.cs index ee9d62da9..19367d8b9 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/BoxBackendGtk3.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/BoxBackendGtk3.cs @@ -92,9 +92,9 @@ protected override void OnGetPreferredWidth (out int minimum_width, out int natu // dirty fix: do not constrain height on first allocation var force_height = SizeConstraint.Unconstrained; if (IsReallocating) - force_height = SizeConstraint.WithSize (Allocation.Width); + force_height = SizeConstraint.WithSize (Allocation.Height); var size = OnGetRequisition (SizeConstraint.Unconstrained, force_height); - if (size.Height < WidthRequest) + if (size.Width < WidthRequest) minimum_width = natural_width = WidthRequest; else minimum_width = natural_width = size.Width; @@ -112,7 +112,7 @@ protected override void OnGetPreferredHeightForWidth (int width, out int minimum protected override void OnGetPreferredWidthForHeight (int height, out int minimum_width, out int natural_width) { var size = OnGetRequisition (SizeConstraint.Unconstrained, SizeConstraint.WithSize (height)); - if (size.Height < WidthRequest) + if (size.Width < WidthRequest) minimum_width = natural_width = WidthRequest; else minimum_width = natural_width = size.Width; diff --git a/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs index ede03201a..f675fe91f 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs @@ -316,7 +316,11 @@ protected override void Dispose (bool disposing) if (disposing && labelWidget != null) { labelWidget.Realized -= HandleStyleUpdate; labelWidget.StyleSet -= HandleStyleUpdate; +#if XWT_GTK3 + labelWidget.Dispose (); +#else labelWidget.Destroy (); +#endif labelWidget = null; } base.Dispose (disposing); diff --git a/Xwt.Gtk/Xwt.GtkBackend/DialogBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/DialogBackend.cs index e19dfde87..5f64efee0 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/DialogBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/DialogBackend.cs @@ -72,7 +72,11 @@ public void SetButtons (IEnumerable newButtons) if (buttons != null) { foreach (var b in buttons) { ((Gtk.Container)b.Parent).Remove (b); +#if XWT_GTK3 + b.Dispose (); +#else b.Destroy (); +#endif } } dialogButtons = newButtons diff --git a/Xwt.Gtk/Xwt.GtkBackend/FileDialogBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/FileDialogBackend.cs index 3a707b9f1..3e0ca94ca 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/FileDialogBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/FileDialogBackend.cs @@ -137,7 +137,11 @@ public bool Run (IWindowFrameBackend parent) public void Cleanup () { +#if XWT_GTK3 + dialog.Dispose (); +#else dialog.Destroy (); +#endif } protected Gtk.FileChooserDialog Dialog { diff --git a/Xwt.Gtk/Xwt.GtkBackend/FontBackendHandler.cs b/Xwt.Gtk/Xwt.GtkBackend/FontBackendHandler.cs index 378586bdc..110ec143e 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/FontBackendHandler.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/FontBackendHandler.cs @@ -30,7 +30,8 @@ using System.Globalization; using System.Collections.Generic; using System.Linq; - +using static Xwt.Interop.DllImportPangoCairo; +using static Xwt.Interop.DllImportFontConfig; namespace Xwt.GtkBackend { public class GtkFontBackendHandler: FontBackendHandler @@ -42,10 +43,17 @@ static GtkFontBackendHandler () systemContext = Gdk.PangoHelper.ContextGet (); } + Gtk.Style _style; + public override object GetSystemDefaultFont () { +#if XWT_GTKSHARP3 + _style = _style ?? (_style = Gtk.Rc.GetStyle (new Gtk.Label ())); + return _style?.FontDesc; +#else var style = Gtk.Rc.GetStyleByPaths (Gtk.Settings.Default, null, null, Gtk.Label.GType); return style.FontDescription; +#endif } public override IEnumerable GetInstalledFonts () @@ -77,12 +85,6 @@ public override object Create (string fontName, double size, FontStyle style, Fo return result; } - [System.Runtime.InteropServices.DllImport (GtkInterop.LIBFONTCONFIG)] - static extern bool FcConfigAppFontAddFile (System.IntPtr config, string fontPath); - - [System.Runtime.InteropServices.DllImport (GtkInterop.LIBPANGOCAIRO)] - static extern void pango_cairo_font_map_set_default (System.IntPtr fontmap); - public override bool RegisterFontFromFile (string fontPath) { var result = AddFontFile (fontPath); diff --git a/Xwt.Gtk/Xwt.GtkBackend/FontSelectorBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/FontSelectorBackend.cs index 5d0213907..d59db9eab 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/FontSelectorBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/FontSelectorBackend.cs @@ -26,6 +26,8 @@ using System; using Xwt.Backends; using System.Runtime.InteropServices; +using Xwt.Interop; +using static Xwt.Interop.DllImportGtk; namespace Xwt.GtkBackend { @@ -115,10 +117,6 @@ void HandleExposeEvent (object o, EventArgs args) FontChanged (this, new EventArgs ()); } } - - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - private static extern IntPtr gtk_font_selection_get_preview_entry (IntPtr raw); - Gtk.Entry GetPreviewEntry () { IntPtr intPtr = gtk_font_selection_get_preview_entry (base.Handle); diff --git a/Xwt.Gtk/Xwt.GtkBackend/FrameBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/FrameBackend.cs index 9821a6767..385dfc295 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/FrameBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/FrameBackend.cs @@ -91,7 +91,11 @@ public void SetFrameType (FrameType type) } Widget = box; if (paddingAlign != null) { +#if XWT_GTK3 + paddingAlign.Dispose (); +#else paddingAlign.Destroy (); +#endif paddingAlign = null; } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/Gtk3Extensions.cs b/Xwt.Gtk/Xwt.GtkBackend/Gtk3Extensions.cs index 42e47d637..c6708a46c 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/Gtk3Extensions.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/Gtk3Extensions.cs @@ -27,6 +27,8 @@ using Xwt.Backends; using System; using System.Runtime.InteropServices; +using static Xwt.Interop.DllImportGtk; +using static Xwt.Interop.DllImportGdk; using Gtk; namespace Xwt.GtkBackend @@ -58,9 +60,6 @@ public static void SetStateNormal(this Gtk.Widget widget) widget.SetStateFlags(Gtk.StateFlags.Normal, true); } - [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gdk_pixbuf_get_from_surface (IntPtr surface, int src_x, int src_y, int width, int height); - public static Gdk.Pixbuf GetFromSurface (Cairo.Surface surface, int src_x, int src_y, int width, int height) { IntPtr raw_ret = gdk_pixbuf_get_from_surface (surface.Handle, src_x, src_y, width, height); @@ -72,9 +71,6 @@ public static Gdk.Pixbuf GetFromSurface (Cairo.Surface surface, int src_x, int s return ret; } - [DllImport (GtkInterop.LIBGDK)] - static extern IntPtr gdk_pixbuf_get_from_window(IntPtr win, int src_x, int src_y, int width, int height); - public static Gdk.Pixbuf ToPixbuf (this Gdk.Window window, int src_x, int src_y, int width, int height) { IntPtr raw_ret = gdk_pixbuf_get_from_window(window.Handle, src_x, src_y, width, height); diff --git a/Xwt.Gtk/Xwt.GtkBackend/Gtk3FontChooserDialog.cs b/Xwt.Gtk/Xwt.GtkBackend/Gtk3FontChooserDialog.cs index 9e5daef4a..bd82c3543 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/Gtk3FontChooserDialog.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/Gtk3FontChooserDialog.cs @@ -25,18 +25,13 @@ // THE SOFTWARE. using System; using System.Runtime.InteropServices; +using static Xwt.Interop.DllImportGtk; namespace Xwt.GtkBackend { public class Gtk3FontChooserDialog : Gtk.Dialog { - - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gtk_font_chooser_dialog_new(IntPtr title, IntPtr parent); - - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gtk_font_chooser_widget_get_type(); - + public Gtk3FontChooserDialog (IntPtr raw) : base(raw) { } diff --git a/Xwt.Gtk/Xwt.GtkBackend/Gtk3ViewPort.cs b/Xwt.Gtk/Xwt.GtkBackend/Gtk3ViewPort.cs index 93b47e7ed..d4f4b4c1e 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/Gtk3ViewPort.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/Gtk3ViewPort.cs @@ -82,6 +82,14 @@ protected virtual void OnSetScrollAdjustments (Gtk.Adjustment hadj, Gtk.Adjustme protected virtual void OnSizeRequested (ref Gtk.Requisition requisition) { } + +#if XWT_GTKSHARP3 + + bool Gtk.IScrollableImplementor.GetBorder (out Gtk.Border border) { + border = default; + return true; + } +#endif } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/GtkAlertDialog.cs b/Xwt.Gtk/Xwt.GtkBackend/GtkAlertDialog.cs index 195e2bdbc..3e0c01993 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/GtkAlertDialog.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/GtkAlertDialog.cs @@ -151,7 +151,11 @@ void ButtonClicked (object sender, EventArgs e) break; } } +#if XWT_GTK3 + this.Dispose (); +#else this.Destroy (); +#endif } } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/GtkDesktopBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/GtkDesktopBackend.cs index 65bca951c..251a89994 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/GtkDesktopBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/GtkDesktopBackend.cs @@ -35,12 +35,14 @@ public class GtkDesktopBackend: DesktopBackend public GtkDesktopBackend () { + Gdk.Screen.Default.SizeChanged += delegate { OnScreensChanged (); }; Gdk.Screen.Default.CompositedChanged += delegate { OnScreensChanged (); }; + } public override Point GetMouseLocation () diff --git a/Xwt.Gtk/Xwt.GtkBackend/GtkInterop.cs b/Xwt.Gtk/Xwt.GtkBackend/GtkInterop.cs index 8d2f9bd57..e76b4e797 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/GtkInterop.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/GtkInterop.cs @@ -29,30 +29,31 @@ using System.Runtime.InteropServices; using System.Collections.Generic; using Xwt.Drawing; +using static Xwt.Interop.DllImportPango; namespace Xwt.GtkBackend { public static class GtkInterop { - internal const string LIBATK = "libatk-1.0-0.dll"; - internal const string LIBGLIB = "libglib-2.0-0.dll"; - internal const string LIBGOBJECT = "libgobject-2.0-0.dll"; - internal const string LIBPANGO = "libpango-1.0-0.dll"; - internal const string LIBPANGOCAIRO = "libpangocairo-1.0-0.dll"; - internal const string LIBFONTCONFIG = "fontconfig"; + public const string LIBATK = "libatk-1.0-0.dll"; + public const string LIBGLIB = "libglib-2.0-0.dll"; + public const string LIBGOBJECT = "libgobject-2.0-0.dll"; + public const string LIBPANGO = "libpango-1.0-0.dll"; + public const string LIBPANGOCAIRO = "libpangocairo-1.0-0.dll"; + public const string LIBFONTCONFIG = "fontconfig"; #if XWT_GTK3 - internal const string LIBGTK = "libgtk-3-0.dll"; - internal const string LIBGDK = "libgdk-3-0.dll"; - internal const string LIBGTKGLUE = "gtksharpglue-3"; - internal const string LIBGLIBGLUE = "glibsharpglue-3"; - internal const string LIBWEBKIT = "libwebkitgtk-3.0-0.dll"; + public const string LIBGTK = "libgtk-3-0.dll"; + public const string LIBGDK = "libgdk-3-0.dll"; + public const string LIBGTKGLUE = "gtksharpglue-3"; + public const string LIBGLIBGLUE = "glibsharpglue-3"; + public const string LIBWEBKIT = "libwebkitgtk-3.0-0.dll"; #else - internal const string LIBGTK = "libgtk-win32-2.0-0.dll"; - internal const string LIBGDK = "libgdk-win32-2.0-0.dll"; - internal const string LIBGTKGLUE = "gtksharpglue-2"; - internal const string LIBGLIBGLUE = "glibsharpglue-2"; - internal const string LIBWEBKIT = "libwebkitgtk-1.0-0.dll"; + public const string LIBGTK = "libgtk-win32-2.0-0.dll"; + public const string LIBGDK = "libgdk-win32-2.0-0.dll"; + public const string LIBGTKGLUE = "gtksharpglue-2"; + public const string LIBGLIBGLUE = "glibsharpglue-2"; + public const string LIBWEBKIT = "libwebkitgtk-1.0-0.dll"; #endif } @@ -175,48 +176,6 @@ void Add (IntPtr attribute, uint start, uint end) pango_attr_list_insert (list, attribute); } - [DllImport (GtkInterop.LIBPANGO, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr pango_attr_size_new_absolute (int size); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_style_new (Pango.Style style); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_stretch_new (Pango.Stretch stretch); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_weight_new (Pango.Weight weight); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_foreground_new (ushort red, ushort green, ushort blue); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_background_new (ushort red, ushort green, ushort blue); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_underline_new (Pango.Underline underline); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_strikethrough_new (bool strikethrough); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_font_desc_new (IntPtr desc); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern IntPtr pango_attr_list_new (); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern void pango_attr_list_unref (IntPtr list); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern void pango_attr_list_insert (IntPtr list, IntPtr attr); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern void pango_layout_set_attributes (IntPtr layout, IntPtr attrList); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention=CallingConvention.Cdecl)] - static extern void pango_attr_list_splice (IntPtr attr_list, IntPtr other, Int32 pos, Int32 len); - public void Splice (Pango.AttrList attrs, int pos, int len) { pango_attr_list_splice (list, attrs.Handle, pos, len); diff --git a/Xwt.Gtk/Xwt.GtkBackend/GtkWebKitMini.cs b/Xwt.Gtk/Xwt.GtkBackend/GtkWebKitMini.cs index 846d90fcd..446f50a8f 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/GtkWebKitMini.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/GtkWebKitMini.cs @@ -25,6 +25,7 @@ // THE SOFTWARE. using System; using System.Runtime.InteropServices; +using static Xwt.Interop.DllImportWebkit; namespace Xwt.GtkBackend.WebKit { @@ -43,6 +44,14 @@ public WebView () : base (IntPtr.Zero) Raw = webkit_web_view_new(); } +#if XWT_GTKSHARP3 + + bool Gtk.IScrollable.GetBorder (out Gtk.Border border) { + border = default; + return true; + } +#endif + public void LoadUri(string uri) { IntPtr native_uri = GLib.Marshaller.StringToPtrGStrdup (uri); webkit_web_view_load_uri(Handle, native_uri); @@ -278,51 +287,7 @@ internal static void Initialize () return ret; } } - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_web_view_new(); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_web_view_get_type(); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_load_uri(IntPtr raw, IntPtr uri); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_web_view_get_uri(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern bool webkit_web_view_get_full_content_zoom(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_set_full_content_zoom(IntPtr raw, bool full_content_zoom); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_stop_loading(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_reload(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern bool webkit_web_view_can_go_back(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_go_back(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern bool webkit_web_view_can_go_forward(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_go_forward(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_web_view_load_string (IntPtr raw, IntPtr content, IntPtr mime_type, IntPtr encoding, IntPtr base_uri); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_web_view_get_title(IntPtr raw); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern double webkit_web_view_get_progress(IntPtr raw); + } @@ -364,17 +329,7 @@ static NetworkRequest () WebView.Initialize (); } - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_network_request_new(IntPtr uri); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_network_request_get_type(); - - [DllImport (GtkInterop.LIBWEBKIT)] - static extern IntPtr webkit_network_request_get_uri(IntPtr raw); - [DllImport (GtkInterop.LIBWEBKIT)] - static extern void webkit_network_request_set_uri(IntPtr raw, IntPtr uri); } public enum NavigationResponse { diff --git a/Xwt.Gtk/Xwt.GtkBackend/GtkWorkarounds.cs b/Xwt.Gtk/Xwt.GtkBackend/GtkWorkarounds.cs index 9247d858e..57edf1f51 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/GtkWorkarounds.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/GtkWorkarounds.cs @@ -30,11 +30,14 @@ using System.Collections.Generic; using System.Reflection; using System.Reflection.Emit; - +using System.Text.RegularExpressions; +using Gtk; +using static Xwt.Interop.DllImportGtk; +using static Xwt.Interop.DllImportGdk; +using static Xwt.Interop.DllImportPango; +using static Xwt.Interop.DllImportGObj; #if XWT_GTK3 -using GtkTreeModel = Gtk.ITreeModel; -#else -using GtkTreeModel = Gtk.TreeModel; +using TreeModel = Gtk.ITreeModel; #endif namespace Xwt.GtkBackend @@ -42,40 +45,40 @@ namespace Xwt.GtkBackend public static class GtkWorkarounds { const string LIBOBJC ="/usr/lib/libobjc.dylib"; - + [DllImport (LIBOBJC, EntryPoint = "sel_registerName")] static extern IntPtr sel_registerName (string selector); - + [DllImport (LIBOBJC, EntryPoint = "objc_getClass")] static extern IntPtr objc_getClass (string klass); - + [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern IntPtr objc_msgSend_IntPtr (IntPtr klass, IntPtr selector); - + [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern void objc_msgSend_void_bool (IntPtr klass, IntPtr selector, bool arg); - + [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern bool objc_msgSend_bool (IntPtr klass, IntPtr selector); - + [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern int objc_msgSend_NSInt32_NSInt32 (IntPtr klass, IntPtr selector, int arg); [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern long objc_msgSend_NSInt64_NSInt64 (IntPtr klass, IntPtr selector, long arg); - + [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern uint objc_msgSend_NSUInt32 (IntPtr klass, IntPtr selector); [DllImport (LIBOBJC, EntryPoint = "objc_msgSend")] static extern ulong objc_msgSend_NSUInt64 (IntPtr klass, IntPtr selector); - + [DllImport (LIBOBJC, EntryPoint = "objc_msgSend_stret")] static extern void objc_msgSend_CGRect32 (out CGRect32 rect, IntPtr klass, IntPtr selector); [DllImport (LIBOBJC, EntryPoint = "objc_msgSend_stret")] static extern void objc_msgSend_CGRect64 (out CGRect64 rect, IntPtr klass, IntPtr selector); - + [DllImport (GtkInterop.LIBGTK)] static extern IntPtr gdk_quartz_window_get_nswindow (IntPtr window); @@ -103,21 +106,21 @@ public CGRect64 (CGRect32 rect32) static IntPtr sharedApp; static IntPtr cls_NSEvent; static IntPtr sel_modifierFlags; - + const int NSCriticalRequest = 0; const int NSInformationalRequest = 10; - + static System.Reflection.MethodInfo glibObjectGetProp, glibObjectSetProp; - + public static int GtkMajorVersion = 2, GtkMinorVersion = 12, GtkMicroVersion = 0; static bool oldMacKeyHacks = false; - + static GtkWorkarounds () { if (Platform.IsMac) { InitMac (); } - + var flags = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic; glibObjectSetProp = typeof (GLib.Object).GetMethod ("SetProperty", flags); glibObjectGetProp = typeof (GLib.Object).GetMethod ("GetProperty", flags); @@ -134,7 +137,7 @@ static GtkWorkarounds () } } #endif - + for (int i = 1; i < 20; i++) { if (Gtk.Global.CheckVersion (2, (uint)GtkMinorVersion, (uint)i) == null) { GtkMicroVersion = i; @@ -142,16 +145,21 @@ static GtkWorkarounds () break; } } - + //opt into the fixes on GTK+ >= 2.24.8 if (Platform.IsMac) { try { gdk_quartz_set_fix_modifiers (true); - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif oldMacKeyHacks = true; } } - + keymap.KeysChanged += delegate { mappedKeys.Clear (); }; @@ -173,7 +181,7 @@ static void InitMac () sel_invalidateShadow = sel_registerName ("invalidateShadow"); sharedApp = objc_msgSend_IntPtr (objc_getClass ("NSApplication"), sel_registerName ("sharedApplication")); } - + static Gdk.Rectangle MacGetUsableMonitorGeometry (Gdk.Screen screen, int monitor) { IntPtr array = objc_msgSend_IntPtr (cls_NSScreen, sel_screens); @@ -182,10 +190,10 @@ static Gdk.Rectangle MacGetUsableMonitorGeometry (Gdk.Screen screen, int monitor Gdk.Rectangle xgeometry = screen.GetMonitorGeometry (0); IntPtr scrn; int i = 0; - + while ((scrn = objc_msgSend_IntPtr (iter, sel_nextObject)) != IntPtr.Zero && i < monitor) i++; - + if (scrn == IntPtr.Zero) return screen.GetMonitorGeometry (monitor); @@ -201,12 +209,12 @@ static Gdk.Rectangle MacGetUsableMonitorGeometry (Gdk.Screen screen, int monitor visible = new CGRect64 (visible32); frame = new CGRect64 (frame32); } - + // Note: Frame and VisibleFrame rectangles are relative to monitor 0, but we need absolute // coordinates. visible.X += xgeometry.X; frame.X += xgeometry.X; - + // VisibleFrame.Y is the height of the Dock if it is at the bottom of the screen, so in order // to get the menu height, we just figure out the difference between the visibleFrame height // and the actual frame height, then subtract the Dock height. @@ -214,25 +222,25 @@ static Gdk.Rectangle MacGetUsableMonitorGeometry (Gdk.Screen screen, int monitor // We need to swap the Y offset with the menu height because our callers expect the Y offset // to be from the top of the screen, not from the bottom of the screen. double x, y, width, height; - + if (visible.Height < frame.Height) { double dockHeight = visible.Y - frame.Y; double menubarHeight = (frame.Height - visible.Height) - dockHeight; - + height = frame.Height - menubarHeight - dockHeight; y = ygeometry.Y + menubarHeight; } else { height = frame.Height; y = ygeometry.Y; } - + // Takes care of the possibility of the Dock being positioned on the left or right edge of the screen. width = System.Math.Min (visible.Width, frame.Width); x = System.Math.Max (visible.X, frame.X); - + return new Gdk.Rectangle ((int) x, (int) y, (int) width, (int) height); } - + static void MacRequestAttention (bool critical) { int kind = critical? NSCriticalRequest : NSInformationalRequest; @@ -242,7 +250,7 @@ static void MacRequestAttention (bool critical) objc_msgSend_NSInt32_NSInt32 (sharedApp, sel_requestUserAttention, kind); } } - + public static void GrabDesktopFocus () { objc_msgSend_void_bool (sharedApp, sel_activateIgnoringOtherApps, true); @@ -318,7 +326,7 @@ static Gdk.Rectangle WindowsGetUsableMonitorGeometry (Gdk.Screen screen, int mon return new Gdk.Rectangle (x, y, width, height); } - + public static Gdk.Rectangle GetUsableMonitorGeometry (this Gdk.Screen screen, int monitor) { if (Platform.IsWindows) @@ -326,49 +334,49 @@ public static Gdk.Rectangle GetUsableMonitorGeometry (this Gdk.Screen screen, in if (Platform.IsMac) return MacGetUsableMonitorGeometry (screen, monitor); - + return screen.GetMonitorGeometry (monitor); } - + public static int RunDialogWithNotification (Gtk.Dialog dialog) { if (Platform.IsMac) MacRequestAttention (dialog.Modal); - + return dialog.Run (); } - + public static void PresentWindowWithNotification (this Gtk.Window window) { window.Present (); - + if (Platform.IsMac) { var dialog = window as Gtk.Dialog; MacRequestAttention (dialog == null? false : dialog.Modal); } } - + public static GLib.Value GetProperty (this GLib.Object obj, string name) { return (GLib.Value) glibObjectGetProp.Invoke (obj, new object[] { name }); } - + public static void SetProperty (this GLib.Object obj, string name, GLib.Value value) { glibObjectSetProp.Invoke (obj, new object[] { name, value }); } - + public static bool TriggersContextMenu (this Gdk.EventButton evt) { return evt.Type == Gdk.EventType.ButtonPress && IsContextMenuButton (evt); } - + public static bool IsContextMenuButton (this Gdk.EventButton evt) { if (evt.Button == 3 && (evt.State & (Gdk.ModifierType.Button1Mask | Gdk.ModifierType.Button2Mask)) == 0) return true; - + if (Platform.IsMac) { if (!oldMacKeyHacks && evt.Button == 1 && @@ -378,7 +386,7 @@ public static bool IsContextMenuButton (this Gdk.EventButton evt) return true; } } - + return false; } @@ -408,7 +416,7 @@ public static Gdk.ModifierType GetCurrentKeyModifiers () return mtype; } } - + public static void GetPageScrollPixelDeltas (this Gdk.EventScroll evt, double pageSizeX, double pageSizeY, out double deltaX, out double deltaY) { @@ -428,29 +436,32 @@ public static void GetPageScrollPixelDeltas (this Gdk.EventScroll evt, double pa } } } - + public static void AddValueClamped (this Gtk.Adjustment adj, double value) { adj.Value = System.Math.Max (adj.Lower, System.Math.Min (adj.Value + value, adj.Upper - adj.PageSize)); } - - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - extern static bool gdk_event_get_scroll_deltas (IntPtr eventScroll, out double deltaX, out double deltaY); + static bool scrollDeltasNotSupported; - + public static bool GetEventScrollDeltas (Gdk.EventScroll evt, out double deltaX, out double deltaY) { if (!scrollDeltasNotSupported) { try { - return gdk_event_get_scroll_deltas (evt.Handle, out deltaX, out deltaY); - } catch (EntryPointNotFoundException) { + return gdk_event_get_scroll_deltas(evt.Handle, out deltaX, out deltaY); + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif scrollDeltasNotSupported = true; } } deltaX = deltaY = 0; return false; } - + /// Shows a context menu. /// The menu. /// The parent widget. @@ -483,41 +494,41 @@ public static void ShowContextMenu (Gtk.Menu menu, Gtk.Widget parent, Gdk.EventB Gtk.Requisition request = m.SizeRequest (); var screen = parent.Screen; Gdk.Rectangle geometry = GetUsableMonitorGeometry (screen, screen.GetMonitorAtPoint (x, y)); - + //whether to push or flip menus that would extend offscreen //FIXME: this is the correct behaviour for mac, check other platforms bool flip_left = true; bool flip_up = false; - + if (x + request.Width > geometry.X + geometry.Width) { if (flip_left) { x -= request.Width; } else { x = geometry.X + geometry.Width - request.Width; } - + if (x < geometry.Left) x = geometry.Left; } - + if (y + request.Height > geometry.Y + geometry.Height) { if (flip_up) { y -= request.Height; } else { y = geometry.Y + geometry.Height - request.Height; } - + if (y < geometry.Top) y = geometry.Top; } - + pushIn = false; }; } - + uint time; uint button; - + if (evt == null) { time = Gtk.Global.CurrentEventTime; button = 0; @@ -525,44 +536,36 @@ public static void ShowContextMenu (Gtk.Menu menu, Gtk.Widget parent, Gdk.EventB time = evt.Time; button = evt.Button; } - + //HACK: work around GTK menu issues on mac when passing button to menu.Popup //some menus appear and immediately hide, and submenus don't activate if (Platform.IsMac) { button = 0; } - + menu.Popup (null, null, posFunc, button, time); } - + public static void ShowContextMenu (Gtk.Menu menu, Gtk.Widget parent, Gdk.EventButton evt) { ShowContextMenu (menu, parent, evt, Gdk.Rectangle.Zero); } - + public static void ShowContextMenu (Gtk.Menu menu, Gtk.Widget parent, Gdk.Rectangle caret) { ShowContextMenu (menu, parent, null, caret); } - + struct MappedKeys { public Gdk.Key Key; public Gdk.ModifierType State; public KeyboardShortcut[] Shortcuts; } - - //introduced in GTK 2.20 - [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] - extern static void gdk_keymap_add_virtual_modifiers (IntPtr keymap, ref Gdk.ModifierType state); - - //Custom patch in Mono Mac w/GTK+ 2.24.8+ - [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] - extern static void gdk_quartz_set_fix_modifiers (bool fix); - + static Gdk.Keymap keymap = Gdk.Keymap.Default; static Dictionary mappedKeys = new Dictionary (); - + /// Map raw GTK key input to work around platform bugs and decompose accelerator keys /// The raw key event /// The composed key @@ -576,27 +579,27 @@ public static void MapKeys (Gdk.EventKey evt, out Gdk.Key key, out Gdk.ModifierT unchecked { id = (((ulong)(uint)evt.State) | (((ulong)evt.HardwareKeycode) << 32) | (((ulong)evt.Group) << 48)); } - + MappedKeys mapped; if (!mappedKeys.TryGetValue (id, out mapped)) mappedKeys[id] = mapped = MapKeys (evt); - + shortcuts = mapped.Shortcuts; state = mapped.State; key = mapped.Key; } - + static MappedKeys MapKeys (Gdk.EventKey evt) { MappedKeys mapped; ushort keycode = evt.HardwareKeycode; Gdk.ModifierType modifier = evt.State; byte grp = evt.Group; - + if (GtkMajorVersion > 2 || GtkMajorVersion <= 2 && GtkMinorVersion >= 20) { gdk_keymap_add_virtual_modifiers (keymap.Handle, ref modifier); } - + //full key mapping uint keyval; int effectiveGroup, level; @@ -605,45 +608,45 @@ static MappedKeys MapKeys (Gdk.EventKey evt) out level, out consumedModifiers); mapped.Key = (Gdk.Key)keyval; mapped.State = FixMacModifiers (evt.State & ~consumedModifiers, grp); - + //decompose the key into accel combinations var accelList = new List (); - + const Gdk.ModifierType accelMods = Gdk.ModifierType.ShiftMask | Gdk.ModifierType.Mod1Mask | Gdk.ModifierType.ControlMask | Gdk.ModifierType.SuperMask |Gdk.ModifierType.MetaMask; - + //all accels ignore the lock key modifier &= ~Gdk.ModifierType.LockMask; - + //fully decomposed TranslateKeyboardState (evt.HardwareKeycode, Gdk.ModifierType.None, 0, out keyval, out effectiveGroup, out level, out consumedModifiers); accelList.Add (new KeyboardShortcut ((Gdk.Key)keyval, FixMacModifiers (modifier, grp) & accelMods)); - + //with shift composed if ((modifier & Gdk.ModifierType.ShiftMask) != 0) { keymap.TranslateKeyboardState (evt.HardwareKeycode, Gdk.ModifierType.ShiftMask, 0, out keyval, out effectiveGroup, out level, out consumedModifiers); - + // Prevent consumption of non-Shift modifiers (that we didn't even provide!) consumedModifiers &= Gdk.ModifierType.ShiftMask; - + var m = FixMacModifiers ((modifier & ~consumedModifiers), grp) & accelMods; AddIfNotDuplicate (accelList, new KeyboardShortcut ((Gdk.Key)keyval, m)); } - + //with group 1 composed if (grp == 1) { TranslateKeyboardState (evt.HardwareKeycode, modifier & ~Gdk.ModifierType.ShiftMask, 1, out keyval, out effectiveGroup, out level, out consumedModifiers); - + // Prevent consumption of Shift modifier (that we didn't even provide!) consumedModifiers &= ~Gdk.ModifierType.ShiftMask; - + var m = FixMacModifiers ((modifier & ~consumedModifiers), 0) & accelMods; AddIfNotDuplicate (accelList, new KeyboardShortcut ((Gdk.Key)keyval, m)); } - + //with group 1 and shift composed if (grp == 1 && (modifier & Gdk.ModifierType.ShiftMask) != 0) { TranslateKeyboardState (evt.HardwareKeycode, modifier, 1, @@ -651,16 +654,16 @@ static MappedKeys MapKeys (Gdk.EventKey evt) var m = FixMacModifiers ((modifier & ~consumedModifiers), 0) & accelMods; AddIfNotDuplicate (accelList, new KeyboardShortcut ((Gdk.Key)keyval, m)); } - + //and also allow the fully mapped key as an accel AddIfNotDuplicate (accelList, new KeyboardShortcut (mapped.Key, mapped.State & accelMods)); - + mapped.Shortcuts = accelList.ToArray (); return mapped; } - + // Workaround for bug "Bug 688247 - Ctrl+Alt key not work on windows7 with bootcamp on a Mac Book Pro" - // Ctrl+Alt should behave like right alt key - unfortunately TranslateKeyboardState doesn't handle it. + // Ctrl+Alt should behave like right alt key - unfortunately TranslateKeyboardState doesn't handle it. static void TranslateKeyboardState (uint hardware_keycode, Gdk.ModifierType state, int group, out uint keyval, out int effective_group, out int level, out Gdk.ModifierType consumed_modifiers) { @@ -676,16 +679,16 @@ static void TranslateKeyboardState (uint hardware_keycode, Gdk.ModifierType stat state &= ~Gdk.ModifierType.ShiftMask; } } - + keymap.TranslateKeyboardState (hardware_keycode, state, group, out keyval, out effective_group, out level, out consumed_modifiers); } - + static Gdk.ModifierType FixMacModifiers (Gdk.ModifierType mod, byte grp) { if (!oldMacKeyHacks) return mod; - + // Mac GTK+ maps the command key to the Mod1 modifier, which usually means alt/ // We map this instead to meta, because the Mac GTK+ has mapped the cmd key // to the meta key (yay inconsistency!). IMO super would have been saner. @@ -693,13 +696,13 @@ static Gdk.ModifierType FixMacModifiers (Gdk.ModifierType mod, byte grp) mod ^= Gdk.ModifierType.Mod1Mask; mod |= Gdk.ModifierType.MetaMask; } - + //some versions of GTK map opt as mod5, which converts to the virtual super modifier if ((mod & (Gdk.ModifierType.Mod5Mask | Gdk.ModifierType.SuperMask)) != 0) { mod ^= (Gdk.ModifierType.Mod5Mask | Gdk.ModifierType.SuperMask); mod |= Gdk.ModifierType.Mod1Mask; } - + // When opt modifier is active, we need to decompose this to make the command appear correct for Mac. // In addition, we can only inspect whether the opt/alt key is pressed by examining // the key's "group", because the Mac GTK+ treats opt as a group modifier and does @@ -707,10 +710,10 @@ static Gdk.ModifierType FixMacModifiers (Gdk.ModifierType mod, byte grp) if (grp == (byte) 1) { mod |= Gdk.ModifierType.Mod1Mask; } - + return mod; } - + static void AddIfNotDuplicate (List list, T item) where T : IEquatable { for (int i = 0; i < list.Count; i++) { @@ -719,7 +722,7 @@ static void AddIfNotDuplicate (List list, T item) where T : IEquatable } list.Add (item); } - + /// Map raw GTK key input to work around platform bugs and decompose accelerator keys /// The raw key event /// The decomposed accelerator key @@ -732,7 +735,7 @@ public static void MapRawKeys (Gdk.EventKey evt, out Gdk.Key key, out Gdk.Modifi Gdk.ModifierType mappedMod; KeyboardShortcut[] accels; MapKeys (evt, out mappedKey, out mappedMod, out accels); - + keyval = (uint) mappedKey; key = accels[0].Key; mod = accels[0].Modifier; @@ -740,7 +743,7 @@ public static void MapRawKeys (Gdk.EventKey evt, out Gdk.Key key, out Gdk.Modifi [System.Runtime.InteropServices.DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] static extern IntPtr gdk_win32_drawable_get_handle (IntPtr drawable); - + enum DwmWindowAttribute { NcRenderingEnabled = 1, @@ -757,11 +760,11 @@ enum DwmWindowAttribute ExcludedFromPeek, Last, } - + struct Win32Rect { public int Left, Top, Right, Bottom; - + public Win32Rect (int left, int top, int right, int bottom) { this.Left = left; @@ -770,16 +773,16 @@ public Win32Rect (int left, int top, int right, int bottom) this.Bottom = bottom; } } - + [DllImport ("dwmapi.dll")] static extern int DwmGetWindowAttribute (IntPtr hwnd, DwmWindowAttribute attribute, out Win32Rect value, int valueSize); - + [DllImport ("dwmapi.dll")] static extern int DwmIsCompositionEnabled (out bool enabled); - + [DllImport ("User32.dll")] static extern bool GetWindowRect (IntPtr hwnd, out Win32Rect rect); - + public static void SetImCursorLocation (Gtk.IMContext ctx, Gdk.Window clientWindow, Gdk.Rectangle cursor) { // work around GTK+ Bug 663096 - Windows IME position is wrong when Aero glass is enabled @@ -800,14 +803,14 @@ public static void SetImCursorLocation (Gtk.IMContext ctx, Gdk.Window clientWind } ctx.CursorLocation = cursor; } - + /// X coordinate of the pixels inside the right edge of the rectangle /// Workaround for inconsistency of Right property between GTK# versions public static int RightInside (this Gdk.Rectangle rect) { return rect.X + rect.Width - 1; } - + /// Y coordinate of the pixels inside the bottom edge of the rectangle /// Workaround for inconsistency of Bottom property between GTK# versions# public static int BottomInside (this Gdk.Rectangle rect) @@ -835,13 +838,16 @@ public static void UpdateNativeShadow (Gtk.Window window) objc_msgSend_IntPtr (ptr, sel_invalidateShadow); } +#if !XWT_GTK3 + [DllImport (GtkInterop.LIBGTKGLUE, CallingConvention = CallingConvention.Cdecl)] static extern void gtksharp_container_leak_fixed_marker (); static HashSet fixedContainerTypes; static Dictionary forallCallbacks; static bool containerLeakFixed; - + + // Works around BXC #3801 - Managed Container subclasses are incorrectly resurrected, then leak. // It does this by registering an alternative callback for gtksharp_container_override_forall, which // ignores callbacks if the wrapper no longer exists. This means that the objects no longer enter a @@ -897,9 +903,9 @@ static ForallDelegate CreateForallCallback (IntPtr gtype) new Type[] { typeof(IntPtr), typeof(bool), typeof(IntPtr), typeof(IntPtr) }, typeof(GtkWorkarounds).Module, true); - + var invokerType = typeof(Gtk.Container.CallbackInvoker); - + //this was based on compiling a similar method and disassembling it ILGenerator il = dm.GetILGenerator (); var IL_002b = il.DefineLabel (); @@ -939,18 +945,18 @@ static ForallDelegate CreateForallCallback (IntPtr gtype) il.Emit (OpCodes.Callvirt, tref.GetProperty ("Target").GetGetMethod ()); il.Emit (OpCodes.Isinst, typeof (Gtk.Container)); il.Emit (OpCodes.Stloc, loc_container); - + il.MarkLabel (IL_002b); il.Emit (OpCodes.Ldloc, loc_container); il.Emit (OpCodes.Brtrue, IL_003f); - + il.Emit (OpCodes.Ldarg_0); il.Emit (OpCodes.Ldarg_1); il.Emit (OpCodes.Ldarg_2); il.Emit (OpCodes.Ldarg_3); il.Emit (OpCodes.Call, typeof (Gtk.Container).GetMethod ("gtksharp_container_base_forall", BindingFlags.Static | BindingFlags.NonPublic)); il.Emit (OpCodes.Br, IL_0060); - + il.MarkLabel (IL_003f); il.Emit (OpCodes.Ldloca_S, 2); il.Emit (OpCodes.Ldarg_2); @@ -967,9 +973,9 @@ static ForallDelegate CreateForallCallback (IntPtr gtype) var forallMeth = typeof (Gtk.Container).GetMethod ("ForAll", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof (bool), typeof (Gtk.Callback) }, null); il.Emit (OpCodes.Callvirt, forallMeth); - + il.MarkLabel (IL_0060); - + il.BeginCatchBlock (typeof (Exception)); il.Emit (OpCodes.Stloc, loc_ex); il.Emit (OpCodes.Ldloc, loc_ex); @@ -977,19 +983,38 @@ static ForallDelegate CreateForallCallback (IntPtr gtype) il.Emit (OpCodes.Call, typeof (GLib.ExceptionManager).GetMethod ("RaiseUnhandledException")); il.Emit (OpCodes.Leave, label_return); il.EndExceptionBlock (); - + il.MarkLabel (label_return); il.Emit (OpCodes.Ret); - + return (ForallDelegate) dm.CreateDelegate (typeof (ForallDelegate)); } - + + [UnmanagedFunctionPointer (CallingConvention.Cdecl)] delegate void ForallDelegate (IntPtr container, bool include_internals, IntPtr cb, IntPtr data); - + [DllImport(GtkInterop.LIBGTKGLUE, CallingConvention = CallingConvention.Cdecl)] static extern void gtksharp_container_override_forall (IntPtr gtype, ForallDelegate cb); +#else + public static void FixContainerLeak (Gtk.Container c) { } +#endif + + const string urlRegexStr = @"(http|ftp)s?\:\/\/[\w\d\.,;_/\-~%@()+:?&^=#!]*[\w\d/]"; + static readonly Regex UrlRegex = new Regex (urlRegexStr, RegexOptions.Compiled | RegexOptions.ExplicitCapture); + + public static string MarkupLinks (string text) + { + if (GtkMinorVersion < 18) + return text; + return UrlRegex.Replace (text, MatchToUrl); + } + static string MatchToUrl (System.Text.RegularExpressions.Match m) + { + var s = m.ToString (); + return $"{s.Replace ("_", "__")}"; + } public static void SetLinkHandler (this Gtk.Label label, Action urlHandler) { if (GtkMajorVersion > 2 || GtkMajorVersion <= 2 && GtkMinorVersion >= 18) @@ -1026,12 +1051,6 @@ class ActivateLinkEventArgs : GLib.SignalArgs static bool canSetOverlayScrollbarPolicy = true; - [DllImport (GtkInterop.LIBGTK)] - static extern void gtk_scrolled_window_set_overlay_policy (IntPtr sw, Gtk.PolicyType hpolicy, Gtk.PolicyType vpolicy); - - [DllImport (GtkInterop.LIBGTK)] - static extern void gtk_scrolled_window_get_overlay_policy (IntPtr sw, out Gtk.PolicyType hpolicy, out Gtk.PolicyType vpolicy); - public static void SetOverlayScrollbarPolicy (Gtk.ScrolledWindow sw, Gtk.PolicyType hpolicy, Gtk.PolicyType vpolicy) { if (!canSetOverlayScrollbarPolicy) { @@ -1041,7 +1060,12 @@ public static void SetOverlayScrollbarPolicy (Gtk.ScrolledWindow sw, Gtk.PolicyT gtk_scrolled_window_set_overlay_policy (sw.Handle, hpolicy, vpolicy); return; } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif } } @@ -1055,63 +1079,47 @@ public static void GetOverlayScrollbarPolicy (Gtk.ScrolledWindow sw, out Gtk.Pol gtk_scrolled_window_get_overlay_policy (sw.Handle, out hpolicy, out vpolicy); return; } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif } hpolicy = vpolicy = 0; canSetOverlayScrollbarPolicy = false; } - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern bool gtk_tree_view_get_tooltip_context (IntPtr raw, ref int x, ref int y, bool keyboard_tip, out IntPtr model, out IntPtr path, IntPtr iter); - //the GTK# version of this has 'out' instead of 'ref', preventing passing the x,y values in public static bool GetTooltipContext (this Gtk.TreeView tree, ref int x, ref int y, bool keyboardTip, - out GtkTreeModel model, out Gtk.TreePath path, out Gtk.TreeIter iter) + out TreeModel model, out Gtk.TreePath path, out Gtk.TreeIter iter) { - IntPtr intPtr = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gtk.TreeIter))); + IntPtr intPtr = Marshal.AllocHGlobal (Marshal.SizeOf (typeof(Gtk.TreeIter))); IntPtr handle; IntPtr intPtr2; - bool result = gtk_tree_view_get_tooltip_context (tree.Handle, ref x, ref y, keyboardTip, out handle, out intPtr2, intPtr); + bool result = gtk_tree_view_get_tooltip_context (tree.Handle, ref x, ref y, keyboardTip, out handle, + out intPtr2, intPtr); model = Gtk.TreeModelAdapter.GetObject (handle, false); - path = intPtr2 == IntPtr.Zero ? null : ((Gtk.TreePath) GLib.Opaque.GetOpaque (intPtr2, typeof (Gtk.TreePath), false)); + path = intPtr2 == IntPtr.Zero ? + null : + ((Gtk.TreePath) GLib.Opaque.GetOpaque (intPtr2, typeof(Gtk.TreePath), false)); iter = Gtk.TreeIter.New (intPtr); Marshal.FreeHGlobal (intPtr); return result; } - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_image_menu_item_set_always_show_image (IntPtr menuitem, bool alwaysShow); - public static void ForceImageOnMenuItem (Gtk.ImageMenuItem mi) { if (GtkMajorVersion > 2 || GtkMajorVersion <= 2 && GtkMinorVersion >= 16) gtk_image_menu_item_set_always_show_image (mi.Handle, true); } - #if XWT_GTK3 +#if XWT_GTK3 // GTK3: Temp workaround, since GTK 3 has gtk_widget_get_scale_factor, but no gtk_icon_set_render_icon_scaled static bool supportsHiResIcons = false; - #else +#else static bool supportsHiResIcons = true; - #endif - - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_icon_source_set_scale (IntPtr source, double scale); - - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_icon_source_set_scale_wildcarded (IntPtr source, bool setting); - - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern double gtk_widget_get_scale_factor (IntPtr widget); - - [DllImport (GtkInterop.LIBGDK, CallingConvention = CallingConvention.Cdecl)] - static extern double gdk_screen_get_monitor_scale_factor (IntPtr widget, int monitor); - - [DllImport (GtkInterop.LIBGOBJECT, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr g_object_get_data (IntPtr source, string name); - - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gtk_icon_set_render_icon_scaled (IntPtr handle, IntPtr style, int direction, int state, int size, IntPtr widget, IntPtr intPtr, ref double scale); +#endif public static bool SetSourceScale (Gtk.IconSource source, double scale) { @@ -1122,7 +1130,12 @@ public static bool SetSourceScale (Gtk.IconSource source, double scale) gtk_icon_source_set_scale (source.Handle, scale); return true; } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif } supportsHiResIcons = false; return false; @@ -1137,7 +1150,12 @@ public static bool SetSourceScaleWildcarded (Gtk.IconSource source, bool setting gtk_icon_source_set_scale_wildcarded (source.Handle, setting); return true; } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif } supportsHiResIcons = false; return false; @@ -1155,7 +1173,12 @@ public static Gdk.Pixbuf Get2xVariant (Gdk.Pixbuf px) else return null; } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException){ +#else + catch (EntryPointNotFoundException) { +#endif } supportsHiResIcons = false; return null; @@ -1173,12 +1196,17 @@ public static double GetScaleFactor (Gtk.Widget w) try { return gtk_widget_get_scale_factor (w.Handle); } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif } supportsHiResIcons = false; return 1; } - + public static double GetScaleFactor (this Gdk.Screen screen, int monitor) { if (!supportsHiResIcons) @@ -1187,13 +1215,18 @@ public static double GetScaleFactor (this Gdk.Screen screen, int monitor) try { return gdk_screen_get_monitor_scale_factor (screen.Handle, monitor); } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException){ +#else + catch (EntryPointNotFoundException) { +#endif } supportsHiResIcons = false; return 1; } - + public static Gdk.Pixbuf RenderIcon (this Gtk.IconSet iconset, Gtk.Style style, Gtk.TextDirection direction, Gtk.StateType state, Gtk.IconSize size, Gtk.Widget widget, string detail, double scale) { if (scale == 1d) @@ -1209,7 +1242,12 @@ public static Gdk.Pixbuf RenderIcon (this Gtk.IconSet iconset, Gtk.Style style, GLib.Marshaller.Free (intPtr); return result; } catch (DllNotFoundException) { - } catch (EntryPointNotFoundException) { + } +#if XWT_GTKSHARP3 + catch (NullReferenceException) { +#else + catch (EntryPointNotFoundException) { +#endif } supportsHiResIcons = false; return null; @@ -1218,11 +1256,11 @@ public static Gdk.Pixbuf RenderIcon (this Gtk.IconSet iconset, Gtk.Style style, public static Gtk.Bin CreateComboBoxEntry() { - #if XWT_GTK3 +#if XWT_GTK3 return Gtk.ComboBoxText.NewWithEntry (); - #else +#else return new Gtk.ComboBoxEntry (); - #endif +#endif } @@ -1239,7 +1277,7 @@ public static Gtk.Bin CreateComboBoxEntry() /// the widget is a container) on top of their root window. /// In this case pointer events may come from child windows and contain /// wrong coordinates (relative to child window and not to the widget itself). - /// + /// /// CheckPointerCoordinates checks whether the events source window is not /// the widgets root window and adjusts the coordinates to relative /// to the widget and not to its child. @@ -1255,40 +1293,27 @@ public static Xwt.Point CheckPointerCoordinates (this Gtk.Widget widget, Gdk.Win return new Xwt.Point (x, y); } - - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gtk_message_dialog_get_message_area(IntPtr raw); - public static Gtk.Box GetMessageArea(this Gtk.MessageDialog dialog) { - #if XWT_GTK3 +#if XWT_GTK3 // according to Gtk docs MessageArea should always be a Gtk.Box, but we test this // to be on the safe side. var messageArea = dialog.MessageArea as Gtk.Box; return messageArea ?? dialog.ContentArea; - #else +#else if (GtkWorkarounds.GtkMajorVersion <= 2 && GtkWorkarounds.GtkMinorVersion < 22) // message area not present before 2.22 return dialog.VBox; IntPtr raw_ret = gtk_message_dialog_get_message_area(dialog.Handle); Gtk.Box ret = GLib.Object.GetObject(raw_ret) as Gtk.Box; return ret; - #endif +#endif } - - [DllImport(GtkInterop.LIBGOBJECT, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr g_signal_stop_emission_by_name(IntPtr raw, string name); - public static void StopSignal (this GLib.Object gobject, string signalid) { g_signal_stop_emission_by_name (gobject.Handle, signalid); } - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gtk_binding_set_find (string setName); - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_binding_entry_remove (IntPtr bindingSet, uint keyval, Gdk.ModifierType modifiers); - public static void RemoveKeyBindingFromClass (GLib.GType gtype, Gdk.Key key, Gdk.ModifierType modifiers) { var bindingSet = gtk_binding_set_find (gtype.ToString ()); @@ -1301,18 +1326,20 @@ public static IntPtr GetData (GLib.Object o, string name) return g_object_get_data (o.Handle, name); } - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_object_set_data (IntPtr raw, IntPtr key, IntPtr data); - public static void SetData (GLib.Object gtkobject, string key, T data) where T : struct { - IntPtr pkey = GLib.Marshaller.StringToPtrGStrdup (key); IntPtr pdata = Marshal.AllocHGlobal (Marshal.SizeOf (data)); Marshal.StructureToPtr (data, pdata, false); +#if XWT_GTKSHARP3 + g_object_set_data (gtkobject.Handle, key, pdata); + +#else + IntPtr pkey = GLib.Marshaller.StringToPtrGStrdup (key); gtk_object_set_data (gtkobject.Handle, pkey, pdata); - Marshal.FreeHGlobal (pdata); GLib.Marshaller.Free (pkey); - gtkobject.Data [key] = data; +#endif + Marshal.FreeHGlobal (pdata); + gtkobject.Data[key] = data; } public static void SetTransparentBgHint (this Gtk.Widget widget, bool enable) @@ -1334,12 +1361,6 @@ public static IntPtr GetGtkWindowNativeHandle (Gtk.Window window) return gdk_x11_drawable_get_xid (window.GdkWindow.Handle); } - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - private static extern bool gtk_selection_data_set_uris(IntPtr raw, IntPtr[] uris); - - [DllImport(GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - private static extern IntPtr gtk_selection_data_get_uris(IntPtr raw); - public static bool SetUris(this Gtk.SelectionData data, string[] uris) { return gtk_selection_data_set_uris(data.Handle, GLib.Marshaller.StringArrayToNullTermPointer(uris)); @@ -1400,22 +1421,22 @@ public static bool GetTagForAttributes (this Pango.AttrIterator iter, string nam using (var attr = iter.SafeGetCopy (Pango.AttrType.Foreground)) { if (attr != null) { - #if XWT_GTK3 +#if XWT_GTK3 tag.Foreground = ((Pango.AttrForeground)attr).Color.ToString(); - #else +#else tag.Foreground = ((Gdk.PangoAttrEmbossColor)attr).Color.ToString (); - #endif +#endif result = true; } } using (var attr = iter.SafeGetCopy (Pango.AttrType.Background)) { if (attr != null) { - #if XWT_GTK3 +#if XWT_GTK3 tag.Foreground = ((Pango.AttrBackground)attr).Color.ToString(); - #else +#else tag.Background = ((Gdk.PangoAttrEmbossColor)attr).Color.ToString (); - #endif +#endif result = true; } } @@ -1451,12 +1472,6 @@ public static bool GetTagForAttributes (this Pango.AttrIterator iter, string nam return result; } - [DllImport (GtkInterop.LIBPANGO, CallingConvention = CallingConvention.Cdecl)] - private static extern IntPtr pango_attribute_copy (IntPtr raw); - - [DllImport (GtkInterop.LIBPANGO, CallingConvention = CallingConvention.Cdecl)] - private static extern IntPtr pango_attr_iterator_get (IntPtr raw, int type); - public static Pango.Attribute SafeGetCopy (this Pango.AttrIterator iter, Pango.AttrType type) { try { @@ -1472,43 +1487,43 @@ public static Pango.Attribute SafeGetCopy (this Pango.AttrIterator iter, Pango.A } } } - + public struct KeyboardShortcut : IEquatable { public static readonly KeyboardShortcut Empty = new KeyboardShortcut ((Gdk.Key) 0, (Gdk.ModifierType) 0); - + Gdk.ModifierType modifier; Gdk.Key key; - + public KeyboardShortcut (Gdk.Key key, Gdk.ModifierType modifier) { this.modifier = modifier; this.key = key; } - + public Gdk.Key Key { get { return key; } } - + public Gdk.ModifierType Modifier { get { return modifier; } } - + public bool IsEmpty { get { return Key == (Gdk.Key) 0; } } - + public override bool Equals (object obj) { return obj is KeyboardShortcut && this.Equals ((KeyboardShortcut) obj); } - + public override int GetHashCode () { //FIXME: we're only using a few bits of mod and mostly the lower bits of key - distribute it better return (int) Key ^ (int) Modifier; } - + public bool Equals (KeyboardShortcut other) { return other.Key == Key && other.Modifier == Modifier; diff --git a/Xwt.Gtk/Xwt.GtkBackend/LabelBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/LabelBackend.cs index d4a3e42f0..298e46e91 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/LabelBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/LabelBackend.cs @@ -31,7 +31,7 @@ using System.Runtime.InteropServices; using System.Linq; using System.Collections.Generic; - +using static Xwt.Interop.DllImportGtk; namespace Xwt.GtkBackend { @@ -193,9 +193,6 @@ void HandleStyleUpdate (object sender, EventArgs e) } } - [DllImport (GtkInterop.LIBGTK, CallingConvention=CallingConvention.Cdecl)] - static extern void gtk_label_set_attributes (IntPtr label, IntPtr attrList); - public Xwt.Drawing.Color TextColor { get { return textColor.HasValue ? textColor.Value : Widget.Style.Foreground (Gtk.StateType.Normal).ToXwtValue (); diff --git a/Xwt.Gtk/Xwt.GtkBackend/MenuBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/MenuBackend.cs index f104f7ae0..e44436852 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/MenuBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/MenuBackend.cs @@ -75,7 +75,11 @@ public Gtk.MenuBar MenuBar { public virtual object Font { get { +#if XWT_GTKSHARP3 + return customFont ?? menu.Style.FontDesc; +#else return customFont ?? menu.Style.FontDescription; +#endif } set { customFont = (Pango.FontDescription) value; @@ -109,7 +113,11 @@ public void RemoveItem (IMenuItemBackend menuItem) { Gtk.MenuItem item = ((MenuItemBackend)menuItem).MenuItem; menu.Remove (item); +#if XWT_GTK3 + item.Dispose (); +#else item.Destroy (); +#endif } public void EnableEvent (object eventId) diff --git a/Xwt.Gtk/Xwt.GtkBackend/MenuButtonBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/MenuButtonBackend.cs index 1bcb214b4..61b95b39b 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/MenuButtonBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/MenuButtonBackend.cs @@ -108,13 +108,19 @@ void PositionFunc (Gtk.Menu mn, out int x, out int y, out bool push_in) Gdk.Rectangle rect = w.Allocation; x += rect.X; y += rect.Y + rect.Height; - + +#if XWT_GTKSHARP3 + if (y + mn.ChildRequisition.Height > w.Screen.Height) { + y -= mn.ChildRequisition.Height; + y -= rect.Height; + } +#else //if the menu would be off the bottom of the screen, "drop" it upwards if (y + mn.Requisition.Height > w.Screen.Height) { y -= mn.Requisition.Height; y -= rect.Height; } - +#endif //let GTK reposition the button if it still doesn't fit on the screen push_in = true; } diff --git a/Xwt.Gtk/Xwt.GtkBackend/MessageService.cs b/Xwt.Gtk/Xwt.GtkBackend/MessageService.cs index 6a5558a0d..e07cc9792 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/MessageService.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/MessageService.cs @@ -50,7 +50,11 @@ public static int ShowCustomDialog (Gtk.Dialog dialog, Gtk.Window parent) return RunCustomDialog (dialog, parent); } finally { if (dialog != null) +#if XWT_GTK3 + dialog.Dispose (); +#else dialog.Destroy (); +#endif } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/RichTextViewBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/RichTextViewBackend.cs index d2cbbc559..3be0c6656 100755 --- a/Xwt.Gtk/Xwt.GtkBackend/RichTextViewBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/RichTextViewBackend.cs @@ -547,7 +547,11 @@ Link GetLinkAtPos (double mousex, double mousey) { int x, y; WindowToBufferCoords (Gtk.TextWindowType.Text, (int)mousex, (int)mousey, out x, out y); +#if XWT_GTKSHARP3 + GetIterAtLocation(out var iter, x, y); +#else var iter = GetIterAtLocation (x, y); +#endif if (Buffer != null) { foreach (var l in Buffer.Links) { if (iter.HasTag (l.Key)) { diff --git a/Xwt.Gtk/Xwt.GtkBackend/SearchTextEntryBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/SearchTextEntryBackend.cs index 5b55f7a66..84af54dd2 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/SearchTextEntryBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/SearchTextEntryBackend.cs @@ -150,8 +150,12 @@ public bool RoundedShape { static SearchEntry () { - clearImage = Xwt.Drawing.Image.FromResource ("searchbox-clear-16.png"); - searchImage = Xwt.Drawing.Image.FromResource ("searchbox-search-16.png"); + try { + clearImage = Xwt.Drawing.Image.FromResource(typeof(SearchEntry),"searchbox-clear-16.png"); + searchImage = Xwt.Drawing.Image.FromResource(typeof(SearchEntry), "searchbox-search-16.png"); + } catch { + + } } public SearchEntry () @@ -404,7 +408,11 @@ private void OnClearButtonClicked (object o, EventArgs args) protected override void OnDestroyed () { if (menu != null) { +#if XWT_GTK3 + menu.Dispose(); +#else menu.Destroy (); +#endif menu = null; } base.OnDestroyed (); diff --git a/Xwt.Gtk/Xwt.GtkBackend/SelectColorDialogBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/SelectColorDialogBackend.cs index 6804299dd..1d6cb1c18 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/SelectColorDialogBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/SelectColorDialogBackend.cs @@ -70,7 +70,11 @@ public bool Run (IWindowFrameBackend parent, string title, bool supportsAlpha) public void Dispose () { +#if XWT_GTK3 + dlg.Dispose (); +#else dlg.Destroy (); +#endif } public Color Color { diff --git a/Xwt.Gtk/Xwt.GtkBackend/SpinnerBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/SpinnerBackend.cs index 43ddf403f..812f6a5eb 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/SpinnerBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/SpinnerBackend.cs @@ -7,6 +7,7 @@ // Copyright (c) 2012 Xamarin, Inc. using System; using System.Runtime.InteropServices; +using static Xwt.Interop.DllImportGtk; using Xwt.Backends; @@ -49,9 +50,6 @@ public class Spinner : Gtk.Widget protected Spinner(GLib.GType gtype) : base(gtype) {} #endif - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr gtk_spinner_new(); - public Spinner () : base(IntPtr.Zero) { if (GetType () != typeof(Spinner)) @@ -59,7 +57,7 @@ public Spinner () : base(IntPtr.Zero) this.CreateNativeObject (new string[0], new GLib.Value[0]); return; } - this.Raw = Spinner.gtk_spinner_new (); + this.Raw = gtk_spinner_new (); } [GLib.Property ("active")] @@ -77,25 +75,17 @@ public bool Active { } } - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_spinner_start(IntPtr raw); - public void Start() { gtk_spinner_start(Handle); } - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_spinner_stop(IntPtr raw); public void Stop () { gtk_spinner_stop(Handle); } - - [DllImport(GtkInterop.LIBGTK)] - static extern IntPtr gtk_spinner_get_type(); - + public static new GLib.GType GType { get { IntPtr raw_ret = gtk_spinner_get_type(); diff --git a/Xwt.Gtk/Xwt.GtkBackend/Util.cs b/Xwt.Gtk/Xwt.GtkBackend/Util.cs index f63aa2cc4..7ccc41d6e 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/Util.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/Util.cs @@ -31,7 +31,8 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; - +using static Xwt.Interop.DllImportGtk; + namespace Xwt.GtkBackend { public static class Util @@ -278,9 +279,6 @@ internal static void Dispose (this Cairo.Context cr) ((IDisposable)cr).Dispose (); } - [DllImport (GtkInterop.LIBGTK, CallingConvention = CallingConvention.Cdecl)] - static extern void gtk_label_set_attributes (IntPtr label, IntPtr attrList); - internal static TextIndexer ApplyFormattedText(this Gtk.Label label, FormattedText text) { TextIndexer indexer = null; diff --git a/Xwt.Gtk/Xwt.GtkBackend/WebViewBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/WebViewBackend.cs index e452af000..c45eb671a 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/WebViewBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/WebViewBackend.cs @@ -23,13 +23,20 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. + using System; using Xwt.Backends; using System.Runtime.InteropServices; + +#if !XWT_GTKSHARP3 using Xwt.GtkBackend.WebKit; +#else +using WebKit; +#endif + +namespace Xwt.GtkBackend { -namespace Xwt.GtkBackend -{ +#if !XWT_GTKSHARP3 public class WebViewBackend : WidgetBackend, IWebViewBackend { WebKit.WebView view; @@ -185,5 +192,178 @@ void HandleContextMenuRequest (object sender, ContextMenuArgs e) e.RetVal = !ContextMenuEnabled; } } -} +#else + public class WebViewBackend : WidgetBackend, IWebViewBackend { + + global::WebKit.WebView view; + + public WebViewBackend () { } + + public override void Initialize () { + NeedsEventBox = false; + base.Initialize (); + + view = new global::WebKit.WebView (); + view.ContextMenu += HandleContextMenuRequest; + Widget = view; + Widget.Show (); + } + + public string Url { + get { return view.Uri; } + set { + view.LoadUri (value); + } + } + + public string Title { + get { + return view.Title; + } + } + + public double LoadProgress { + get { + return view.EstimatedLoadProgress; + } + } + + public bool CanGoBack { + get { + return view.CanGoBack (); + } + } + + public bool CanGoForward { + get { + return view.CanGoForward (); + } + } + + public bool ContextMenuEnabled { get; set; } + + public bool DrawsBackground { + get { + // return !view.Transparent; + return false; + } + set { + // view.Transparent = !value; + } + } + + public bool ScrollBarsEnabled { + get { + return view.WindowProperties.ScrollbarsVisible; + } + set { + // view.WindowProperties.; + } + } + + public string CustomCss { get; set; } + + public void GoBack () { + view.GoBack (); + } + + public void GoForward () { + view.GoForward (); + } + + public void Reload () { + view.Reload (); + } + + public void StopLoading () { + view.StopLoading (); + } + + public void LoadHtml (string content, string base_uri) { + view.LoadHtml (content, base_uri); + } + + protected new IWebViewEventSink EventSink { + get { return (IWebViewEventSink)base.EventSink; } + } + + public override void EnableEvent (object eventId) { + base.EnableEvent (eventId); + + if (eventId is WebViewEvent) { + switch ((WebViewEvent)eventId) { + case WebViewEvent.NavigateToUrl: + view.ResourceLoadStarted += HandleNavigationRequested; + break; + case WebViewEvent.Loading: + view.LoadChanged += HandleLoadStarted; + + break; + case WebViewEvent.Loaded: + view.LoadChanged += HandleLoadFinished; + + break; + case WebViewEvent.TitleChanged: + // view.TitleChanged += HandleTitleChanged; + + break; + } + } + } + + public override void DisableEvent (object eventId) { + base.DisableEvent (eventId); + + if (eventId is WebViewEvent) { + switch ((WebViewEvent)eventId) { + case WebViewEvent.NavigateToUrl: + view.ResourceLoadStarted -= HandleNavigationRequested; + + break; + case WebViewEvent.Loading: + view.LoadChanged -= HandleLoadStarted; + + break; + case WebViewEvent.Loaded: + view.LoadChanged -= HandleLoadFinished; + + break; + case WebViewEvent.TitleChanged: + // view.TitleChanged -= HandleTitleChanged; + + break; + } + } + } + + void HandleNavigationRequested (object sender, ResourceLoadStartedArgs e) { + if (e.Resource == view.MainResource) { + ApplicationContext.InvokeUserCode (delegate { + if (EventSink.OnNavigateToUrl (e.Request.Uri)) + ; + }); + } + } + + void HandleLoadStarted (object o, LoadChangedArgs args) { + if (args.LoadEvent == LoadEvent.Started) + ApplicationContext.InvokeUserCode (EventSink.OnLoading); + } + + void HandleLoadFinished (object o, LoadChangedArgs args) { + if (args.LoadEvent == LoadEvent.Finished) + ApplicationContext.InvokeUserCode (EventSink.OnLoaded); + } + + void HandleTitleChanged (object sender, WebKit.TitleChangedArgs e) { + ApplicationContext.InvokeUserCode (EventSink.OnTitleChanged); + } + + void HandleContextMenuRequest (object sender, ContextMenuArgs e) { + e.RetVal = !ContextMenuEnabled; + } + + } +#endif +} \ No newline at end of file diff --git a/Xwt.Gtk/Xwt.GtkBackend/WidgetBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/WidgetBackend.cs index b62207afe..426f78ea5 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/WidgetBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/WidgetBackend.cs @@ -274,7 +274,11 @@ protected virtual void Dispose (bool disposing) { if (Widget != null && disposing && !destroyed) { MarkDestroyed (Frontend); +#if XWT_GTK3 + Widget.Dispose (); +#else Widget.Destroy (); +#endif } if (IMContext != null) IMContext.Dispose (); @@ -347,7 +351,11 @@ public Point ConvertToScreenCoordinates (Point widgetCoordinates) public virtual object Font { get { +#if XWT_GTKSHARP3 + return customFont ?? Widget.Style.FontDesc; +#else return customFont ?? Widget.Style.FontDescription; +#endif } set { var fd = (Pango.FontDescription) value; diff --git a/Xwt.Gtk/Xwt.GtkBackend/WindowBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/WindowBackend.cs index c7d748df1..cc8d49213 100755 --- a/Xwt.Gtk/Xwt.GtkBackend/WindowBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/WindowBackend.cs @@ -93,7 +93,11 @@ public void SetMainMenu (IMenuBackend menu) MenuBackend m = (MenuBackend) menu; mainMenu = m.MenuBar; mainBox.PackStart (mainMenu, false, false, 0); +#if XWT_GTKSHARP3 + mainBox.ReorderChild(mainMenu,0); +#else ((Gtk.Box.BoxChild)mainBox[mainMenu]).Position = 0; +#endif } else mainMenu = null; } diff --git a/Xwt.Gtk/Xwt.GtkBackend/WindowFrameBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/WindowFrameBackend.cs index 709d60ecc..9d721459d 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/WindowFrameBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/WindowFrameBackend.cs @@ -126,8 +126,11 @@ public virtual void Dispose () { #if !XWT_GTK3 Window.SizeRequested -= HandleSizeRequested; - #endif Window.Destroy (); + #else + Window.Dispose(); + #endif + } public IWindowFrameEventSink EventSink { diff --git a/Xwt.Gtk/Xwt.Gtk.csproj b/Xwt.Gtk2/Xwt.Gtk.csproj_ similarity index 100% rename from Xwt.Gtk/Xwt.Gtk.csproj rename to Xwt.Gtk2/Xwt.Gtk.csproj_ diff --git a/Xwt.Gtk/Xwt.Gtk.dll.config b/Xwt.Gtk2/Xwt.Gtk.dll.config similarity index 100% rename from Xwt.Gtk/Xwt.Gtk.dll.config rename to Xwt.Gtk2/Xwt.Gtk.dll.config diff --git a/Xwt.Gtk/Xwt.Gtk.nuget.props b/Xwt.Gtk2/Xwt.Gtk.nuget.props similarity index 100% rename from Xwt.Gtk/Xwt.Gtk.nuget.props rename to Xwt.Gtk2/Xwt.Gtk.nuget.props diff --git a/Xwt.Gtk/Xwt.Gtk.nuspec b/Xwt.Gtk2/Xwt.Gtk.nuspec similarity index 100% rename from Xwt.Gtk/Xwt.Gtk.nuspec rename to Xwt.Gtk2/Xwt.Gtk.nuspec diff --git a/Xwt.Gtk2/Xwt.Gtk2.csproj b/Xwt.Gtk2/Xwt.Gtk2.csproj new file mode 100644 index 000000000..e1b76dd31 --- /dev/null +++ b/Xwt.Gtk2/Xwt.Gtk2.csproj @@ -0,0 +1,433 @@ + + + net472 + Xwt.Gtk + Xwt.Gtk + false + + + TRACE;DEBUG + true + + + + TRACE;RELEASE + true + + + $(AssemblySearchPaths);{GAC} + + + + Always + + + + + + + + + + + + + + + + + + + + GtkInterop\DllImportFontConfig.cs + + + GtkInterop\DllImportGdk.cs + + + GtkInterop\DllImportGObj.cs + + + GtkInterop\DllImportGtk.cs + + + GtkInterop\DllImportPango.cs + + + GtkInterop\DllImportPangoCairo.cs + + + GtkInterop\DllImportWebkit.cs + + + GtkSharpInterop\Library.cs + + + GtkSharpInterop\GLibrary.cs + + + GtkSharpInterop\FuncLoader.cs + + + + + AssemblyInfo.cs + + + Xwt.GtkBackend\AccessibleBackend.cs + + + Xwt.GtkBackend\TextLayoutBackendHandler.cs + + + Xwt.GtkBackend\MessageService.cs + + + Xwt.GtkBackend\ComboBoxBackend.cs + + + Xwt.GtkBackend\PanedBackend.cs + + + Xwt.GtkBackend\CheckBoxMenuItemBackend.cs + + + Xwt.GtkBackend\CanvasBackendGtk2.cs + + + Xwt.GtkBackend\FontSelectorBackend.cs + + + Xwt.GtkBackend\SpinButtonBackend.cs + + + Xwt.GtkBackend\PasswordEntryBackendGtk2.cs + + + Xwt.GtkBackend\CustomTreeModel.cs + + + Xwt.GtkBackend\DialogBackend.cs + + + Xwt.GtkBackend\PopoverBackend.cs + + + Xwt.GtkBackend\ComboBoxEntryBackend.cs + + + Xwt.GtkBackend\ScrollAdjustmentBackend.cs + + + Xwt.GtkBackend\MenuItemBackend.cs + + + Xwt.GtkBackend\StatusIconBackend.cs + + + Xwt.GtkBackend\DatePickerBackend.cs + + + Xwt.GtkBackend\WebViewBackend.cs + + + Xwt.GtkBackend\TextEntryBackendGtk2.cs + + + Xwt.GtkBackend\HeaderBoxGtk2.cs + + + Xwt.GtkBackend\GtkWebKitMini.cs + + + Xwt.GtkBackend\HeaderBox.cs + + + Xwt.GtkBackend\Conversion.cs + + + Xwt.GtkBackend\NotebookBackend.cs + + + Xwt.GtkBackend\SelectColorDialogBackend.cs + + + Xwt.GtkBackend\TreeStoreBackend.cs + + + Xwt.GtkBackend\EmbeddedWidgetBackend.cs + + + Xwt.GtkBackend\LinkLabelBackend.cs + + + Xwt.GtkBackend\UtilityWindowBackend.cs + + + Xwt.GtkBackend\GtkMacInterop.cs + + + Xwt.GtkBackend\GtkDesktopBackend.cs + + + Xwt.GtkBackend\BoxBackend.cs + + + Xwt.GtkBackend\RadioButtonMenuItemBackend.cs + + + Xwt.GtkBackend\SegmentedButtonBackend.cs + + + Xwt.GtkBackend\ToggleButtonBackend.cs + + + Xwt.GtkBackend\FrameBackend.cs + + + Xwt.GtkBackend\LabelBackend.cs + + + Xwt.GtkBackend\ButtonBackendGtk2.cs + + + Xwt.GtkBackend\Gtk2DrawingArea.cs + + + Xwt.GtkBackend\PopupWindowBackend.cs + + + Xwt.GtkBackend\SeparatorMenuItemBackend.cs + + + Xwt.GtkBackend\Util.cs + + + Xwt.GtkBackend\ColorSelectorBackend.cs + + + Xwt.GtkBackend\GtkPlatformBackend.cs + + + Xwt.GtkBackend\MenuButtonBackend.cs + + + Xwt.GtkBackend\WindowFrameBackend.cs + + + Xwt.GtkBackend\ExpanderBackend.cs + + + Xwt.GtkBackend\ClipboardBackend.cs + + + Xwt.GtkBackend\GtkWorkarounds.cs + + + Xwt.GtkBackend\ImageViewBackend.cs + + + Xwt.GtkBackend\SeparatorBackend.cs + + + Xwt.GtkBackend\SelectFontDialogBackend.cs + + + Xwt.GtkBackend\GtkEngine.cs + + + Xwt.GtkBackend\TableViewBackend.cs + + + Xwt.GtkBackend\ScrollViewBackend.cs + + + Xwt.GtkBackend\PasswordEntryBackend.cs + + + Xwt.GtkBackend\GtkKeyboardHandler.cs + + + Xwt.GtkBackend\TextEntryBackend.cs + + + Xwt.GtkBackend\SearchTextEntryBackend.cs + + + Xwt.GtkBackend\AlertDialogBackend.cs + + + Xwt.GtkBackend\CalendarBackend.cs + + + Xwt.GtkBackend\CustomListModel.cs + + + Xwt.GtkBackend\ScrollControlBackend.cs + + + Xwt.GtkBackend\WindowBackend.cs + + + Xwt.GtkBackend\ProgressBarBackend.cs + + + Xwt.GtkBackend\ScrollbarBackend.cs + + + Xwt.GtkBackend\RadioButtonBackend.cs + + + Xwt.GtkBackend\ImageHandler.cs + + + Xwt.GtkBackend\DesignerSurfaceBackend.cs + + + Xwt.GtkBackend\ButtonBackend.cs + + + Xwt.GtkBackend\SpinButtonBackendGtk2.cs + + + Xwt.GtkBackend\RichTextViewBackend.cs + + + Xwt.GtkBackend\LabelBackendGtk2.cs + + + Xwt.GtkBackend\ListViewBackend.cs + + + Xwt.GtkBackend\Gtk2PopoverWindow.cs + + + Xwt.GtkBackend\TreeViewBackend.cs + + + Xwt.GtkBackend\FontBackendHandler.cs + + + Xwt.GtkBackend\CustomWidgetBackend.cs + + + Xwt.GtkBackend\GtkInterop.cs + + + Xwt.GtkBackend\WidgetBackend.cs + + + Xwt.GtkBackend\Gtk2Extensions.cs + + + Xwt.GtkBackend\Gtk2ViewPort.cs + + + Xwt.GtkBackend\ImageBuilderBackend.cs + + + Xwt.GtkBackend\FileDialogBackend.cs + + + Xwt.GtkBackend\ImagePatternBackendHandler.cs + + + Xwt.GtkBackend\Platform.cs + + + Xwt.GtkBackend\SpinnerBackend.cs + + + Xwt.GtkBackend\GtkAlertDialog.cs + + + Xwt.GtkBackend\CanvasBackend.cs + + + Xwt.GtkBackend\SliderBackend.cs + + + Xwt.GtkBackend\BoxBackendGtk2.cs + + + Xwt.GtkBackend\ListBoxBackend.cs + + + Xwt.GtkBackend\CheckBoxBackend.cs + + + Xwt.GtkBackend\TableStoreBackend.cs + + + Xwt.GtkBackend\WidgetBackendGtk2.cs + + + Xwt.GtkBackend\ColorPickerBackend.cs + + + Xwt.GtkBackend\MenuBackend.cs + + + Xwt.GtkBackend\ListStoreBackend.cs + + + Xwt.GtkBackend.CellViews\CustomCellRenderer.cs + + + Xwt.GtkBackend.CellViews\CellViewBackend.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererText.cs + + + Xwt.GtkBackend.CellViews\Gtk2CellRendererCustom.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererComboBox.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererImage.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererToggle.cs + + + Xwt.GtkBackend.CellViews\CellUtil.cs + + + Xwt.CairoBackend\CairoConversion.cs + + + Xwt.CairoBackend\CairoGradientBackendHandler.cs + + + Xwt.CairoBackend\CairoContextBackendHandler.cs + + + + + searchbox-clear-16.png + + + searchbox-clear-16@2x.png + + + searchbox-clear-16~dark.png + + + searchbox-clear-16~dark@2x.png + + + searchbox-search-16@2x.png + + + searchbox-search-16.png + + + searchbox-search-16~dark@2x.png + + + searchbox-search-16~dark.png + + + diff --git a/Xwt.Gtk/Xwt.Gtk3.csproj b/Xwt.Gtk3/Xwt.Gtk3-mono.csproj similarity index 100% rename from Xwt.Gtk/Xwt.Gtk3.csproj rename to Xwt.Gtk3/Xwt.Gtk3-mono.csproj diff --git a/Xwt.Gtk3/Xwt.Gtk3.csproj b/Xwt.Gtk3/Xwt.Gtk3.csproj new file mode 100644 index 000000000..c759c52df --- /dev/null +++ b/Xwt.Gtk3/Xwt.Gtk3.csproj @@ -0,0 +1,404 @@ + + + net472 + Xwt.Gtk3 + Xwt.Gtk3 + false + + + TRACE;DEBUG;XWT_GTK3 + true + + + + TRACE;RELEASE;XWT_GTK3 + true + + + $(AssemblySearchPaths);{GAC} + + + + + Always + + + + + + + + + + + + + + + + + + + + Xwt.Gtk\AssemblyInfo.Gtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\TextLayoutBackendHandler.cs + + + Xwt.Gtk\Xwt.GtkBackend\MessageService.cs + + + Xwt.Gtk\Xwt.GtkBackend\PasswordEntryBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\ComboBoxBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\PanedBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\CheckBoxMenuItemBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\FontSelectorBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SpinButtonBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SearchTextEntryBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\CustomTreeModel.cs + + + Xwt.Gtk\Xwt.GtkBackend\DialogBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\PopoverBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ComboBoxEntryBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\BoxBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\ScrollAdjustmentBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\MenuItemBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\LabelBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\StatusIconBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\DatePickerBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\WebViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkWebKitMini.cs + + + Xwt.Gtk\Xwt.GtkBackend\ButtonBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\HeaderBox.cs + + + Xwt.Gtk\Xwt.GtkBackend\Conversion.cs + + + Xwt.Gtk\Xwt.GtkBackend\NotebookBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SelectColorDialogBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\TreeStoreBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\EmbeddedWidgetBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\LinkLabelBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SpinButtonBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\PanedBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\UtilityWindowBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkMacInterop.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkDesktopBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\BoxBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\RadioButtonMenuItemBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SegmentedButtonBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ToggleButtonBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\FrameBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\LabelBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\PopupWindowBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SeparatorMenuItemBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\Util.cs + + + Xwt.Gtk\Xwt.GtkBackend\ColorSelectorBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkPlatformBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\MenuButtonBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\TextEntryBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\WindowFrameBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ExpanderBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ClipboardBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\Gtk3Extensions.cs + + + Xwt.Gtk\Xwt.GtkBackend\WidgetBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkWorkarounds.cs + + + Xwt.Gtk\Xwt.GtkBackend\ImageViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SeparatorBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SelectFontDialogBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkEngine.cs + + + Xwt.Gtk\Xwt.GtkBackend\TableViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ScrollViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\PasswordEntryBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkKeyboardHandler.cs + + + Xwt.Gtk\Xwt.GtkBackend\TextEntryBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\AlertDialogBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\CalendarBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\CustomListModel.cs + + + Xwt.Gtk\Xwt.GtkBackend\ScrollControlBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\TextWrapper.cs + + + Xwt.Gtk\Xwt.GtkBackend\WindowBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ProgressBarBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ScrollbarBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\Gtk3ViewPort.cs + + + Xwt.Gtk\Xwt.GtkBackend\RadioButtonBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ImageHandler.cs + + + Xwt.Gtk\Xwt.GtkBackend\DesignerSurfaceBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ButtonBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\RichTextViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ListViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\TreeViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\FontBackendHandler.cs + + + Xwt.Gtk\Xwt.GtkBackend\CustomWidgetBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkInterop.cs + + + Xwt.Gtk\Xwt.GtkBackend\WidgetBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ImageBuilderBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\Gtk3DrawingArea.cs + + + Xwt.Gtk\Xwt.GtkBackend\FileDialogBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ImagePatternBackendHandler.cs + + + Xwt.Gtk\Xwt.GtkBackend\Platform.cs + + + Xwt.Gtk\Xwt.GtkBackend\SpinnerBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\GtkAlertDialog.cs + + + Xwt.Gtk\Xwt.GtkBackend\CanvasBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\SliderBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ListBoxBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\CheckBoxBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\TableStoreBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\Gtk3FontChooserDialog.cs + + + Xwt.Gtk\Xwt.GtkBackend\HeaderBoxGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\Gtk3PopoverWindow.cs + + + Xwt.Gtk\Xwt.GtkBackend\CanvasBackendGtk3.cs + + + Xwt.Gtk\Xwt.GtkBackend\ColorPickerBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\MenuBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend\ListStoreBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CustomCellRenderer.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CellViewBackend.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CustomCellRendererText.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CustomCellRendererComboBox.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CustomCellRendererImage.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\Gtk3CellRendererCustom.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CustomCellRendererToggle.cs + + + Xwt.Gtk\Xwt.GtkBackend.CellViews\CellUtil.cs + + + Xwt.Gtk\Xwt.CairoBackend\CairoConversion.cs + + + Xwt.Gtk\Xwt.CairoBackend\CairoGradientBackendHandler.cs + + + Xwt.Gtk\Xwt.CairoBackend\CairoContextBackendHandler.cs + + + + + Xwt.Gtk\Limaki.Extended\ComboBoxBackend.cs + + + Xwt.Gtk\Limaki.Extended\TextEntryMultiLineBackend1.cs + + + Xwt.Gtk\Limaki.Extended\GtkClipboardBackend.cs + + + Xwt.Gtk\Limaki.Extended\WidgetBackend.cs + + + Xwt.Gtk\Limaki.Extended\TextEntryMultiLineBackend.cs + + + + + + + + diff --git a/Xwt.Gtk/Xwt.Gtk3.dll.config b/Xwt.Gtk3/Xwt.Gtk3.dll.config similarity index 100% rename from Xwt.Gtk/Xwt.Gtk3.dll.config rename to Xwt.Gtk3/Xwt.Gtk3.dll.config diff --git a/Xwt.Gtk/Xwt.Gtk3.nuget.props b/Xwt.Gtk3/Xwt.Gtk3.nuget.props similarity index 100% rename from Xwt.Gtk/Xwt.Gtk3.nuget.props rename to Xwt.Gtk3/Xwt.Gtk3.nuget.props diff --git a/Xwt.Gtk/Xwt.Gtk3.nuspec b/Xwt.Gtk3/Xwt.Gtk3.nuspec similarity index 100% rename from Xwt.Gtk/Xwt.Gtk3.nuspec rename to Xwt.Gtk3/Xwt.Gtk3.nuspec diff --git a/Xwt.GtkSharp/Xwt.GtkSharp.csproj b/Xwt.GtkSharp/Xwt.GtkSharp.csproj new file mode 100644 index 000000000..7e149efe5 --- /dev/null +++ b/Xwt.GtkSharp/Xwt.GtkSharp.csproj @@ -0,0 +1,413 @@ + + + netstandard2.0 + Xwt.Gtk3 + Xwt.Gtk3 + 8 + false + + + TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0;XWT_GTK3;XWT_GTKSHARP3 + true + + + + TRACE;RELEASE;NETSTANDARD;NETSTANDARD2_0;XWT_GTK3;XWT_GTKSHARP3 + true + + + + + + + + + + + + + + + + + + GtkInterop\DllImportFontConfig.cs + + + GtkInterop\DllImportGdk.cs + + + GtkInterop\DllImportGObj.cs + + + GtkInterop\DllImportGtk.cs + + + GtkInterop\DllImportPango.cs + + + GtkInterop\DllImportPangoCairo.cs + + + GtkInterop\DllImportWebkit.cs + + + GtkSharpInterop\GtkSharpWorkarounds.cs + + + GtkSharpInterop\Library.cs + + + GtkSharpInterop\GLibrary.cs + + + GtkSharpInterop\FuncLoader.cs + + + + + AssemblyInfo.Gtk3.cs + + + Xwt.GtkBackend\AccessibleBackend.cs + + + Xwt.GtkBackend\TextLayoutBackendHandler.cs + + + Xwt.GtkBackend\MessageService.cs + + + Xwt.GtkBackend\PasswordEntryBackendGtk3.cs + + + Xwt.GtkBackend\ComboBoxBackend.cs + + + Xwt.GtkBackend\PanedBackend.cs + + + Xwt.GtkBackend\CheckBoxMenuItemBackend.cs + + + Xwt.GtkBackend\FontSelectorBackend.cs + + + Xwt.GtkBackend\SpinButtonBackend.cs + + + Xwt.GtkBackend\SearchTextEntryBackendGtk3.cs + + + Xwt.GtkBackend\CustomTreeModel.cs + + + Xwt.GtkBackend\DialogBackend.cs + + + Xwt.GtkBackend\PopoverBackend.cs + + + Xwt.GtkBackend\ComboBoxEntryBackend.cs + + + Xwt.GtkBackend\BoxBackendGtk3.cs + + + Xwt.GtkBackend\ScrollAdjustmentBackend.cs + + + Xwt.GtkBackend\MenuItemBackend.cs + + + Xwt.GtkBackend\LabelBackendGtk3.cs + + + Xwt.GtkBackend\StatusIconBackend.cs + + + Xwt.GtkBackend\DatePickerBackend.cs + + + Xwt.GtkBackend\WebViewBackend.cs + + + Xwt.GtkBackend\GtkWebKitMini.cs + + + Xwt.GtkBackend\ButtonBackendGtk3.cs + + + Xwt.GtkBackend\HeaderBox.cs + + + Xwt.GtkBackend\Conversion.cs + + + Xwt.GtkBackend\NotebookBackend.cs + + + Xwt.GtkBackend\SelectColorDialogBackend.cs + + + Xwt.GtkBackend\TreeStoreBackend.cs + + + Xwt.GtkBackend\EmbeddedWidgetBackend.cs + + + Xwt.GtkBackend\LinkLabelBackend.cs + + + Xwt.GtkBackend\SpinButtonBackendGtk3.cs + + + Xwt.GtkBackend\PanedBackendGtk3.cs + + + Xwt.GtkBackend\UtilityWindowBackend.cs + + + Xwt.GtkBackend\GtkMacInterop.cs + + + Xwt.GtkBackend\GtkDesktopBackend.cs + + + Xwt.GtkBackend\BoxBackend.cs + + + Xwt.GtkBackend\RadioButtonMenuItemBackend.cs + + + Xwt.GtkBackend\SegmentedButtonBackend.cs + + + Xwt.GtkBackend\ToggleButtonBackend.cs + + + Xwt.GtkBackend\FrameBackend.cs + + + Xwt.GtkBackend\LabelBackend.cs + + + Xwt.GtkBackend\PopupWindowBackend.cs + + + Xwt.GtkBackend\SeparatorMenuItemBackend.cs + + + Xwt.GtkBackend\Util.cs + + + Xwt.GtkBackend\ColorSelectorBackend.cs + + + Xwt.GtkBackend\GtkPlatformBackend.cs + + + Xwt.GtkBackend\MenuButtonBackend.cs + + + Xwt.GtkBackend\TextEntryBackendGtk3.cs + + + Xwt.GtkBackend\WindowFrameBackend.cs + + + Xwt.GtkBackend\ExpanderBackend.cs + + + Xwt.GtkBackend\ClipboardBackend.cs + + + Xwt.GtkBackend\Gtk3Extensions.cs + + + Xwt.GtkBackend\WidgetBackendGtk3.cs + + + Xwt.GtkBackend\GtkWorkarounds.cs + + + Xwt.GtkBackend\ImageViewBackend.cs + + + Xwt.GtkBackend\SeparatorBackend.cs + + + Xwt.GtkBackend\SelectFontDialogBackend.cs + + + Xwt.GtkBackend\GtkEngine.cs + + + Xwt.GtkBackend\TableViewBackend.cs + + + Xwt.GtkBackend\ScrollViewBackend.cs + + + Xwt.GtkBackend\PasswordEntryBackend.cs + + + Xwt.GtkBackend\GtkKeyboardHandler.cs + + + Xwt.GtkBackend\TextEntryBackend.cs + + + Xwt.GtkBackend\AlertDialogBackend.cs + + + Xwt.GtkBackend\CalendarBackend.cs + + + Xwt.GtkBackend\CustomListModel.cs + + + Xwt.GtkBackend\ScrollControlBackend.cs + + + Xwt.GtkBackend\WindowBackend.cs + + + Xwt.GtkBackend\ProgressBarBackend.cs + + + Xwt.GtkBackend\ScrollbarBackend.cs + + + Xwt.GtkBackend\Gtk3ViewPort.cs + + + Xwt.GtkBackend\RadioButtonBackend.cs + + + Xwt.GtkBackend\ImageHandler.cs + + + Xwt.GtkBackend\DesignerSurfaceBackend.cs + + + Xwt.GtkBackend\ButtonBackend.cs + + + Xwt.GtkBackend\RichTextViewBackend.cs + + + Xwt.GtkBackend\ListViewBackend.cs + + + Xwt.GtkBackend\TreeViewBackend.cs + + + Xwt.GtkBackend\FontBackendHandler.cs + + + Xwt.GtkBackend\CustomWidgetBackend.cs + + + Xwt.GtkBackend\GtkInterop.cs + + + Xwt.GtkBackend\WidgetBackend.cs + + + Xwt.GtkBackend\ImageBuilderBackend.cs + + + Xwt.GtkBackend\Gtk3DrawingArea.cs + + + Xwt.GtkBackend\FileDialogBackend.cs + + + Xwt.GtkBackend\ImagePatternBackendHandler.cs + + + Xwt.GtkBackend\Platform.cs + + + Xwt.GtkBackend\SpinnerBackend.cs + + + Xwt.GtkBackend\GtkAlertDialog.cs + + + Xwt.GtkBackend\CanvasBackend.cs + + + Xwt.GtkBackend\SliderBackend.cs + + + Xwt.GtkBackend\ListBoxBackend.cs + + + Xwt.GtkBackend\CheckBoxBackend.cs + + + Xwt.GtkBackend\TableStoreBackend.cs + + + Xwt.GtkBackend\Gtk3FontChooserDialog.cs + + + Xwt.GtkBackend\HeaderBoxGtk3.cs + + + Xwt.GtkBackend\Gtk3PopoverWindow.cs + + + Xwt.GtkBackend\CanvasBackendGtk3.cs + + + Xwt.GtkBackend\ColorPickerBackend.cs + + + Xwt.GtkBackend\MenuBackend.cs + + + Xwt.GtkBackend\ListStoreBackend.cs + + + Xwt.GtkBackend.CellViews\CustomCellRenderer.cs + + + Xwt.GtkBackend.CellViews\CellViewBackend.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererText.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererComboBox.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererImage.cs + + + Xwt.GtkBackend.CellViews\Gtk3CellRendererCustom.cs + + + Xwt.GtkBackend.CellViews\CustomCellRendererToggle.cs + + + Xwt.GtkBackend.CellViews\CellUtil.cs + + + Xwt.CairoBackend\CairoConversion.cs + + + Xwt.CairoBackend\CairoGradientBackendHandler.cs + + + Xwt.CairoBackend\CairoContextBackendHandler.cs + + + + + + + + diff --git a/Xwt.sln b/Xwt.sln index b780052d4..0babe958d 100644 --- a/Xwt.sln +++ b/Xwt.sln @@ -1,301 +1,312 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt", "Xwt\Xwt.csproj", "{92494904-35FA-4DC9-BDE9-3A3E87AC49D3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk", "Xwt.Gtk\Xwt.Gtk.csproj", "{C3887A93-B2BD-4097-8E2F-3A063EFF32FD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.XamMac", "Xwt.XamMac\Xwt.XamMac.csproj", "{B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.WPF", "Xwt.WPF\Xwt.WPF.csproj", "{C93D746E-1586-4D4F-B411-BF5A966E6A08}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Testing", "Testing", "{164E1FED-7688-4AE9-B19B-012F8784F9DD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkTestRunner", "Testing\GtkTestRunner.csproj", "{BC764278-4141-483C-8643-2EA8C40373B2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfTestRunner", "Testing\WpfTestRunner.csproj", "{C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestApps", "TestApps", "{83D74DDF-581E-4E2A-AE02-F4047A5B96C7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkTest", "TestApps\GtkTest\GtkTest.csproj", "{0AF50CE4-E455-4A9D-92AD-711CBD068A55}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamMacTest", "TestApps\XamMacTest\XamMacTest.csproj", "{2B7FF081-FE53-42F7-9D5D-D4B38E548F94}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfTest", "TestApps\WpfTest\WpfTest.csproj", "{E41F4448-15C3-4E95-B310-FD333FDF5D2F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MixedGtkMacTest", "TestApps\MixedGtkMacTest\MixedGtkMacTest.csproj", "{14CF6E75-0D08-4BBD-B0F5-742196E5656D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkOnMacTest", "TestApps\GtkOnMacTest\GtkOnMacTest.csproj", "{5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples", "TestApps\Samples\Samples.csproj", "{88C04B85-B69B-47B4-AB9F-64F6DD4E0897}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkOnWindowsTest", "TestApps\GtkOnWindowsTest\GtkOnWindowsTest.csproj", "{C1DF0C90-0C4C-4AB5-A45C-A1805587A844}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gtk3Test", "TestApps\Gtk3Test\Gtk3Test.csproj", "{22524E1F-A94D-4204-AD90-A5FFE73970EC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk.Mac", "Xwt.Gtk.Mac\Xwt.Gtk.Mac.csproj", "{E95833C9-90AA-4366-9262-0A1BED148249}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk.Windows", "Xwt.Gtk.Windows\Xwt.Gtk.Windows.csproj", "{252117CA-0ABB-4F36-BFC8-DE23A8089BB9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk3", "Xwt.Gtk\Xwt.Gtk3.csproj", "{3B25FD1F-CEBA-4450-8893-DC330FDB56A7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreTests", "Testing\CoreTests\CoreTests.csproj", "{F0C03C12-F08A-4378-958D-86DD4CFE966F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Mac-Debug|Any CPU = Mac-Debug|Any CPU - Release|Any CPU = Release|Any CPU - Win-Debug|Any CPU = Win-Debug|Any CPU - Win-Debug|x86 = Win-Debug|x86 - Debug|x86 = Debug|x86 - Linux-Debug|Any CPU = Linux-Debug|Any CPU - Linux-Debug|x86 = Linux-Debug|x86 - Mac-Debug|x86 = Mac-Debug|x86 - Release|x86 = Release|x86 - XamMac-Debug|Any CPU = XamMac-Debug|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Release|Any CPU.Build.0 = Release|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Win-Debug|Any CPU.Build.0 = Debug|x86 - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Release|Any CPU.Build.0 = Release|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Win-Debug|x86.ActiveCfg = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Debug|x86.ActiveCfg = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Debug|x86.Build.0 = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Linux-Debug|x86.ActiveCfg = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Linux-Debug|x86.Build.0 = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Mac-Debug|x86.ActiveCfg = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Mac-Debug|x86.Build.0 = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Release|Any CPU.Build.0 = Release|Any CPU - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Release|x86.ActiveCfg = Release|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Release|x86.Build.0 = Release|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.Win-Debug|x86.ActiveCfg = Debug|x86 - {22524E1F-A94D-4204-AD90-A5FFE73970EC}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Release|Any CPU.Build.0 = Release|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|Any CPU.Build.0 = Release|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Win-Debug|x86.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|x86.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|x86.Build.0 = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|x86.Build.0 = Debug|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|x86.ActiveCfg = Release|Any CPU - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|x86.Build.0 = Release|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Debug|x86.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Debug|x86.Build.0 = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Linux-Debug|x86.Build.0 = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Mac-Debug|x86.Build.0 = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Release|Any CPU.Build.0 = Release|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Release|x86.ActiveCfg = Release|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Release|x86.Build.0 = Release|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.Win-Debug|x86.ActiveCfg = Debug|Any CPU - {3B25FD1F-CEBA-4450-8893-DC330FDB56A7}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Release|Any CPU.Build.0 = Release|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Debug|Any CPU.Build.0 = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Release|Any CPU.ActiveCfg = Release|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Release|Any CPU.Build.0 = Release|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Release|Any CPU.Build.0 = Release|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|Any CPU.Build.0 = Release|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|x86.Build.0 = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|x86.ActiveCfg = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|x86.Build.0 = Debug|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|x86.ActiveCfg = Release|Any CPU - {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|x86.Build.0 = Release|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Release|Any CPU.Build.0 = Release|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC764278-4141-483C-8643-2EA8C40373B2}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Mac-Debug|Any CPU.ActiveCfg = Debug|x86 - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Release|Any CPU.ActiveCfg = Release|x86 - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Release|Any CPU.Build.0 = Release|x86 - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Win-Debug|Any CPU.Build.0 = Debug|x86 - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.XamMac-Debug|Any CPU.ActiveCfg = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|Any CPU.ActiveCfg = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|Any CPU.Build.0 = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|x86.ActiveCfg = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|x86.Build.0 = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Release|Any CPU.ActiveCfg = Release|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Release|Any CPU.Build.0 = Release|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|Any CPU.Build.0 = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|x86.ActiveCfg = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|x86.Build.0 = Debug|x86 - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.XamMac-Debug|Any CPU.ActiveCfg = Debug|x86 - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Debug|x86.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Debug|x86.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Linux-Debug|x86.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Mac-Debug|x86.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Release|Any CPU.Build.0 = Release|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Release|x86.ActiveCfg = Release|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Release|x86.Build.0 = Release|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C3887A93-B2BD-4097-8E2F-3A063EFF32FD}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Release|Any CPU.Build.0 = Release|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {C93D746E-1586-4D4F-B411-BF5A966E6A08}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Release|Any CPU.Build.0 = Release|Any CPU - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Win-Debug|Any CPU.Build.0 = Debug|x86 - {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.Release|Any CPU.Build.0 = Release|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95833C9-90AA-4366-9262-0A1BED148249}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|Any CPU.Build.0 = Release|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|x86.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|x86.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|x86.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|x86.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|x86.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|x86.Build.0 = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|x86.ActiveCfg = Release|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|x86.Build.0 = Release|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0C03C12-F08A-4378-958D-86DD4CFE966F}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {BC764278-4141-483C-8643-2EA8C40373B2} = {164E1FED-7688-4AE9-B19B-012F8784F9DD} - {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F} = {164E1FED-7688-4AE9-B19B-012F8784F9DD} - {0AF50CE4-E455-4A9D-92AD-711CBD068A55} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {2B7FF081-FE53-42F7-9D5D-D4B38E548F94} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {E41F4448-15C3-4E95-B310-FD333FDF5D2F} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {14CF6E75-0D08-4BBD-B0F5-742196E5656D} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {C1DF0C90-0C4C-4AB5-A45C-A1805587A844} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {22524E1F-A94D-4204-AD90-A5FFE73970EC} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} - {F0C03C12-F08A-4378-958D-86DD4CFE966F} = {164E1FED-7688-4AE9-B19B-012F8784F9DD} - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - Policies = $0 - $0.DotNetNamingPolicy = $1 - $0.VersionControlPolicy = $2 - $0.StandardHeader = $3 - $3.Text = @\n${FileName}\n \nAuthor:\n ${AuthorName} <${AuthorEmail}>\n\nCopyright (c) ${Year} ${CopyrightHolder}\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. - $0.TextStylePolicy = $4 - $4.FileWidth = 80 - $4.scope = text/x-csharp - $0.CSharpFormattingPolicy = $5 - $5.scope = text/x-csharp - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt", "Xwt\Xwt.csproj", "{92494904-35FA-4DC9-BDE9-3A3E87AC49D3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.XamMac", "Xwt.XamMac\Xwt.XamMac.csproj", "{B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.WPF", "Xwt.WPF\Xwt.WPF.csproj", "{C93D746E-1586-4D4F-B411-BF5A966E6A08}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Testing", "Testing", "{164E1FED-7688-4AE9-B19B-012F8784F9DD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkTestRunner", "Testing\GtkTestRunner.csproj", "{BC764278-4141-483C-8643-2EA8C40373B2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfTestRunner", "Testing\WpfTestRunner.csproj", "{C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestApps", "TestApps", "{83D74DDF-581E-4E2A-AE02-F4047A5B96C7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkTest", "TestApps\GtkTest\GtkTest.csproj", "{0AF50CE4-E455-4A9D-92AD-711CBD068A55}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamMacTest", "TestApps\XamMacTest\XamMacTest.csproj", "{2B7FF081-FE53-42F7-9D5D-D4B38E548F94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfTest", "TestApps\WpfTest\WpfTest.csproj", "{E41F4448-15C3-4E95-B310-FD333FDF5D2F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MixedGtkMacTest", "TestApps\MixedGtkMacTest\MixedGtkMacTest.csproj", "{14CF6E75-0D08-4BBD-B0F5-742196E5656D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkOnMacTest", "TestApps\GtkOnMacTest\GtkOnMacTest.csproj", "{5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples", "TestApps\Samples\Samples.csproj", "{88C04B85-B69B-47B4-AB9F-64F6DD4E0897}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkOnWindowsTest", "TestApps\GtkOnWindowsTest\GtkOnWindowsTest.csproj", "{C1DF0C90-0C4C-4AB5-A45C-A1805587A844}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk.Mac", "Xwt.Gtk.Mac\Xwt.Gtk.Mac.csproj", "{E95833C9-90AA-4366-9262-0A1BED148249}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk.Windows", "Xwt.Gtk.Windows\Xwt.Gtk.Windows.csproj", "{252117CA-0ABB-4F36-BFC8-DE23A8089BB9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreTests", "Testing\CoreTests\CoreTests.csproj", "{F0C03C12-F08A-4378-958D-86DD4CFE966F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.GtkSharp", "Xwt.GtkSharp\Xwt.GtkSharp.csproj", "{EF4907E3-F131-4E79-9435-A045A1219128}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtkSharpTest", "TestApps\GtkSharpTest\GtkSharpTest.csproj", "{1690CC9B-598D-4F71-A3C9-AEA59A6FD808}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xwt.Gtk2", "Xwt.Gtk2\Xwt.Gtk2.csproj", "{F2DE3BAD-78D5-4470-96F3-7FACB7391408}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Mac-Debug|Any CPU = Mac-Debug|Any CPU + Release|Any CPU = Release|Any CPU + Win-Debug|Any CPU = Win-Debug|Any CPU + Win-Debug|x86 = Win-Debug|x86 + Debug|x86 = Debug|x86 + Linux-Debug|Any CPU = Linux-Debug|Any CPU + Linux-Debug|x86 = Linux-Debug|x86 + Mac-Debug|x86 = Mac-Debug|x86 + Release|x86 = Release|x86 + XamMac-Debug|Any CPU = XamMac-Debug|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Release|Any CPU.Build.0 = Release|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.Win-Debug|Any CPU.Build.0 = Debug|x86 + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0AF50CE4-E455-4A9D-92AD-711CBD068A55}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Release|Any CPU.Build.0 = Release|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.Win-Debug|x86.ActiveCfg = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14CF6E75-0D08-4BBD-B0F5-742196E5656D}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Release|Any CPU.Build.0 = Release|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {252117CA-0ABB-4F36-BFC8-DE23A8089BB9}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|Any CPU.Build.0 = Release|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Win-Debug|x86.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|x86.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Debug|x86.Build.0 = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Mac-Debug|x86.Build.0 = Debug|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|x86.ActiveCfg = Release|Any CPU + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94}.Release|x86.Build.0 = Release|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Release|Any CPU.Build.0 = Release|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Release|Any CPU.Build.0 = Release|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Release|Any CPU.Build.0 = Release|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92494904-35FA-4DC9-BDE9-3A3E87AC49D3}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|Any CPU.Build.0 = Release|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Mac-Debug|x86.Build.0 = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|x86.ActiveCfg = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Debug|x86.Build.0 = Debug|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|x86.ActiveCfg = Release|Any CPU + {B7C1673E-5124-4BE5-8D21-EC8B12F85B6B}.Release|x86.Build.0 = Release|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Release|Any CPU.Build.0 = Release|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC764278-4141-483C-8643-2EA8C40373B2}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Debug|Any CPU.ActiveCfg = Debug|x86 + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Mac-Debug|Any CPU.ActiveCfg = Debug|x86 + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Release|Any CPU.ActiveCfg = Release|x86 + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Release|Any CPU.Build.0 = Release|x86 + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.Win-Debug|Any CPU.Build.0 = Debug|x86 + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F}.XamMac-Debug|Any CPU.ActiveCfg = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Debug|Any CPU.ActiveCfg = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|Any CPU.ActiveCfg = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|Any CPU.Build.0 = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|x86.ActiveCfg = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Mac-Debug|x86.Build.0 = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Release|Any CPU.ActiveCfg = Release|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Release|Any CPU.Build.0 = Release|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|Any CPU.Build.0 = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|x86.ActiveCfg = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.Win-Debug|x86.Build.0 = Debug|x86 + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844}.XamMac-Debug|Any CPU.ActiveCfg = Debug|x86 + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Release|Any CPU.Build.0 = Release|Any CPU + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {C93D746E-1586-4D4F-B411-BF5A966E6A08}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Release|Any CPU.Build.0 = Release|Any CPU + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Win-Debug|Any CPU.ActiveCfg = Debug|x86 + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.Win-Debug|Any CPU.Build.0 = Debug|x86 + {E41F4448-15C3-4E95-B310-FD333FDF5D2F}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.Release|Any CPU.Build.0 = Release|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E95833C9-90AA-4366-9262-0A1BED148249}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|Any CPU.Build.0 = Release|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|x86.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Win-Debug|x86.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|x86.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Debug|x86.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Linux-Debug|x86.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Mac-Debug|x86.Build.0 = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|x86.ActiveCfg = Release|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.Release|x86.Build.0 = Release|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0C03C12-F08A-4378-958D-86DD4CFE966F}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Release|Any CPU.Build.0 = Release|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Win-Debug|x86.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Win-Debug|x86.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Debug|x86.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Debug|x86.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Linux-Debug|x86.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Mac-Debug|x86.Build.0 = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Release|x86.ActiveCfg = Release|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.Release|x86.Build.0 = Release|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF4907E3-F131-4E79-9435-A045A1219128}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Release|Any CPU.Build.0 = Release|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Win-Debug|x86.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Win-Debug|x86.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Debug|x86.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Debug|x86.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Linux-Debug|x86.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Mac-Debug|x86.Build.0 = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Release|x86.ActiveCfg = Release|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.Release|x86.Build.0 = Release|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Mac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Mac-Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Release|Any CPU.Build.0 = Release|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Win-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Win-Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Win-Debug|x86.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Win-Debug|x86.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Debug|x86.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Debug|x86.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Linux-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Linux-Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Linux-Debug|x86.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Linux-Debug|x86.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Mac-Debug|x86.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Mac-Debug|x86.Build.0 = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Release|x86.ActiveCfg = Release|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.Release|x86.Build.0 = Release|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.XamMac-Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2DE3BAD-78D5-4470-96F3-7FACB7391408}.XamMac-Debug|Any CPU.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {BC764278-4141-483C-8643-2EA8C40373B2} = {164E1FED-7688-4AE9-B19B-012F8784F9DD} + {C13CB518-B840-4FE7-AF3D-8C517A2FAD1F} = {164E1FED-7688-4AE9-B19B-012F8784F9DD} + {0AF50CE4-E455-4A9D-92AD-711CBD068A55} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {2B7FF081-FE53-42F7-9D5D-D4B38E548F94} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {E41F4448-15C3-4E95-B310-FD333FDF5D2F} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {14CF6E75-0D08-4BBD-B0F5-742196E5656D} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {5CFB1ABA-0CD0-45B9-ABC5-8A32096C0687} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {88C04B85-B69B-47B4-AB9F-64F6DD4E0897} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {C1DF0C90-0C4C-4AB5-A45C-A1805587A844} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + {F0C03C12-F08A-4378-958D-86DD4CFE966F} = {164E1FED-7688-4AE9-B19B-012F8784F9DD} + {1690CC9B-598D-4F71-A3C9-AEA59A6FD808} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7} + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + Policies = $0 + $0.DotNetNamingPolicy = $1 + $0.VersionControlPolicy = $2 + $0.StandardHeader = $3 + $3.Text = @\n${FileName}\n \nAuthor:\n ${AuthorName} <${AuthorEmail}>\n\nCopyright (c) ${Year} ${CopyrightHolder}\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. + $0.TextStylePolicy = $4 + $4.FileWidth = 80 + $4.scope = text/x-csharp + $0.CSharpFormattingPolicy = $5 + $5.scope = text/x-csharp + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/clean.sh b/clean.sh new file mode 100644 index 000000000..4b5be3e2d --- /dev/null +++ b/clean.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +#set -x + +recursiverm() { + printf 'clean '$1'\n' + for f in $(find $1 -type d -iname "bin" -or -iname "obj" -or -iname '_resharper*' -or -iname '*.svn*'); do + printf $f'\n' + rm -rf $f + done + find $1 -type f -iname "*.user" -or -iname "*.resharper" -or -iname '*.pidb' -or -iname '*.pdb' -delete +} + + +recursiverm "." + +set +x +printf 'done\n' +sleep 5 +