0:00:10 | so first of all i'm supposed to say that i'm very disappointed that you started |
---|
0:00:15 | glottic without me |
---|
0:00:20 | i wish i had a lot more of screen shots and slides and stuff but |
---|
0:00:25 | well i have a enough material for the time and i wanted to make a |
---|
0:00:31 | longer history but |
---|
0:00:33 | the history would have taken up all the time anyway |
---|
0:00:36 | so |
---|
0:00:37 | the point of this slide is |
---|
0:00:42 | the point is to discuss a little bit what was the history of G T |
---|
0:00:46 | K A |
---|
0:00:48 | user interface programming paradigms over the last ten years or so |
---|
0:00:53 | before live blade or around when we had the blade then we had to well |
---|
0:00:59 | everybody was writing code by hand right |
---|
0:01:02 | but the plate was pretty early in the G T K history you had played |
---|
0:01:08 | first and the |
---|
0:01:12 | so a lot of people were writing code |
---|
0:01:15 | mixed in with the generated code that they |
---|
0:01:19 | build with collate so glade had only one feature |
---|
0:01:23 | to export which was to generate code in different languages and you would have |
---|
0:01:30 | you would have a whole application defined in an X M L file |
---|
0:01:35 | and one callbacks nazis just generated and people would just enter their cold |
---|
0:01:41 | it would be completely on maintainable |
---|
0:01:46 | so that's interesting fun fact is that the blade was created after delayed and it |
---|
0:01:53 | kind of just was a hijacking of directly project file format which was a really |
---|
0:01:58 | neat trick by change ten strange |
---|
0:02:01 | and since then we had since then we have the blade and |
---|
0:02:07 | back then |
---|
0:02:09 | it seemed that |
---|
0:02:11 | installing your user interface |
---|
0:02:14 | separately from your programming and allowing you to view your changes without compiling was all |
---|
0:02:21 | the rage i don't think we really care about that these days but that seems |
---|
0:02:25 | to have been all the rage back then |
---|
0:02:30 | right so back then how did we used to write code we could write modular |
---|
0:02:35 | code but it was not obvious |
---|
0:02:37 | i have a couple of code examples that i wanted to show |
---|
0:02:44 | and one of them was |
---|
0:02:48 | sh this is |
---|
0:02:51 | okay the this emacs is really huge on the screen but |
---|
0:02:57 | i seen a lot of code like this ten years ago basically you just create |
---|
0:03:02 | a structure and you build a lot of widgets and you have any pi its |
---|
0:03:07 | object based see it's not object oriented |
---|
0:03:11 | but you know people managed to and |
---|
0:03:16 | well maybe it's coming back now with templates you know this modular kind of way |
---|
0:03:20 | to write code but with late we just had a big mess |
---|
0:03:26 | huge user interface and many callbacks |
---|
0:03:30 | so just scroll through the well basically |
---|
0:03:36 | what's that |
---|
0:03:40 | so where |
---|
0:03:43 | okay so |
---|
0:03:46 | a eventually and my miss and my stepping over something after the blade |
---|
0:03:53 | after the blade well after the blade there was to take a builder but that |
---|
0:03:57 | came like five years later and |
---|
0:04:01 | and there is one interesting events that took place or event i started noticing the |
---|
0:04:09 | depth help program had bills itself as the G object for the preferences dialogue and |
---|
0:04:16 | use the G T K builder |
---|
0:04:18 | in the initialization function to create it's own interface and |
---|
0:04:24 | and it looks like a whole lot of boilerplate an extra lines of code like |
---|
0:04:29 | to do something pretty but it was it was actually really nicely done |
---|
0:04:33 | which is |
---|
0:04:34 | which is great you know and i started to encourage people to follow that paradigm |
---|
0:04:39 | but |
---|
0:04:41 | but people don't right |
---|
0:04:44 | people write the code that's obvious to them and if we don't guidelines |
---|
0:04:49 | and techniques and even |
---|
0:04:52 | infrastructure that forces you to code in a certain way then people are just going |
---|
0:04:56 | to write very random |
---|
0:04:58 | random things like for example |
---|
0:05:02 | how many times have you heard the question |
---|
0:05:06 | how do i get to pointers |
---|
0:05:09 | in my callback for G signal connect |
---|
0:05:13 | you know what i mean like that's like you're tackling the problem the problem from |
---|
0:05:18 | backwards you're not thinking of the design you just |
---|
0:05:21 | want this function to work right now what are you gonna do |
---|
0:05:25 | and |
---|
0:05:26 | how many people have seen cold like this |
---|
0:05:31 | like you have your callback structure you know |
---|
0:05:36 | and you allocate your callback structure |
---|
0:05:41 | you connected you have your data |
---|
0:05:45 | you know if you're lucky somebody thought of releasing the memory at some point |
---|
0:05:51 | and no but what it does to is that your dad is all over the |
---|
0:05:56 | place it's not centralised it's not it's not pretty it's not organised and |
---|
0:06:03 | and you're working in the environment that is |
---|
0:06:06 | errorprone because of the implicit invocation possibilities are enormous |
---|
0:06:12 | so you're working a project that's has all your dialogues all your buttons the same |
---|
0:06:19 | name space |
---|
0:06:22 | and anybody can just connect a signal |
---|
0:06:25 | and that can cause another signal to fire and there's no really defined limit since |
---|
0:06:31 | all of these objects are visible so you can have recursion and it's very hard |
---|
0:06:36 | to track these |
---|
0:06:37 | implicit invocation loops |
---|
0:06:46 | yes i'm not really jumping in order here but the whole generation |
---|
0:06:52 | i don't really have much to say about that but it's what everybody asks me |
---|
0:06:58 | why doesn't lead generate code |
---|
0:07:07 | yes |
---|
0:07:09 | yes maybe less in the last couple years but yes constantly |
---|
0:07:16 | ever since we released late three |
---|
0:07:19 | people cry about that |
---|
0:07:22 | yes like now i have to call |
---|
0:07:26 | glade X M L load from file do you take a builder add from file |
---|
0:07:31 | and |
---|
0:07:38 | well i mean that's the thing you know like it's |
---|
0:07:42 | your and you never gone and you never gonna use like twice if you're gonna |
---|
0:07:46 | use generated code just never gonna work out |
---|
0:07:51 | okay so |
---|
0:07:53 | after all that hey we have templates |
---|
0:07:57 | and not everybody knows what templates are but the templates are a way to encode |
---|
0:08:04 | G T katie builder X M L file descriptions into the widget class so that |
---|
0:08:09 | when you create an instance of a certain type |
---|
0:08:12 | it's complex it's components are automatically build and the variables referring to it are resolved |
---|
0:08:20 | and callbacks are connected |
---|
0:08:24 | it's just the formalism for creating and composite object class which we involves no grunt |
---|
0:08:31 | work |
---|
0:08:32 | there is a P eyes to call to describe it but there's no crunch work |
---|
0:08:36 | so not only do we gain |
---|
0:08:40 | by removing steps in the process of |
---|
0:08:43 | developing code but now we have a standard that's |
---|
0:08:46 | people can adapt to they can say this is the way that you write a |
---|
0:08:51 | composite widget in G T K and they they're not going to do this |
---|
0:08:57 | they're not going to ask how do i get to pointers in my user data |
---|
0:09:02 | they're not going to run around in circles and they're going to have a half |
---|
0:09:06 | in front of them |
---|
0:09:07 | alright |
---|
0:09:09 | a mean one |
---|
0:09:14 | so |
---|
0:09:17 | in this last ten years i guess ten years ago there was already this next |
---|
0:09:23 | that environment which was already doing this |
---|
0:09:26 | and little parenthesis here i |
---|
0:09:31 | i used interface builder and i used flash five years ago and that's when i |
---|
0:09:36 | started going crazy about templates and |
---|
0:09:40 | and it just like using X code in interface builder just |
---|
0:09:45 | just made me realise like |
---|
0:09:47 | how straightforward that is with G T K builder and |
---|
0:09:52 | kind of feeling pathetic about how come we did not do it yet and |
---|
0:09:57 | and it took this long here we are |
---|
0:10:00 | so next step environment is the apples objective C programming environment and name files is |
---|
0:10:09 | basically the equivalent of interface builders G T K builder format |
---|
0:10:15 | and they've been doing that for ever |
---|
0:10:18 | and they have some cool features to optimize your work flow so you can |
---|
0:10:26 | what are the features that they give you |
---|
0:10:29 | right you have those weird clients that's true you have the X code here and |
---|
0:10:34 | you have interface builder here and i wanted to put screenshots but i'm sorry i |
---|
0:10:38 | didn't have screen shots |
---|
0:10:40 | it's quite an acid trip because you have this like |
---|
0:10:44 | list of events that an object can generate like two signals and you have |
---|
0:10:51 | that's like in your plate right and then you have your source code editor which |
---|
0:10:55 | is that code which is kind of like sensitive drop target right and you grab |
---|
0:11:00 | your |
---|
0:11:01 | grab your signal and it's in another window |
---|
0:11:05 | and you drag it to the method and then that means that method is going |
---|
0:11:10 | to rip sponsor that signal on that object which is component child if you're right |
---|
0:11:16 | that's a big blue line just strands across the screen |
---|
0:11:20 | anyway |
---|
0:11:22 | it's but it's really practical i mean it looks really strange but it's really practical |
---|
0:11:31 | there is actually so many things that we need to do in late to support |
---|
0:11:36 | this properly |
---|
0:11:38 | "'cause" right now we only support just creating a |
---|
0:11:42 | object class right which is komplet defining one composite object class but |
---|
0:11:49 | another example of a cool feature to do is in adobe flash create or you |
---|
0:11:56 | can take |
---|
0:11:57 | you can just go ahead in your work flow will be i'm gonna design interface |
---|
0:12:02 | and there |
---|
0:12:05 | i mean it design interface |
---|
0:12:08 | right |
---|
0:12:09 | and |
---|
0:12:11 | i have my i don't know my album jacket you know and |
---|
0:12:15 | my song titles and you know my |
---|
0:12:19 | more but |
---|
0:12:21 | i don't know okay |
---|
0:12:23 | in search |
---|
0:12:25 | money no |
---|
0:12:27 | whatever's going on there |
---|
0:12:30 | and so i have a mock up and then i can just like take this |
---|
0:12:33 | box |
---|
0:12:35 | alright and i can right click on it |
---|
0:12:39 | and say export that as a class |
---|
0:12:42 | no just give me give me a list browser because i'm gonna use that in |
---|
0:12:46 | like three or four more of my interfaces |
---|
0:12:50 | so this one is like maybe a |
---|
0:12:53 | i don't know song browser screen you know and |
---|
0:12:57 | this one becomes a class called soundless |
---|
0:13:01 | you know |
---|
0:13:05 | that's from a i don't know but catalyst i use that with action script three |
---|
0:13:15 | there's air there's the |
---|
0:13:18 | but it's a i think that paradigm is going to work just as well as |
---|
0:13:25 | on air as on your streaming swr |
---|
0:13:30 | but it's really practical because then you have this new objects and you can either |
---|
0:13:34 | export it as a class which means that you're going to implement it |
---|
0:13:39 | or you can just since it's flash right you have these compose it thing is |
---|
0:13:43 | and they're just drawings and pictorial object right so you don't really need to have |
---|
0:13:48 | cool |
---|
0:13:49 | we can just use them and paste them |
---|
0:13:53 | and what's really interesting is that you have a project that's composed of like maybe |
---|
0:13:58 | ten classes |
---|
0:14:00 | and when you modify one then you see the change in the other and everything |
---|
0:14:05 | is reactive |
---|
0:14:08 | this is where i want to go with collate |
---|
0:14:13 | so how far did i go |
---|
0:14:16 | yes |
---|
0:14:19 | before we continue |
---|
0:14:24 | i did pull this out |
---|
0:14:25 | this is how it's done |
---|
0:14:28 | this is how it's done in |
---|
0:14:31 | coke or and the next step in interface builder |
---|
0:14:36 | basically |
---|
0:14:39 | you have this guy right i be outlets is a syntactic sugar that's custom for |
---|
0:14:45 | the next that objective C implementation |
---|
0:14:49 | and declaring your you while able as an I B outlet means that my text |
---|
0:14:55 | is associated with an object that's in the next that interface builder file so |
---|
0:15:00 | syntactic sugar that basically means that label is part of might need file |
---|
0:15:06 | and that same thing goes for |
---|
0:15:10 | i be action |
---|
0:15:11 | button pressed |
---|
0:15:13 | right |
---|
0:15:15 | so |
---|
0:15:17 | as you can imagine you only get to see that ellison teacher blue line across |
---|
0:15:23 | the screen if you have an I B action on that method that can handle |
---|
0:15:26 | that signal |
---|
0:15:28 | right |
---|
0:15:32 | right so that's i don't have flash script i wanted to have action script because |
---|
0:15:37 | it's more cute then we then the objective C but |
---|
0:15:44 | i couldn't put it together so |
---|
0:15:48 | and that's all because you guys started one day early |
---|
0:15:56 | alright |
---|
0:15:58 | this is this is what was on the internet on my blog site |
---|
0:16:03 | when we got it when we for men got it working with dollar |
---|
0:16:10 | his name is luke a |
---|
0:16:13 | that's right |
---|
0:16:16 | so here you can see the same pattern is repeated |
---|
0:16:20 | except we have this extra syntactic sugar which means you're probably class is going to |
---|
0:16:25 | be a template |
---|
0:16:27 | i'd this isn't exactly a tutorial about how to use power actually |
---|
0:16:31 | i am a big advocate of all the but i've never used it myself which |
---|
0:16:35 | is a bit strange but |
---|
0:16:40 | maybe i was told that means i'm a true believer |
---|
0:16:46 | huh i |
---|
0:16:47 | right so |
---|
0:16:49 | well the distinction is in objective C you have to use this controller object class |
---|
0:16:55 | which i thought was kind of silly and i didn't what i did not want |
---|
0:16:58 | to repeat that in G T K but they have this object can just you |
---|
0:17:02 | why view controller object which is |
---|
0:17:06 | it's a kind of metal objects around your screen |
---|
0:17:09 | and |
---|
0:17:10 | only using that object can you create compensate the interfaces |
---|
0:17:16 | so here we have the equivalent you have dedicate templates do you take a child |
---|
0:17:21 | is pretty much synonymous with the I B outlet |
---|
0:17:26 | to let you to |
---|
0:17:29 | course in C code this is a little bit more verbose but |
---|
0:17:33 | but i think that we've got something really much nicer much more bleeding edge cutting |
---|
0:17:39 | edge and i wish that i had the |
---|
0:17:43 | screenshots to show it off better |
---|
0:17:45 | to make us a little bit more ashamed about how behind we are |
---|
0:17:49 | right |
---|
0:17:52 | and so do you take a child and you take a callback right |
---|
0:17:56 | now this is pretty simple you can create a class |
---|
0:18:00 | create a you wife i'll put it all together this is just going to work |
---|
0:18:05 | in this demo you have an entry |
---|
0:18:08 | and you have of virtual text property |
---|
0:18:12 | actually yes its kind of virtual because there's no storage you'd only sets the text |
---|
0:18:17 | on its delegate entry object |
---|
0:18:20 | and then when the entry changes |
---|
0:18:24 | he notifies that virtual property has changed and that's a callback which is of course |
---|
0:18:30 | connected to the entry inside the late file |
---|
0:18:35 | in response to it's changed signal |
---|
0:18:44 | who |
---|
0:18:51 | it's |
---|
0:18:52 | what is it needed for |
---|
0:18:55 | it is |
---|
0:18:57 | it declares your method or your function as a an endpoint for a signal that |
---|
0:19:04 | can it |
---|
0:19:05 | it becomes accessible to the name space that glade refers to for signals because we |
---|
0:19:11 | couldn't really except D L open G L send |
---|
0:19:15 | you know |
---|
0:19:16 | so you know this kind of nice or you know like so the class itself |
---|
0:19:22 | create a dictionary of |
---|
0:19:25 | functions which can be called and the |
---|
0:19:29 | the interface file the interface description only has access to those symbols |
---|
0:19:36 | judy cable there will fall back to D else in but you don't have to |
---|
0:19:39 | remember that |
---|
0:19:46 | okay |
---|
0:19:49 | i'm sure more parenthesis |
---|
0:19:57 | right so we went over this in the beginning basically |
---|
0:20:02 | adding this doesn't make anything new possible i've seen this |
---|
0:20:06 | approach |
---|
0:20:08 | there was a there was a python library are a something i remember but the |
---|
0:20:15 | they had their own |
---|
0:20:17 | kind of implementation of this but it was like a base class how to teach |
---|
0:20:21 | a builder instance |
---|
0:20:23 | who would you know like they it would respond to calls of like get this |
---|
0:20:29 | or get that by looking at its own builder file then |
---|
0:20:34 | but you know people have been doing similar things but |
---|
0:20:38 | having an infrastructure for actually doing it |
---|
0:20:42 | makes it so that people actually do it and that it's easy for them |
---|
0:20:46 | that makes all the difference |
---|
0:20:50 | right and we don't find these situations where |
---|
0:20:54 | some code is reacting to you know like |
---|
0:20:58 | you press the button |
---|
0:21:00 | in your callback that change the entry and the other guys |
---|
0:21:05 | hearing the entry changing he's setting the end of the scroll bar to be not |
---|
0:21:09 | sensitive and |
---|
0:21:11 | and it can go in every which direction but |
---|
0:21:14 | since you have that built into a late file built into an object class then |
---|
0:21:19 | there is no room for |
---|
0:21:22 | unexpected instances of it |
---|
0:21:25 | implicit invocation |
---|
0:21:27 | so |
---|
0:21:29 | i kind of think it's a good idea to move towards explicit invocation everywhere you |
---|
0:21:35 | can "'cause" you just can't really define how program runs if you're relying solely on |
---|
0:21:42 | a reactive system |
---|
0:21:44 | everything is just reactive to each other |
---|
0:21:51 | and reducing steps right so this is this is where we want to go with |
---|
0:21:56 | played we need to redo steps |
---|
0:21:59 | and by doing that's well i it implies that somebody here is gotta give us |
---|
0:22:05 | a few hundred thousand dollars to invest in making late but |
---|
0:22:10 | if we do it |
---|
0:22:13 | right it implies a lot of work you know because as soon as we start |
---|
0:22:17 | looking at these kind of features that they're doing in adobe flash or in |
---|
0:22:23 | in interface builder |
---|
0:22:26 | we're looking at us |
---|
0:22:28 | making a single project full of a lot of different late files |
---|
0:22:33 | all these play files a part of the same project now and one thing changes |
---|
0:22:37 | so you have you have to unify the undo redo stack you have to do |
---|
0:22:41 | all kinds of |
---|
0:22:44 | all kinds of facts lips tricky stuff |
---|
0:22:48 | has to be done especially if you want to get that feature which i want |
---|
0:22:52 | you know |
---|
0:22:53 | the experience of just throw up a markup and then break it up and create |
---|
0:22:59 | an implementation from that markup |
---|
0:23:02 | which is great well you need a lot of work to get that done |
---|
0:23:07 | and |
---|
0:23:08 | basically that's what we're looking for good ideas to reduce the steps |
---|
0:23:14 | reduce this that's in the process of creating a good user interface without |
---|
0:23:20 | you know without making it right |
---|
0:23:23 | while keeping it |
---|
0:23:24 | keeping it great keeping it clean |
---|
0:23:28 | and making it easy |
---|
0:23:30 | that's what we want to do so any suggestions |
---|
0:23:36 | yes that's true |
---|
0:23:42 | so something that approach on we can talk about right now is help you read |
---|
0:23:46 | well not to sit don't three take it recommends like using specific spacing specific padding |
---|
0:23:53 | and all that sort of stuff and right now i'm about simply when you insert |
---|
0:23:57 | a child widget it's like it's all went up the next to each other of |
---|
0:24:02 | a quick thing or so easy thing that i would say but i don't know |
---|
0:24:05 | the plate will base is recommending a good set of default so you get a |
---|
0:24:08 | good home three compliant apple right out of the right of the box |
---|
0:24:13 | so i mean it sort of our cargo but i think that we need to |
---|
0:24:17 | think about how we wanna strictly interpret making no maps going for |
---|
0:24:22 | and i know what a problems and everything magical you don't space back how you |
---|
0:24:32 | it's from the window we are do you |
---|
0:24:37 | we've |
---|
0:24:40 | we circled around that for a while we have this |
---|
0:24:44 | custom code forty to get dialogue and there's a kind of trick like there's a |
---|
0:24:48 | one little nasty trick about indicate dialogue is that the child of the content area |
---|
0:24:55 | must have five pixels border |
---|
0:24:58 | but not the content area itself because that would cause the action area to also |
---|
0:25:04 | gained a border |
---|
0:25:05 | so it's kind of really young you know and some of those some of the |
---|
0:25:11 | things that G T K's doing with padding |
---|
0:25:15 | which is sensible is |
---|
0:25:18 | assigning it from star properties |
---|
0:25:20 | like a few of the G T K dialogue good space things and patterns are |
---|
0:25:26 | like you can set them but it means nothing it will it will be overwritten |
---|
0:25:30 | by style thing settings when adjudicate dialogue initialises |
---|
0:25:37 | a big question we have to ask ourselves about that is do we want to |
---|
0:25:41 | relinquish all of that for C S |
---|
0:25:43 | control it |
---|
0:25:45 | but it's definitely something to look at |
---|
0:25:49 | i also one more question what well i actually just be able to fly widgets |
---|
0:25:53 | around to reorder problem and |
---|
0:25:59 | hypothetically right now no |
---|
0:26:03 | boy |
---|
0:26:05 | it's not working |
---|
0:26:08 | it somewhere |
---|
0:26:10 | well actually thank you so much that's i |
---|
0:26:19 | what about putting for non widgets what about with what's for non widgets |
---|
0:26:24 | for non widgets like your application |
---|
0:26:32 | and we move be there to do you |
---|
0:26:46 | right you says also is the main thing to do you live |
---|
0:26:53 | now we it's i guess it's true we cannot really you know expand let's go |
---|
0:26:57 | until we bring it lower but i understand that you take a builder might not |
---|
0:27:03 | be the thing |
---|
0:27:05 | it might not be the implementation it might be |
---|
0:27:09 | might be something barry and based or i don't know what i don't know i |
---|
0:27:14 | don't know |
---|
0:27:16 | and we probably need we need serialisation as well is D C realizations right if |
---|
0:27:21 | we're gonna move something like that instance you bright no i'm not talking about you |
---|
0:27:25 | need to do that but i mean it's fine if it's okay but if the |
---|
0:27:28 | and i can also use it to construct things that are not which it's like |
---|
0:27:31 | say for example there's this semi common paradigm where you have mostly static menu structure |
---|
0:27:38 | but then you have like you know one menu that you wanna be dynamic or |
---|
0:27:41 | one section so you have some menu layout and then you have a and i |
---|
0:27:45 | on one subsection that's like recent talk |
---|
0:27:49 | something like that or your bookmarks |
---|
0:27:50 | and then you would want that become an instance variable in your application so that |
---|
0:27:54 | it's easy to access |
---|
0:27:56 | so it is it's really liked the same internal try but it's not being done |
---|
0:28:00 | with widgets |
---|
0:28:02 | well okay of course you have that at G T K application we know little |
---|
0:28:06 | but to take application |
---|
0:28:09 | it would have to be a rewrite i mean it would have to be a |
---|
0:28:11 | ports because we have this abstract class it does a lot of stuff |
---|
0:28:15 | right |
---|
0:28:18 | maybe we can do it with those like default implementations of interfaces |
---|
0:28:25 | but even then i think it would be a big can of worms |
---|
0:28:31 | i exactly yes |
---|
0:28:54 | no |
---|
0:28:56 | no that's no well it's |
---|
0:28:58 | no it can but there is a few quirks i mean do you take a |
---|
0:29:03 | widget as the destroy signal and we use that to memorandum memory manage those instance |
---|
0:29:09 | variables right |
---|
0:29:11 | probably |
---|
0:29:13 | it's probably you |
---|
0:29:27 | it well it could be documented that the instance variables |
---|
0:29:31 | exist until the first dispose cycle |
---|
0:29:35 | it might not be so find in practice |
---|
0:29:39 | but |
---|
0:29:57 | i don't know it technically the technically the implementation should work fine with objects |
---|
0:30:03 | it really should there's nothing really widget specific except that you know we have to |
---|
0:30:09 | take a container |
---|
0:30:12 | it helps you know |
---|
0:30:14 | but it does it you know like i mean actions go in action groups in |
---|
0:30:18 | you know text tags go and text tag tables and |
---|
0:30:35 | okay was it was it not long enough do you need me to make a |
---|
0:30:38 | performance |
---|
0:30:47 | that's twelve and that makes forty minutes or some |
---|
0:30:56 | that's |
---|
0:31:00 | they |
---|
0:31:02 | it's it has to do with your arriving early it was a preemptive attack must've |
---|
0:31:07 | been coordinated yes |
---|
0:31:14 | i think i read recently that a lot of the you wanting ladies |
---|
0:31:18 | generated essentially |
---|
0:31:20 | is to generated |
---|
0:31:23 | yes we well generated it's with templates |
---|
0:31:29 | right |
---|
0:31:30 | i mean wanting out become quite interested in doing is |
---|
0:31:34 | like designing it yes definitely and the summary things that are in the you want |
---|
0:31:42 | don't need to be |
---|
0:31:44 | i i've been i've been starting to prefer those like |
---|
0:31:48 | that symbolic icons |
---|
0:31:50 | we can also much no |
---|
0:31:54 | that's little |
---|
0:31:55 | plus and a minus it's very personal thing fruit |
---|
0:31:59 | and basically they we have like thirty you why files |
---|
0:32:05 | in the plug ins directory that like you can load and |
---|
0:32:10 | it doesn't look exactly the same as in the end result but that's you know |
---|
0:32:14 | you can edit those editors in played and i did it very fast |
---|
0:32:21 | and knowing that you can change |
---|
0:32:25 | right |
---|
0:32:39 | okay well we do generate the property editors based on what is in the widget |
---|
0:32:44 | class |
---|
0:32:54 | well someone |
---|
0:32:55 | some of the interesting things are like stuff that i |
---|
0:33:00 | stuff they can be hidden |
---|
0:33:02 | you know that it's not really useful as a property in your face but like |
---|
0:33:09 | but a different way to set it you know like right now i have in |
---|
0:33:13 | the common tab i have a tool tip property |
---|
0:33:16 | and i have a check mark whether it's whether it's with markup |
---|
0:33:21 | the way i don't have like a tool tip property and it like a tool |
---|
0:33:25 | tip text property and a tool tip markup property you know like |
---|
0:33:39 | well how long ago did you see the editors |
---|
0:33:43 | less than a month |
---|
0:33:46 | more than a month |
---|
0:33:51 | let's see what it |
---|
0:33:56 | little at least |
---|
0:34:11 | let's see what i got here let's hope it doesn't crash right startup but |
---|
0:34:17 | okay so what do we got |
---|
0:34:20 | it's this is very small screen it's pretty bigger |
---|
0:34:27 | right so |
---|
0:34:36 | i |
---|
0:34:37 | this is what this is |
---|
0:34:41 | i |
---|
0:34:43 | i have some like this is that application chooser dialogue and then isn't there |
---|
0:34:53 | there is the where is it |
---|
0:35:04 | and this is an application chooser widget |
---|
0:35:17 | that's not a good example |
---|
0:35:19 | let me just find one that's the is |
---|
0:35:24 | the font but don't know where is that |
---|
0:35:32 | in the middle |
---|
0:35:34 | okay |
---|
0:35:49 | i of course |
---|
0:35:58 | right so up here we have point user attributes |
---|
0:36:02 | and |
---|
0:36:07 | and the where is the one chooser widget again |
---|
0:36:10 | it's just the |
---|
0:36:14 | that's the combo box accent font button there |
---|
0:36:18 | and then this one so i have this box here font button attributes |
---|
0:36:24 | and so like i have this one and everything that's a fonts |
---|
0:36:28 | you know one selector |
---|
0:36:30 | i just use that again |
---|
0:36:33 | and i repeat it |
---|
0:36:35 | and that that's works for like that choose are the recent choose are the there |
---|
0:36:39 | all shared components of components |
---|
0:36:48 | no actually right now after doing all that i did not remove anything everything is |
---|
0:36:53 | still there |
---|
0:36:57 | no i would not be opposed to that at all like we had that conversation |
---|
0:37:02 | before like maybe there's an advanced mode |
---|
0:37:05 | maybe there's a different view or something more |
---|
0:37:10 | you know like i've been resisting the tree view idea for properties because i wanted |
---|
0:37:16 | to get there |
---|
0:37:17 | for so long but now that i'm there wouldn't be a bad thing to have |
---|
0:37:22 | that review it as well because |
---|
0:37:27 | search for properties yes |
---|
0:37:36 | i |
---|
0:37:39 | this isn't this is the widget editor know in the comments that |
---|
0:37:45 | yep your visible |
---|
0:37:48 | flags and |
---|
0:37:50 | this is the tool tip it has a custom button that means that you know |
---|
0:37:54 | you're going to it's gonna has tool tip true |
---|
0:37:59 | so then you get the query tool tip signal right |
---|
0:38:05 | yes it can be empty like |
---|
0:38:18 | and it's gonna be you know it's a it's gonna be even better when alan |
---|
0:38:23 | runs his fingers through the grooves between the widgets and adjust the spaces |
---|
0:38:32 | i hope that |
---|
0:38:43 | a accelerators |
---|
0:38:45 | yes it is |
---|
0:38:47 | it is |
---|
0:38:53 | it's possible maybe |
---|
0:38:57 | actually those are the actual property others which are mostly custom widgets |
---|
0:39:02 | and it's possible that it's like |
---|
0:39:05 | in the U I description but it's possible that it's in that custom widget |
---|
0:39:10 | which is faulty not expand |
---|
0:39:14 | alright |
---|
0:39:18 | so does that do it anybody want to come do would dance |
---|
0:39:24 | okay |
---|
0:39:45 | okay we have things to discuss |
---|
0:39:56 | we can we can have a mud wrestling competition and you know like we can |
---|
0:40:01 | do get out and |
---|
0:40:03 | maybe will like for G action to be you know G T K action because |
---|
0:40:08 | it's like all of the same features only we don't change the A P I |
---|
0:40:17 | we |
---|
0:40:19 | right that called |
---|
0:40:21 | well |
---|
0:40:24 | once okay |
---|
0:40:26 | it was a right |
---|