freenode/#clim - IRC Chatlog
Search
4:00:24
loke
Currently trying to figure out the most "climmy" way to create the "post message" UI in my mastodon client.
4:16:40
beach
I think it is great that someone is using McCLIM to write "normal" GUI programs. Mine have all been special in some way. The reason for my wanting McCLIM was to write Gsharp, which is highly unusual as GUI application goes. The other main program I wrote for McCLIM is (first) Climacs, which is a text editor, so not very normal either. My other GUI applications have been fairly trivial, such as TransClime for learning Vietnamese.
4:17:47
loke
I've noticed that if you treat your application as an Emacs application in terms of design, rather than a "normal" gui application, it all works better.
4:18:43
loke
So, I have a command called "Reply" that accepts two arguments: A message that I want to reply to, and a string containing the text of the message.
4:19:15
loke
Typing a very long string as an argument to a command revealed some serious display bugs in the interactor.
4:20:33
loke
So... Writing a comment text in the interactor pane was apparently not an ideal soltuion
4:39:35
loke
Each message in the stream has a profile picture associated with it. I load tat out of a local cache, but if it's not in the cache, I load it in the background
4:47:16
loke
Well, I run the "load public stream" command, which makes one HTTP request and displays the content in an application pane. Then, for the next several seconds, I have callbacks being called to notify the application that another thumbnail photo has been loaded.
4:47:49
loke
The problem is that I can't repaint the entire stream for every load, sicne that causes the entire thing to refresh over and over aagian (sometimes 20 times)
4:49:42
beach
"repaint" means to draw the contents of existing output records, and "redisplay" means re-creating output records from application data structures.
4:51:36
beach
... and it has only a minor impact on your program logic, which is what it was designed for.
4:52:20
beach
The code "looks like" you are redisplaying everything, except that there are a few wrappers in the form of UPDATING-OUTPUT nodes.
4:54:32
beach
Right now, I don't have time to read and understand that code. Sorry! I am working on one of the many unfinished books I have.
4:55:11
loke
I tried to use UPDATING-OUTPUT to optimise the updates, actually, when putting debug messages in the callbacks for :ID-TEST and :CACHE-TEST, I never ever see that test come out ar "true". Am I doing somehting wrong?
5:17:32
beach
I think there are two more things you need to do. As I recall, the pane must have the option :INCREMENTAL-REDISPLAY T and the redisplay function must also have a updating-output wrapper. Maybe one of them is enough. I can't remember. There should be examples in there to show what to do. Perhaps even in the documentation.