windowControllerDidLoadNib strangeness
Hello, I'm encountering some weird behavior when trying to update a view using windowControllerDidLoadNib after loading in a persistent document. When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) *I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results.* This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading. * * * * class MyDocument < NSDocument attr_accessor :loadedmodel, :root #outlet to model field of controller # Name of nib containing document window def windowNibName 'MyDocument' end # Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end # Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end # Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end end Regards, Tom Jordan
trying to get the code to format right, here it is again (hopefully better!): class MyDocument < NSDocument attr_accessor :loadedmodel, :root #outlet to model field of controller # Name of nib containing document window def windowNibName 'MyDocument' end # Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end # Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end # Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end end
Hi Tom, I can't seem to understand what is wrong, I guess, since you said everything else works, that you did call the necessary `framework "Foundation"`? Could you maybe provide us some test project, so that we can reproduce and maybe trace the error better? :-) Thank you! -- Thibault Martin-Lagardette On Nov 26, 2010, at 07:07, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using windowControllerDidLoadNib after loading in a persistent document. When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
Hi Tom, I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected. Could you try that and see if you still see the problem? Also, do you run a 32-bit machine? Laurent On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
Thanks Guys ! I just created a new project and it worked.. Now I'm going to bring in my files from the other project and see if I can find where it breaks.. I'm also using the MRGraphics library at: https://github.com/mattetti/macruby_graphics It works great to quickly get a custom graphics view going, although I have noticed some strangeness with IB.. in that whenever I add new widgets to the top level (and only) nib, I need to delete the custom view that has the MRgraphics, and repaste it back in, and reconnect it, or else the newly added widgets won't show up in the build (until you mouse over to where they're supposed to be and click.. in which case they will appear (sometimes partially if it's a matrix, for example), and even then they won't function right). It drove me crazy until I found out that deleting the custom view and repasting it worked.. although I don't know what I'm going to do once I need to have more than one custom view and keep adding widgets, etc.. I just wanted to mention this in case anyone has seen this before. I'm running 10.6 on a Mac Pro.. which I believe it's 64-bit.. I need to get a Github account or something so that I can post a full project if need be.. This is a great resource, I appreciate the help.. thanks ! Regards, Tom Jordan On Fri, Nov 26, 2010 at 3:42 PM, Laurent Sansonetti <lsansonetti@apple.com>wrote:
Hi Tom,
I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected.
Could you try that and see if you still see the problem? Also, do you run a 32-bit machine?
Laurent
On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
I'm having some trouble bringing in the old nib to the newly working project, so I went back to the old project and removed the MRGraphics code.. windowControllerDidLoadNib is now working right in the original project.. I hope there is a way to still use the MRGraphics library.. I'm going to submit an issue at its Github site.. On Fri, Nov 26, 2010 at 4:46 PM, Tom Jordan <viresh53@gmail.com> wrote:
Thanks Guys ! I just created a new project and it worked.. Now I'm going to bring in my files from the other project and see if I can find where it breaks.. I'm also using the MRGraphics library at: https://github.com/mattetti/macruby_graphics
It works great to quickly get a custom graphics view going, although I have noticed some strangeness with IB.. in that whenever I add new widgets to the top level (and only) nib, I need to delete the custom view that has the MRgraphics, and repaste it back in, and reconnect it, or else the newly added widgets won't show up in the build (until you mouse over to where they're supposed to be and click.. in which case they will appear (sometimes partially if it's a matrix, for example), and even then they won't function right).
It drove me crazy until I found out that deleting the custom view and repasting it worked.. although I don't know what I'm going to do once I need to have more than one custom view and keep adding widgets, etc.. I just wanted to mention this in case anyone has seen this before.
I'm running 10.6 on a Mac Pro.. which I believe it's 64-bit.. I need to get a Github account or something so that I can post a full project if need be..
This is a great resource, I appreciate the help.. thanks !
Regards,
Tom Jordan
On Fri, Nov 26, 2010 at 3:42 PM, Laurent Sansonetti <lsansonetti@apple.com
wrote:
Hi Tom,
I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected.
Could you try that and see if you still see the problem? Also, do you run a 32-bit machine?
Laurent
On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
i jumped the gun... The problem is in my code that uses the MRGraphics library.. since I removed that, but kept in all of the MRGraphics files, and required it. So they are compiling alright, but the def drawRect(rect) @theSteps ? @theSteps : @theSteps = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] # initial setup / default view values @theStartstep ? @theStartstep : @theStartstep = 1 @theNumsteps ? @theNumsteps : @theNumsteps = 16 dimensions = [CGRectGetWidth(rect), CGRectGetHeight(rect)] # MRGraphics setup code Canvas.for_current_context(:size => dimensions) do |c| stepboxes = Path.new # declare objects to be drawn highlightedRange = Path.new cursor = Path.new start = (@theStartstep-1)%16 # calculate highlighted range length = @theNumsteps if (start+length > 16) highlightedRange.rect( start*29, 0, ((16-start)*29)+4, 162 ) highlightedRange.rect( 0, 0, (start+length-16)*29, 162 ) else highlightedRange.rect( start*29, 0, length*29, 162 ) end cursor.rect( (start*29)-1, 0, 1, 162) # calculate location of the vertical cursor @theSteps.each_with_index do |k, i| # calculate locations of the 16 step-boxes stepboxes.rect( i*29, k*9, 29, 9 ) end c.background(Color.gray) # paint background c.fill(Color.blue) # paint highlighted range c.draw(highlightedRange) c.fill(Color.yellow) # draw step-boxes c.stroke(0) c.stroke_width(1) c.draw(stepboxes) c.fill(Color.black) # draw cursor c.stroke_width(0) c.draw(cursor) end end On Fri, Nov 26, 2010 at 5:14 PM, Tom Jordan <viresh53@gmail.com> wrote:
I'm having some trouble bringing in the old nib to the newly working project, so I went back to the old project and removed the MRGraphics code.. windowControllerDidLoadNib is now working right in the original project.. I hope there is a way to still use the MRGraphics library.. I'm going to submit an issue at its Github site..
On Fri, Nov 26, 2010 at 4:46 PM, Tom Jordan <viresh53@gmail.com> wrote:
Thanks Guys ! I just created a new project and it worked.. Now I'm going to bring in my files from the other project and see if I can find where it breaks.. I'm also using the MRGraphics library at: https://github.com/mattetti/macruby_graphics
It works great to quickly get a custom graphics view going, although I have noticed some strangeness with IB.. in that whenever I add new widgets to the top level (and only) nib, I need to delete the custom view that has the MRgraphics, and repaste it back in, and reconnect it, or else the newly added widgets won't show up in the build (until you mouse over to where they're supposed to be and click.. in which case they will appear (sometimes partially if it's a matrix, for example), and even then they won't function right).
It drove me crazy until I found out that deleting the custom view and repasting it worked.. although I don't know what I'm going to do once I need to have more than one custom view and keep adding widgets, etc.. I just wanted to mention this in case anyone has seen this before.
I'm running 10.6 on a Mac Pro.. which I believe it's 64-bit.. I need to get a Github account or something so that I can post a full project if need be..
This is a great resource, I appreciate the help.. thanks !
Regards,
Tom Jordan
On Fri, Nov 26, 2010 at 3:42 PM, Laurent Sansonetti < lsansonetti@apple.com> wrote:
Hi Tom,
I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected.
Could you try that and see if you still see the problem? Also, do you run a 32-bit machine?
Laurent
On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
The problem is in my code that uses the MRGraphics library.. I removed that, but kept in all of the MRGraphics files, and required it, and windowControllerDidLoadNib is still working. So the MPGraphics files are compiling alright, but the code that uses it is somehow triggering an error.
I'm just providing it here in case someone has used it before. I'm thinking that the problem is still with the graphics library, since I just copied one of their examples and changed it to use my variables and objects to draw.
Probably by calling into the library it somehow breaks windowControllerDidLoadNib although I did a search for windowControllerDidLoadNib in the MRgraphics folder and it's not there..
def drawRect(rect)
@theSteps ? @theSteps : @theSteps = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] # initial setup / default view values
@theStartstep ? @theStartstep : @theStartstep = 1
@theNumsteps ? @theNumsteps : @theNumsteps = 16
dimensions = [CGRectGetWidth(rect), CGRectGetHeight(rect)] # MRGraphics setup code
Canvas.for_current_context(:size => dimensions) do |c|
stepboxes = Path.new # declare objects to be drawn
highlightedRange = Path.new
cursor = Path.new
start = (@theStartstep-1)%16 # calculate highlighted range
length = @theNumsteps
if (start+length > 16)
highlightedRange.rect( start*29, 0, ((16-start)*29)+4, 162 )
highlightedRange.rect( 0, 0, (start+length-16)*29, 162 )
else
highlightedRange.rect( start*29, 0, length*29, 162 )
end
cursor.rect( (start*29)-1, 0, 1, 162) # calculate location of the vertical cursor
@theSteps.each_with_index do |k, i| # calculate locations of the 16 step-boxes
stepboxes.rect( i*29, k*9, 29, 9 )
end
c.background(Color.gray) # paint background
c.fill(Color.blue) # paint highlighted range
c.draw(highlightedRange)
c.fill(Color.yellow) # draw step-boxes
c.stroke(0)
c.stroke_width(1)
c.draw(stepboxes)
c.fill(Color.black) # draw cursor
c.stroke_width(0)
c.draw(cursor)
end
end
On Fri, Nov 26, 2010 at 5:14 PM, Tom Jordan <viresh53@gmail.com> wrote:
I'm having some trouble bringing in the old nib to the newly working project, so I went back to the old project and removed the MRGraphics code.. windowControllerDidLoadNib is now working right in the original project.. I hope there is a way to still use the MRGraphics library.. I'm going to submit an issue at its Github site..
On Fri, Nov 26, 2010 at 4:46 PM, Tom Jordan <viresh53@gmail.com> wrote:
Thanks Guys ! I just created a new project and it worked.. Now I'm going to bring in my files from the other project and see if I can find where it breaks.. I'm also using the MRGraphics library at: https://github.com/mattetti/macruby_graphics
It works great to quickly get a custom graphics view going, although I have noticed some strangeness with IB.. in that whenever I add new widgets to the top level (and only) nib, I need to delete the custom view that has the MRgraphics, and repaste it back in, and reconnect it, or else the newly added widgets won't show up in the build (until you mouse over to where they're supposed to be and click.. in which case they will appear (sometimes partially if it's a matrix, for example), and even then they won't function right).
It drove me crazy until I found out that deleting the custom view and repasting it worked.. although I don't know what I'm going to do once I need to have more than one custom view and keep adding widgets, etc.. I just wanted to mention this in case anyone has seen this before.
I'm running 10.6 on a Mac Pro.. which I believe it's 64-bit.. I need to get a Github account or something so that I can post a full project if need be..
This is a great resource, I appreciate the help.. thanks !
Regards,
Tom Jordan
On Fri, Nov 26, 2010 at 3:42 PM, Laurent Sansonetti < lsansonetti@apple.com> wrote:
Hi Tom,
I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected.
Could you try that and see if you still see the problem? Also, do you run a 32-bit machine?
Laurent
On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using
When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
Hi Tom, Could you try to reduce the problem into a new Xcode project? (adding MRGraphics to it if necessary.) Once you have a reduction, please attach it to a new ticket: http://www.macruby.org/trac/newticket Thanks :) Laurent On Nov 26, 2010, at 2:30 PM, Tom Jordan wrote:
The problem is in my code that uses the MRGraphics library.. I removed that, but kept in all of the MRGraphics files, and required it, and windowControllerDidLoadNib is still working. So the MPGraphics files are compiling alright, but the code that uses it is somehow triggering an error. I'm just providing it here in case someone has used it before. I'm thinking that the problem is still with the graphics library, since I just copied one of their examples and changed it to use my variables and objects to draw. Probably by calling into the library it somehow breaks windowControllerDidLoadNib although I did a search for windowControllerDidLoadNib in the MRgraphics folder and it's not there..
def drawRect(rect) @theSteps ? @theSteps : @theSteps = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] # initial setup / default view values @theStartstep ? @theStartstep : @theStartstep = 1 @theNumsteps ? @theNumsteps : @theNumsteps = 16
dimensions = [CGRectGetWidth(rect), CGRectGetHeight(rect)] # MRGraphics setup code Canvas.for_current_context(:size => dimensions) do |c|
stepboxes = Path.new # declare objects to be drawn highlightedRange = Path.new cursor = Path.new
start = (@theStartstep-1)%16 # calculate highlighted range length = @theNumsteps if (start+length > 16) highlightedRange.rect( start*29, 0, ((16-start)*29)+4, 162 ) highlightedRange.rect( 0, 0, (start+length-16)*29, 162 ) else highlightedRange.rect( start*29, 0, length*29, 162 ) end
cursor.rect( (start*29)-1, 0, 1, 162) # calculate location of the vertical cursor
@theSteps.each_with_index do |k, i| # calculate locations of the 16 step-boxes stepboxes.rect( i*29, k*9, 29, 9 ) end
c.background(Color.gray) # paint background
c.fill(Color.blue) # paint highlighted range c.draw(highlightedRange)
c.fill(Color.yellow) # draw step-boxes c.stroke(0) c.stroke_width(1) c.draw(stepboxes)
c.fill(Color.black) # draw cursor c.stroke_width(0) c.draw(cursor)
end end
On Fri, Nov 26, 2010 at 5:14 PM, Tom Jordan <viresh53@gmail.com> wrote: I'm having some trouble bringing in the old nib to the newly working project, so I went back to the old project and removed the MRGraphics code.. windowControllerDidLoadNib is now working right in the original project.. I hope there is a way to still use the MRGraphics library.. I'm going to submit an issue at its Github site..
On Fri, Nov 26, 2010 at 4:46 PM, Tom Jordan <viresh53@gmail.com> wrote: Thanks Guys ! I just created a new project and it worked.. Now I'm going to bring in my files from the other project and see if I can find where it breaks.. I'm also using the MRGraphics library at: https://github.com/mattetti/macruby_graphics
It works great to quickly get a custom graphics view going, although I have noticed some strangeness with IB.. in that whenever I add new widgets to the top level (and only) nib, I need to delete the custom view that has the MRgraphics, and repaste it back in, and reconnect it, or else the newly added widgets won't show up in the build (until you mouse over to where they're supposed to be and click.. in which case they will appear (sometimes partially if it's a matrix, for example), and even then they won't function right).
It drove me crazy until I found out that deleting the custom view and repasting it worked.. although I don't know what I'm going to do once I need to have more than one custom view and keep adding widgets, etc.. I just wanted to mention this in case anyone has seen this before.
I'm running 10.6 on a Mac Pro.. which I believe it's 64-bit.. I need to get a Github account or something so that I can post a full project if need be..
This is a great resource, I appreciate the help.. thanks !
Regards,
Tom Jordan
On Fri, Nov 26, 2010 at 3:42 PM, Laurent Sansonetti <lsansonetti@apple.com> wrote: Hi Tom,
I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected.
Could you try that and see if you still see the problem? Also, do you run a 32-bit machine?
Laurent
On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
Hi Laurent, I ended up just learning how to draw in a view using NSBezierPath, much easier than I thought :)) I can post a ticket in a few days once I can figure out where it breaking.. It's not a concern for me anymore, but if it's worth opening a ticket for, I'll be happy to oblige.. Do you think that this could be an issue for others, either now or eventually? or would it add to the clutter and minutiae of non-important tasks? or is everything important? :)) I'm new to open source / community sharing.. not sure how it all works yet.. Thanks ! Tom On Fri, Nov 26, 2010 at 8:07 PM, Laurent Sansonetti <lsansonetti@apple.com>wrote:
Hi Tom,
Could you try to reduce the problem into a new Xcode project? (adding MRGraphics to it if necessary.)
Once you have a reduction, please attach it to a new ticket: http://www.macruby.org/trac/newticket
Thanks :)
Laurent
On Nov 26, 2010, at 2:30 PM, Tom Jordan wrote:
The problem is in my code that uses the MRGraphics library..
I removed that, but kept in all of the MRGraphics files, and required it, and windowControllerDidLoadNib is still working. So the MPGraphics files are compiling alright, but the code that uses it is somehow triggering an error.
I'm just providing it here in case someone has used it before. I'm thinking that the problem is still with the graphics library, since I just copied one of their examples and changed it to use my variables and objects to draw.
Probably by calling into the library it somehow breaks windowControllerDidLoadNib although I did a search for windowControllerDidLoadNib in the MRgraphics folder and it's not there..
def drawRect(rect) @theSteps ? @theSteps : @theSteps = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] # initial setup / default view values @theStartstep ? @theStartstep : @theStartstep = 1 @theNumsteps ? @theNumsteps : @theNumsteps = 16
dimensions = [CGRectGetWidth(rect), CGRectGetHeight(rect)] # MRGraphics setup code Canvas.for_current_context(:size => dimensions) do |c|
stepboxes = Path.new # declare objects to be drawn highlightedRange = Path.new cursor = Path.new
start = (@theStartstep-1)%16 # calculate highlighted range length = @theNumsteps if (start+length > 16) highlightedRange.rect( start*29, 0, ((16-start)*29)+4, 162 ) highlightedRange.rect( 0, 0, (start+length-16)*29, 162 ) else highlightedRange.rect( start*29, 0, length*29, 162 ) end
cursor.rect( (start*29)-1, 0, 1, 162) # calculate location of the vertical cursor
@theSteps.each_with_index do |k, i| # calculate locations of the 16 step-boxes stepboxes.rect( i*29, k*9, 29, 9 ) end
c.background(Color.gray) # paint background
c.fill(Color.blue) # paint highlighted range c.draw(highlightedRange)
c.fill(Color.yellow) # draw step-boxes c.stroke(0) c.stroke_width(1) c.draw(stepboxes)
c.fill(Color.black) # draw cursor c.stroke_width(0) c.draw(cursor)
end end
On Fri, Nov 26, 2010 at 5:14 PM, Tom Jordan <viresh53@gmail.com> wrote:
I'm having some trouble bringing in the old nib to the newly working project, so I went back to the old project and removed the MRGraphics code.. windowControllerDidLoadNib is now working right in the original project.. I hope there is a way to still use the MRGraphics library.. I'm going to submit an issue at its Github site..
On Fri, Nov 26, 2010 at 4:46 PM, Tom Jordan <viresh53@gmail.com> wrote:
Thanks Guys ! I just created a new project and it worked.. Now I'm going to bring in my files from the other project and see if I can find where it breaks.. I'm also using the MRGraphics library at: https://github.com/mattetti/macruby_graphics
It works great to quickly get a custom graphics view going, although I have noticed some strangeness with IB.. in that whenever I add new widgets to the top level (and only) nib, I need to delete the custom view that has the MRgraphics, and repaste it back in, and reconnect it, or else the newly added widgets won't show up in the build (until you mouse over to where they're supposed to be and click.. in which case they will appear (sometimes partially if it's a matrix, for example), and even then they won't function right).
It drove me crazy until I found out that deleting the custom view and repasting it worked.. although I don't know what I'm going to do once I need to have more than one custom view and keep adding widgets, etc.. I just wanted to mention this in case anyone has seen this before.
I'm running 10.6 on a Mac Pro.. which I believe it's 64-bit.. I need to get a Github account or something so that I can post a full project if need be..
This is a great resource, I appreciate the help.. thanks !
Regards,
Tom Jordan
On Fri, Nov 26, 2010 at 3:42 PM, Laurent Sansonetti < lsansonetti@apple.com> wrote:
Hi Tom,
I just created a sample NSDocument-based project, and added a windowControllerDidLoadNib: method to the NSDocument class, calling super as you do, and everything worked as expected.
Could you try that and see if you still see the problem? Also, do you run a 32-bit machine?
Laurent
On Nov 25, 2010, at 10:07 PM, Tom Jordan wrote:
Hello,
I'm encountering some weird behavior when trying to update a view using
When I provide windowControllerDidLoadNib a single argument, as shown below (and required by the NSDocument class definition and in every example I've seen), Xcode says: `windowControllerDidLoadNib:': wrong number of arguments (1 for 0) (ArgumentError) If I don't provide any argument, it says: undefined method `windowControllerDidLoadNib' for #<MyDocument:0x200646660> (NoMethodError) I've tried every combination of one or no args for both the method signature and "super" call on the next line, and I can't seem to get any different results. This is my first time trying to get persistence going, but I've read a lot about it, and everything else is working well.. it saves and loads, but I can't seem to get this hook working to update the GUI upon loading.
class MyDocument < NSDocument
attr_accessor :loadedmodel, :root #outlet to model field of controller
# Name of nib containing document window def windowNibName 'MyDocument' end
# Document data representation for saving (return NSData) def dataOfType(type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) NSKeyedArchiver.archivedDataWithRootObject(@root.model) end
# Read document from data (return non-nil on success) def readFromData(data, ofType:type, error:outError) outError.assign(NSError.errorWithDomain(NSOSStatusErrorDomain, code:-4, userInfo:nil)) @loadedmodel = NSKeyedUnarchiver.unarchiveObjectWithData(data) end
# Return lowercase 'untitled', to comply with HIG def displayName fileURL ? super : super.sub(/^[[:upper:]]/) {|s| s.downcase} end
def windowControllerDidLoadNib(aController) super(aController) @root.model = @loadedmodel NSLog("model loaded") end
end
Regards,
Tom Jordan
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
participants (3)
-
Laurent Sansonetti
-
Thibault Martin-Lagardette
-
Tom Jordan