Hi all, Apologies if this is a stupid question but it is getting the best of me. I have a class which contains a GUI object which has serveral text fields and buttons which when used trigger the use of further objects which all loop through data, the structure is as follows: class def GUI GUI calls object1 end def object1 loops through some data one entry at a time and for each entry passes to a new object end def object2 loops through passed data and does stuff end then the next bit of data does the same thing in object1 What I need is a gui that pops up when my script runs through all of objects for each bit of data. Any ideas? I just need to know when the loop is complete, at present I press the go button on my fx GUI and it stays pressed in until all processing is done then pops back out. At this point I need a Gui. I hope this makes sense, Many thanks
Hi, I have a GUI which triggers an object to do some stuff, when you press the FXButton it calls matcher e.g. button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) This button remains in a pressed state until the object has finished running, when it is complete the button pops back up. I am trying to add a popup box to respond to the button popping up (or processing finished) like so: if button == SEL_KEYRELEASE??FXMessageBox.information(self, MBOX_OK, "Complete")??mainwindow.closeend This however does not work, any ideas how I can acheive this? Many thanks --- On Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: From: Stuart Clarke <stuart_clarke86 at yahoo.com> Subject: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Friday, 26 February, 2010, 19:38 Hi all, Apologies if this is a stupid question but it is getting the best of me. I have a class which contains a GUI object which has serveral text fields and buttons which when used trigger the use of further objects which all loop through data, the structure is as follows: class def GUI GUI calls object1 end def object1 loops through some data one entry at a time and for each entry passes to a new object end def object2 loops through passed data and does stuff end then the next bit of data does the same thing in object1 What I need is a gui that pops up when my script runs through all of objects for each bit of data. Any ideas? I just need to know when the loop is complete, at present I press the go button on my fx GUI and it stays pressed in until all processing is done then pops back out. At this point I need a Gui. I hope this makes sense, Many thanks ? ? ? _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100301/0f9bd017/attachment-0001.html>
You should probably just show us the code that doesnt work, so we can just fix it instead of guessing what might be wrong. -- Matma Rex - http://matma-rex.prv.pl/
Couldn''t you just do: def initialize # ... button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) # ... end def matcher(sender, selector, data) # ... self.close # (true) # if you want to notify the messaging system. end or well, something along those lines.. button is a reference to an FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also the code above is assuming that it''s an object which extends FXMainWindow. Hope this helps, -Joey On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com>wrote:> Hi, > > I have a GUI which triggers an object to do some stuff, when you press the > FXButton it calls matcher e.g. > > button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) > > This button remains in a pressed state until the object has finished > running, when it is complete the button pops back up. I am trying to add a > popup box to respond to the button popping up (or processing finished) like > so: > > if button == SEL_KEYRELEASE > FXMessageBox.information(self, MBOX_OK, "Complete") > mainwindow.close > end > > This however does not work, any ideas how I can acheive this? > > Many thanks > > --- On *Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com>* wrote: > > > From: Stuart Clarke <stuart_clarke86 at yahoo.com> > Subject: [fxruby-users] Class with looping objects > To: fxruby-users at rubyforge.org > Date: Friday, 26 February, 2010, 19:38 > > > Hi all, > > Apologies if this is a stupid question but it is getting the best of me. > > I have a class which contains a GUI object which has serveral text fields > and buttons which when used trigger the use of further objects which all > loop through data, the structure is as follows: > > class > def GUI > GUI calls object1 > end > def object1 loops through some data one entry at a time and for each entry > passes to a new object > end > def object2 loops through passed data and does stuff > end > then the next bit of data does the same thing in object1 > > > What I need is a gui that pops up when my script runs through all of > objects for each bit of data. Any ideas? I just need to know when the loop > is complete, at present I press the go button on my fx GUI and it stays > pressed in until all processing is done then pops back out. At this point I > need a Gui. > > I hope this makes sense, > > Many thanks > > > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> > http://rubyforge.org/mailman/listinfo/fxruby-users > > > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/fxruby-users >-- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100301/511eb87f/attachment.html>
Hi, Thanks for your reply. I have tried this previously and I get the following error: C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in `getText'': This FXTextField * already released (RuntimeError) Code is: ??buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher))?enddef matcher(sender, sel, ptr)?? self.close(true)#.... Just to clarify, when matcher runs, it does Matcher object - get first item and call object2Object2 does stuff and then we go back to object matcher and get the next itemThis loop?continues?until all items have been through both objects then once finished the run button pops up again and the processing is done, at this point I want a GUI. Thanks a lot Stuart --- On Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com> wrote: From: Joey Kinsella <jkinsella at ancillaryservices.com> Subject: Re: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Monday, 1 March, 2010, 14:43 Couldn''t you just do: def initialize ? # ... ? button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) ? # ... end def matcher(sender, selector, data) ? # ... ? self.close # (true) # if you want to notify the messaging system. end or well, something along those lines.. button is a reference to an FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also the code above is assuming that it''s an object which extends FXMainWindow. Hope this helps, -Joey On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: Hi, I have a GUI which triggers an object to do some stuff, when you press the FXButton it calls matcher e.g. button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) This button remains in a pressed state until the object has finished running, when it is complete the button pops back up. I am trying to add a popup box to respond to the button popping up (or processing finished) like so: if button == SEL_KEYRELEASE??FXMessageBox.information(self, MBOX_OK, "Complete")??mainwindow.closeend This however does not work, any ideas how I can acheive this? Many thanks --- On Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: From: Stuart Clarke <stuart_clarke86 at yahoo.com> Subject: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Friday, 26 February, 2010, 19:38 Hi all, Apologies if this is a stupid question but it is getting the best of me. I have a class which contains a GUI object which has serveral text fields and buttons which when used trigger the use of further objects which all loop through data, the structure is as follows: class def GUI GUI calls object1 end def object1 loops through some data one entry at a time and for each entry passes to a new object end def object2 loops through passed data and does stuff end then the next bit of data does the same thing in object1 What I need is a gui that pops up when my script runs through all of objects for each bit of data. Any ideas? I just need to know when the loop is complete, at present I press the go button on my fx GUI and it stays pressed in until all processing is done then pops back out. At this point I need a Gui. I hope this makes sense, Many thanks ? ? ? _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -----Inline Attachment Follows----- _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100302/cfce59d3/attachment.html>
It would be much easier to help you if we could see at least example code (similar to what your doing.) However, the error you displayed below tells me your doing something incorrectly. Are you sure self.close() is really what you want to do? Perhaps you should try self.hide()/self.show(). I don''t know, without actual code it''s hard to tell what you are trying to do. But I hope this helps. On Tue, Mar 2, 2010 at 4:34 AM, Stuart Clarke <stuart_clarke86 at yahoo.com>wrote:> Hi, > > Thanks for your reply. > > I have tried this previously and I get the following error: > > C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in > `getText'': This FXTextField * already released (RuntimeError) > > Code is: > > buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, > method(:matcher)) > end > def matcher(sender, sel, ptr) > self.close(true) > #.... > > Just to clarify, when matcher runs, it does > > Matcher object - get first item and call object2 > Object2 does stuff and then we go back to object matcher and get the next > item > This loop continues until all items have been through both objects then > once finished the run button pops up again and the processing is done, at > this point I want a GUI. > > Thanks a lot > > Stuart > > > --- On *Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com>*wrote: > > > From: Joey Kinsella <jkinsella at ancillaryservices.com> > Subject: Re: [fxruby-users] Class with looping objects > > To: fxruby-users at rubyforge.org > Date: Monday, 1 March, 2010, 14:43 > > Couldn''t you just do: > > def initialize > # ... > button = FXButton.new(frame, "Run").connect(SEL_COMMAND, > method(:matcher)) > # ... > end > > def matcher(sender, selector, data) > # ... > self.close # (true) # if you want to notify the messaging system. > end > > or well, something along those lines.. button is a reference to an FXButton > object, It should never equal SEL_KEYRELEASE in this respect. Also the code > above is assuming that it''s an object which extends FXMainWindow. > > Hope this helps, > -Joey > > On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> > > wrote: > >> Hi, >> >> I have a GUI which triggers an object to do some stuff, when you press the >> FXButton it calls matcher e.g. >> >> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) >> >> This button remains in a pressed state until the object has finished >> running, when it is complete the button pops back up. I am trying to add a >> popup box to respond to the button popping up (or processing finished) like >> so: >> >> if button == SEL_KEYRELEASE >> FXMessageBox.information(self, MBOX_OK, "Complete") >> mainwindow.close >> end >> >> This however does not work, any ideas how I can acheive this? >> >> Many thanks >> >> --- On *Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >> >* wrote: >> >> >> From: Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >> > >> Subject: [fxruby-users] Class with looping objects >> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> Date: Friday, 26 February, 2010, 19:38 >> >> >> Hi all, >> >> Apologies if this is a stupid question but it is getting the best of me. >> >> I have a class which contains a GUI object which has serveral text fields >> and buttons which when used trigger the use of further objects which all >> loop through data, the structure is as follows: >> >> class >> def GUI >> GUI calls object1 >> end >> def object1 loops through some data one entry at a time and for each entry >> passes to a new object >> end >> def object2 loops through passed data and does stuff >> end >> then the next bit of data does the same thing in object1 >> >> >> What I need is a gui that pops up when my script runs through all of >> objects for each bit of data. Any ideas? I just need to know when the loop >> is complete, at present I press the go button on my fx GUI and it stays >> pressed in until all processing is done then pops back out. At this point I >> need a Gui. >> >> I hope this makes sense, >> >> Many thanks >> >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> > > -- > If you are not the intended recipient, you are hereby notified > that any dissemination, distribution, copying or other use of > this communication is strictly prohibited. If you have > received this communication in error, please notify us > immediately. > > > > -----Inline Attachment Follows----- > > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> > http://rubyforge.org/mailman/listinfo/fxruby-users > > > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/fxruby-users >-- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100302/4bcef9f5/attachment-0001.html>
Hey, Thanks for the reply, I do not have the code to hand, I will pick it up tomorrow and send it on, however in the meantime a summary is shown below (please note syntax is not 100%): class Searcher < FXMainWindowdef initializecreate a windowcreate a framecreate some text boxes - give a folder pathcreate the button which calls object matcherenddef matcherusing find run through directory and find first filecall next object fileProcessing with the first fileenddef?fileProcessingIO.FOREACH on filerun some if statements on the fileendend So after def?fileProcessing finishes it goes back to matcher and gets the next file. I hope this helps, but I will post actual code tomorrow. Thanks Many thanks Stuart --- On Tue, 2/3/10, Joey Kinsella <jkinsella at ancillaryservices.com> wrote: From: Joey Kinsella <jkinsella at ancillaryservices.com> Subject: Re: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Tuesday, 2 March, 2010, 13:58 It would be much easier to help you if we could see at least example code (similar to what your doing.) However, the error you displayed below tells me your doing something incorrectly. Are you sure self.close() is really what you want to do? Perhaps you should try self.hide()/self.show(). I don''t know, without actual code it''s hard to tell what you are trying to do. But I hope this helps. On Tue, Mar 2, 2010 at 4:34 AM, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: Hi, Thanks for your reply. I have tried this previously and I get the following error: C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in `getText'': This FXTextField * already released (RuntimeError) Code is: ??buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher))?enddef matcher(sender, sel, ptr)?? self.close(true) #.... Just to clarify, when matcher runs, it does Matcher object - get first item and call object2Object2 does stuff and then we go back to object matcher and get the next item This loop?continues?until all items have been through both objects then once finished the run button pops up again and the processing is done, at this point I want a GUI. Thanks a lot Stuart --- On Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com> wrote: From: Joey Kinsella <jkinsella at ancillaryservices.com> Subject: Re: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Monday, 1 March, 2010, 14:43 Couldn''t you just do: def initialize ? # ... ? button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) ? # ... end def matcher(sender, selector, data) ? # ... ? self.close # (true) # if you want to notify the messaging system. end or well, something along those lines.. button is a reference to an FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also the code above is assuming that it''s an object which extends FXMainWindow. Hope this helps, -Joey On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: Hi, I have a GUI which triggers an object to do some stuff, when you press the FXButton it calls matcher e.g. button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) This button remains in a pressed state until the object has finished running, when it is complete the button pops back up. I am trying to add a popup box to respond to the button popping up (or processing finished) like so: if button == SEL_KEYRELEASE??FXMessageBox.information(self, MBOX_OK, "Complete")??mainwindow.closeend This however does not work, any ideas how I can acheive this? Many thanks --- On Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: From: Stuart Clarke <stuart_clarke86 at yahoo.com> Subject: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Friday, 26 February, 2010, 19:38 Hi all, Apologies if this is a stupid question but it is getting the best of me. I have a class which contains a GUI object which has serveral text fields and buttons which when used trigger the use of further objects which all loop through data, the structure is as follows: class def GUI GUI calls object1 end def object1 loops through some data one entry at a time and for each entry passes to a new object end def object2 loops through passed data and does stuff end then the next bit of data does the same thing in object1 What I need is a gui that pops up when my script runs through all of objects for each bit of data. Any ideas? I just need to know when the loop is complete, at present I press the go button on my fx GUI and it stays pressed in until all processing is done then pops back out. At this point I need a Gui. I hope this makes sense, Many thanks ? ? ? _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -----Inline Attachment Follows----- _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -----Inline Attachment Follows----- _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100302/cfd8e60a/attachment.html>
See code below, many thanks: require ''fox16''include Fox require "find"require "fileutils" class ScriptGui < FXMainWindow #SUBCLASS FOR CREATING A WINDOW, CONTAINS ALL THE CUSTOMISATION INFORMATION??def initialize(app)?? ?super(app, "Script", :width => 700, :height => 200)?? ?frame = FXVerticalFrame.new(self, LAYOUT_LEFT|LAYOUT_FILL_X)?? ?#FRAMES FOR INPUT?? ?frame1 = FXHorizontalFrame.new(frame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y) ?? ??? ?inputFileA = FXButton.new(frame1, "Input File")?? ?inputFileA.connect(SEL_COMMAND) do ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #the connect will ensure the following block is performed?? ? ?dialog = FXFileDialog.new(self, "Select file")?? ? ?dialog.patternList = ["Text Files (*.txt)", "All Files (*)"] ? ? ? ?#recognised file types?? ? ?dialog.selectMode = SELECTFILE_EXISTING ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#select a file?? ? ?if dialog.execute != 0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #display the box and wait fot user response?? ? ? ?@aInput.text = dialog.filename ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #if the user selects a file it write it in inputfield?? ? ?end?? ?end?? ?@aInput = FXTextField.new(frame1, 90, :opts => JUSTIFY_LEFT|FRAME_SUNKEN|FRAME_THICK)?? ??? ?FXHorizontalSeparator.new(frame, :opts => LAYOUT_FILL_X|SEPARATOR_GROOVE)?? ??? ?buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) ? ? ? ? ? ? ? ? ? ? ? ? #call method matcher to commence process??end????def matcher(sender, sel, ptr)?? ?#set up hash for itemC and doc ID?? ?@hashMapping = Hash.new {|h,k| h[k] = []}?? ??? ?#process loadfile to capture doc ID''s & itemC values.?? ?IO.foreach(@aInput.to_s) do |data| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #go through the input concordance loadfile?? ? ?fields = data.split("") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #split the field on this??? ? ?itemA = ?fields[13].delete("?").downcase ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?itemB = fields[0].delete("?,\"") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? ? ?itemC = fields[35].delete("?,\"") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? ? ?if itemA.to_s.downcase == "pdf" ? ? ? ? ? ? ? ? ? ??? ? ? ?@hashMapping[itemC] << itemB ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?end?? ?end?? ??? ?Find.find(@aInput.to_s) do |curPath2| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? ? ?if File.file?(curPath2) and curPath2[/\.txt$/]??? ? ? ?itemCFN = File.basename(curPath2, ".txt").strip.to_s.downcase ? ? ? ? ?#grabs the file name stripping whitespace?? ? ? ?finditemC(curPath2, itemCFN) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?end?? ?end??end????def finditemC(curPath2, itemCFN) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?@hashMapping.each do |itemDetail|?? ? ?@entryArray = [] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?entry = itemDetail.to_s.strip ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?@entryArray << itemDetail.to_s.strip ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?if entry.match(/#{itemCFN}/) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ?puts itemCFN?? ? ?end?? ?end??end ??def create?? ?super?? ? ?show(PLACEMENT_SCREEN) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #SHOW THE GUI ON THE SCREEN?? ?end??end #CONSTRUCTORif __FILE__ == $0??FXApp.new do |app|?? ?ScriptGui.new(app)?? ?app.create#CALLS THE METHOD CREATE TO ENSURE ALL NEEDED INFO IS ADDED?? ?app.run#STARTS THE CREATION OF THE WINDOWS??endend --- On Tue, 2/3/10, Joey Kinsella <jkinsella at ancillaryservices.com> wrote: From: Joey Kinsella <jkinsella at ancillaryservices.com> Subject: Re: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Tuesday, 2 March, 2010, 13:58 It would be much easier to help you if we could see at least example code (similar to what your doing.) However, the error you displayed below tells me your doing something incorrectly. Are you sure self.close() is really what you want to do? Perhaps you should try self.hide()/self.show(). I don''t know, without actual code it''s hard to tell what you are trying to do. But I hope this helps. On Tue, Mar 2, 2010 at 4:34 AM, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: Hi, Thanks for your reply. I have tried this previously and I get the following error: C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in `getText'': This FXTextField * already released (RuntimeError) Code is: ??buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher))?enddef matcher(sender, sel, ptr)?? self.close(true) #.... Just to clarify, when matcher runs, it does Matcher object - get first item and call object2Object2 does stuff and then we go back to object matcher and get the next item This loop?continues?until all items have been through both objects then once finished the run button pops up again and the processing is done, at this point I want a GUI. Thanks a lot Stuart --- On Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com> wrote: From: Joey Kinsella <jkinsella at ancillaryservices.com> Subject: Re: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Monday, 1 March, 2010, 14:43 Couldn''t you just do: def initialize ? # ... ? button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) ? # ... end def matcher(sender, selector, data) ? # ... ? self.close # (true) # if you want to notify the messaging system. end or well, something along those lines.. button is a reference to an FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also the code above is assuming that it''s an object which extends FXMainWindow. Hope this helps, -Joey On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: Hi, I have a GUI which triggers an object to do some stuff, when you press the FXButton it calls matcher e.g. button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) This button remains in a pressed state until the object has finished running, when it is complete the button pops back up. I am trying to add a popup box to respond to the button popping up (or processing finished) like so: if button == SEL_KEYRELEASE??FXMessageBox.information(self, MBOX_OK, "Complete")??mainwindow.closeend This however does not work, any ideas how I can acheive this? Many thanks --- On Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: From: Stuart Clarke <stuart_clarke86 at yahoo.com> Subject: [fxruby-users] Class with looping objects To: fxruby-users at rubyforge.org Date: Friday, 26 February, 2010, 19:38 Hi all, Apologies if this is a stupid question but it is getting the best of me. I have a class which contains a GUI object which has serveral text fields and buttons which when used trigger the use of further objects which all loop through data, the structure is as follows: class def GUI GUI calls object1 end def object1 loops through some data one entry at a time and for each entry passes to a new object end def object2 loops through passed data and does stuff end then the next bit of data does the same thing in object1 What I need is a gui that pops up when my script runs through all of objects for each bit of data. Any ideas? I just need to know when the loop is complete, at present I press the go button on my fx GUI and it stays pressed in until all processing is done then pops back out. At this point I need a Gui. I hope this makes sense, Many thanks ? ? ? _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -----Inline Attachment Follows----- _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -- If you are not the intended recipient, you are hereby notified that any dissemination, distribution, copying or other use of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately. -----Inline Attachment Follows----- _______________________________________________ fxruby-users mailing list fxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/fxruby-users -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100303/62a5af6a/attachment-0001.html>
Most FOX objects send out messages (also known as *events*) when something interesting happens. FOX messages have four important elements: 1. The message *sender* is the object that sends the message. In this case, the FXButton instance is the sender. 2. The message *type* is a predefined integer constant that indicates what kind of event has occurred (i.e. why this message is being sent). In this case, the message type is SEL_COMMAND, which indicates that the command associated with this widget should be invoked. 3. The message *identifier* is another integer constant that is used to distinguish between different messages of the same type. For example, the message that tells a FOX window to make itself visible is a SEL_COMMANDmessage with the identifier FXWindow::ID_SHOW (where ID_SHOW is a constant defined in the FXWindowclass). A different message identifier, FXWindow::ID_HIDE, tells an FXWindow instance to make itself invisible. 4. The message *data* is an object containing message-specific information. For this case (the FXButton''s SEL_COMMAND message, there is no interesting message data, but we''ll see other kinds of messages where the message data is useful. On 3/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote:> > Hi, > > Thanks for your reply. > > I have tried this previously and I get the following error: > > C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in > `getText'': This FXTextField * already released (RuntimeError) > > Code is: > > buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, > method(:matcher)) > end > def matcher(sender, sel, ptr) > self.close(true) > #.... > > Just to clarify, when matcher runs, it does > > Matcher object - get first item and call object2 > Object2 does stuff and then we go back to object matcher and get the next > item > This loop continues until all items have been through both objects then > once finished the run button pops up again and the processing is done, at > this point I want a GUI. > > Thanks a lot > > Stuart > > > --- On *Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com>*wrote: > > > From: Joey Kinsella <jkinsella at ancillaryservices.com> > Subject: Re: [fxruby-users] Class with looping objects > To: fxruby-users at rubyforge.org > Date: Monday, 1 March, 2010, 14:43 > > > Couldn''t you just do: > > def initialize > # ... > button = FXButton.new(frame, "Run").connect(SEL_COMMAND, > method(:matcher)) > # ... > end > > def matcher(sender, selector, data) > # ... > self.close # (true) # if you want to notify the messaging system. > end > > or well, something along those lines.. button is a reference to an FXButton > object, It should never equal SEL_KEYRELEASE in this respect. Also the code > above is assuming that it''s an object which extends FXMainWindow. > > Hope this helps, > -Joey > > On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> > > wrote: > >> Hi, >> >> I have a GUI which triggers an object to do some stuff, when you press the >> FXButton it calls matcher e.g. >> >> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) >> >> This button remains in a pressed state until the object has finished >> running, when it is complete the button pops back up. I am trying to add a >> popup box to respond to the button popping up (or processing finished) like >> so: >> >> if button == SEL_KEYRELEASE >> FXMessageBox.information(self, MBOX_OK, "Complete") >> mainwindow.close >> end >> >> This however does not work, any ideas how I can acheive this? >> >> Many thanks >> >> --- On *Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >> >* wrote: >> >> >> From: Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >> > >> Subject: [fxruby-users] Class with looping objects >> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> Date: Friday, 26 February, 2010, 19:38 >> >> >> Hi all, >> >> Apologies if this is a stupid question but it is getting the best of me. >> >> I have a class which contains a GUI object which has serveral text fields >> and buttons which when used trigger the use of further objects which all >> loop through data, the structure is as follows: >> >> class >> def GUI >> GUI calls object1 >> end >> def object1 loops through some data one entry at a time and for each entry >> passes to a new object >> end >> def object2 loops through passed data and does stuff >> end >> then the next bit of data does the same thing in object1 >> >> >> What I need is a gui that pops up when my script runs through all of >> objects for each bit of data. Any ideas? I just need to know when the loop >> is complete, at present I press the go button on my fx GUI and it stays >> pressed in until all processing is done then pops back out. At this point I >> need a Gui. >> >> I hope this makes sense, >> >> Many thanks >> >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> > > -- > If you are not the intended recipient, you are hereby notified > that any dissemination, distribution, copying or other use of > this communication is strictly prohibited. If you have > received this communication in error, please notify us > immediately. > > > -----Inline Attachment Follows----- > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> > http://rubyforge.org/mailman/listinfo/fxruby-users > > > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/fxruby-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100303/5ade8bc5/attachment.html>
I''m too inexperienced with FXRuby to really help you but have you ever worked with the foxGUIb? I can almost see the same things going on but with different approaches. I like that it uses more attribute_reader after building all the widgets. It just has such a nice clean format. here''s a simple app: # source generated by foxGUIb 1.0.0 class MainWindow def initialize( parent) construct_widget_tree( parent) init if respond_to? ''init'' end def construct_widget_tree( parent) @topwin FX::MainWindow.new(parent){|w| @MainWindow=w w.wdg_name=''MainWindow'' w.backColor=Fox::FXRGBA(212,208,200,255) w.width=216 w.hSpacing=0 w.shown=true w.y=167 w.height=218 w.title="MainWindow" w.vSpacing=0 w.x=262 FX::VerticalFrame.new(@MainWindow){|w| @VerticalFrame=w w.wdg_name=''VerticalFrame'' w.baseColor=Fox::FXRGBA(212,208,200,255) w.backColor=Fox::FXRGBA(212,208,200,255) w.width=216 w.height=218 w.shadowColor=Fox::FXRGBA(139,137,132,255) FX::Button.new(@VerticalFrame){|w| @Button=w w.wdg_name=''Button'' w.baseColor=Fox::FXRGBA(212,208,200,255) w.text="click to see what happens!" w.backColor=Fox::FXRGBA(212,208,200,255) w.font=FX::Font.new.from_s(''Sans|90|0|0|0|0|0'').to_FXFont w.width=153 w.height=23 w.shadowColor=Fox::FXRGBA(139,137,132,255) @Button.connect(Fox::SEL_LEFTBUTTONRELEASE){ @Text.appendText "lmb up\n" 0 # this prevents fox from blocking the builtin event handler for leftbuttonpress } @Button.connect(Fox::SEL_LEFTBUTTONPRESS){ @Text.appendText "lmb down\n" 0 # this prevents fox from blocking the builtin event handler for leftbuttonpress } @Button.connect(Fox::SEL_COMMAND){ @Text.appendText "click!\n" } } FX::Text.new(@VerticalFrame){|w| @Text=w w.wdg_name=''Text'' w.font=FX::Font.new.from_s(''Sans|90|0|0|0|0|0'').to_FXFont w.width=216 w.selBackColor=Fox::FXRGBA(10,36,106,255) w.y=23 w.height=195 } } } end attr_reader :topwin attr_reader :MainWindow attr_reader :VerticalFrame attr_reader :Button attr_reader :Text end #unit test if __FILE__==$0 require ''libGUIb16'' app=FX::App.new w=MainWindow.new app w.topwin.show(Fox::PLACEMENT_SCREEN) app.create app.run end notice require ''libGUIb16'' and then it uses ''fox16'' or ''fox14'' in its'' system. I''m amazed at the size of the GUI builder app. Nothing large like Glade or IronRuby. On 3/3/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote:> > See code below, many thanks: > > require ''fox16'' > include Fox > > require "find" > require "fileutils" > > class ScriptGui < FXMainWindow #SUBCLASS FOR CREATING A WINDOW, CONTAINS > ALL THE CUSTOMISATION INFORMATION > def initialize(app) > super(app, "Script", :width => 700, :height => 200) > frame = FXVerticalFrame.new(self, LAYOUT_LEFT|LAYOUT_FILL_X) > #FRAMES FOR INPUT > frame1 = FXHorizontalFrame.new(frame, > LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y) > > > inputFileA = FXButton.new(frame1, "Input File") > inputFileA.connect(SEL_COMMAND) do > #the connect will ensure the following block is performed > dialog = FXFileDialog.new(self, "Select file") > dialog.patternList = ["Text Files (*.txt)", "All Files (*)"] > #recognised file types > dialog.selectMode = SELECTFILE_EXISTING > #select a file > if dialog.execute != 0 > #display the box and wait fot user response > @aInput.text = dialog.filename > #if the user selects a file it write it in inputfield > end > end > @aInput = FXTextField.new(frame1, 90, :opts => > JUSTIFY_LEFT|FRAME_SUNKEN|FRAME_THICK) > > FXHorizontalSeparator.new(frame, :opts => > LAYOUT_FILL_X|SEPARATOR_GROOVE) > > buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, > method(:matcher)) #call method matcher to commence > process > end > > def matcher(sender, sel, ptr) > #set up hash for itemC and doc ID > @hashMapping = Hash.new {|h,k| h[k] = []} > > #process loadfile to capture doc ID''s & itemC values. > IO.foreach(@aInput.to_s) do |data| > #go through the input concordance loadfile > fields = data.split(" ") > #split the field on this > itemA = fields[13].delete("?").downcase > > itemB = fields[0].delete("?,\"") > > itemC = fields[35].delete("?,\"") > > if itemA.to_s.downcase == "pdf" > @hashMapping[itemC] << itemB > > end > end > > Find.find(@aInput.to_s) do |curPath2| > > if File.file?(curPath2) and curPath2[/\.txt$/] > itemCFN = File.basename(curPath2, ".txt").strip.to_s.downcase > #grabs the file name stripping whitespace > finditemC(curPath2, itemCFN) > > end > end > end > > def finditemC(curPath2, itemCFN) > > @hashMapping.each do |itemDetail| > @entryArray = [] > > entry = itemDetail.to_s.strip > > @entryArray << itemDetail.to_s.strip > > if entry.match(/#{itemCFN}/) > > puts itemCFN > end > end > end > > def create > super > show(PLACEMENT_SCREEN) > #SHOW THE GUI ON THE SCREEN > end > end > > #CONSTRUCTOR > if __FILE__ == $0 > FXApp.new do |app| > ScriptGui.new(app) > app.create#CALLS THE METHOD CREATE TO ENSURE ALL NEEDED INFO IS ADDED > app.run#STARTS THE CREATION OF THE WINDOWS > end > end > > --- On *Tue, 2/3/10, Joey Kinsella <jkinsella at ancillaryservices.com>*wrote: > > > From: Joey Kinsella <jkinsella at ancillaryservices.com> > Subject: Re: [fxruby-users] Class with looping objects > To: fxruby-users at rubyforge.org > Date: Tuesday, 2 March, 2010, 13:58 > > It would be much easier to help you if we could see at least example code > (similar to what your doing.) > However, the error you displayed below tells me your doing something > incorrectly. Are you sure self.close() is really what you want to do? > Perhaps you should try self.hide()/self.show(). I don''t know, without actual > code it''s hard to tell what you are trying to do. But I hope this helps. > > On Tue, Mar 2, 2010 at 4:34 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> > > wrote: > >> Hi, >> >> Thanks for your reply. >> >> I have tried this previously and I get the following error: >> >> C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in >> `getText'': This FXTextField * already released (RuntimeError) >> >> Code is: >> >> buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, >> method(:matcher)) >> end >> def matcher(sender, sel, ptr) >> self.close(true) >> #.... >> >> Just to clarify, when matcher runs, it does >> >> Matcher object - get first item and call object2 >> Object2 does stuff and then we go back to object matcher and get the next >> item >> This loop continues until all items have been through both objects then >> once finished the run button pops up again and the processing is done, at >> this point I want a GUI. >> >> Thanks a lot >> >> Stuart >> >> >> --- On *Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com<http://mc/compose?to=jkinsella at ancillaryservices.com> >> >* wrote: >> >> >> From: Joey Kinsella <jkinsella at ancillaryservices.com<http://mc/compose?to=jkinsella at ancillaryservices.com> >> > >> Subject: Re: [fxruby-users] Class with looping objects >> >> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> Date: Monday, 1 March, 2010, 14:43 >> >> Couldn''t you just do: >> >> def initialize >> # ... >> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, >> method(:matcher)) >> # ... >> end >> >> def matcher(sender, selector, data) >> # ... >> self.close # (true) # if you want to notify the messaging system. >> end >> >> or well, something along those lines.. button is a reference to an >> FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also >> the code above is assuming that it''s an object which extends FXMainWindow. >> >> Hope this helps, >> -Joey >> >> On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >> > wrote: >> >>> Hi, >>> >>> I have a GUI which triggers an object to do some stuff, when you press >>> the FXButton it calls matcher e.g. >>> >>> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>> method(:matcher)) >>> >>> This button remains in a pressed state until the object has finished >>> running, when it is complete the button pops back up. I am trying to add a >>> popup box to respond to the button popping up (or processing finished) like >>> so: >>> >>> if button == SEL_KEYRELEASE >>> FXMessageBox.information(self, MBOX_OK, "Complete") >>> mainwindow.close >>> end >>> >>> This however does not work, any ideas how I can acheive this? >>> >>> Many thanks >>> >>> --- On *Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>> >* wrote: >>> >>> >>> From: Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>> > >>> Subject: [fxruby-users] Class with looping objects >>> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> Date: Friday, 26 February, 2010, 19:38 >>> >>> >>> Hi all, >>> >>> Apologies if this is a stupid question but it is getting the best of me. >>> >>> I have a class which contains a GUI object which has serveral text fields >>> and buttons which when used trigger the use of further objects which all >>> loop through data, the structure is as follows: >>> >>> class >>> def GUI >>> GUI calls object1 >>> end >>> def object1 loops through some data one entry at a time and for each >>> entry passes to a new object >>> end >>> def object2 loops through passed data and does stuff >>> end >>> then the next bit of data does the same thing in object1 >>> >>> >>> What I need is a gui that pops up when my script runs through all of >>> objects for each bit of data. Any ideas? I just need to know when the loop >>> is complete, at present I press the go button on my fx GUI and it stays >>> pressed in until all processing is done then pops back out. At this point I >>> need a Gui. >>> >>> I hope this makes sense, >>> >>> Many thanks >>> >>> >>> >>> _______________________________________________ >>> fxruby-users mailing list >>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> http://rubyforge.org/mailman/listinfo/fxruby-users >>> >>> >>> >>> _______________________________________________ >>> fxruby-users mailing list >>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> http://rubyforge.org/mailman/listinfo/fxruby-users >>> >> >> -- >> If you are not the intended recipient, you are hereby notified >> that any dissemination, distribution, copying or other use of >> this communication is strictly prohibited. If you have >> received this communication in error, please notify us >> immediately. >> >> >> -----Inline Attachment Follows----- >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> > > -- > If you are not the intended recipient, you are hereby notified > that any dissemination, distribution, copying or other use of > this communication is strictly prohibited. If you have > received this communication in error, please notify us > immediately. > > > -----Inline Attachment Follows----- > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> > http://rubyforge.org/mailman/listinfo/fxruby-users > > > > _______________________________________________ > fxruby-users mailing list > fxruby-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/fxruby-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100303/cde6d487/attachment-0001.html>
here is another little tidbit: theButton.connect(SEL_COMMAND) { puts "You have clicked the button. Good bye!" exit} There are many ways to do blocks. On 3/3/10, Douglas Allen <kb9agt at gmail.com> wrote:> > I''m too inexperienced with FXRuby to really help you but have you ever > worked with the foxGUIb? > > I can almost see the same things going on but with different approaches. I > like that it uses more attribute_reader after building all the widgets. It > just has such a nice clean format. here''s a simple app: > > # source generated by foxGUIb 1.0.0 > > class MainWindow > def initialize( parent) > construct_widget_tree( parent) > init if respond_to? ''init'' > end > > def construct_widget_tree( parent) > @topwin> FX::MainWindow.new(parent){|w| > @MainWindow=w > w.wdg_name=''MainWindow'' > w.backColor=Fox::FXRGBA(212,208,200,255) > w.width=216 > w.hSpacing=0 > w.shown=true > w.y=167 > w.height=218 > w.title="MainWindow" > w.vSpacing=0 > w.x=262 > FX::VerticalFrame.new(@MainWindow){|w| > @VerticalFrame=w > w.wdg_name=''VerticalFrame'' > w.baseColor=Fox::FXRGBA(212,208,200,255) > w.backColor=Fox::FXRGBA(212,208,200,255) > w.width=216 > w.height=218 > w.shadowColor=Fox::FXRGBA(139,137,132,255) > FX::Button.new(@VerticalFrame){|w| > @Button=w > w.wdg_name=''Button'' > w.baseColor=Fox::FXRGBA(212,208,200,255) > w.text="click to see what happens!" > w.backColor=Fox::FXRGBA(212,208,200,255) > > w.font=FX::Font.new.from_s(''Sans|90|0|0|0|0|0'').to_FXFont > w.width=153 > w.height=23 > w.shadowColor=Fox::FXRGBA(139,137,132,255) > @Button.connect(Fox::SEL_LEFTBUTTONRELEASE){ > @Text.appendText "lmb up\n" > 0 # this prevents fox from blocking the builtin > event handler for leftbuttonpress > } > @Button.connect(Fox::SEL_LEFTBUTTONPRESS){ > @Text.appendText "lmb down\n" > 0 # this prevents fox from blocking the builtin > event handler for leftbuttonpress > } > @Button.connect(Fox::SEL_COMMAND){ > @Text.appendText "click!\n" > } > } > FX::Text.new(@VerticalFrame){|w| > @Text=w > w.wdg_name=''Text'' > > w.font=FX::Font.new.from_s(''Sans|90|0|0|0|0|0'').to_FXFont > w.width=216 > w.selBackColor=Fox::FXRGBA(10,36,106,255) > w.y=23 > w.height=195 > } > } > } > end > attr_reader :topwin > attr_reader :MainWindow > attr_reader :VerticalFrame > attr_reader :Button > attr_reader :Text > end > > #unit test > if __FILE__==$0 > require ''libGUIb16'' > app=FX::App.new > w=MainWindow.new app > w.topwin.show(Fox::PLACEMENT_SCREEN) > app.create > app.run > end > > notice require ''libGUIb16'' and then it uses ''fox16'' or ''fox14'' in its'' > system. > I''m amazed at the size of the GUI builder app. Nothing large like Glade or > IronRuby. > > > On 3/3/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: >> >> See code below, many thanks: >> >> require ''fox16'' >> include Fox >> >> require "find" >> require "fileutils" >> >> class ScriptGui < FXMainWindow #SUBCLASS FOR CREATING A WINDOW, CONTAINS >> ALL THE CUSTOMISATION INFORMATION >> def initialize(app) >> super(app, "Script", :width => 700, :height => 200) >> frame = FXVerticalFrame.new(self, LAYOUT_LEFT|LAYOUT_FILL_X) >> #FRAMES FOR INPUT >> frame1 = FXHorizontalFrame.new(frame, >> LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y) >> >> >> inputFileA = FXButton.new(frame1, "Input File") >> inputFileA.connect(SEL_COMMAND) do >> #the connect will ensure the following block is performed >> dialog = FXFileDialog.new(self, "Select file") >> dialog.patternList = ["Text Files (*.txt)", "All Files (*)"] >> #recognised file types >> dialog.selectMode = SELECTFILE_EXISTING >> #select a file >> if dialog.execute != 0 >> #display the box and wait fot user response >> @aInput.text = dialog.filename >> #if the user selects a file it write it in inputfield >> end >> end >> @aInput = FXTextField.new(frame1, 90, :opts => >> JUSTIFY_LEFT|FRAME_SUNKEN|FRAME_THICK) >> >> FXHorizontalSeparator.new(frame, :opts => >> LAYOUT_FILL_X|SEPARATOR_GROOVE) >> >> buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, >> method(:matcher)) #call method matcher to commence >> process >> end >> >> def matcher(sender, sel, ptr) >> #set up hash for itemC and doc ID >> @hashMapping = Hash.new {|h,k| h[k] = []} >> >> #process loadfile to capture doc ID''s & itemC values. >> IO.foreach(@aInput.to_s) do |data| >> #go through the input concordance loadfile >> fields = data.split(" ") >> #split the field on this >> itemA = fields[13].delete("?").downcase >> >> itemB = fields[0].delete("?,\"") >> >> itemC = fields[35].delete("?,\"") >> >> if itemA.to_s.downcase == "pdf" >> @hashMapping[itemC] << itemB >> >> end >> end >> >> Find.find(@aInput.to_s) do |curPath2| >> >> if File.file?(curPath2) and curPath2[/\.txt$/] >> itemCFN = File.basename(curPath2, ".txt").strip.to_s.downcase >> #grabs the file name stripping whitespace >> finditemC(curPath2, itemCFN) >> >> end >> end >> end >> >> def finditemC(curPath2, itemCFN) >> >> @hashMapping.each do |itemDetail| >> @entryArray = [] >> >> entry = itemDetail.to_s.strip >> >> @entryArray << itemDetail.to_s.strip >> >> if entry.match(/#{itemCFN}/) >> >> puts itemCFN >> end >> end >> end >> >> def create >> super >> show(PLACEMENT_SCREEN) >> #SHOW THE GUI ON THE SCREEN >> end >> end >> >> #CONSTRUCTOR >> if __FILE__ == $0 >> FXApp.new do |app| >> ScriptGui.new(app) >> app.create#CALLS THE METHOD CREATE TO ENSURE ALL NEEDED INFO IS ADDED >> app.run#STARTS THE CREATION OF THE WINDOWS >> end >> end >> >> --- On *Tue, 2/3/10, Joey Kinsella <jkinsella at ancillaryservices.com>*wrote: >> >> >> From: Joey Kinsella <jkinsella at ancillaryservices.com> >> Subject: Re: [fxruby-users] Class with looping objects >> To: fxruby-users at rubyforge.org >> Date: Tuesday, 2 March, 2010, 13:58 >> >> It would be much easier to help you if we could see at least example code >> (similar to what your doing.) >> However, the error you displayed below tells me your doing something >> incorrectly. Are you sure self.close() is really what you want to do? >> Perhaps you should try self.hide()/self.show(). I don''t know, without actual >> code it''s hard to tell what you are trying to do. But I hope this helps. >> >> On Tue, Mar 2, 2010 at 4:34 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >> > wrote: >> >>> Hi, >>> >>> Thanks for your reply. >>> >>> I have tried this previously and I get the following error: >>> >>> C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in >>> `getText'': This FXTextField * already released (RuntimeError) >>> >>> Code is: >>> >>> buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>> method(:matcher)) >>> end >>> def matcher(sender, sel, ptr) >>> self.close(true) >>> #.... >>> >>> Just to clarify, when matcher runs, it does >>> >>> Matcher object - get first item and call object2 >>> Object2 does stuff and then we go back to object matcher and get the next >>> item >>> This loop continues until all items have been through both objects then >>> once finished the run button pops up again and the processing is done, at >>> this point I want a GUI. >>> >>> Thanks a lot >>> >>> Stuart >>> >>> >>> --- On *Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com<http://mc/compose?to=jkinsella at ancillaryservices.com> >>> >* wrote: >>> >>> >>> From: Joey Kinsella <jkinsella at ancillaryservices.com<http://mc/compose?to=jkinsella at ancillaryservices.com> >>> > >>> Subject: Re: [fxruby-users] Class with looping objects >>> >>> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> Date: Monday, 1 March, 2010, 14:43 >>> >>> Couldn''t you just do: >>> >>> def initialize >>> # ... >>> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>> method(:matcher)) >>> # ... >>> end >>> >>> def matcher(sender, selector, data) >>> # ... >>> self.close # (true) # if you want to notify the messaging system. >>> end >>> >>> or well, something along those lines.. button is a reference to an >>> FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also >>> the code above is assuming that it''s an object which extends FXMainWindow. >>> >>> Hope this helps, >>> -Joey >>> >>> On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>> > wrote: >>> >>>> Hi, >>>> >>>> I have a GUI which triggers an object to do some stuff, when you press >>>> the FXButton it calls matcher e.g. >>>> >>>> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>>> method(:matcher)) >>>> >>>> This button remains in a pressed state until the object has finished >>>> running, when it is complete the button pops back up. I am trying to add a >>>> popup box to respond to the button popping up (or processing finished) like >>>> so: >>>> >>>> if button == SEL_KEYRELEASE >>>> FXMessageBox.information(self, MBOX_OK, "Complete") >>>> mainwindow.close >>>> end >>>> >>>> This however does not work, any ideas how I can acheive this? >>>> >>>> Many thanks >>>> >>>> --- On *Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>>> >* wrote: >>>> >>>> >>>> From: Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>>> > >>>> Subject: [fxruby-users] Class with looping objects >>>> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>> Date: Friday, 26 February, 2010, 19:38 >>>> >>>> >>>> Hi all, >>>> >>>> Apologies if this is a stupid question but it is getting the best of me. >>>> >>>> I have a class which contains a GUI object which has serveral text >>>> fields and buttons which when used trigger the use of further objects which >>>> all loop through data, the structure is as follows: >>>> >>>> class >>>> def GUI >>>> GUI calls object1 >>>> end >>>> def object1 loops through some data one entry at a time and for each >>>> entry passes to a new object >>>> end >>>> def object2 loops through passed data and does stuff >>>> end >>>> then the next bit of data does the same thing in object1 >>>> >>>> >>>> What I need is a gui that pops up when my script runs through all of >>>> objects for each bit of data. Any ideas? I just need to know when the loop >>>> is complete, at present I press the go button on my fx GUI and it stays >>>> pressed in until all processing is done then pops back out. At this point I >>>> need a Gui. >>>> >>>> I hope this makes sense, >>>> >>>> Many thanks >>>> >>>> >>>> >>>> _______________________________________________ >>>> fxruby-users mailing list >>>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>> http://rubyforge.org/mailman/listinfo/fxruby-users >>>> >>>> >>>> >>>> _______________________________________________ >>>> fxruby-users mailing list >>>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>> http://rubyforge.org/mailman/listinfo/fxruby-users >>>> >>> >>> -- >>> If you are not the intended recipient, you are hereby notified >>> that any dissemination, distribution, copying or other use of >>> this communication is strictly prohibited. If you have >>> received this communication in error, please notify us >>> >>> immediately. >>> >>> >>> -----Inline Attachment Follows----- >>> >>> >>> _______________________________________________ >>> fxruby-users mailing list >>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> http://rubyforge.org/mailman/listinfo/fxruby-users >>> >>> >>> >>> _______________________________________________ >>> fxruby-users mailing list >>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> http://rubyforge.org/mailman/listinfo/fxruby-users >>> >> >> -- >> If you are not the intended recipient, you are hereby notified >> that any dissemination, distribution, copying or other use of >> this communication is strictly prohibited. If you have >> received this communication in error, please notify us >> >> immediately. >> >> >> -----Inline Attachment Follows----- >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >> http://rubyforge.org/mailman/listinfo/fxruby-users >> >> >> >> _______________________________________________ >> fxruby-users mailing list >> fxruby-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/fxruby-users >> > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100303/c8638c52/attachment-0001.html>
I used the tabs in scite here: require ''fox16'' include Fox require "find" require "fileutils" #SUBCLASS FOR CREATING A WINDOW, CONTAINS ALL THE CUSTOMISATION INFORMATION class ScriptGui < FXMainWindow def initialize(app) super(app, "Script", :width => 700, :height => 200) frame = FXVerticalFrame.new(self, LAYOUT_LEFT|LAYOUT_FILL_X) #FRAMES FOR INPUT frame1 = FXHorizontalFrame.new(frame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y) inputFileA = FXButton.new(frame1, "Input File") inputFileA.connect(SEL_COMMAND) do #the connect will ensure the following block is performed dialog = FXFileDialog.new(self, "Select file") dialog.patternList = ["Text Files (*.txt)", "All Files (*)"] #recognised file types dialog.selectMode SELECTFILE_EXISTING #select a file if dialog.execute !0 #display the box and wait for user response @aInput.text dialog.filename #if the user selects a file, write it in inputfield end end @aInput = FXTextField.new(frame1, 90, :opts => JUSTIFY_LEFT|FRAME_SUNKEN|FRAME_THICK) FXHorizontalSeparator.new(frame, :opts => LAYOUT_FILL_X|SEPARATOR_GROOVE) buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, method(:matcher)) #call method matcher to commence process end def matcher(sender, selector, data) #set up hash for itemC and doc ID @hashMapping = Hash.new {|h,k| h[k] = []} #process loadfile to capture doc ID''s & itemC values. IO.foreach(@aInput.to_s) do |data| #go through the input concordance loadfile fields = data.split(" ") #split the field on this itemA fields[13].delete("?").downcase itemB fields[0].delete("?,\"") itemC fields[35].delete("?,\"") if itemA.to_s.downcase == "pdf" @hashMapping[itemC] << itemB end end Find.find(@aInput.to_s) do |curPath2| if File.file?(curPath2) and curPath2[/\.txt$/] itemCFN = File.basename(curPath2, ".txt").strip.to_s.downcase #grabs the file name stripping whitespace finditemC(curPath2, itemCFN) end end end def finditemC(curPath2, itemCFN) @hashMapping.each do |itemDetail| @entryArray [] entry itemDetail.to_s.strip @entryArray << itemDetail.to_s.strip if entry.match(/#{itemCFN}/) puts itemCFN end end end def create super show(PLACEMENT_SCREEN) #SHOW THE GUI ON THE SCREEN end end #CONSTRUCTOR if __FILE__ == $0 FXApp.new do |app| ScriptGui.new(app) app.create#CALLS THE METHOD CREATE TO ENSURE ALL NEEDED INFO IS ADDED app.run#STARTS THE CREATION OF THE WINDOWS end end and here is the go:>ruby ScriptGui.rbScriptGui.rb:42:in `matcher'': undefined method `delete'' for nil:NilClass (NoMethodError) from ScriptGui.rb:40:in `foreach'' from ScriptGui.rb:40:in `matcher'' from C:/allruby/rubyinstaller/sandbox/ruby18_mingw/lib/ruby/site_ruby/1.8/fox16/responder2.rb:55:in `call'' from C:/allruby/rubyinstaller/sandbox/ruby18_mingw/lib/ruby/site_ruby/1.8/fox16/responder2.rb:55:in `onHandleMsg'' from ScriptGui.rb:80:in `run'' from ScriptGui.rb:80 from C:/allruby/rubyinstaller/sandbox/ruby18_mingw/lib/ruby/site_ruby/1.8/fox16/kwargs.rb:269:in `old_initialize'' from C:/allruby/rubyinstaller/sandbox/ruby18_mingw/lib/ruby/site_ruby/1.8/fox16/kwargs.rb:269:in `initialize'' from ScriptGui.rb:77:in `new'' from ScriptGui.rb:77>Exit code: 1On 3/3/10, Douglas Allen <kb9agt at gmail.com> wrote:> > here is another little tidbit: > theButton.connect(SEL_COMMAND) { > puts "You have clicked the button. Good bye!" > exit} > There are many ways to do blocks. > > > On 3/3/10, Douglas Allen <kb9agt at gmail.com> wrote: >> >> I''m too inexperienced with FXRuby to really help you but have you ever >> worked with the foxGUIb? >> >> I can almost see the same things going on but with different approaches. I >> like that it uses more attribute_reader after building all the widgets. It >> just has such a nice clean format. here''s a simple app: >> >> # source generated by foxGUIb 1.0.0 >> >> class MainWindow >> def initialize( parent) >> construct_widget_tree( parent) >> init if respond_to? ''init'' >> end >> >> def construct_widget_tree( parent) >> @topwin>> FX::MainWindow.new(parent){|w| >> @MainWindow=w >> w.wdg_name=''MainWindow'' >> w.backColor=Fox::FXRGBA(212,208,200,255) >> w.width=216 >> w.hSpacing=0 >> w.shown=true >> w.y=167 >> w.height=218 >> w.title="MainWindow" >> w.vSpacing=0 >> w.x=262 >> FX::VerticalFrame.new(@MainWindow){|w| >> @VerticalFrame=w >> w.wdg_name=''VerticalFrame'' >> w.baseColor=Fox::FXRGBA(212,208,200,255) >> w.backColor=Fox::FXRGBA(212,208,200,255) >> w.width=216 >> w.height=218 >> w.shadowColor=Fox::FXRGBA(139,137,132,255) >> FX::Button.new(@VerticalFrame){|w| >> @Button=w >> w.wdg_name=''Button'' >> w.baseColor=Fox::FXRGBA(212,208,200,255) >> w.text="click to see what happens!" >> w.backColor=Fox::FXRGBA(212,208,200,255) >> >> w.font=FX::Font.new.from_s(''Sans|90|0|0|0|0|0'').to_FXFont >> w.width=153 >> w.height=23 >> w.shadowColor=Fox::FXRGBA(139,137,132,255) >> @Button.connect(Fox::SEL_LEFTBUTTONRELEASE){ >> @Text.appendText "lmb up\n" >> 0 # this prevents fox from blocking the builtin >> event handler for leftbuttonpress >> } >> @Button.connect(Fox::SEL_LEFTBUTTONPRESS){ >> @Text.appendText "lmb down\n" >> 0 # this prevents fox from blocking the builtin >> event handler for leftbuttonpress >> } >> @Button.connect(Fox::SEL_COMMAND){ >> @Text.appendText "click!\n" >> } >> } >> FX::Text.new(@VerticalFrame){|w| >> @Text=w >> w.wdg_name=''Text'' >> >> w.font=FX::Font.new.from_s(''Sans|90|0|0|0|0|0'').to_FXFont >> w.width=216 >> w.selBackColor=Fox::FXRGBA(10,36,106,255) >> w.y=23 >> w.height=195 >> } >> } >> } >> end >> attr_reader :topwin >> attr_reader :MainWindow >> attr_reader :VerticalFrame >> attr_reader :Button >> attr_reader :Text >> end >> >> #unit test >> if __FILE__==$0 >> require ''libGUIb16'' >> app=FX::App.new >> w=MainWindow.new app >> w.topwin.show(Fox::PLACEMENT_SCREEN) >> app.create >> app.run >> end >> >> notice require ''libGUIb16'' and then it uses ''fox16'' or ''fox14'' in its'' >> system. >> I''m amazed at the size of the GUI builder app. Nothing large like Glade or >> IronRuby. >> >> >> On 3/3/10, Stuart Clarke <stuart_clarke86 at yahoo.com> wrote: >>> >>> See code below, many thanks: >>> >>> require ''fox16'' >>> include Fox >>> >>> require "find" >>> require "fileutils" >>> >>> class ScriptGui < FXMainWindow #SUBCLASS FOR CREATING A WINDOW, CONTAINS >>> ALL THE CUSTOMISATION INFORMATION >>> def initialize(app) >>> super(app, "Script", :width => 700, :height => 200) >>> frame = FXVerticalFrame.new(self, LAYOUT_LEFT|LAYOUT_FILL_X) >>> #FRAMES FOR INPUT >>> frame1 = FXHorizontalFrame.new(frame, >>> LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y) >>> >>> >>> inputFileA = FXButton.new(frame1, "Input File") >>> inputFileA.connect(SEL_COMMAND) do >>> #the connect will ensure the following block is performed >>> dialog = FXFileDialog.new(self, "Select file") >>> dialog.patternList = ["Text Files (*.txt)", "All Files (*)"] >>> #recognised file types >>> dialog.selectMode = SELECTFILE_EXISTING >>> #select a file >>> if dialog.execute != 0 >>> #display the box and wait fot user response >>> @aInput.text = dialog.filename >>> #if the user selects a file it write it in inputfield >>> end >>> end >>> @aInput = FXTextField.new(frame1, 90, :opts => >>> JUSTIFY_LEFT|FRAME_SUNKEN|FRAME_THICK) >>> >>> FXHorizontalSeparator.new(frame, :opts => >>> LAYOUT_FILL_X|SEPARATOR_GROOVE) >>> >>> buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>> method(:matcher)) #call method matcher to commence >>> process >>> end >>> >>> def matcher(sender, sel, ptr) >>> #set up hash for itemC and doc ID >>> @hashMapping = Hash.new {|h,k| h[k] = []} >>> >>> #process loadfile to capture doc ID''s & itemC values. >>> IO.foreach(@aInput.to_s) do |data| >>> #go through the input concordance loadfile >>> fields = data.split(" ") >>> #split the field on this >>> itemA = fields[13].delete("?").downcase >>> >>> itemB = fields[0].delete("?,\"") >>> >>> itemC = fields[35].delete("?,\"") >>> >>> if itemA.to_s.downcase == "pdf" >>> @hashMapping[itemC] << itemB >>> >>> end >>> end >>> >>> Find.find(@aInput.to_s) do |curPath2| >>> >>> if File.file?(curPath2) and curPath2[/\.txt$/] >>> itemCFN = File.basename(curPath2, ".txt").strip.to_s.downcase >>> #grabs the file name stripping whitespace >>> finditemC(curPath2, itemCFN) >>> >>> end >>> end >>> end >>> >>> def finditemC(curPath2, itemCFN) >>> >>> @hashMapping.each do |itemDetail| >>> @entryArray = [] >>> >>> entry = itemDetail.to_s.strip >>> >>> @entryArray << itemDetail.to_s.strip >>> >>> if entry.match(/#{itemCFN}/) >>> >>> puts itemCFN >>> end >>> end >>> end >>> >>> def create >>> super >>> show(PLACEMENT_SCREEN) >>> #SHOW THE GUI ON THE SCREEN >>> end >>> end >>> >>> #CONSTRUCTOR >>> if __FILE__ == $0 >>> FXApp.new do |app| >>> ScriptGui.new(app) >>> app.create#CALLS THE METHOD CREATE TO ENSURE ALL NEEDED INFO IS ADDED >>> app.run#STARTS THE CREATION OF THE WINDOWS >>> end >>> end >>> >>> --- On *Tue, 2/3/10, Joey Kinsella <jkinsella at ancillaryservices.com>*wrote: >>> >>> >>> From: Joey Kinsella <jkinsella at ancillaryservices.com> >>> Subject: Re: [fxruby-users] Class with looping objects >>> To: fxruby-users at rubyforge.org >>> Date: Tuesday, 2 March, 2010, 13:58 >>> >>> It would be much easier to help you if we could see at least example code >>> (similar to what your doing.) >>> However, the error you displayed below tells me your doing something >>> incorrectly. Are you sure self.close() is really what you want to do? >>> Perhaps you should try self.hide()/self.show(). I don''t know, without actual >>> code it''s hard to tell what you are trying to do. But I hope this helps. >>> >>> On Tue, Mar 2, 2010 at 4:34 AM, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>> > wrote: >>> >>>> Hi, >>>> >>>> Thanks for your reply. >>>> >>>> I have tried this previously and I get the following error: >>>> >>>> C:/Ruby/lib/ruby/gems/1.8/gems/fxruby-1.6.16-x86-mswin32-60/lib/fox16/aliases.rb:4812:in >>>> `getText'': This FXTextField * already released (RuntimeError) >>>> >>>> Code is: >>>> >>>> buttonCode = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>>> method(:matcher)) >>>> end >>>> def matcher(sender, sel, ptr) >>>> self.close(true) >>>> #.... >>>> >>>> Just to clarify, when matcher runs, it does >>>> >>>> Matcher object - get first item and call object2 >>>> Object2 does stuff and then we go back to object matcher and get the >>>> next item >>>> This loop continues until all items have been through both objects then >>>> once finished the run button pops up again and the processing is done, at >>>> this point I want a GUI. >>>> >>>> Thanks a lot >>>> >>>> Stuart >>>> >>>> >>>> --- On *Mon, 1/3/10, Joey Kinsella <jkinsella at ancillaryservices.com<http://mc/compose?to=jkinsella at ancillaryservices.com> >>>> >* wrote: >>>> >>>> >>>> From: Joey Kinsella <jkinsella at ancillaryservices.com<http://mc/compose?to=jkinsella at ancillaryservices.com> >>>> > >>>> Subject: Re: [fxruby-users] Class with looping objects >>>> >>>> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>> Date: Monday, 1 March, 2010, 14:43 >>>> >>>> Couldn''t you just do: >>>> >>>> def initialize >>>> # ... >>>> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>>> method(:matcher)) >>>> # ... >>>> end >>>> >>>> def matcher(sender, selector, data) >>>> # ... >>>> self.close # (true) # if you want to notify the messaging system. >>>> end >>>> >>>> or well, something along those lines.. button is a reference to an >>>> FXButton object, It should never equal SEL_KEYRELEASE in this respect. Also >>>> the code above is assuming that it''s an object which extends FXMainWindow. >>>> >>>> Hope this helps, >>>> -Joey >>>> >>>> On Mon, Mar 1, 2010 at 6:09 AM, Stuart Clarke < >>>> stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>>> > wrote: >>>> >>>>> Hi, >>>>> >>>>> I have a GUI which triggers an object to do some stuff, when you press >>>>> the FXButton it calls matcher e.g. >>>>> >>>>> button = FXButton.new(frame, "Run").connect(SEL_COMMAND, >>>>> method(:matcher)) >>>>> >>>>> This button remains in a pressed state until the object has finished >>>>> running, when it is complete the button pops back up. I am trying to add a >>>>> popup box to respond to the button popping up (or processing finished) like >>>>> so: >>>>> >>>>> if button == SEL_KEYRELEASE >>>>> FXMessageBox.information(self, MBOX_OK, "Complete") >>>>> mainwindow.close >>>>> end >>>>> >>>>> This however does not work, any ideas how I can acheive this? >>>>> >>>>> Many thanks >>>>> >>>>> --- On *Fri, 26/2/10, Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>>>> >* wrote: >>>>> >>>>> >>>>> From: Stuart Clarke <stuart_clarke86 at yahoo.com<http://mc/compose?to=stuart_clarke86 at yahoo.com> >>>>> > >>>>> Subject: [fxruby-users] Class with looping objects >>>>> To: fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>>> Date: Friday, 26 February, 2010, 19:38 >>>>> >>>>> >>>>> Hi all, >>>>> >>>>> Apologies if this is a stupid question but it is getting the best of >>>>> me. >>>>> >>>>> I have a class which contains a GUI object which has serveral text >>>>> fields and buttons which when used trigger the use of further objects which >>>>> all loop through data, the structure is as follows: >>>>> >>>>> class >>>>> def GUI >>>>> GUI calls object1 >>>>> end >>>>> def object1 loops through some data one entry at a time and for each >>>>> entry passes to a new object >>>>> end >>>>> def object2 loops through passed data and does stuff >>>>> end >>>>> then the next bit of data does the same thing in object1 >>>>> >>>>> >>>>> What I need is a gui that pops up when my script runs through all of >>>>> objects for each bit of data. Any ideas? I just need to know when the loop >>>>> is complete, at present I press the go button on my fx GUI and it stays >>>>> pressed in until all processing is done then pops back out. At this point I >>>>> need a Gui. >>>>> >>>>> I hope this makes sense, >>>>> >>>>> Many thanks >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> fxruby-users mailing list >>>>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>>> http://rubyforge.org/mailman/listinfo/fxruby-users >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> fxruby-users mailing list >>>>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>>> http://rubyforge.org/mailman/listinfo/fxruby-users >>>>> >>>> >>>> -- >>>> If you are not the intended recipient, you are hereby notified >>>> that any dissemination, distribution, copying or other use of >>>> this communication is strictly prohibited. If you have >>>> received this communication in error, please notify us >>>> >>>> >>>> immediately. >>>> >>>> >>>> -----Inline Attachment Follows----- >>>> >>>> >>>> _______________________________________________ >>>> fxruby-users mailing list >>>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>> http://rubyforge.org/mailman/listinfo/fxruby-users >>>> >>>> >>>> >>>> _______________________________________________ >>>> fxruby-users mailing list >>>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>>> http://rubyforge.org/mailman/listinfo/fxruby-users >>>> >>> >>> -- >>> If you are not the intended recipient, you are hereby notified >>> that any dissemination, distribution, copying or other use of >>> this communication is strictly prohibited. If you have >>> received this communication in error, please notify us >>> >>> >>> immediately. >>> >>> >>> -----Inline Attachment Follows----- >>> >>> _______________________________________________ >>> fxruby-users mailing list >>> fxruby-users at rubyforge.org<http://mc/compose?to=fxruby-users at rubyforge.org> >>> http://rubyforge.org/mailman/listinfo/fxruby-users >>> >>> >>> >>> _______________________________________________ >>> fxruby-users mailing list >>> fxruby-users at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/fxruby-users >>> >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/fxruby-users/attachments/20100303/320f2b49/attachment-0001.html>