{"id":140,"date":"2006-04-26T16:05:38","date_gmt":"2006-04-27T00:05:38","guid":{"rendered":"http:\/\/www.corbinstreehouse.com\/blog\/?p=140"},"modified":"2018-10-31T10:15:16","modified_gmt":"2018-10-31T17:15:16","slug":"cocoa-modal-nscolorpanel-dialog","status":"publish","type":"post","link":"https:\/\/www.corbinstreehouse.com\/blog\/2006\/04\/cocoa-modal-nscolorpanel-dialog\/","title":{"rendered":"Cocoa: modal NSColorPanel dialog."},"content":{"rendered":"<p id=\"top\" \/>Hi all,<br \/>\nI&#8217;ve seen some people request how to do a modal color panel. Well, carbon has GetColor(..) which ultimately uses the same NSColorPanel. So, you can set it to begin a modal session before you call GetColor(..). Here&#8217;s a code snippet:<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 24.0px; text-indent: -24.0px\"><font face=\"Monaco\" size=\"2\" color=\"#683821\" style=\"font: 10.0px Monaco; color: #683821\">#import &lt;Carbon\/Carbon.h&gt;<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 24.0px; text-indent: -24.0px; font: 10.0px Monaco; min-height: 14.0px\"><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 24.0px; text-indent: -24.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">&#8211; (<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">IBAction<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)buttonClick:(<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">id<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)sender<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 24.0px; text-indent: -24.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">{<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>NSColorPanel *colorPanel = [NSColorPanel sharedColorPanel];<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>NSModalSession session = [NSApp beginModalSessionForWindow:colorPanel];<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px; min-height: 14.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0<\/span><\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>RGBColor inColor = {<\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">128<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">, <\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">128<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">, <\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">128<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">};<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>RGBColor outColor = {<\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">0<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">, <\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">0<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">, <\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">0<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">};<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>Point point = {<\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">0<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">, <\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">0<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">};<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span><\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">if<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"> (GetColor(point, <\/font><font face=\"Monaco\" size=\"2\" color=\"#891315\" style=\"font: 10.0px Monaco; color: #891315\">\u00e2\u20ac\u0153\\p\u00e2\u20ac\u009d<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">, &amp;inColor, &amp;outColor)) {<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 72.0px; text-indent: -72.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 \u00c2\u00a0 \u00c2\u00a0 <\/span>NSColor *color = [NSColor colorWithCalibratedRed:(<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">float<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)outColor.red \/ (<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">float<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)UINT16_MAX green:(<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">float<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)outColor.green \/ (<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">float<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)UINT16_MAX blue:(<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">float<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)outColor.blue \/ (<\/font><font face=\"Monaco\" size=\"2\" color=\"#760f50\" style=\"font: 10.0px Monaco; color: #760f50\">float<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">)UINT16_MAX alpha:<\/font><font face=\"Monaco\" size=\"2\" color=\"#0000ff\" style=\"font: 10.0px Monaco; color: #0000ff\">1.0<\/font><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">];<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 72.0px; text-indent: -72.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 \u00c2\u00a0 \u00c2\u00a0 <\/span>[colorWell setColor:color]; <span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 \u00c2\u00a0 \u00c2\u00a0<\/span><\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>}<\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px; min-height: 14.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0<\/span><\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 48.0px; text-indent: -48.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\"><span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0 <\/span>[NSApp endModalSession:session]; <span class=\"Apple-converted-space\">\u00c2\u00a0 \u00c2\u00a0<\/span><\/font><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 24.0px; text-indent: -24.0px\"><font face=\"Monaco\" size=\"2\" style=\"font: 10.0px Monaco\">}<\/font><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi all, I&#8217;ve seen some people request how to do a modal color panel. Well, carbon has GetColor(..) which ultimately uses the same NSColorPanel. So, you can set it to begin a modal session before&#8230; <a class=\"read-more\" href=\"https:\/\/www.corbinstreehouse.com\/blog\/2006\/04\/cocoa-modal-nscolorpanel-dialog\/\">[read more]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4,6,1],"tags":[63,130,72],"class_list":["post-140","post","type-post","status-publish","format-standard","hentry","category-apple","category-cocoa","category-general","tag-cocoa","tag-objc","tag-programming"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":1,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":5323,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts\/140\/revisions\/5323"}],"wp:attachment":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/tags?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}