[fxruby-users] Class with looping objects

Stuart Clarke stuart_clarke86 at yahoo.com
Wed Mar 3 07:11:00 EST 2010


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>


More information about the fxruby-users mailing list