Wizard before showing the shell wpf - wpf

I have a wpf application, which has file menu and can open and save projects. I am using Prism and MEF.
Now I need to have a wizard showing the user:
To continue as usual
MRU history so that he can load the project to the work area by double clicking.
MRU service is also in a module(dll), which we add to the catalog in mefbootstrapper.
What would be the best way to achieve this?

As commented above, there would be no need to show the Wizard before loading the Shell:
Using OnDemand modules as you mentioned, you could create an initial generic ShellView, perform the Bootstrapper tasks and finally show the Wizard with the Shell and Bootstrapper already initialized, and the Wizard would then decide the flow of the app according to the user choice.
As the Modules would be loading OnDemand, you would not be initializing unnecessary Modules or objects.
Regards.

Related

Sharing databases between projects within Intellij

I use Intellij to inspect databases, run sql, view data in tables etc. This all works fine but the only thing I am missing is the ability to define these datasources once and view them in all my projects i.e. that I can share them between other projects and not have to redefine them for new projects. Is this possible in Intellij?
Go to the Database tool window and click on the Data Source Properties button. Select the data source you want to make global. Click on the Make Global button in the tool bar above.
The Make Global button looks like this:
Now you can use the data source from all your projects. However a global data source is not stored in the project files, so any other developers working on the same project will need to define their own data source.
The Make Global button is no longer green (Intellij Ultimate 2018.02).
It's located above the datasource list, as in the (crappy) screenshot.
In Intellij 2020.1, click on the Database view, then click on "Data Source Properties" (database with wrench icon). On the dialog that opens, click on "Make global", which is the 5th icon (screenshot below).
In IntelliJ 2019.1, 2019.2 to share connection to DB with multiple projects:
Open Database panel
Datasource Properties
Make Global
So how I did it on 2018.3 was to go to the Database tool window then right click on your datasource you want to copy then Database Tools -> Copy Datasource to Clipboard. In the Database window for the project you want to copy to click the + at the top left and it has an option to Import from Clipboard.
In IntelliJ 2019.3 to share connection to DB with multiple projects:
. Open Database panel
. Data source Properties
. Click the blueMake Global button

Seeking RedMine plugin example: to add a custom spinner control to the ISSUE screen

Seeking an example RedMine Plugin or tutorial to add a spinner control to the RedMine ISSUES UI page.
This has two parts: (1) adding the spinner control to the RedMine page UI and (2) adding a new column in the RedMine DB to store the spinner's input value.
http://www.redmine.org/ Redmine is a flexible project management web application. Written using the Ruby on Rails framework, it is cross-platform and cross-database. Redmine is open source and released under the terms of the GNU General Public License v2 (GPL).
I'm assuming you want something like this.
In your plugin, simply create a new custom field format (inherit from IntFormat which is defined in lib/redmine/field_format.rb) and override the edit_tag method to render your control.
Then in Redmine, with your plugin installed, you can just create a custom issue field using the newly defined format. This field will then be rendered the way you want. There is no need to patch Redmine's Views or add a new column to the database for this.

How can I instantiate the window/view that implements Caliburn Micro's IShell interface inside an Outlook Task Pane

I have a desktop application that is based on the Caliburn Micro framework. Everything works great. Now I am trying to port the same app into Outlook as a plugin.
In the desktop app, based on an entry inside app.xaml, Caliburn knows where to find the bootstrapper and instantiates it.
In case of the Outlook plugin, I've created an overridden bootstrapper that I instantiate explicitly inside ThisAddIn.ThisAddIn_Startup(). This one of course does not use the Application object.
I can even invoke a particular view using code similar to this
var windowManager = IoC.Get<IWindowManager>();
windowManager.ShowDialog(new MyViewModel());
And that will cause the view associated with the view model to be shown in a modal window on top of Outlook (hence validating that Caliburn Micro is able to find a view from a view model inside my Outlook plugin)
What I haven't figured out how to do is instantiate the Shell so that I can start using its functionality.
My expectation was that since my bootstrapper derives from BootStrapper, and I have registered my shell view model implementation with the MEF container as exporting IShell, Caliburn will automatically instantiate the shell view model and start using it. That is not happening.
My goal is to get the shell loaded inside my plugin's task pane as the container for other views that I will be loading based on user actions.
Any ideas or tips on how I can get this to work? In general has anyone got a shell implementation loading inside an Outlook or Office plugin's task pane?
Thanks!
Do you mean instantiate via Bootstrapper<Shell>. This uses the Window Manager underneath but I don't think that extends to outlook. There is nothing stopping you using the same code above to initialize your shell manually, composition will handle the rest of the application.
IoC.Get, by default calls Activator.CreateInstance so it is possible your problem is with MEF. The method that drives opening the Shell DisplayRootViewFor() calls this line.
windowManager.ShowWindow(IoC.GetInstance(viewModelType, null), null, settings);
If MEF is not hooked up properly it will fail causing your shell not to load.

Loading a application inside another one

I would like my application WPF can load a ".exe" file and show it inside itself. I have my main WPF that checks a folder where it load plugins with MEF, but I only can load "dll" files without UI. So I found x plugins, I can load informations and in the same way I want to open a UI associate with the dll loaded.
I don't know if it's understandable what I want to do but if you have an idea that can help me, I take it.
In a dll you can add UI elements.
Add for example a Window to your plugin project (project with dll output) and use the following code when you create an instance of your plugin in your main application:
Window win = new Window();
win.Show();

DotNetNuke - Module settings disapear on new user control

I have a DNN module which renders a user control (view.ascx)
All is ok ( I am logged in ) and I get the DNN settings menu.
however when I add another control and load it like so:
string url = Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "View_Details", "mid=" + ModuleId.ToString());
Response.Redirect(url);
I lose the settings link when the new control loads.
Any ideas? Is there a property somewhere to turn on settings for the loaded user control?
When you have "mid" in the querystring, you're going to be using module isolation (i.e. that module control will show up in the edit skin's ContentPane and will be the only module on the page). When in module isolation, the action menu doesn't include settings. This is just a fact of DNN.
You have a couple of options. First, you could choose another navigation method (see Michael Washington's old (but still good) Module Navigation Options for your DotNetNuke® Module article).
Second, you could put your own link to the Settings on that control. You may be able to implement IActionable and just add it back to the action menu (I'm not sure if that would work), or you can add some sort of button or navigation bar to your module (potentially on all of the controls for consistency).
Are you designing this module for the general DNN community, or for a client that isn't familiar with DNN? People with DNN experience won't expect to be able to get to the settings one they're "inside" a module.

Resources