NSProgressIndicator's setControlTint has no effect - colors

I have a very simple task: change the NSProgressIndicator's color into graphite when the progress is paused by user, that is a determinate progress bar. I found the method setControlTint but after using it there is just no effect. I also searched a lot there is not much clear answers. Is subclass NSProgressIndicator and do some custom drawing a must? I just wonder why this method there and no further document or discussion about proper usage.
Thanks a lot for any help :)

See doc:
Doc for NSProgressIndicator
setControlTint:
Sets the receiver’s control tint.
- (void)setControlTint:(NSControlTint)controlTint
Parameters controlTint a constant indicating the desired control tint. Valid values for controlTint are described in NSCell.
Go to NSCell doc:
setControlTint:
Sets the receiver’s control tint.
- (void)setControlTint:(NSControlTint)controlTint
Parameters controlTint - an Designated Initializers value that specifies the tint of the receiver.
Designated Initializers
When subclassing NSCell you must implement all of the designated initializers. Those methods are: init, initWithCoder:, initTextCell:, and initImageCell:.
In to words you must subclassing NSProgressIndicator and implement all of the designated initializers. (see above).

Related

Catel using IEditableObject

I am testing Catel MVVM and I would like to use the implemented IEditableObject. I have got some questions, but the documentation I've found, isn't very detailed in this point.
Did someone have a helpful link, how I have to set this up or how it works, or something like this? Or should I really have a look to the source code, to get these points and get a feeling, how catel do the work.
The questions, that I have got, are these:
What exactly does the method SaveViewModelAsync()?
Where does it save the data, or where can I configurate it?
How can I use it with Orc.EntityFramework6, or do I have this manually?
What's the different between SaveViewModelAsync() and SaveAsync()?
What's the different between CancelViewModelAsync() and CancelAsync()?
I can only cancel the editing one time. If I edit the same ViewModel again, the cancel has no effect anymore.
I think there is only an BeginEdit() missing after the first cancel, like this documentation suggests. Here some informations to this point:
I edit the ViewModel and the Model set the new value
I execute CancelViewModelAsync(), the setter in the Model is not touched
I edit the ViewModel and the Model set the new value. The current value is the original value
I execute CancelViewModelAsync(), nothing happened
I edit the ViewModel and the Model set the new value. The current value is the edited value from step 3, like the View shows
Thanks for help
Lots of questions in a single question, but will try to answer them:
Q1) What exactly does the method SaveViewModelAsync()
It calls IEditableObject.EndEdit on all models that support it (and are decorated with the ModelAttribute
Q2) Where does it save the data, or where can I configurate it?
It just approves the changes to the model, it doesn't "save" anything. So for example, if you are using Catel models, it will commit the changes made by the VM. If you would cancel, it would revert the model back to the state it was when you initialized the VM.
Q3) How can I use it with Orc.EntityFramework6, or do I have this manually?
You have to do this manually. The VM's in Catel work with models, it's up to you when / where you persist them to (e.g. a database, disk, web service, etc)
Q4) What's the different between SaveViewModelAsync() and SaveAsync()?
SaveViewModelAsync is the public method being called and takes care of the plumbing for you. SaveAsync is a method you can override to add additional save logic (e.g. storing in database, update services, etc).
Q5) What's the different between CancelViewModelAsync() and CancelAsync()?
See Q4

In Blue prism button is not able to click while executing mode

Hi I am new to blue prism
My question is:
I have button in my application after recording if i try to highlight it is working fine but while executing it is not able to click the button and i am not getting any error.
If you provide a screenshot of the attribute list in your application modeler, it might be easier to provide an accurate answer. However, for now, I can give you some pointers:
For most applications the following can be unticked:
any elements with a blank value
all 'Parent' attributes unless
required to make the element a unique match
the 'Visible' and 'Enabled' attributes usually have no impact if left ticked or unticked, so can often be unticked
With any attributes which may not be persistent and could be prone to changing — i.e. element count, application’s URL, etc.—, it is recommended to untick them or, if required in your process, use the wildcard match type to dynamically build the corresponding values which will allow easy identification.
To speed up finding the elements, it is recommended that the Match Index attribute be used when possible. This works by stopping Blue Prism from trawling through the application model for duplicate elements once one matching element is found.
It is also recommended to add a wait stage at the start of each action. This will handle system latency and provide a correct path for your process:
The above are some pointers that I have consolidated for your ease. However, all the help you need can be found on the Blue Prism portal itself : Blue Prism Documentation
Hope this helps.. Good luck!

How can I activate (display) a view using Revit API?

I am trying to activate a view using Revit API. What I want to do exactly is to prompt the user to select some walls, but when the user is asked that, he can't switch views to select more walls (everything is greyed out at that point).
So the view I want to activate (by that I mean, I want this view to be actually shown on screen) already exist, and I can access its Id.
I have seen threads about creating, browsing, filtering views, but nothing on activating it... It's a Floor Plan view.
So far I can access its associated ViewPlan object, and associated parameters (name, Id, ..).
Is it possible to do ?
Thanks a lot !
Arnaud.
I think the most preferred way is the UIDocument.RequestViewChange() method. The tricky part about this is that unless you've designed your application to be modeless with external events or idling, it may not actually happen until later when control returns back to Revit from your addin.
(There's also setting the UIDocument.ActiveView property - not positive if this has different constraints).
The other way that I have done it historically is through the use of the UIDocument.ShowElements() command. The trick here is that you don't have control of the exact view - but if you can figure out the elements that appear only in that view, you can generally make it happen (even if you have to do a separate query to get a bunch of elements that are only in the given floorplan view).
Good Luck!
I think the solution to your problem may be:
commandData.Application.ActiveUIDocument.ActiveView = View;
The ActiveView is a property and it has {get and set} options.
ActiveView has only a get accessor, what Mostafa suggests will not work.
I have used the RequestViewChange() method with a modal dialog and have not had problems so far.

Conditionally Enable Custom Converter based on a Users Input

I would like to conditionally run a custom converter. I have an XPages that handles editing and new data on the same page. The user selected a radio button to edit or create a new item.
The input fields are shared between these two functions. Upon page load I do not know what the user will do so I cannot use the "Loaded" property of the converter.
I need to format the data in this format '$900,000'. Note that there is no cents in my required format.
The built in converter for numbers or currency fails me because no matter what I do, it always add the cents. I assume that this is a bug in XPages. It doesn't matter if I say "Integer Only" or set the Maximum Fraction Digits to zero. The cents do not go away.
I have a custom converter that works fine for me, but only works when it is recalculated once, and fails when recalculated. I have tried setting the partial refresh updates to "Do not validate or update data" and this works, but breaks other parts of the page where I needs the updates to be enabled.
This application is soon to be deployed and it is too late for me to re-engineer the whole page structure to solve this issue -- too many moving parts. All I need to do to please the testers it to get rid of the cents (xxxx.00) that are added to the value, and still have everything else work.
My problem is singular, but my questions are tri-fold. How can I:
Get the built-in currency converter to remove cents the way it should? Or
Get the custom converter to be enabled ONLY based on a user-entered value? Or
Help me think of a different approach to solving this issue?
Steve, I have really fought a battle with converters as another problem is that they are all run prior to validation - and as such error messages are not necessarily shown in sequential order.
Therefore, I ended up using validators (also for the work of the converters). And on top of that I use "binding" of the components (not the values) to easily access other fields on the same page. This allows for conditional checks/logic. If you have not tried component binding, then there is a great introduction by Tim Tripcony.
/John
A couple ways to do this, One would be to do the conditionally checking of user in the custom converter. Another approach would be to use a PhaseListener and in RenderResponse Phase get the Component and set the Converter on the component to null when you don't need it on the component. I typically don't use converter though if its just the display of the number, just if I actually need the value converted. I would use something like a display Mask I've recently used a jquery plugin called maskMoney that worked well for a similar problem.
I assume your converter is on an editable field, because otherwise it won't fail on submitting data.
The problem sounds to be timing. The converter has to run during page load, in order to convert the Number value stored in the database to a String value required by the browser. So some default needs to be set, which presumably is to connect it.
If you're then wanting to change the display option based on input, you've got to do a partial refresh after the input, in order to recalculated whether cents should appear.
Once the inputted value is passed back from the browser to the underlying component tree, you can calculate accordingly - providing your converter knows what to interact with. The process dugint he partial refresh is to restore the component tree, apply the request values (store the String value from the browser into the submittedValue property of each component), process any converters or validators, then update the component tree. So when the converter runs, the radio button's value property isn't set, so it works on the last refresh's setting - the default.
By choosing "Do not validate or update data" then you're saying don't bother writing back any inputted entries from the browser into the component tree. So I'm sure you can that means the converter will know nothing about what's been input.
John's suggestion on binding is a good one, but remember you'll be needing the submittedValue property of the relevant component. For a radio button, I'm not 100% sure what that will be, but you should be able to print it out.
The mask approach may work. Someone else used that recently to make integers work right.
The other option is to look at the Extension Library's Dojo Number Validation Text Box, which has a javaType property and a more flexible set of converters. That may well allow you to avoid cents. If it does and you don't want the Dojo look and feel, it's converter should give some ideas on what your converter needs to do to remove cents.
I could not get any of the answers above to work, so I cloned the text box. I made one show up for "Edit", and one show up for "New". I kept everything the same, but only added the custom converter to the one that shows for "Edit".
Thanks again for all your help. The XPages community rocks!

OpenCms Element (may be page) properties

I am working with OpenCms 8, I having a problem I am suppose to define custom properties to page and external links, but when we define new properties one can add any input, I want to limit that input, i.e. Yes/No, is it possible any suggestions?
Best Regards
With custom properties, do you mean 'properties' as the one you define when clicking on the page's icon and the selecting 'properties', or do you mean custom fields (let's call it attributes) in the schema xsd for your specific page type? Because that's a difference.
For properties, you can't validate the user's input, for attributes (which you can also map to properties on the other hand), you can restrict the user's input, i.e. by still keeping the type to 'string', however, only providing a selection list with 'yes'/'no' as the options.
To answer your question more precisely, please let me know which schema/xsd you're using for your page.
Are you new to OpenCms, or have you used it before? Just to understand your experience level with it.

Resources