I have an interesting problem. I have a dialog which refuses to go away
once it has finished it''s associated code.
Here is the code:
class DBPopulateDialog < Wx::Dialog
def initialize(parent, id, title, pos, size, style, name)
super(parent, id, title, pos, size, style, name)
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
@server = Wx::TextCtrl.new(self, -1, "Server",
Wx::DEFAULT_POSITION,
Wx::DEFAULT_SIZE)
@username = Wx::TextCtrl.new(self, -1, "Username",
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE)
@password = Wx::TextCtrl.new(self, -1, "Password",
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_PASSWORD)
@tree_base = Wx::TextCtrl.new(self, -1, "LDAP Tree Base",
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE)
sizer.add(@server, 1, Wx::EXPAND|Wx::ALL, 5)
sizer.add(@username, 1, Wx::EXPAND|Wx::ALL, 5)
sizer.add(@password, 1, Wx::EXPAND|Wx::ALL, 5)
sizer.add(@tree_base, 1, Wx::EXPAND|Wx::ALL, 5)
button_sizer = create_button_sizer(Wx::OK|Wx::CANCEL)
sizer.add(button_sizer, 0, Wx::EXPAND|Wx::ALL, 5)
# Okay Button Event!!!!
evt_button(self.get_affirmative_id()) { |event| on_okay() }
set_sizer(sizer)
show()
end # initialize
# Collect computer records from Directory and add to database
def on_okay()
ldap = Net::LDAP.new :host => @server.get_value, :port => 389, :auth
=> { :method => :simple, :username => @username.get_value, :password
=>
@password.get_value }
filter = Net::LDAP::Filter.eq("objectcategory",
"CN=Computer,CN=Schema,CN=Configuration,#{@tree_base.get_value}")
# We don''t want to return a result set as it could be pretty huge
and
we don''t need it.
# We are treating the container name as the group name here.
ldap.search(:base => @tree_base.get_value, :filter => filter,
:return_result => false) do |record|
computer_name = record.cn.to_s
begin
os = record.operatingsystem
rescue
os = ''''
end
lab =
record.dn.split('','')[1].split(''='')[1]
# Check db for lab and add it if it isn''t already there
unless Lab.find :name => lab
lab = Lab.new(:name => lab)
lab.save
lab = lab.name
end
# Save machine record
machine = Computer.new(:name => computer_name, :os => os,
:location
=> lab)
machine.save
end
log_file = File.open("log.txt", "a"); log_file.puts
"\n\nFinished
populate next instruction is close\n\n"; log_file.close
self.close()
end # on_okay
end # DBPopulateDialog class
After filling out the proper information and clicking on okay the data is
populated however when it finishes the dialog hangs around. Furthermore it
won''t close when you click on Cancel or the Window close widget (the X
in my
case). The log line executes just fine, the dialog just refuses to close.
-Glen
--
"Hey brother Christian with your high and mighty errand, Your actions speak
so loud, I can''t hear a word you''re saying."
-Greg Graffin (Bad Religion)
_______________________________________________
wxruby-users mailing list
wxruby-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/wxruby-users
Glen Holcomb wrote:> I have an interesting problem. I have a dialog which refuses to go > away once it has finished it''s associated code. > > Here is the code: >...> After filling out the proper information and clicking on okay the data > is populated however when it finishes the dialog hangs around. > Furthermore it won''t close when you click on Cancel or the Window > close widget (the X in my case). The log line executes just fine, the > dialog just refuses to close.I haven''t tried out your code, but maybe you need to call end_modal, if you''re calling show_modal to start the dialog? alex
If it is modal I''m not intending it to be but I''ll check. On Thu, Oct 2, 2008 at 2:42 PM, Alex Fenton <alex at pressure.to> wrote:> Glen Holcomb wrote: > >> I have an interesting problem. I have a dialog which refuses to go away >> once it has finished it''s associated code. >> >> Here is the code: >> >> ... > >> After filling out the proper information and clicking on okay the data is >> populated however when it finishes the dialog hangs around. Furthermore it >> won''t close when you click on Cancel or the Window close widget (the X in my >> case). The log line executes just fine, the dialog just refuses to close. >> > > I haven''t tried out your code, but maybe you need to call end_modal, if > you''re calling show_modal to start the dialog? > > alex > _______________________________________________ > wxruby-users mailing list > wxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/wxruby-users >-- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can''t hear a word you''re saying." -Greg Graffin (Bad Religion) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20081002/d8e693d2/attachment.html>
On Thu, Oct 2, 2008 at 2:45 PM, Glen Holcomb <damnbigman at gmail.com> wrote:> If it is modal I''m not intending it to be but I''ll check. > > > On Thu, Oct 2, 2008 at 2:42 PM, Alex Fenton <alex at pressure.to> wrote: > >> Glen Holcomb wrote: >> >>> I have an interesting problem. I have a dialog which refuses to go away >>> once it has finished it''s associated code. >>> >>> Here is the code: >>> >>> ... >> >>> After filling out the proper information and clicking on okay the data is >>> populated however when it finishes the dialog hangs around. Furthermore it >>> won''t close when you click on Cancel or the Window close widget (the X in my >>> case). The log line executes just fine, the dialog just refuses to close. >>> >> >> I haven''t tried out your code, but maybe you need to call end_modal, if >> you''re calling show_modal to start the dialog? >> >> alex >> _______________________________________________ >> wxruby-users mailing list >> wxruby-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/wxruby-users >> > > > > -- > "Hey brother Christian with your high and mighty errand, Your actions speak > so loud, I can''t hear a word you''re saying." > > -Greg Graffin (Bad Religion) >Well end_modal doesn''t do anything either. Oddly before clicking on the "okay" button the "cancel" button works, however after the on_okay event is processed the "cancel" button does nothing. -- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can''t hear a word you''re saying." -Greg Graffin (Bad Religion) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20081003/7cace179/attachment.html>
On Fri, Oct 3, 2008 at 11:39 AM, Glen Holcomb <damnbigman at gmail.com> wrote:> On Thu, Oct 2, 2008 at 2:45 PM, Glen Holcomb <damnbigman at gmail.com> wrote: > >> If it is modal I''m not intending it to be but I''ll check. >> >> >> On Thu, Oct 2, 2008 at 2:42 PM, Alex Fenton <alex at pressure.to> wrote: >> >>> Glen Holcomb wrote: >>> >>>> I have an interesting problem. I have a dialog which refuses to go away >>>> once it has finished it''s associated code. >>>> >>>> Here is the code: >>>> >>>> ... >>> >>>> After filling out the proper information and clicking on okay the data >>>> is populated however when it finishes the dialog hangs around. Furthermore >>>> it won''t close when you click on Cancel or the Window close widget (the X in >>>> my case). The log line executes just fine, the dialog just refuses to >>>> close. >>>> >>> >>> I haven''t tried out your code, but maybe you need to call end_modal, if >>> you''re calling show_modal to start the dialog? >>> >>> alex >>> _______________________________________________ >>> wxruby-users mailing list >>> wxruby-users at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/wxruby-users >>> >> >> >> >> -- >> "Hey brother Christian with your high and mighty errand, Your actions >> speak so loud, I can''t hear a word you''re saying." >> >> -Greg Graffin (Bad Religion) >> > > Well end_modal doesn''t do anything either. Oddly before clicking on the > "okay" button the "cancel" button works, however after the on_okay event is > processed the "cancel" button does nothing. > > -- > "Hey brother Christian with your high and mighty errand, Your actions speak > so loud, I can''t hear a word you''re saying." > > -Greg Graffin (Bad Religion) >It would appear that the only instruction that doesn''t run at the end of on_okay is close, exit works fine. This kind of blows, I suppose I''ll have to start another instance of the app and exit after the populate finishes, not the cleanest solution. -- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can''t hear a word you''re saying." -Greg Graffin (Bad Religion) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20081008/737f53a6/attachment.html>
Hi Glen Glen Holcomb wrote:> It would appear that the only instruction that doesn''t run at the end > of on_okay is close, exit works fine. This kind of blows, I suppose > I''ll have to start another instance of the app and exit after the > populate finishes, not the cleanest solution.I''m sure you won''t need to do this. Generally, if you want help, please reduce the code to a standalone, runnable, and ideally short sample. I''m very happy to help, but it''s too much to expect people to install extra libraries and second-guess what the rest of your app is doing. I did try running your code, pruned of the LDAP stuff. It seems fine to me - there''s nothing in the dialog layout itself. I would suggest checking that the dialog has an explicit parent, not nil - it is better in most cases that the dialog is linked to a parent frame. In the special case that an application consists only of a single dialog, you must use Dialog#destroy to end the app, close is not sufficient. If this doesn''t help, I would look further into net/ldap and see whether this is causing it to hang - ie, if ok does nothing but ''close'' does it work fine? cheers alex
On Fri, Oct 10, 2008 at 3:48 AM, Alex Fenton <alex at pressure.to> wrote:> Hi Glen > > Glen Holcomb wrote: > > It would appear that the only instruction that doesn''t run at the end of >> on_okay is close, exit works fine. This kind of blows, I suppose I''ll have >> to start another instance of the app and exit after the populate finishes, >> not the cleanest solution. >> > > I''m sure you won''t need to do this. > > Generally, if you want help, please reduce the code to a standalone, > runnable, and ideally short sample. I''m very happy to help, but it''s too > much to expect people to install extra libraries and second-guess what the > rest of your app is doing. > > I did try running your code, pruned of the LDAP stuff. It seems fine to me > - there''s nothing in the dialog layout itself. I would suggest checking that > the dialog has an explicit parent, not nil - it is better in most cases that > the dialog is linked to a parent frame. In the special case that an > application consists only of a single dialog, you must use Dialog#destroy to > end the app, close is not sufficient. > > If this doesn''t help, I would look further into net/ldap and see whether > this is causing it to hang - ie, if ok does nothing but ''close'' does it work > fine? > > cheers > > alex > > > _______________________________________________ > wxruby-users mailing list > wxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/wxruby-users >Hey Alex, Thanks for the reply, destroy did the trick. I don''t know why I didn''t try that before, according to my browser I''d looked at the method definition in the API docs. Odd that close doesn''t work, I''m creating this dialog the same way I do all my others and close works for them. -- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can''t hear a word you''re saying." -Greg Graffin (Bad Religion) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20081010/fc7ebce6/attachment.html>
On Fri, Oct 10, 2008 at 2:54 PM, Glen Holcomb <damnbigman at gmail.com> wrote:> On Fri, Oct 10, 2008 at 3:48 AM, Alex Fenton <alex at pressure.to> wrote: > >> Hi Glen >> >> Glen Holcomb wrote: >> >> It would appear that the only instruction that doesn''t run at the end of >>> on_okay is close, exit works fine. This kind of blows, I suppose I''ll have >>> to start another instance of the app and exit after the populate finishes, >>> not the cleanest solution. >>> >> >> I''m sure you won''t need to do this. >> >> Generally, if you want help, please reduce the code to a standalone, >> runnable, and ideally short sample. I''m very happy to help, but it''s too >> much to expect people to install extra libraries and second-guess what the >> rest of your app is doing. >> >> I did try running your code, pruned of the LDAP stuff. It seems fine to me >> - there''s nothing in the dialog layout itself. I would suggest checking that >> the dialog has an explicit parent, not nil - it is better in most cases that >> the dialog is linked to a parent frame. In the special case that an >> application consists only of a single dialog, you must use Dialog#destroy to >> end the app, close is not sufficient. >> >> If this doesn''t help, I would look further into net/ldap and see whether >> this is causing it to hang - ie, if ok does nothing but ''close'' does it work >> fine? >> >> cheers >> >> alex >> >> >> _______________________________________________ >> wxruby-users mailing list >> wxruby-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/wxruby-users >> > > Hey Alex, > > Thanks for the reply, destroy did the trick. I don''t know why I didn''t try > that before, according to my browser I''d looked at the method definition in > the API docs. Odd that close doesn''t work, I''m creating this dialog the > same way I do all my others and close works for them. > > -- > "Hey brother Christian with your high and mighty errand, Your actions speak > so loud, I can''t hear a word you''re saying." > > -Greg Graffin (Bad Religion) >I have another dialog behaving the same way now. My application has one frame and from that frame I''m passing self as the parent argument for the Dialog Windows. I do this for other dialogs created by button events and it works okay. The dialogs that are unresponsive after pressing okay are created through menu events should I be doing something differently when creating a dialog from a menu option? I will try to pair my code down and post a small working example but it will take a while. If anyone has any ideas off the top of their head I''m all ears. Dialog#destroy does work so I can always do that. -- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can''t hear a word you''re saying." -Greg Graffin (Bad Religion) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20081010/65022ff9/attachment-0001.html>
Another Idea for you Glen,
Instead of using Close, and Destroy to get rid of the dialog, if it''s
a
Dialog that is used quite often, I would opt to use show_modal, and
end_modal, and after end_modal is called, just call hide, instead of
destroy.
An Example of this:
class MyDialog < Wx::Dialog
def initialize(*args)
super
ok = Wx::Button.new(self,Wx::ID_OK,"&Ok")
cancel = Wx::Button.new(self,Wx::ID_CANCEL,"&Cancel")
# ...... Add your own controls ......
evt_button(Wx::ID_OK) do
# ...... do whatever processing you need .......
end_modal(Wx::ID_OK)
end
evt_button(Wx::ID_CANCEL) do
# ...... Ask any, "Are you sure you want to cancel" here
........
# Or don''t even put this handler in, as it''s
automatically handled by
Wx::Dialog
end
end
end
class MyFrame < Wx::Frame
def initialize(*args)
super
# We create our dialog that we are going to use a lot, and show only
# when needed.
@dlg = MyDialog.new(self,-1,"Information Report")
# .... add the rest of the stuff .......
evt_button(ID_SHOW_DIALOG) do
@dlg.show_modal do |response|
# ..... process response .....
end
@dlg.hide
end
end
end
This is just a bare bone example, that will not work, least you actually put
it together. But it gives you an idea of how to use it, especially when you
re-use a dialog multiple times.
Hope this helps,
Mario Steele
On Fri, Oct 10, 2008 at 4:18 PM, Glen Holcomb <damnbigman at gmail.com>
wrote:
> On Fri, Oct 10, 2008 at 2:54 PM, Glen Holcomb <damnbigman at
gmail.com>wrote:
>
>> On Fri, Oct 10, 2008 at 3:48 AM, Alex Fenton <alex at
pressure.to> wrote:
>>
>>> Hi Glen
>>>
>>> Glen Holcomb wrote:
>>>
>>> It would appear that the only instruction that doesn''t
run at the end of
>>>> on_okay is close, exit works fine. This kind of blows, I
suppose I''ll have
>>>> to start another instance of the app and exit after the
populate finishes,
>>>> not the cleanest solution.
>>>>
>>>
>>> I''m sure you won''t need to do this.
>>>
>>> Generally, if you want help, please reduce the code to a
standalone,
>>> runnable, and ideally short sample. I''m very happy to
help, but it''s too
>>> much to expect people to install extra libraries and second-guess
what the
>>> rest of your app is doing.
>>>
>>> I did try running your code, pruned of the LDAP stuff. It seems
fine to
>>> me - there''s nothing in the dialog layout itself. I would
suggest checking
>>> that the dialog has an explicit parent, not nil - it is better in
most cases
>>> that the dialog is linked to a parent frame. In the special case
that an
>>> application consists only of a single dialog, you must use
Dialog#destroy to
>>> end the app, close is not sufficient.
>>>
>>> If this doesn''t help, I would look further into net/ldap
and see whether
>>> this is causing it to hang - ie, if ok does nothing but
''close'' does it work
>>> fine?
>>>
>>> cheers
>>>
>>> alex
>>>
>>>
>>> _______________________________________________
>>> wxruby-users mailing list
>>> wxruby-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/wxruby-users
>>>
>>
>> Hey Alex,
>>
>> Thanks for the reply, destroy did the trick. I don''t know why
I didn''t
>> try that before, according to my browser I''d looked at the
method definition
>> in the API docs. Odd that close doesn''t work, I''m
creating this dialog the
>> same way I do all my others and close works for them.
>>
>> --
>> "Hey brother Christian with your high and mighty errand, Your
actions
>> speak so loud, I can''t hear a word you''re
saying."
>>
>> -Greg Graffin (Bad Religion)
>>
>
> I have another dialog behaving the same way now. My application has one
> frame and from that frame I''m passing self as the parent argument
for the
> Dialog Windows. I do this for other dialogs created by button events and
it
> works okay. The dialogs that are unresponsive after pressing okay are
> created through menu events should I be doing something differently when
> creating a dialog from a menu option?
>
> I will try to pair my code down and post a small working example but it
> will take a while. If anyone has any ideas off the top of their head
I''m
> all ears. Dialog#destroy does work so I can always do that.
>
> --
> "Hey brother Christian with your high and mighty errand, Your actions
speak
> so loud, I can''t hear a word you''re saying."
>
> -Greg Graffin (Bad Religion)
>
> _______________________________________________
> wxruby-users mailing list
> wxruby-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/wxruby-users
>
--
Mario Steele
http://www.trilake.net
http://www.ruby-im.net
http://rubyforge.org/projects/wxruby/
http://rubyforge.org/projects/wxride/
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://rubyforge.org/pipermail/wxruby-users/attachments/20081010/17c27fa8/attachment.html>