Adding custom GTK# widget to Glade catalog - mono

I've created a custom widget (with my own drawing) in C# using GTK# 3 toolkit.
Now i want to use it in Glade designer.
Is it possible to add this widget to Glade palette?
It seems that this documentation:
https://developer.gnome.org/gladeui/unstable/catalogintro.html
can be used to add widgets written in C/C++ to Glade palette, but what is the correct way to get the same result for widgets written in C#?
Thanks.

It may not be possible. The way to approach it would be to write a shim library in C that uses libmono to interoperate with your C# widgets. Here is a link to Mono's documentation on how to do that. The entry point into your shim library would then be listed in the <init-function> element in the Glade catalog.
Alternatively, you can "fake" the widget classes in the Glade catalog; their properties and signals will appear (though you have to manually write them in the catalog file.) If they are container widgets you won't be able to add child widgets to them. They'll just appear as grey boxes in Glade. You do this by adding <glade-widget-class> elements to the catalog as described on this page of Glade's documentation.

Related

Is there a way to include JavaFX controlsFX in Intellij Scene Builder?

I was wondering if there is a way to include controlsfx into the Scene Builder inside JetBrains Intellij. I tried to google it but I did not find anything relevant or updated.
just add the controlsfx jar file to the project libraries. then you can use the controls in it in the built-in scene builder
If you create user control in your project intellij will allow you to use it directly in the built-in scene builder just as you use external controls.

How to programmatically get images commonly used in Eclipse Plug-ins

What are the places to look for if a plug-in wishes to re-use images that are defined by other plug-ins.
For example, where to look for if a plug-in needed the 'Terminate' icon, defined somewhere in the debug plug-in.
Now and then I have been searching for images and though it would be useful to list the locations of commonly used images in one place.
Some of the platform plug-ins make (some of) their images available though ImageDescriptors. Unfortunately all in a slightly different way.
Platform UI - org.eclipse.ui
This plug-in defines images for public use in ISharedImages. To obtain an image descriptor, query the workbench's image registry like this:
PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJ_FILE );
IDE - org.eclipse.ui.ide
The IDE plug-in adds some more images to the workbench image registry and lists the registered names in IDE.ISharedImages.
To obtain an image descriptor, also query the workbench's image registry like this:
PlatformUI.getWorkbench().getSharedImages().getImage( IDE.ISharedImages.IMG_OBJ_PROJECT );
Debug - org.eclipse.ui.debug
The debug plug-in defines shared images in IDebugUIConstants, image name constants start with IMG_. They can be access through the DebugUITools utility class.
For example:
DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_ACT_RUN );
Compare - org.eclipse.compare
The compare plug-in defines ImageDescritpors for Next and Previous images directly in CompareUI.
For example:
ImageDescriptor next = CompareUI.DESC_DTOOL_NEXT;
Team - org.eclipse.team.ui
The team plug-in as well uses a ISharedImage interface to declare overlay images to decorate modified, conflicting, etc. resources.
The image descriptors can be obtained through the TeamImages class:
ImageDescriptor imageDescriptor = TeamImages.getImageDescriptor( ISharedImages.IMG_DIRTY_OVR );
JDT - org.eclipse.jdt.ui
JDT aligns with the workbench when providing images. Its ISharedImages interface defines the registered names and JavaUI.getSharedImages() allows to obtain the respective image descrptors.
Directly Accessing Images
AbstractUIPlugin has a static helper method to get a descriptor of an image in an arbitrary plug-in.
ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin( "the.bundle.id", "/icons/sample-image.png" );
Warning: Loading images in this way is risky and should generally be avoided. Image locations are not part of a plug-ins API and a plug-in author may choose to delete or move the image which will break your code. If you need proof that this actually happens, have a look at this post.
If you need an image from a plug-in that doesn't make it available through its API, you should prefer to place a copy of that image within your plug-in.

ExtJS 5 Custom Theme Testing

I recently started to create custom theme for ExtJS 5 by Sencha.
Following http://docs.sencha.com/extjs/5.0.0/core_concepts/theming.html I managed to create ThemeDemoApp, inherit ext-theme-neptune, change $base-color to green and refresh/rebuild ThemeDemoApp with my-custom-theme. All ok.
My problem is, ThemeDemoApp is quite poor for testing a custom theme. A panel, tab, button and a modal window. That's it?
After bit of googling I bumped into http://dev.sencha.com/ext/5.0.0/examples/themes/index.html. (Why isn't this mentioned in the guide?!) Heading says: View and test every Ext component against bundled Ext Themes, or your own custom themes.
My question is: How? How do I test my own custom theme against this example? Do I have to dig into the source (themes.js) and build such page/application myself?
The examples - including the Theme tester - is included in the ExtJS download.
You can modify the list of themes available by editing the shared/options-toolbar.js file.
To get it to find your theme, you'll either need to name it similar to the others (ext-theme-name), or modify themes.js accordingly.
Or you could just hack the theme.js file to hardcode your theme.
(Ext JS 4 used to create an example page for themes automatically - it doesn't seem to do that now, though)
According to advice at How do I include a JavaScript file in another JavaScript file? I decided to load both options-toolbar.js and themes.js (with just minor modification - commenting out Ext.onReady(...) function in themes.js) and I used functions getBasicPanel(), getCollapsedPanel(), etc. in my own application to create the same testing page (absolute-layout container that fits the page).
Anyhow, I guess Robert's answer is the correct one - there is no prearranged, ready-to-use functionality from Sencha :-(

Metro equivalent for HeaderedItemsControl

Converting a WPF application from .Net 4.0 to Metro.
It uses HeaderedItemsControl in various places.
I have not been able to find that control or a replacement candidate in Metro (Windows.UI.Xaml namespace)
So what is the recommended control in Metro to provide the functionality of HeaderedItemsControl?
You could easily create one by deriving from ItemsControl and adding a few simple dependency properties. You can see which properties are present in the WPF version here. You might not need all of them, but from a quick glance I can see a Header property which is just an object type. You would put a ContentPresenter in your HeaderedItemsControl's ControlTemplate and bind its Content to the HeaderProperty using TemplateBinding. Then bind the HeaderTemplate to the ContentTemplate of the ContentPresenter, etc.
Not sure how useful it is though to port WPF XAML code directly to WinRT. You're just asking for trouble in terms of code compatibility, but also porting a likely desktop-designed UI to a more touch-centric world.

Library for using SVG in Windows Forms / WPF?

Are there any libraries which
Allow to draw svg direct to a Windows Forms application
to a WPF application
I draw graphics and design everything with Inkscape, because I love that program.
Then I have those stunning svgs and have to either export them to png (WinForm) to use them or convert them to xaml-code (WPF) (Kaxaml helps me).
Is there a way to directly use my svgs?
Wow, I just read that Inkscape supports saving as XAML. I didn't realize that up to now shame.
But that still doesn't solve my problems with WinForms...
I personally hate how there's no native support for SVG in Microsoft's products/development tools. I've found two fairly complete but still immature SVG libraries that seem to be active as of this writing, definitely in need of contributors though.
WPF : Svg2Xaml (open source)
WinForms : SVG rendering engine (open source)
IIRC both libraries output a Drawing object which can be used directly through the Image class; You'll figure it out, they're both pretty straightforward to use.
If you want to load them directly into WPF,
I got better results from: https://github.com/ElinamLLC/SharpVectors
Yes, you can use ReaderSVG from AB4D to get WPF directly from XAML.
Regarding WinForms, removed a previous link to Kent Boogart's example as it was deleted sometime in 2019.
Copy below from this dotnetways post
To host a WPF control or WPF user control (wpfControl in this example) into Windows Form application, create an instance of ElementHost Class and add your WPF control/user control as child to the instance of ElementHost.
using System.Windows.Forms.Integration;
//Assembly: WindowsFormsIntegration (in WindowsFormsIntegration.dll)
//...
ElementHost elementHost = new ElementHost();
elementHost.Dock = DockStyle.None;
elementHost.Child = wpfControl;
Now, add the instance of ElementHost to a container control in your windows form (for instance containerPanel here)
containerPanel.Controls.Add(elementHost);