freenode/#clim - IRC Chatlog
Search
9:12:28
beach
But you are right in that it would be advantageous to have parsers for various markup languages that will generate this internal data structure.
9:12:31
jackdaniel
I think it is important - input format (be it gui editor or source text) is a surface encountered by the documentation writer and output is what the end user sees. I like the idea of uniform structure for documents
9:13:51
beach
You are right, of course. I just prefer to emphasize the aspect that is new with this proposal, namely that the internal format is documented and can be customized and adapted to the needs of the client.
9:15:17
beach
All other systems discuss only input and output, and there is nothing you can do with the intermediate form, probably because they are written in a static language, there is nothing useful that the end-user can do, modulo getting the source code and modify it.
9:15:45
jackdaniel
yeah, I can imagine (given we have markdown->doclang->pdf pipe) someone saying: but we already have markdown->pdf rendersrs
9:22:23
beach
splittist: A back end is more urgent than a front end. It would be possible (though a bit painful) to generate the serialized form of the data structure using an editor like Emacs.
9:23:58
beach
Painful, because I want each individual word marked, such as [doclands:word :text "hello"] so that words can be turned into presentations, so that they can be spell checked, and specialized into index entries, etc.
9:24:48
beach
Do the math! :) It's not big by today's standards. And the serialized format will compress very very well.
9:28:12
beach
I just wanted to avoid a debate like the ones we often have about SBCL executables costing several cents of RAM (should the entire code every always be in RAM at the same time).
9:32:17
splittist
For those interested in the real Word xml: https://en.wikipedia.org/wiki/Microsoft_Office_XML_formats#Word_XML_Format_example . You will see that the bulk of it is metadata, instructions for the GUI, and physical formatting information.
9:32:54
jackdaniel
yeah, I've heard they put there some calls to internal word implementation (in format), so it's harder to reimplement
9:35:36
splittist
Nevertheless, there are folks using lisp to generate Office XML successfully, and since that's what the real word (: runs on, it would make a good, eventual, additional, doclands target.
9:41:38
splittist
Should doclands itself be concerned about what a word is, or should that be up to the renderer? (referring to words-as-presentations in a clim editor)
9:45:50
beach
I think the initial solution would be to make a "word" whatever is surrounded by whitespace in western text.
9:46:18
beach
The problem is that there are words in western languages that consist of two or more such units, but that are not juxtaposed.
9:47:30
beach
But I think it would be acceptable to stick spaced in a word. For example in a Vietnamese text, that could be very useful.
9:50:45
splittist
Perhaps these smarts should be in the parser (or whatever you call the thing that turns the input format into the doclands document) and/or the renderer and/or a semantically-aware thing that transforms one doclands document into another.
9:51:29
beach
Yes, maybe so. I am not going to let that detail become a major obstacle to progress at this point, though.
9:52:16
splittist
I see it as clearing the way to progress - the dumber the base functionality is, the easier it is to implement (:
12:47:07
flip214
only (defmethod clim-internals::effective-gadget-background ((button (eql *..*))) isn't sufficient....
12:56:55
jackdaniel
if you want to change color while application is running, you have to call redisplay-frame-pane on it
13:18:34
jackdaniel
flip214: from what I can see in source code (dispatch-repaint pane +everywhere+) is called on the button when events occur
15:37:35
beach
The main dependence is CLX. There is some MOP stuff as well, but I am guessing ECL can handle that too. Oh, and threads.
15:48:42
flip214
can't get a button to change its color via a (DEFMETHOD .. ((button (EQL *x*)))) override...
15:50:22
beach
flip214: You are starting off in a territory that is not covered in the CLIM II specification, so the answers to such questions will depend on how it was implemented. We are still trying to make McCLIM as conforming as we can to the specification. Only after that will we attempt to address such issues and document them.
15:50:25
flip214
I get the CLIM-CLX::CLX-PUSH-BUTTON-PANE-DUMMY, not the button itself, therefore EQL doesn't match.
15:51:12
flip214
beach: well, I'm trying to sell CL (+ McClim) to a future employer, so I'd like to rebuild some basic app of theirs quickly (and perhaps dirty)
15:54:06
flip214
hm. now CLIM-INTERNALS::EFFECTIVE-GADGET-BACKGROUND returns my newly defined color, but the button stays the same.
15:57:21
nyef
So, something occurred to me recently about the "adaptive toolkit" stuff: On at least one platform (and the known case is not likely to have a backend written for it), native gadgets cannot be mirrored sheets, because the native environment doesn't have hierarchical windows, merely toplevel windows, and the widgets all have some other representation at best.
15:58:53
beach
Oh, good point. That might be tricky to implement. Good that we are not emphasizing adaptive toolkit stuff.
16:05:14
flip214
https://github.com/phmarek/McCLIM in case anybody wants to take a look and tell me what I'm doing wrong with the button...
16:26:48
jackdaniel
flip214: tomorrow morning I'll try to help you with button (today I have guests)
16:27:08
jackdaniel
if you could drop me an email with things you "need" to work and can't figure it out it would be great
16:55:14
flip214
I'll read this channel tomorrow, in case you can offer any insights about button coloring...
18:00:15
flip214
the "Unnamed color" is my method override... why is the same rectangle painted again in gray84?
18:06:21
flip214
oh shit.... with (EQL XXX), the XXX is only evaluated once during compilation of the method.
18:07:06
flip214
The eql-specializer-form is evaluated at the time that the expansion of the defmethod macro is evaluated.