Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Custom Wizard Page Operation's Run Priority

Karol Krizka wrote:
Thanks for the reply! (more below)

On Fri, Jun 13, 2008 at 10:31 AM, Alex Chapiro <achapiro@xxxxxxx> wrote:
Karol Krizka wrote:

I am working on a CDT projectType that needs to have a certain
environment configured before it can be created. What I though of
doing is to add an custom wizard page using the
org.eclipse.cdt.managedbuilder.ui.newWizardPages extension, where the
user will be asked to enter the configuration for the environment.

Actually, you shouldn't create new dialogs, it's already there. You can see
it if you on Select Configuration page press Advanced Settings button.
I'm not making new dialogs, just extending the existing ones.
I just meant that you could avoid creation of custom page. Page for environment setting already exists in properties, Page with path setting or whatever you can generate using option descriptions in your xml.. Connection between these two pages you can establish using implementation of IConfigurationEnvironmentVariableSupplier interface. The only thing you maybe don't like is that this stuff implemented "on the second tier" and gets visible only after pushing button  as I mentioned before.
tricky thing is if you'd like calculate environment using some basic
parameters. In this case you can use class which  implements
IConfigurationEnvironmentVariableSupplier interface. In my case for example
I calculate environment from platform, compiler version, language type and
something else. To simplify users task I let him edit these more obvious
parameters on the extra tab property page, then reevaluate environment
(automatically). On the other hand user can edit environment directly.
Anyway, I couldn't do these changes without changing of CDT stuff.

I'm already using that class during the build process. I just needed
to extend the wizard page to get a few options to create the
environment. The environment variables are set using a bash script,
and the location of the script is what I need to get from the user.

Then I wanted to use the operationClass to process the information,
run the necessary commands and create the project using a template.
But the problem is that the operationClass is run after the project is
created, which is too late. I have several ideas on how to get around
this, but they seem a bit hacky and I'm wondering if there is a
cleaner way to make sure that operationClass runs before the project
is created.

This functionality exists in MBS and "almost" works. MBSWizardHandler has
doCustom method. To do extra work during project creation I had  to create
invisible custom page and added custom operation to it. It works smooth now,
but unfortunately I had to change CDT stuff once again (not much, I hope).

Ah, I'll take a look at that method.

Here is what I'm thinking of doing
1) Add a button to the custom wizard page that says "configure
environment". Clicking it will run what needs to be run and enables
the Next/Finish buttons of the wizard.

2) Add another custom process at the beginning of the template that
will somehow grab the options and run the scripts. I don't like this
approach, because I plan to create several templates for the
projectType, and I don't really want to make sure that the custom
process is included in every one of them...

On a slightly related topic, is it possible to dynamically add/delete
the custom page to the wizard? I know I can specity the projectType,
natureID and toolchainID of projects for which to display the page,
but that is not enough for what I need to do. The environment that
this page will be created for is specific to the entire workspace, so
I only need to display it the first time the user tries to create a
project. What I'm thinking of doing is showing editable text boxes if
he has not configured it yet and labels with current options if he has
configured it, but it would be even better if I could not display
anything at all.

Yes, you can manipulate pages visibility as well as re-evaluate dynamically
previous and next pages

I was afraid someone would suggest that. :P I guess I could do some
"splicing" to remove the page after it was loaded. I'll play a bit
around with it.

What's wrong with that?

I'm afraid I wasn't clear in my explanation. Maybe it would be better if I show you screenshots of UI. I'm just afraid that my pictures cause extra traffic in mailing list.. If it is still interesting to you, I can send pictures to your e-mail address

Back to the top