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>