Current Text Direction (BiDi support) in Cocoa? - objective-c

I recently received an Arabic translation for my app, but would like to do more than simply replace the strings. I can re-layout most of the NIBs with Interface builder, but there are a few things that I need to do programmatically.
Is there some way in Cocoa to figure out if the current locale is a RightToLeft locale, or do I just have to check to see if the current locale is Arabic or Hebrew?
I have been searching for any "Bidi" articles or information for Cocoa apps for a while now, but without much luck. Any suggestions?
Thanks.

In 10.6, see -[NSApplication userInterfaceLayoutDirection]. For earlier releases, no explicit support, so yeah, you could just look for specific locales.
You can do a respondsToSelector check to use -userInterfaceLayoutDirection on any system on which it is available.
See the AppKit release notes for this and other changes.

Related

How can I allow the user to style font in NSTextView using interface buttons in xcode?

In short:
I am trying to find information about text styling inside an NSTextView. Bold, italics, indentation, making a word completely uppercase and setting backdrop colors to certain lines.
Any and all info is welcome. I've been looking around the web for docs on the subject and only managed to find a few things that seem to be part of an iphone framework. I'm sure there must be something out there and that I'm just searching for the wrong words.
A few details:
I am not a developer. I am a motion graphics artist and screenwriter. I do know html, php, javascript, css and several scripting languages (all very similar to javascript) used by different graphics apps.
I am not very proficient in objective-c but I've taken up writing a screenwriting app as a bit of a side project. I've been teaching myself objective-c from a book call Cocoa Programming for Mac OSX and using the code I've created from the examples in the book to create my app using Xcode. Styling text was not covered and I am at a loss as to how to approach it.
Screenplays have very specific formats. Using css I could create this format easily so my first thought was to find out if text inside a NSTextview can have css applied to it. I've not found anything that could answer this. Of course I am probably way off with this approach.
Again, any help or anyone who can point me in the right direction would be extremely appreciated.
Thanks!
-Omar
You can't do this because it only accept one style.
You have to deal with UIWebView Tutorial for this and use your CSS.
Or you can use some code like EGOTextView. I do not test this but I think it will be the easiest way for you.

Custom icon for each NSUserNotification?

Is there any way to provide custom icons for each NSUserNotification, instead of the default app logo? Like the iconData parameter in Growl.
I want to show "Someone has just posted something" with the photo of this "someone".
You still cannot change the (default) image showing your app's icon, but starting in OS X Mavericks you can in addition display an additional image using the new property contentImage, e.g. like this:
This new property isn't documented in the NSUserNotification class reference, but mentioned in the Foundation Release Notes for OS X 10.9.
Currently not (Mountain Lion). You should post a feature request.
I know this question has been dead for 5 years, but in case someone finds that question and is still looking for a solution, there is that one:
https://github.com/indragiek/NSUserNotificationPrivate
I've tested it in macOS Sierra and it still works. Just be warned, quoting the project creator:
This should go without saying, but using any of this will result in
your app being rejected from the MAS (Mac Apple Store) and potentially breaking if the
APIs change.
Looking for a related answer about NSUserNotifications I found your question. Officially it's not yet supported. But I wrote a little custom control you can use that may fit your needs. Take a look on this Github repository.

Properties of iOS messenger

I need to build an app such as "Messages" in iPhone, but easier (don't need to send messages to server, only in datebase). I was faced with some questions.
http://www.ibm.com/developerworks/library/x-ioschat/index.html
In this tutorial messages look like TableView, how can I do them such as in iPhone standard messanger (comics speach). And how can I implement bar with camera button, text box and send button (what class is responsible for this)?
You are in luck good sir, there is already a class that can fix you up with this and avoid all the work, it's called AcaniChat (screenshot provided). Or you can even see at Sam Soffle's SSMessagesViewController, he is a well known iOS developer who built this class.
It will definitely help you, if you want to mimic that behavior.

Very confused by a binding issue between a Cocoa app and a Movie Loader patch in Quartz Composer

I've been programming for a while, but just recently decided to start developing for Mac OS X. I feel like I've come to grips with the basics of Objective-C and Cocoa development over the past week. I'm planning on making graphics apps, and as such am currently in the process of learning how to control Quartz compositions through a Cocoa app. I went through the tutorial that apple offers (with the Mac Engravings composition), and was able to create that just fine. In order to make sure that I truly understood what I learned, I decided to create my own composition and link it to a slightly more complicated Cocoa application.
Essentially, I have a composition that loads a movie or image through a Movie Loader patch, at which point it applies various filters to the frames before outputting it. In my Cocoa app, I've written code (or rather copied and pasted from other apple examples) that lets a user pick a file using an NSOpenPanel object. The filepath of the file they pick gets placed in a text-box that I placed in the app's window using Interface Builder. I binded the value of said text-box to the "Movie_Location" key in my composition, which is a published input in the Movie Loader patch that I'm using. However, no matter what I do, movies and images aren't loaded into this composition no matter what I try. The only thing that gets displayed is the default image that I have saved in that input from Quartz Composer (or nothing if I leave it blank before publishing).
I've added a Clear Color patch to the composition and binded that to a colorwell in my UI, and that successfully changes the color in my display, so I know that the composition and my Cocoa app are communicating. I've spent numerous hours at this point trying to figure out what's going on, and I've just about given up. Does the Movie Loader have any weird behaviors that I'm not aware of, or is there something obvious that I seem to be missing? I'd really appreciate any help or advice from anybody.
Thanks for reading through this...
Best,
Sami
There are two things I can think of as reasons why it is doing this:
The file path isn't formatted incorrectly. Try checking backslashes, colons, etc.
The box isn't updating the value. Try literally clicking in the text field and hitting enter.
That's all I can think of without seeing your quartz composition and/or code.
EDIT:
Check the other continuous box, in the general properties.
I figured this out yesterday. spudwaffle's second idea is what was going on. If I were to type a filepath in and hit enter, it would work just fine. I got this to work properly by just removing the bind and instead using the setValue:keyInPath: function that a patch controller offers. That said, is there some way to force a text-box to update? I remember seeing a "continuously update" or something like that button within the bind sub-menu in the inspector, but my code didn't work with that checked either.
Thanks to those of you that tried to help me! I really appreciate it.
Best,
Sami

How to create transparent notification window?

I'm not sure of the correct name, but I am wondering how to create (in Objective-C) a transparent notification "window/panel", such as is shown when you change the volume intensity, or keyboard illumination, or display brightness. I want to put my own icon/text on it, for my own notification.
I don't know the words to Google for, so I'm asking here.
Thanks for any suggestions.
Matt Gemmell's RoundedFloatingPanel component on his sample code page may do just what you're looking for.
After looking into using the solutions provided by the other two given answers, I found that they would not work for my purposes. So, I wrote up my own library:
BHBezelNotification
Growl is a widely-used implementation of this. By default, it doesn't look exactly like the system overlays, though it is skinnable - you probably want the Bezel notification:
See the Growl Developer Documentation for more.