handling event in qtruby - ruby

I trying Qt with Ruby and QtDesigner but I don't understand how to handle events. I read and tried signals and slots but I don't see how I customize behavior for example if I want to trigger an action when I click on a button.

From the home page:
button = Qt::PushButton.new('Quit') do
connect(SIGNAL :clicked) { Qt::Application.instance.quit }
end

Related

How to change Action bar for each Tab in Nativescript Angular

I hav TabBar app using Nativescript Angular. I want to change the Action Bar buttons based on the selected tab.
I just follow this tutorial https://www.youtube.com/watch?v=7go3L70QfIQ
But, don't know how to use TabView.selectedIndexChangedEvent in Angular.
If anyone has done this, please share the piece of code.
Thanks
Use this example as a reference on how to use the selectedIndexChange event in Angular based application.
For example:
<TabView selectedIndex="0" (selectedIndexChange)="onIndexChanged($event)">
<!-- more code follows here -->
And then in the component file use the onIndexChanged callback
public onIndexChanged(args) {
let tabView = <TabView>args.object;
console.log("Selected index changed! New inxed: " + tabView.selectedIndex);
}
I solve the issue using rxjs/Observable notifications. Logic is post a notification when the tab changes happen. Based on the tab index, I can decide the action bar button tap event methods.
// send notify to child components
let message = {
"tabIndex" : this.tabIndex,
"tappedButton" : "someButton"
};
this.notifyService.send(JSON.stringify(message));

How go from one UI to another UI on Image button click event in juce introjucer?

can you please tell me How go from one UI to another UI on Image button click event in juce introjucer?
Basically you have to:
1.- Parent component must inherit from ButtonListener, and you must implement the buttonclicked method
void WindowComponent::buttonClicked (Button* activeButton)
{
if (activeButton == &someButton)
{
gotoOtherPage();
}
}
2.- Your "UIs" i must suppose are components, if so just do something like:
component.setVisible(false),
otherComponent.setVisible(true),
Or perhaps stash them in a TabbedComponent, hide the tabs or overlap some buttons and then just do:
tabbedComponent.setCurrentTabIndex(someIndex);
That should get you going, in case you need help to draw a button just do something like:
addAndMakeVisible (&someButton);
someButton.setBounds(...);
someButton.addListener(this);
Check out the doxygen docs, they are quite helpful.

how Remove A Control From Ajax Mode Inside A Repeater?

I am using radajaxmanager for getting ajax mode.
But many times I prefer to remove a control such as a link button inside a repeater from ajax mode (means repeater has been added to radajaxmanager).
How can I do this job with radajaxmanager?
That control goes in the right way and it is not appeared in the radajaxmanager configuration, and we only have repeater there.
we should use OnRequestStart event (client-side) of RadAjaxManager like below :
function OnRequestStart(s, e) {
if (e.get_eventTarget() == 'bla') {
e.set_enableAjax(false);
}
}
A more comprehensive set of examples on how to specifically exclude a control can be found in the Telerik documentation here:
http://www.telerik.com/help/aspnet-ajax/ajax-exclude.html

Navigating through widgets using the TAB key

What should I do in order to allow users to navigate through widgets using the Tab key (in either Gtk or any derivative like gtkmm, pyGtk)?
This is build into the default "key_press_event" signal handler. If you set your own handler you must return FALSE from this handler because a TRUE means you have handled the key and no further processing is done. You can use this to avoid the default tabbing.
And i would like to add a question here, because i have no idea how i can do the focus-next-widget, focus-prev-widget action programmatically.
Is tabbing through your controls not working? This should work out of the box as you build up your forms. To customize the order of moving through the widgets as you tab, you use the set_focus_chain methods: gtk, pygtk, gtkmm.

Removing events in Shoes

The is any way to remove the events in Shoes? I searched around many websites and references but I can't found any way to remove a event... I minding that I will need to create my own event manager... its really nescessary? or there is a way to desattach event listeners?
I have found that Shoes only allows a single listener method on a given event, so you can remove a previous listener by calling the event and not passing a block to it.
For example, this Shoes app will clear the click event after it is clicked one time. If you remove the call to click inside the block, then it will fire repeatedly.
Shoes.app
#p = para "Empty"
#click_count = 0
click do |b,x,y|
#click_count += 1
#p.replace "Clicked #{#click_count} time(s)."
click # remove the click handler
end
end
Which keybindings do you want to remove? All events on the Shoes app or just the default bindings?
If you want to override bindings reserved for shoes like "alt-/", "alt-.", "alt-?", paste the following code into the file which contains your application code
class Shoes::App
def Shoes.show_log # gets called on alt-/
end
def Shoes.show_manual # gets called on alt-?
end
def Shoes.show_selector # gets called on alt-.
end
end
The above code monkey-patches the shoes code and in-turn does nothing when the corresponding keys are pressed.
You can use the same technique for rest of the default bindings. grep the shoes source for the key bindings, find the corresponding method and define an empty method within your app to override the built-in method.
Have you tried method.unbind(obj)?
Can you clarify what you mean by "remove a event"? Are you wanting to ignore a specific event or are you wanting to "turn off" an event listener?
If the former, I'd suggest writing a listener that just ignore the event.
If the later, why not make the body of the listener conditional on some externally accessible value, giving yourself an on/off switch.
If you are wanting something else, edit the question to clarify and I'll stop back later and edit my answer.
In response to your comment, I'd re-suggest the second of the above alternatives. If you wanted to get really fancy you could write something like this:
$keypress_listeners = {}
keypress do |key|
$keypress_listeners.values.each { |l| l.call(key)
end
$keypress_listeners[:hero_controller] = lambda { |key| ... }
:
:
$keypress_listeners.delete[:hero_controller]
and likewise for any other events, but that is probably overkill. On the other hand, it would give you total control of the event processing.

Resources