1
00:00:10,480 --> 00:00:15,160
so first of all i'm supposed to say that
i'm very disappointed that you started

2
00:00:15,160 --> 00:00:16,110
glottic without me

3
00:00:20,000 --> 00:00:25,160
i wish i had a lot more of screen
shots and slides and stuff but

4
00:00:25,160 --> 00:00:31,190
well i have a enough material for
the time and i wanted to make a

5
00:00:31,190 --> 00:00:32,860
longer history but

6
00:00:33,610 --> 00:00:36,110
the history would have taken up all the time anyway

7
00:00:36,620 --> 00:00:37,270
so

8
00:00:37,900 --> 00:00:40,630
the point of this slide is

9
00:00:42,730 --> 00:00:46,850
the point is to discuss a little
bit what was the history of G T

10
00:00:46,850 --> 00:00:47,630
K A

11
00:00:48,490 --> 00:00:52,220
user interface programming paradigms
over the last ten years or so

12
00:00:53,440 --> 00:00:59,950
before live blade or around when we
had the blade then we had to well

13
00:00:59,950 --> 00:01:02,050
everybody was writing code by hand right

14
00:01:02,770 --> 00:01:08,780
but the plate was pretty early in the G
T K history you had played

15
00:01:08,780 --> 00:01:10,370
first and the

16
00:01:12,150 --> 00:01:14,900
so a lot of people were writing code

17
00:01:15,930 --> 00:01:19,470
mixed in with the generated code that they

18
00:01:19,930 --> 00:01:23,280
build with collate so glade had only one feature

19
00:01:23,660 --> 00:01:28,970
to export which was to generate code in different
languages and you would have

20
00:01:30,730 --> 00:01:34,370
you would have a whole application defined in an X M L file

21
00:01:35,020 --> 00:01:41,220
and one callbacks nazis just generated
and people would just enter their cold

22
00:01:41,880 --> 00:01:44,850
it would be completely on maintainable

23
00:01:46,170 --> 00:01:53,130
so that's interesting fun fact is that the blade
was created after delayed and it

24
00:01:53,130 --> 00:01:58,690
kind of just was a hijacking of directly
project file format which was a really

25
00:01:58,690 --> 00:02:00,890
neat trick by change ten strange

26
00:02:01,490 --> 00:02:07,190
and since then we had since then we have the blade and

27
00:02:07,680 --> 00:02:08,670
back then

28
00:02:09,440 --> 00:02:10,440
it seemed that

29
00:02:11,980 --> 00:02:14,160
installing your user interface

30
00:02:14,600 --> 00:02:21,090
separately from your programming and allowing you
to view your changes without compiling was all

31
00:02:21,090 --> 00:02:25,460
the rage i don't think we really care
about that these days but that seems

32
00:02:25,460 --> 00:02:27,610
to have been all the rage back then

33
00:02:30,950 --> 00:02:35,300
right so back then how did we used to
write code we could write modular

34
00:02:35,300 --> 00:02:37,190
code but it was not obvious

35
00:02:37,590 --> 00:02:43,810
i have a couple of code examples that i wanted to show

36
00:02:44,610 --> 00:02:47,730
and one of them was

37
00:02:48,600 --> 00:02:51,090
sh this is

38
00:02:51,720 --> 00:02:55,840
okay the this emacs is really huge on the screen but

39
00:02:57,410 --> 00:03:02,030
i seen a lot of code like this ten years
ago basically you just create

40
00:03:02,030 --> 00:03:07,520
a structure and you build a lot of widgets
and you have any pi its

41
00:03:07,520 --> 00:03:10,540
object based see it's not object oriented

42
00:03:11,460 --> 00:03:14,210
but you know people managed to and

43
00:03:16,600 --> 00:03:20,870
well maybe it's coming back now with templates
you know this modular kind of way

44
00:03:20,870 --> 00:03:25,040
to write code but with late we just had a big mess

45
00:03:26,000 --> 00:03:29,760
huge user interface and many callbacks

46
00:03:30,690 --> 00:03:33,940
so just scroll through the well basically

47
00:03:36,260 --> 00:03:38,020
what's that

48
00:03:40,110 --> 00:03:41,590
so where

49
00:03:43,850 --> 00:03:45,120
okay so

50
00:03:46,720 --> 00:03:51,920
a eventually and my miss and my stepping
over something after the blade

51
00:03:53,900 --> 00:03:57,240
after the blade well after the blade
there was to take a builder but that

52
00:03:57,240 --> 00:03:59,980
came like five years later and

53
00:04:01,760 --> 00:04:09,130
and there is one interesting events that took
place or event i started noticing the

54
00:04:09,130 --> 00:04:16,450
depth help program had bills itself as the G
object for the preferences dialogue and

55
00:04:16,450 --> 00:04:18,090
use the G T K builder

56
00:04:18,990 --> 00:04:23,940
in the initialization function to
create it's own interface and

57
00:04:24,740 --> 00:04:29,770
and it looks like a whole lot of boilerplate
an extra lines of code like

58
00:04:29,770 --> 00:04:33,450
to do something pretty but it was it
was actually really nicely done

59
00:04:33,990 --> 00:04:34,610
which is

60
00:04:34,950 --> 00:04:39,580
which is great you know and i started to
encourage people to follow that paradigm

61
00:04:39,580 --> 00:04:39,910
but

62
00:04:41,720 --> 00:04:43,540
but people don't right

63
00:04:44,350 --> 00:04:49,100
people write the code that's obvious
to them and if we don't guidelines

64
00:04:49,580 --> 00:04:51,940
and techniques and even

65
00:04:52,410 --> 00:04:56,710
infrastructure that forces you to code in a certain
way then people are just going

66
00:04:56,710 --> 00:04:58,380
to write very random

67
00:04:58,970 --> 00:05:01,450
random things like for example

68
00:05:02,230 --> 00:05:05,830
how many times have you heard the question

69
00:05:06,860 --> 00:05:08,660
how do i get to pointers

70
00:05:09,710 --> 00:05:12,370
in my callback for G signal connect

71
00:05:13,470 --> 00:05:18,180
you know what i mean like that's like you're
tackling the problem the problem from

72
00:05:18,180 --> 00:05:21,120
backwards you're not thinking of the design you just

73
00:05:21,490 --> 00:05:25,030
want this function to work right now what are you gonna do

74
00:05:25,620 --> 00:05:26,310
and

75
00:05:26,890 --> 00:05:30,480
how many people have seen cold like this

76
00:05:31,650 --> 00:05:35,460
like you have your callback structure you know

77
00:05:36,600 --> 00:05:40,590
and you allocate your callback structure

78
00:05:41,630 --> 00:05:44,710
you connected you have your data

79
00:05:45,390 --> 00:05:50,180
you know if you're lucky somebody thought
of releasing the memory at some point

80
00:05:51,710 --> 00:05:56,240
and no but what it does to is that your dad is all over the

81
00:05:56,240 --> 00:06:02,660
place it's not centralised it's not it's
not pretty it's not organised and

82
00:06:03,650 --> 00:06:06,360
and you're working in the environment that is

83
00:06:06,810 --> 00:06:12,480
errorprone because of the implicit invocation
possibilities are enormous

84
00:06:12,780 --> 00:06:19,990
so you're working a project that's has all
your dialogues all your buttons the same

85
00:06:19,990 --> 00:06:21,000
name space

86
00:06:22,050 --> 00:06:24,630
and anybody can just connect a signal

87
00:06:25,160 --> 00:06:31,280
and that can cause another signal to fire
and there's no really defined limit since

88
00:06:31,280 --> 00:06:36,370
all of these objects are visible so you
can have recursion and it's very hard

89
00:06:36,370 --> 00:06:37,320
to track these

90
00:06:37,980 --> 00:06:39,900
implicit invocation loops

91
00:06:46,190 --> 00:06:51,550
yes i'm not really jumping in order
here but the whole generation

92
00:06:52,070 --> 00:06:56,160
i don't really have much to say about
that but it's what everybody asks me

93
00:06:58,590 --> 00:07:00,610
why doesn't lead generate code

94
00:07:07,670 --> 00:07:08,100
yes

95
00:07:09,420 --> 00:07:15,020
yes maybe less in the last couple years but yes constantly

96
00:07:16,260 --> 00:07:18,390
ever since we released late three

97
00:07:19,130 --> 00:07:20,730
people cry about that

98
00:07:22,010 --> 00:07:25,400
yes like now i have to call

99
00:07:26,170 --> 00:07:30,710
glade X M L load from file do you
take a builder add from file

100
00:07:31,720 --> 00:07:32,250
and

101
00:07:38,840 --> 00:07:41,420
well i mean that's the thing you know like it's

102
00:07:42,570 --> 00:07:46,650
your and you never gone and you never
gonna use like twice if you're gonna

103
00:07:46,650 --> 00:07:49,480
use generated code just never gonna work out

104
00:07:51,470 --> 00:07:52,980
okay so

105
00:07:53,450 --> 00:07:56,540
after all that hey we have templates

106
00:07:57,210 --> 00:08:04,200
and not everybody knows what templates are
but the templates are a way to encode

107
00:08:04,200 --> 00:08:09,150
G T katie builder X M L file descriptions
into the widget class so that

108
00:08:09,150 --> 00:08:12,090
when you create an instance of a certain type

109
00:08:12,980 --> 00:08:20,210
it's complex it's components are automatically build
and the variables referring to it are resolved

110
00:08:20,210 --> 00:08:23,430
and callbacks are connected

111
00:08:24,540 --> 00:08:31,090
it's just the formalism for creating and composite
object class which we involves no grunt

112
00:08:31,090 --> 00:08:31,670
work

113
00:08:32,240 --> 00:08:35,970
there is a P eyes to call to describe
it but there's no crunch work

114
00:08:36,570 --> 00:08:39,610
so not only do we gain

115
00:08:40,320 --> 00:08:42,720
by removing steps in the process of

116
00:08:43,450 --> 00:08:46,270
developing code but now we have a standard that's

117
00:08:46,930 --> 00:08:51,370
people can adapt to they can say
this is the way that you write a

118
00:08:51,370 --> 00:08:56,200
composite widget in G T K and they
they're not going to do this

119
00:08:57,010 --> 00:09:01,150
they're not going to ask how do i
get to pointers in my user data

120
00:09:02,190 --> 00:09:06,120
they're not going to run around in circles
and they're going to have a half

121
00:09:06,120 --> 00:09:06,780
in front of them

122
00:09:07,390 --> 00:09:07,840
alright

123
00:09:09,930 --> 00:09:12,320
a mean one

124
00:09:14,530 --> 00:09:15,520
so

125
00:09:17,940 --> 00:09:23,260
in this last ten years i guess ten years
ago there was already this next

126
00:09:23,260 --> 00:09:25,920
that environment which was already doing this

127
00:09:26,750 --> 00:09:30,710
and little parenthesis here i

128
00:09:31,880 --> 00:09:36,800
i used interface builder and i used flash
five years ago and that's when i

129
00:09:36,800 --> 00:09:38,960
started going crazy about templates and

130
00:09:40,080 --> 00:09:44,260
and it just like using X code in interface builder just

131
00:09:45,620 --> 00:09:47,120
just made me realise like

132
00:09:47,760 --> 00:09:51,560
how straightforward that is with G T K builder and

133
00:09:52,500 --> 00:09:56,930
kind of feeling pathetic about how
come we did not do it yet and

134
00:09:57,390 --> 00:09:59,390
and it took this long here we are

135
00:10:00,700 --> 00:10:09,450
so next step environment is the apples objective
C programming environment and name files is

136
00:10:09,450 --> 00:10:14,330
basically the equivalent of interface
builders G T K builder format

137
00:10:15,070 --> 00:10:17,680
and they've been doing that for ever

138
00:10:18,690 --> 00:10:23,540
and they have some cool features to
optimize your work flow so you can

139
00:10:26,480 --> 00:10:28,560
what are the features that they give you

140
00:10:29,630 --> 00:10:34,160
right you have those weird clients that's
true you have the X code here and

141
00:10:34,160 --> 00:10:38,620
you have interface builder here and i wanted
to put screenshots but i'm sorry i

142
00:10:38,620 --> 00:10:39,780
didn't have screen shots

143
00:10:40,280 --> 00:10:43,610
it's quite an acid trip because you have this like

144
00:10:44,280 --> 00:10:50,010
list of events that an object can generate
like two signals and you have

145
00:10:51,080 --> 00:10:55,560
that's like in your plate right and then
you have your source code editor which

146
00:10:55,560 --> 00:11:00,530
is that code which is kind of like sensitive
drop target right and you grab

147
00:11:00,530 --> 00:11:00,960
your

148
00:11:01,760 --> 00:11:04,350
grab your signal and it's in another window

149
00:11:05,250 --> 00:11:10,400
and you drag it to the method and then
that means that method is going

150
00:11:10,400 --> 00:11:16,200
to rip sponsor that signal on that object
which is component child if you're right

151
00:11:16,200 --> 00:11:19,930
that's a big blue line just strands across the screen

152
00:11:20,640 --> 00:11:21,360
anyway

153
00:11:22,100 --> 00:11:29,000
it's but it's really practical i mean it looks
really strange but it's really practical

154
00:11:31,690 --> 00:11:36,980
there is actually so many things that
we need to do in late to support

155
00:11:36,980 --> 00:11:37,980
this properly

156
00:11:38,410 --> 00:11:42,430
"'cause" right now we only support just creating a

157
00:11:42,970 --> 00:11:48,460
object class right which is komplet defining
one composite object class but

158
00:11:49,280 --> 00:11:56,100
another example of a cool feature to
do is in adobe flash create or you

159
00:11:56,100 --> 00:11:57,100
can take

160
00:11:57,630 --> 00:12:01,760
you can just go ahead in your work flow
will be i'm gonna design interface

161
00:12:02,490 --> 00:12:04,250
and there

162
00:12:05,060 --> 00:12:06,920
i mean it design interface

163
00:12:08,200 --> 00:12:08,930
right

164
00:12:09,620 --> 00:12:10,350
and

165
00:12:11,110 --> 00:12:14,930
i have my i don't know my album jacket you know and

166
00:12:15,890 --> 00:12:18,380
my song titles and you know my

167
00:12:19,010 --> 00:12:19,750
more but

168
00:12:21,370 --> 00:12:22,550
i don't know okay

169
00:12:23,660 --> 00:12:24,900
in search

170
00:12:25,400 --> 00:12:27,190
money no

171
00:12:27,960 --> 00:12:29,520
whatever's going on there

172
00:12:30,300 --> 00:12:33,970
and so i have a mock up and then i can just like take this

173
00:12:33,970 --> 00:12:34,530
box

174
00:12:35,800 --> 00:12:38,220
alright and i can right click on it

175
00:12:39,280 --> 00:12:41,820
and say export that as a class

176
00:12:42,790 --> 00:12:46,910
no just give me give me a list browser
because i'm gonna use that in

177
00:12:46,910 --> 00:12:49,330
like three or four more of my interfaces

178
00:12:50,180 --> 00:12:52,410
so this one is like maybe a

179
00:12:53,620 --> 00:12:56,780
i don't know song browser screen you know and

180
00:12:57,670 --> 00:13:01,440
this one becomes a class called soundless

181
00:13:01,620 --> 00:13:02,030
you know

182
00:13:05,690 --> 00:13:10,880
that's from a i don't know but catalyst
i use that with action script three

183
00:13:15,630 --> 00:13:18,270
there's air there's the

184
00:13:18,980 --> 00:13:25,340
but it's a i think that paradigm
is going to work just as well as

185
00:13:25,340 --> 00:13:29,010
on air as on your streaming swr

186
00:13:30,590 --> 00:13:34,960
but it's really practical because then you
have this new objects and you can either

187
00:13:34,960 --> 00:13:39,370
export it as a class which means that
you're going to implement it

188
00:13:39,900 --> 00:13:43,670
or you can just since it's flash right
you have these compose it thing is

189
00:13:43,670 --> 00:13:48,580
and they're just drawings and pictorial object
right so you don't really need to have

190
00:13:48,580 --> 00:13:49,170
cool

191
00:13:49,680 --> 00:13:51,940
we can just use them and paste them

192
00:13:53,210 --> 00:13:58,400
and what's really interesting is that you have
a project that's composed of like maybe

193
00:13:58,400 --> 00:13:59,600
ten classes

194
00:14:00,350 --> 00:14:05,180
and when you modify one then you see the change
in the other and everything

195
00:14:05,180 --> 00:14:06,290
is reactive

196
00:14:08,430 --> 00:14:10,640
this is where i want to go with collate

197
00:14:13,200 --> 00:14:15,490
so how far did i go

198
00:14:16,890 --> 00:14:17,690
yes

199
00:14:19,800 --> 00:14:21,700
before we continue

200
00:14:24,030 --> 00:14:25,390
i did pull this out

201
00:14:25,920 --> 00:14:27,150
this is how it's done

202
00:14:28,120 --> 00:14:30,460
this is how it's done in

203
00:14:31,350 --> 00:14:35,870
coke or and the next step in interface builder

204
00:14:36,730 --> 00:14:37,870
basically

205
00:14:39,150 --> 00:14:45,150
you have this guy right i be outlets is
a syntactic sugar that's custom for

206
00:14:45,150 --> 00:14:48,680
the next that objective C implementation

207
00:14:49,590 --> 00:14:55,100
and declaring your you while able as
an I B outlet means that my text

208
00:14:55,100 --> 00:14:59,640
is associated with an object that's in the next
that interface builder file so

209
00:15:00,280 --> 00:15:05,960
syntactic sugar that basically means that
label is part of might need file

210
00:15:06,770 --> 00:15:09,470
and that same thing goes for

211
00:15:10,580 --> 00:15:11,520
i be action

212
00:15:11,910 --> 00:15:12,890
button pressed

213
00:15:13,550 --> 00:15:13,900
right

214
00:15:15,520 --> 00:15:16,090
so

215
00:15:17,050 --> 00:15:23,130
as you can imagine you only get to see
that ellison teacher blue line across

216
00:15:23,130 --> 00:15:26,940
the screen if you have an I B action
on that method that can handle

217
00:15:26,940 --> 00:15:27,560
that signal

218
00:15:28,980 --> 00:15:29,410
right

219
00:15:32,640 --> 00:15:37,950
right so that's i don't have flash script
i wanted to have action script because

220
00:15:37,950 --> 00:15:43,030
it's more cute then we then the objective C but

221
00:15:44,050 --> 00:15:46,460
i couldn't put it together so

222
00:15:48,160 --> 00:15:51,740
and that's all because you guys started one day early

223
00:15:56,440 --> 00:15:57,210
alright

224
00:15:58,840 --> 00:16:02,350
this is this is what was on the internet on my blog site

225
00:16:03,120 --> 00:16:09,330
when we got it when we for men got it working with dollar

226
00:16:10,390 --> 00:16:11,650
his name is luke a

227
00:16:13,210 --> 00:16:13,680
that's right

228
00:16:16,190 --> 00:16:19,690
so here you can see the same pattern is repeated

229
00:16:20,610 --> 00:16:25,710
except we have this extra syntactic sugar which
means you're probably class is going to

230
00:16:25,710 --> 00:16:26,520
be a template

231
00:16:27,020 --> 00:16:30,810
i'd this isn't exactly a tutorial
about how to use power actually

232
00:16:31,790 --> 00:16:35,660
i am a big advocate of all the but
i've never used it myself which

233
00:16:35,660 --> 00:16:37,180
is a bit strange but

234
00:16:40,370 --> 00:16:43,630
maybe i was told that means i'm a true believer

235
00:16:46,190 --> 00:16:46,870
huh i

236
00:16:47,490 --> 00:16:48,660
right so

237
00:16:49,260 --> 00:16:55,620
well the distinction is in objective C you
have to use this controller object class

238
00:16:55,620 --> 00:16:58,480
which i thought was kind of silly
and i didn't what i did not want

239
00:16:58,480 --> 00:17:02,490
to repeat that in G T K but they
have this object can just you

240
00:17:02,490 --> 00:17:05,140
why view controller object which is

241
00:17:06,140 --> 00:17:09,040
it's a kind of metal objects around your screen

242
00:17:09,530 --> 00:17:10,230
and

243
00:17:10,970 --> 00:17:16,090
only using that object can you create
compensate the interfaces

244
00:17:16,710 --> 00:17:21,450
so here we have the equivalent you have
dedicate templates do you take a child

245
00:17:21,450 --> 00:17:25,870
is pretty much synonymous with the I B outlet

246
00:17:26,770 --> 00:17:29,090
to let you to

247
00:17:29,550 --> 00:17:32,490
course in C code this is a little bit more verbose but

248
00:17:33,600 --> 00:17:39,860
but i think that we've got something really
much nicer much more bleeding edge cutting

249
00:17:39,860 --> 00:17:42,500
edge and i wish that i had the

250
00:17:43,040 --> 00:17:45,210
screenshots to show it off better

251
00:17:45,710 --> 00:17:49,230
to make us a little bit more ashamed
about how behind we are

252
00:17:49,800 --> 00:17:50,230
right

253
00:17:52,500 --> 00:17:56,110
and so do you take a child and you take a callback right

254
00:17:56,730 --> 00:17:59,990
now this is pretty simple you can create a class

255
00:18:00,340 --> 00:18:05,100
create a you wife i'll put it all together
this is just going to work

256
00:18:05,100 --> 00:18:07,620
in this demo you have an entry

257
00:18:08,580 --> 00:18:11,750
and you have of virtual text property

258
00:18:12,740 --> 00:18:17,800
actually yes its kind of virtual because there's
no storage you'd only sets the text

259
00:18:17,800 --> 00:18:19,850
on its delegate entry object

260
00:18:20,370 --> 00:18:23,290
and then when the entry changes

261
00:18:24,340 --> 00:18:30,150
he notifies that virtual property has changed
and that's a callback which is of course

262
00:18:30,150 --> 00:18:34,500
connected to the entry inside the late file

263
00:18:35,180 --> 00:18:37,220
in response to it's changed signal

264
00:18:44,180 --> 00:18:44,790
who

265
00:18:51,280 --> 00:18:51,900
it's

266
00:18:52,360 --> 00:18:54,270
what is it needed for

267
00:18:55,010 --> 00:18:55,610
it is

268
00:18:57,150 --> 00:19:04,700
it declares your method or your function
as a an endpoint for a signal that

269
00:19:04,700 --> 00:19:05,250
can it

270
00:19:05,980 --> 00:19:11,330
it becomes accessible to the name space that
glade refers to for signals because we

271
00:19:11,330 --> 00:19:14,270
couldn't really except D L open G L send

272
00:19:15,620 --> 00:19:16,270
you know

273
00:19:16,680 --> 00:19:22,630
so you know this kind of nice or you
know like so the class itself

274
00:19:22,630 --> 00:19:24,900
create a dictionary of

275
00:19:25,740 --> 00:19:28,640
functions which can be called and the

276
00:19:29,450 --> 00:19:34,900
the interface file the interface description
only has access to those symbols

277
00:19:36,630 --> 00:19:39,380
judy cable there will fall back to
D else in but you don't have to

278
00:19:39,380 --> 00:19:40,120
remember that

279
00:19:46,680 --> 00:19:47,300
okay

280
00:19:49,930 --> 00:19:51,730
i'm sure more parenthesis

281
00:19:57,970 --> 00:20:01,660
right so we went over this in the beginning basically

282
00:20:02,230 --> 00:20:05,900
adding this doesn't make anything
new possible i've seen this

283
00:20:06,710 --> 00:20:07,620
approach

284
00:20:08,050 --> 00:20:15,330
there was a there was a python library
are a something i remember but the

285
00:20:15,330 --> 00:20:16,680
they had their own

286
00:20:17,230 --> 00:20:21,800
kind of implementation of this but it
was like a base class how to teach

287
00:20:21,800 --> 00:20:23,050
a builder instance

288
00:20:23,560 --> 00:20:29,730
who would you know like they it would
respond to calls of like get this

289
00:20:29,730 --> 00:20:34,130
or get that by looking at its own builder file then

290
00:20:34,850 --> 00:20:37,490
but you know people have been doing similar things but

291
00:20:38,130 --> 00:20:41,080
having an infrastructure for actually doing it

292
00:20:42,090 --> 00:20:46,000
makes it so that people actually do
it and that it's easy for them

293
00:20:46,440 --> 00:20:47,710
that makes all the difference

294
00:20:50,920 --> 00:20:53,510
right and we don't find these situations where

295
00:20:54,250 --> 00:20:58,410
some code is reacting to you know like

296
00:20:58,820 --> 00:21:00,210
you press the button

297
00:21:00,780 --> 00:21:04,740
in your callback that change the entry and the other guys

298
00:21:05,260 --> 00:21:09,590
hearing the entry changing he's setting
the end of the scroll bar to be not

299
00:21:09,590 --> 00:21:10,590
sensitive and

300
00:21:11,200 --> 00:21:13,710
and it can go in every which direction but

301
00:21:14,350 --> 00:21:19,670
since you have that built into a late
file built into an object class then

302
00:21:19,670 --> 00:21:21,750
there is no room for

303
00:21:22,130 --> 00:21:24,670
unexpected instances of it

304
00:21:25,100 --> 00:21:26,860
implicit invocation

305
00:21:27,630 --> 00:21:28,320
so

306
00:21:29,640 --> 00:21:35,080
i kind of think it's a good idea to move towards
explicit invocation everywhere you

307
00:21:35,080 --> 00:21:42,170
can "'cause" you just can't really define how
program runs if you're relying solely on

308
00:21:42,170 --> 00:21:43,870
a reactive system

309
00:21:44,740 --> 00:21:46,810
everything is just reactive to each other

310
00:21:51,930 --> 00:21:56,170
and reducing steps right so this is
this is where we want to go with

311
00:21:56,170 --> 00:21:58,200
played we need to redo steps

312
00:21:59,770 --> 00:22:05,130
and by doing that's well i it implies
that somebody here is gotta give us

313
00:22:05,130 --> 00:22:09,790
a few hundred thousand dollars to invest in making late but

314
00:22:10,820 --> 00:22:12,520
if we do it

315
00:22:13,150 --> 00:22:17,160
right it implies a lot of work you
know because as soon as we start

316
00:22:17,160 --> 00:22:21,840
looking at these kind of features that
they're doing in adobe flash or in

317
00:22:23,240 --> 00:22:25,690
in interface builder

318
00:22:26,380 --> 00:22:27,740
we're looking at us

319
00:22:28,390 --> 00:22:32,390
making a single project full of a lot
of different late files

320
00:22:33,020 --> 00:22:37,510
all these play files a part of the same
project now and one thing changes

321
00:22:37,510 --> 00:22:41,780
so you have you have to unify the undo
redo stack you have to do

322
00:22:41,780 --> 00:22:42,690
all kinds of

323
00:22:44,170 --> 00:22:47,420
all kinds of facts lips tricky stuff

324
00:22:48,050 --> 00:22:52,090
has to be done especially if you want
to get that feature which i want

325
00:22:52,740 --> 00:22:53,230
you know

326
00:22:53,750 --> 00:22:59,700
the experience of just throw up a markup
and then break it up and create

327
00:22:59,700 --> 00:23:01,370
an implementation from that markup

328
00:23:02,210 --> 00:23:05,800
which is great well you need a lot of work to get that done

329
00:23:07,050 --> 00:23:07,910
and

330
00:23:08,580 --> 00:23:13,680
basically that's what we're looking
for good ideas to reduce the steps

331
00:23:14,790 --> 00:23:19,530
reduce this that's in the process of creating
a good user interface without

332
00:23:20,400 --> 00:23:22,250
you know without making it right

333
00:23:23,300 --> 00:23:24,390
while keeping it

334
00:23:24,900 --> 00:23:27,150
keeping it great keeping it clean

335
00:23:28,090 --> 00:23:29,740
and making it easy

336
00:23:30,850 --> 00:23:33,700
that's what we want to do so any suggestions

337
00:23:36,740 --> 00:23:37,710
yes that's true

338
00:23:42,790 --> 00:23:46,490
so something that approach on we can talk
about right now is help you read

339
00:23:46,490 --> 00:23:53,880
well not to sit don't three take it recommends
like using specific spacing specific padding

340
00:23:53,880 --> 00:23:57,730
and all that sort of stuff and right
now i'm about simply when you insert

341
00:23:57,730 --> 00:24:02,100
a child widget it's like it's all
went up the next to each other of

342
00:24:02,100 --> 00:24:05,470
a quick thing or so easy thing that
i would say but i don't know

343
00:24:05,470 --> 00:24:08,910
the plate will base is recommending
a good set of default so you get a

344
00:24:08,910 --> 00:24:12,490
good home three compliant apple right
out of the right of the box

345
00:24:13,180 --> 00:24:17,250
so i mean it sort of our cargo but i think that we need to

346
00:24:17,250 --> 00:24:21,900
think about how we wanna strictly interpret
making no maps going for

347
00:24:22,320 --> 00:24:32,040
and i know what a problems and everything
magical you don't space back how you

348
00:24:32,040 --> 00:24:35,350
it's from the window we are do you

349
00:24:37,650 --> 00:24:38,520
we've

350
00:24:40,130 --> 00:24:43,520
we circled around that for a while we have this

351
00:24:44,120 --> 00:24:48,950
custom code forty to get dialogue and there's
a kind of trick like there's a

352
00:24:48,950 --> 00:24:55,270
one little nasty trick about indicate dialogue
is that the child of the content area

353
00:24:55,270 --> 00:24:57,560
must have five pixels border

354
00:24:58,710 --> 00:25:04,120
but not the content area itself because that
would cause the action area to also

355
00:25:04,120 --> 00:25:05,110
gained a border

356
00:25:05,800 --> 00:25:11,390
so it's kind of really young you know
and some of those some of the

357
00:25:11,390 --> 00:25:14,820
things that G T K's doing with padding

358
00:25:15,320 --> 00:25:16,620
which is sensible is

359
00:25:18,770 --> 00:25:20,480
assigning it from star properties

360
00:25:20,900 --> 00:25:26,150
like a few of the G T K dialogue good
space things and patterns are

361
00:25:26,650 --> 00:25:30,780
like you can set them but it means nothing
it will it will be overwritten

362
00:25:30,780 --> 00:25:35,720
by style thing settings when adjudicate
dialogue initialises

363
00:25:37,370 --> 00:25:41,250
a big question we have to ask ourselves
about that is do we want to

364
00:25:41,250 --> 00:25:42,890
relinquish all of that for C S

365
00:25:43,900 --> 00:25:44,670
control it

366
00:25:45,290 --> 00:25:48,720
but it's definitely something to look at

367
00:25:49,410 --> 00:25:53,580
i also one more question what well i
actually just be able to fly widgets

368
00:25:53,580 --> 00:25:55,120
around to reorder problem and

369
00:25:59,700 --> 00:26:02,330
hypothetically right now no

370
00:26:03,670 --> 00:26:04,110
boy

371
00:26:05,360 --> 00:26:06,540
it's not working

372
00:26:08,070 --> 00:26:08,580
it somewhere

373
00:26:10,140 --> 00:26:13,230
well actually thank you so much that's i

374
00:26:19,350 --> 00:26:24,360
what about putting for non widgets what
about with what's for non widgets

375
00:26:24,720 --> 00:26:27,810
for non widgets like your application

376
00:26:32,590 --> 00:26:35,040
and we move be there to do you

377
00:26:46,470 --> 00:26:49,030
right you says also is the main thing to do you live

378
00:26:53,480 --> 00:26:57,850
now we it's i guess it's true we cannot
really you know expand let's go

379
00:26:57,850 --> 00:27:03,390
until we bring it lower but i understand
that you take a builder might not

380
00:27:03,390 --> 00:27:04,360
be the thing

381
00:27:05,110 --> 00:27:08,600
it might not be the implementation it might be

382
00:27:09,340 --> 00:27:14,620
might be something barry and based or
i don't know what i don't know i

383
00:27:14,620 --> 00:27:15,300
don't know

384
00:27:16,260 --> 00:27:21,650
and we probably need we need serialisation
as well is D C realizations right if

385
00:27:21,650 --> 00:27:25,810
we're gonna move something like that instance
you bright no i'm not talking about you

386
00:27:25,810 --> 00:27:28,990
need to do that but i mean it's
fine if it's okay but if the

387
00:27:28,990 --> 00:27:31,990
and i can also use it to construct things
that are not which it's like

388
00:27:31,990 --> 00:27:38,240
say for example there's this semi common paradigm
where you have mostly static menu structure

389
00:27:38,550 --> 00:27:41,550
but then you have like you know one
menu that you wanna be dynamic or

390
00:27:41,550 --> 00:27:45,320
one section so you have some menu
layout and then you have a and i

391
00:27:45,320 --> 00:27:48,230
on one subsection that's like recent talk

392
00:27:49,110 --> 00:27:50,640
something like that or your bookmarks

393
00:27:50,980 --> 00:27:54,630
and then you would want that become an instance
variable in your application so that

394
00:27:54,630 --> 00:27:55,580
it's easy to access

395
00:27:56,460 --> 00:28:00,760
so it is it's really liked the same internal
try but it's not being done

396
00:28:00,760 --> 00:28:01,580
with widgets

397
00:28:02,570 --> 00:28:06,800
well okay of course you have that at G
T K application we know little

398
00:28:06,800 --> 00:28:08,290
but to take application

399
00:28:09,260 --> 00:28:11,820
it would have to be a rewrite i mean it would have to be a

400
00:28:11,820 --> 00:28:15,470
ports because we have this abstract
class it does a lot of stuff

401
00:28:15,880 --> 00:28:16,550
right

402
00:28:18,500 --> 00:28:24,330
maybe we can do it with those like default
implementations of interfaces

403
00:28:25,140 --> 00:28:28,740
but even then i think it would be a big can of worms

404
00:28:31,220 --> 00:28:33,310
i exactly yes

405
00:28:54,990 --> 00:28:55,550
no

406
00:28:56,050 --> 00:28:58,060
no that's no well it's

407
00:28:58,560 --> 00:29:03,880
no it can but there is a few quirks i mean do you take a

408
00:29:03,880 --> 00:29:09,170
widget as the destroy signal and we use that
to memorandum memory manage those instance

409
00:29:09,170 --> 00:29:10,590
variables right

410
00:29:11,690 --> 00:29:12,400
probably

411
00:29:13,460 --> 00:29:14,600
it's probably you

412
00:29:27,180 --> 00:29:31,450
it well it could be documented that the instance variables

413
00:29:31,950 --> 00:29:34,410
exist until the first dispose cycle

414
00:29:35,930 --> 00:29:38,730
it might not be so find in practice

415
00:29:39,110 --> 00:29:39,540
but

416
00:29:57,850 --> 00:30:03,060
i don't know it technically the technically the implementation
should work fine with objects

417
00:30:03,460 --> 00:30:09,760
it really should there's nothing really widget
specific except that you know we have to

418
00:30:09,760 --> 00:30:10,780
take a container

419
00:30:12,290 --> 00:30:13,680
it helps you know

420
00:30:14,350 --> 00:30:17,990
but it does it you know like i mean
actions go in action groups in

421
00:30:18,600 --> 00:30:21,630
you know text tags go and text tag tables and

422
00:30:35,130 --> 00:30:38,040
okay was it was it not long enough do you need me to make a

423
00:30:38,040 --> 00:30:38,960
performance

424
00:30:47,370 --> 00:30:51,390
that's twelve and that makes forty minutes or some

425
00:30:56,920 --> 00:30:58,440
that's

426
00:31:00,620 --> 00:31:01,080
they

427
00:31:02,560 --> 00:31:07,130
it's it has to do with your arriving early
it was a preemptive attack must've

428
00:31:07,130 --> 00:31:08,400
been coordinated yes

429
00:31:14,940 --> 00:31:17,950
i think i read recently that a lot
of the you wanting ladies

430
00:31:18,720 --> 00:31:20,320
generated essentially

431
00:31:20,740 --> 00:31:22,390
is to generated

432
00:31:23,420 --> 00:31:28,890
yes we well generated it's with templates

433
00:31:29,270 --> 00:31:29,610
right

434
00:31:30,410 --> 00:31:34,180
i mean wanting out become quite interested in doing is

435
00:31:34,720 --> 00:31:42,600
like designing it yes definitely and the summary
things that are in the you want

436
00:31:42,600 --> 00:31:43,400
don't need to be

437
00:31:44,170 --> 00:31:47,770
i i've been i've been starting to prefer those like

438
00:31:48,310 --> 00:31:50,380
that symbolic icons

439
00:31:50,900 --> 00:31:53,670
we can also much no

440
00:31:54,010 --> 00:31:54,850
that's little

441
00:31:55,610 --> 00:31:58,750
plus and a minus it's very personal thing fruit

442
00:31:59,550 --> 00:32:04,880
and basically they we have like thirty you why files

443
00:32:05,550 --> 00:32:09,630
in the plug ins directory that like you can load and

444
00:32:10,950 --> 00:32:14,850
it doesn't look exactly the same as in the end
result but that's you know

445
00:32:14,850 --> 00:32:21,160
you can edit those editors in played and i did it very fast

446
00:32:21,760 --> 00:32:24,780
and knowing that you can change

447
00:32:25,290 --> 00:32:25,730
right

448
00:32:39,800 --> 00:32:44,070
okay well we do generate the property editors
based on what is in the widget

449
00:32:44,070 --> 00:32:44,510
class

450
00:32:54,320 --> 00:32:55,160
well someone

451
00:32:55,870 --> 00:32:59,170
some of the interesting things are like stuff that i

452
00:33:00,200 --> 00:33:01,490
stuff they can be hidden

453
00:33:02,030 --> 00:33:07,450
you know that it's not really useful
as a property in your face but like

454
00:33:09,380 --> 00:33:13,560
but a different way to set it you
know like right now i have in

455
00:33:13,560 --> 00:33:16,390
the common tab i have a tool tip property

456
00:33:16,980 --> 00:33:20,550
and i have a check mark whether
it's whether it's with markup

457
00:33:21,630 --> 00:33:25,030
the way i don't have like a tool
tip property and it like a tool

458
00:33:25,030 --> 00:33:28,740
tip text property and a tool tip
markup property you know like

459
00:33:39,390 --> 00:33:42,650
well how long ago did you see the editors

460
00:33:43,830 --> 00:33:44,640
less than a month

461
00:33:46,550 --> 00:33:47,380
more than a month

462
00:33:51,750 --> 00:33:53,700
let's see what it

463
00:33:56,650 --> 00:33:58,070
little at least

464
00:34:11,660 --> 00:34:15,310
let's see what i got here let's hope
it doesn't crash right startup but

465
00:34:17,890 --> 00:34:19,500
okay so what do we got

466
00:34:20,660 --> 00:34:24,440
it's this is very small screen it's pretty bigger

467
00:34:27,810 --> 00:34:28,630
right so

468
00:34:36,350 --> 00:34:36,510
i

469
00:34:37,610 --> 00:34:39,370
this is what this is

470
00:34:41,850 --> 00:34:42,050
i

471
00:34:43,590 --> 00:34:51,190
i have some like this is that application
chooser dialogue and then isn't there

472
00:34:53,420 --> 00:34:55,120
there is the where is it

473
00:35:04,850 --> 00:35:07,750
and this is an application chooser widget

474
00:35:17,340 --> 00:35:19,050
that's not a good example

475
00:35:19,930 --> 00:35:23,600
let me just find one that's the is

476
00:35:24,050 --> 00:35:26,430
the font but don't know where is that

477
00:35:32,120 --> 00:35:33,240
in the middle

478
00:35:34,380 --> 00:35:36,010
okay

479
00:35:49,900 --> 00:35:51,080
i of course

480
00:35:58,520 --> 00:36:01,990
right so up here we have point user attributes

481
00:36:02,910 --> 00:36:03,970
and

482
00:36:07,090 --> 00:36:09,870
and the where is the one chooser widget again

483
00:36:10,570 --> 00:36:11,450
it's just the

484
00:36:14,650 --> 00:36:17,990
that's the combo box accent font button there

485
00:36:18,960 --> 00:36:24,030
and then this one so i have this
box here font button attributes

486
00:36:24,380 --> 00:36:28,050
and so like i have this one and everything that's a fonts

487
00:36:28,400 --> 00:36:29,850
you know one selector

488
00:36:30,480 --> 00:36:32,240
i just use that again

489
00:36:33,200 --> 00:36:34,180
and i repeat it

490
00:36:35,070 --> 00:36:39,400
and that that's works for like that choose
are the recent choose are the there

491
00:36:39,400 --> 00:36:42,170
all shared components of components

492
00:36:48,280 --> 00:36:53,140
no actually right now after doing all that
i did not remove anything everything is

493
00:36:53,140 --> 00:36:53,900
still there

494
00:36:57,650 --> 00:37:02,060
no i would not be opposed to that at all
like we had that conversation

495
00:37:02,060 --> 00:37:04,670
before like maybe there's an advanced mode

496
00:37:05,060 --> 00:37:08,450
maybe there's a different view or something more

497
00:37:10,040 --> 00:37:16,130
you know like i've been resisting the tree
view idea for properties because i wanted

498
00:37:16,130 --> 00:37:16,980
to get there

499
00:37:17,650 --> 00:37:22,760
for so long but now that i'm there
wouldn't be a bad thing to have

500
00:37:22,760 --> 00:37:24,800
that review it as well because

501
00:37:27,750 --> 00:37:29,620
search for properties yes

502
00:37:36,610 --> 00:37:36,870
i

503
00:37:39,830 --> 00:37:44,300
this isn't this is the widget editor
know in the comments that

504
00:37:45,720 --> 00:37:47,690
yep your visible

505
00:37:48,560 --> 00:37:49,580
flags and

506
00:37:50,170 --> 00:37:54,990
this is the tool tip it has a custom
button that means that you know

507
00:37:54,990 --> 00:37:57,530
you're going to it's gonna has tool tip true

508
00:37:59,110 --> 00:38:02,190
so then you get the query tool tip signal right

509
00:38:05,360 --> 00:38:09,210
yes it can be empty like

510
00:38:18,320 --> 00:38:23,620
and it's gonna be you know it's a it's
gonna be even better when alan

511
00:38:23,620 --> 00:38:29,730
runs his fingers through the grooves between
the widgets and adjust the spaces

512
00:38:32,960 --> 00:38:36,200
i hope that

513
00:38:43,130 --> 00:38:45,290
a accelerators

514
00:38:45,700 --> 00:38:47,000
yes it is

515
00:38:47,560 --> 00:38:47,940
it is

516
00:38:53,850 --> 00:38:56,560
it's possible maybe

517
00:38:57,080 --> 00:39:02,240
actually those are the actual property
others which are mostly custom widgets

518
00:39:02,700 --> 00:39:05,360
and it's possible that it's like

519
00:39:05,750 --> 00:39:09,750
in the U I description but it's possible
that it's in that custom widget

520
00:39:10,470 --> 00:39:12,630
which is faulty not expand

521
00:39:14,640 --> 00:39:15,310
alright

522
00:39:18,600 --> 00:39:22,710
so does that do it anybody want to come do would dance

523
00:39:24,480 --> 00:39:25,150
okay

524
00:39:45,740 --> 00:39:48,420
okay we have things to discuss

525
00:39:56,690 --> 00:40:01,680
we can we can have a mud wrestling competition
and you know like we can

526
00:40:01,680 --> 00:40:02,700
do get out and

527
00:40:03,390 --> 00:40:08,690
maybe will like for G action to be
you know G T K action because

528
00:40:08,690 --> 00:40:12,560
it's like all of the same features
only we don't change the A P I

529
00:40:17,690 --> 00:40:18,000
we

530
00:40:19,060 --> 00:40:20,660
right that called

531
00:40:21,920 --> 00:40:22,670
well

532
00:40:24,680 --> 00:40:25,650
once okay

533
00:40:26,320 --> 00:40:26,950
it was a right

