purebasic.info

PureBasic forum
Текущее время: Пн июл 16, 2018 11:04 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Вт авг 01, 2017 1:18 pm 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Изображение


Вложения:
Снимок.png [7.55 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 02, 2017 5:59 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 629
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Тигрёнок писал(а):
А что вы имеете в виду? Какой-то приём, или просто всё руками делаете?

Только руками, просто читаю нужный край предыдущего гаджета, и ни каких абсолютно заданных размеров и координат.
Думаю редактор делает тоже самое.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 02, 2017 2:40 pm 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
У меня есть идея, как можно упростить ручной труд и сделать правку кода более наглядной. Вот для демонстрации мой наскоро склёпанный парсер для отыскания в исходном коде описаний окон.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#File=0
#TreeG=0
#Window=0
 
Enumeration RegularExpression
  #RegEx_FindFunction
  #RegEx_FindArguments
  #Regex_FindProcedure
EndEnumeration
 
Procedure ParseProgramFile(FileName.s)
  If ReadFile(#File, FileName)
    Format=ReadStringFormat(#File)
    length = Lof(#File)
    *File = AllocateMemory(length)
    If *File : ReadData(#File, *File, length)
           
      If CreateRegularExpression(#Regex_FindProcedure, "Procedure.*?EndProcedure", #PB_RegularExpression_NoCase | #PB_RegularExpression_MultiLine | #PB_RegularExpression_DotAll) And
         CreateRegularExpression(#RegEx_FindFunction, "(\w+)\s*\((.*?)\)(?=\s*($|:))", #PB_RegularExpression_NoCase | #PB_RegularExpression_MultiLine | #PB_RegularExpression_DotAll) And
         CreateRegularExpression(#RegEx_FindArguments, "[^,]+", #PB_RegularExpression_NoCase | #PB_RegularExpression_MultiLine | #PB_RegularExpression_DotAll)
       
       
        If ExamineRegularExpression(#Regex_FindProcedure, PeekS(*File, length, Format))
          While NextRegularExpressionMatch(#Regex_FindProcedure)
            FindWindow=#False
           
            Function$=RegularExpressionMatchString(#Regex_FindProcedure)
            If ExamineRegularExpression(#RegEx_FindFunction, Function$)
              While NextRegularExpressionMatch(#RegEx_FindFunction)
               
                FunctionName$=RegularExpressionGroup(#RegEx_FindFunction, 1)
                FunctionArgs$=RegularExpressionGroup(#RegEx_FindFunction, 2)
               
               
                NewList Args.s()
                If ExamineRegularExpression(#RegEx_FindArguments, FunctionArgs$)
                  While NextRegularExpressionMatch(#RegEx_FindArguments)
                   
                    AddElement(Args()) : Args()=RegularExpressionMatchString(#RegEx_FindArguments)
 
                  Wend
                EndIf
               
               
                Select FunctionName$
                  Case "OpenWindow"
                    FindWindow=#True
                    SelectElement(Args(), 0)
                    AddGadgetItem(#TreeG, i, "Окно "+Args(), 0, 0) : i+1
                   
                  Case "ButtonGadget", "ButtonImageGadget", "CalendarGadget", "CanvasGadget", "CheckBoxGadget", "ComboBoxGadget", "ContainerGadget", "DateGadget", "EditorGadget", "ExplorerComboGadget", "ExplorerListGadget", "ExplorerTreeGadget", "FrameGadget", "HyperLinkGadget", "IPAddressGadget", "ImageGadget", "ListIconGadget", "ListViewGadget", "MDIGadget", "OpenGLGadget", "OptionGadget", "PanelGadget", "ProgressBarGadget", "ScrollAreaGadget", "ScrollBarGadget", "ShortcutGadget", "SpinGadget", "SplitterGadget", "StringGadget", "TextGadget", "TrackBarGadget", "TreeGadget", "WebGadget"
                    If Not FindWindow
                      FindWindow=#True
                      AddGadgetItem(#TreeG, i, "В процедуре: "+Function$, 0, 0) : i+1
                    EndIf
                   
                    AddGadgetItem(#TreeG, i, FunctionName$, 0, 1) : i+1
                    ForEach Args()
                      AddGadgetItem(#TreeG, i, Args(), 0, 2) : i+1
                    Next
                   
                EndSelect
               
              Wend
             
            EndIf
           
          Wend
        EndIf
       
      EndIf
    EndIf
    CloseFile(#File)
  EndIf
EndProcedure
 
 
FilePath$=OpenFileRequester("Выберите файл с описанием окон", "", "Все файлы|*", 0)
If Len(FilePath$)
 
  If OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 320, 240, "")
    TreeGadget(#TreeG, 0, 0, 320, 240)
   
    ParseProgramFile(FilePath$)
   
    Repeat
      Event=WaitWindowEvent()
     
      Select Event
        Case #PB_Event_CloseWindow : Quit=#True
         
      EndSelect
    Until Quit
  EndIf
 
EndIf
 

Никто не мешает состряпать полноценный редактор, вопрос лишь во времени и силах. Ну так как, оно того стоит?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 04, 2017 4:27 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Вот и я питался это делать.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
; Должен находить функции
; Различать где нашел
; то есть внутри процедури или где то еще
;-
EnableExplicit
 
Global Window_0
 
Global Editor_0, Editor_1, Editor_2, Check,Open,Run,Save
; Define String.S = "Save=Paste=Copy"
 
 
Procedure.S LeftString2(ReadString.S, Character.C, Pos = 1)
  Protected String.S, I.I, CountString.I, Count.I
  String.S = Trim(Mid( ReadString.S, (1), (FindString( ReadString.S, Chr( Character.C ) ) - (1)) +  Pos))
  ProcedureReturn String.S
EndProcedure
 
Procedure.S RightString2(ReadString.S, Character.C, Pos =- 1)
  Protected String.S, I.I, CountString.I, Count.I
  String.S = Trim(Mid( ReadString.S, (FindString( ReadString.S, Chr( Character.C ) ) + (1))  +  Pos))
  ProcedureReturn String.S
EndProcedure
 
Procedure.S LeftString(ReadString.S, Character.C, Pos = 1)
  Protected String.S, I.I, CountString.I, Count.I
  ReadString.S = Trim( ReadString.S )
  CountString.I = CountString( StringField( ReadString.S, 2, Chr('"') ), Chr(Character.C))
  If CountString( ReadString.S, Chr(Character.C)) - CountString.I
    For I = 0 To CountString.I
      Count.I = FindString( ReadString.S, Chr(Character.C), Count.I + (1))
    Next
    String.S = Left( ReadString.S, Count.I - (1) )
  Else
    String.S = ReadString.S
  EndIf
 
  ProcedureReturn String.S
EndProcedure
 
; Debug LeftString2(String.S, '=')
; Debug RightString2(String.S, '=')
 
 
Procedure IsFind( ReadString.S ) ; Ok
  Static Result, InProcedure, InMacro
  If (Trim( StringField( ReadString.S, (2), "Procedure " ) ) ) Or
     (Trim( StringField( ReadString.S, (2), "Procedure." ) ) )
    InProcedure = 1
  EndIf
  If Trim( StringField( ReadString.S, (1), "EndProcedure" ) ) = "" And ;
     Trim( StringField( ReadString.S, (2), "EndProcedure" ) ) = ""     ;
    InProcedure = 0
    ProcedureReturn -1
  EndIf
  If (Trim( StringField( ReadString.S, (2), "Macro " ) ) ) Or
     (Trim( StringField( ReadString.S, (2), "Macro." ) ) )
    InMacro = 2
  EndIf
  If Trim( StringField( ReadString.S, (1), "EndMacro" ) ) = "" And ;
     Trim( StringField( ReadString.S, (2), "EndMacro" ) ) = ""     ;
    InMacro = 0
    ProcedureReturn -2
  EndIf
 
 
  If InProcedure = 1
    Result = InProcedure
  ElseIf InMacro = 2
    Result = InMacro
  Else
    Result = 0
  EndIf
 
  ProcedureReturn Result
EndProcedure
 
Procedure.S FindS( ReadString.S, Function.S ) ; Ok
  Protected Finds.S, IsFind.B, String.S
 
  If CountString( ReadString.S, Chr('('))  And ; Условие чтобы была функция
     CountString( ReadString.S, Chr(','))
   
    ReadString.S = LeftString(ReadString.S, ';') ; левая часть
    ReadString.S = LeftString(ReadString.S, ':') ; левая часть
    IsFind = IsFind( ReadString.S )
   
    String.S = StringField( ReadString.S, 1, Chr('"') ) ; Строка до кавычек
    String.S = StringField( String.S, 1, Chr(',') )     ; Строка до запятой
                                                        ;String.S = RemoveString( String.S, Chr(' ') ) ; Убираем все пробелы
    Debug String.S
    ;
    If FindString( String.S,  Function.S + Chr('(') ) ;
      Select IsFind
        Case 1  :Finds.S = "Inp >> "+ReadString.S
        Case 2  :Finds.S = "Inm >> "+ReadString.S
        Default :Finds.S = "Out >> "+ReadString.S
      EndSelect
    EndIf
  EndIf
  ProcedureReturn Finds.S
EndProcedure
 
Procedure.S FindFunction( ReadString.S ) ;Ok
  Protected Find.S, Type.S
  Restore Types
  Read$ Type.S
 
  While Type.S
    Find.S = FindS( ReadString.S, Type.S)
    If Find.S
      Break
    EndIf
    Read$ Type.S
  Wend
 
  If Find.S
    ;Debug Find.S
    ProcedureReturn Find.S
  EndIf
 
  DataSection
    Types:
    Data$ "OpenWindow"
    Data$ "ButtonGadget","StringGadget","TextGadget","CheckBoxGadget",
          "OptionGadget","ListViewGadget","FrameGadget","ComboBoxGadget",
          "ImageGadget","HyperLinkGadget","ContainerGadget","ListIconGadget",
          "IPAddressGadget","ProgressBarGadget","ScrollBarGadget","ScrollAreaGadget",
          "TrackBarGadget","WebGadget","ButtonImageGadget","CalendarGadget",
          "DateGadget","EditorGadget","ExplorerListGadget","ExplorerTreeGadget",
          "ExplorerComboGadget","SpinGadget","TreeGadget","PanelGadget",
          "SplitterGadget","MDIGadget","ScintillaGadget","ShortcutGadget","CanvasGadget"
    Data$ ""
  EndDataSection
EndProcedure
 
Procedure.S IsFindFunctions(ReadString$) ; Ok
  Protected Finds.S, Type.S
  Restore Types
  Read$ Type.S
 
  While Type.S
    If FindString(ReadString$, Type.S+"(")
      Finds.S = "Find >> "+ReadString$
    EndIf
   
    If Finds.S
      Break
    EndIf
   
    Read$ Type.S
  Wend
 
  ProcedureReturn Finds.S
 
  DataSection
    Types:
    Data$ "OpenWindow"
    Data$ "ButtonGadget","StringGadget","TextGadget","CheckBoxGadget",
          "OptionGadget","ListViewGadget","FrameGadget","ComboBoxGadget",
          "ImageGadget","HyperLinkGadget","ContainerGadget","ListIconGadget",
          "IPAddressGadget","ProgressBarGadget","ScrollBarGadget","ScrollAreaGadget",
          "TrackBarGadget","WebGadget","ButtonImageGadget","CalendarGadget",
          "DateGadget","EditorGadget","ExplorerListGadget","ExplorerTreeGadget",
          "ExplorerComboGadget","SpinGadget","TreeGadget","PanelGadget",
          "SplitterGadget","MDIGadget","ScintillaGadget","ShortcutGadget","CanvasGadget"
    Data$ ""
  EndDataSection
EndProcedure
 
Procedure.S Parse( ReadString.S ) ;Ok
  Protected I
  Protected Count.I
  Protected String.S
 
  Protected Name.S
  Protected Type.S
  Protected X.S
  Protected Y.S
  Protected Width.S
  Protected Height.S
  Protected Caption.S
  Protected Param1.S
  Protected Param2.S
  Protected Param3.S
  Protected Flag.S
  Protected CountString.I
  ReadString.S = Trim( ReadString.S )
 
  ;
  If FindString( StringField( ReadString.S, 1, Chr(',') ), Chr(')'))
    Type.S = StringField( ReadString.S, (1), Chr('('))
  Else
    Type.S = StringField( ReadString.S, CountString( StringField( ReadString.S, 1, Chr(',') ), Chr('(')), Chr('('))
  EndIf
 
  ;Handle.S = Trim(StringField(Type.S, 1, Chr('='))) ;
  ;Type.S = Trim(StringField(Type.S, 2, Chr('='))) ; делает одно и тоже
  String.S = Trim(StringField( ReadString.S, (2), Chr('(')), Chr(')'))
 
 
  ; Если только одна закрывающая скобка
  X.S = StringField( String.S, 2, ",")
  Y.S = StringField( String.S, 3, ",")
 
  Width.S = StringField( String.S, 4, ",")
  If Width.S = StringField( Width.S, 1, "(")
  Else
    Width.S + ")"
  EndIf
 
  Height.S = StringField( String.S, 5, ",")
  If Height.S = StringField( Height.S, 1, "(")
  Else
    Height.S + ")"
  EndIf
 
  Caption.S = StringField( String.S, 6, ",")
  Flag.S = StringField( String.S, 7, ",")
 
  If CountString(Caption.S, Chr('"')) = 0
    Flag.S = Caption.S
    Caption.S = ""
  EndIf
 
 
 
  ProcedureReturn Chr(10)+
Type.S + Chr(10)+
; ID.S + Chr(10)+
  X.S + Chr(10)+
        Y.S +Chr(10)+
        Width.S +Chr(10)+
        Height.S +Chr(10)+
        Caption.S +Chr(10)+
        Param1.S +Chr(10)+
        Param2.S +Chr(10)+
        Param3.S +Chr(10)+
        Flag.S +Chr(10)
 
EndProcedure
 
 
Procedure$ LoadFromFile(File$)
  Protected Texts.S
  Protected StringFormat, Line, Text.S, Position, Length, Find.S, String.S
 
  If ReadFile(0, File$)
    CompilerIf #PB_Compiler_Unicode
      StringFormat = ReadStringFormat( 0 ) ; Определение кодировки файла (Ascii, UTF8 или Unicode).
    CompilerElse
      StringFormat = #PB_Ascii
    CompilerEndIf
   
    While Eof(0) = 0 : Line + 1
      Text.S = ReadString(0)
      Position = Loc( 0 )
      Length = StringByteLength( Text.S, StringFormat)
     
      Texts.S + Str(Line)+" "+Text.S + #LF$
     
      Find.S = FindFunction(Text.S)
     
      If Find.S
        String.S = Find.S +Chr(10)+Chr(10)+ Str(Line) +Chr(10)+ Str(Position) +Chr(10)+ Str(Length)
        AddGadgetItem(Editor_2, -1, Parse( Text.S ))
      EndIf
    Wend
   
    AddGadgetItem(Editor_2, -1, Chr(10)+Str(Line))
    ;
   
    CloseFile(0)
   
  Else
    MessageRequester("Information","Couldn't open the file!")
  EndIf
 
  ProcedureReturn Texts.S
EndProcedure
 
CompilerIf #PB_Compiler_IsMainFile
  ;-
  Procedure Window_0_Event_Gadget()
    Static Time
    Protected Load$,Title$,File$,Pattern$,Pattern
   
    Select EventGadget()
        ;-OpenEvent
      Case Open
        Time = ElapsedMilliseconds()
        ;{
        Title$="Open PureBasic project"
        File$ = "test1.pb"
        Pattern$ = "PureBasic (*.pb*)|*.pb*"
        Pattern = 0
       
        File$ = OpenFileRequester(Title$,File$,Pattern$,Pattern)
        If File$
          Load$ = LoadFromFile(File$)
          ClearGadgetItems(Editor_0)
          AddGadgetItem(Editor_0,-1,Load$)
        EndIf
        ;}
        Time = ElapsedMilliseconds() - Time
       
        SetWindowTitle(EventWindow(), Str(Time))
       
        ;-RunEvent
      Case Run  
       
        ;-SaveEvent
      Case Save  
        Title$="test1.pb/save"
        File$ = "test1.pb"
        Pattern$ = "PureBasic (*.pb)|*.pb;*.pbi;*.pbf|All files (*.*)|*.*"
        Pattern = 0
       
        File$ = SaveFileRequester(Title$,File$,Pattern$,Pattern)
        If File$
          Protected a
          If CreateFile(0, File$)         ; we create a new text file...
            For a=1 To 10
              If a =  5
                WriteStringN(0, "Line "+Str(a))  ; we write 10 lines (each with 'end of line' character)
              EndIf
            Next
           
           
            CloseFile(0)                       ; close the previously opened file and store the written data this way
          Else
            MessageRequester("Information","may not create the file!")
          EndIf
         
         
        EndIf
       
        ;-CheckEvent
      Case Check  
        If EventType() = #PB_EventType_Change
          Protected ID$ = StringField(GetGadgetItemText(Check,GetGadgetState(Check)),1,":")
          Protected Type = FindString(StringField(GetGadgetItemText(Check,GetGadgetState(Check)),3,":"),"OpenWindow")
          Protected ID = Val(ID$)
         
          Debug ID
          If Type
            If IsWindow(ID)
              SetActiveWindow(ID)
            EndIf
          Else
            If IsGadget(ID)
              SetActiveGadget(ID)
            EndIf
          EndIf
        EndIf
    EndSelect
  EndProcedure
 
  Procedure Window_0_Event_Size()
    Protected Window = EventWindow()
    Protected WindowWidth, WindowHeight
    WindowWidth = WindowWidth(Window)
    WindowHeight = WindowHeight(Window)/3-15
    ResizeGadget(Editor_0, 6, 6, WindowWidth - 12, WindowHeight)
    ResizeGadget(Editor_1, 6, GadgetY(Editor_0)+GadgetHeight(Editor_0)+3, WindowWidth - 12, GadgetHeight(Editor_0))
    ResizeGadget(Editor_2, 6, GadgetY(Editor_1)+GadgetHeight(Editor_1)+3, WindowWidth - 12, GadgetHeight(Editor_1))
   
    ResizeGadget(Save, WindowWidth-240, (WindowHeight*3)+17, #PB_Ignore,#PB_Ignore)
    ResizeGadget(Run, WindowWidth-160, (WindowHeight*3)+17, #PB_Ignore,#PB_Ignore)
    ResizeGadget(Open, WindowWidth-80, (WindowHeight*3)+17, #PB_Ignore,#PB_Ignore)
   
    ResizeGadget(Check, #PB_Ignore, (WindowHeight*3)+17, GadgetX(Save)-12,#PB_Ignore)
  EndProcedure
 
  Procedure Window_0_Open(X = 0, Y = 0, Width = 966, Height = 530)
    Protected Flags  = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget |
                       #PB_Window_SizeGadget | #PB_Window_Invisible |
                       #PB_Window_ScreenCentered
   
    Window_0 = OpenWindow(#PB_Any, X, Y, Width, Height, "", Flags)
    ResizeWindow(Window_0,#PB_Ignore,WindowY(Window_0)<<1-35,#PB_Ignore,#PB_Ignore)
    SendMessage_(WindowID(Window_0), #WM_SETICON, 0, ExtractIcon_(0,"shell32.dll",2))
    ;       StickyWindow(Window_0,#True)
   
    Editor_0 = EditorGadget(#PB_Any, 6, 6, 354, 138)
    Editor_1 = EditorGadget(#PB_Any, 6, 150, 354, 102)
    Editor_2 = ListIconGadget(#PB_Any, 6, 150, 354, 88,"Text.S",180)
    ;   AddGadgetColumn(Editor_2, 1, "Count.S", 80)
    ;   AddGadgetColumn(Editor_2, 2, "Line.S", 80)
    ;  
    ;   AddGadgetColumn(Editor_2, 3, "Position.S", 80)
    ;   AddGadgetColumn(Editor_2, 4, "Lentgh.S", 80)
   
    ;   AddGadgetColumn(Editor_2, 5, "Param1.S", 80)
    ;   AddGadgetColumn(Editor_2, 6, "Param2.S", 80)
    ;  
    ;   AddGadgetColumn(Editor_2, 7, "Param3.S", 80)
    ;   AddGadgetColumn(Editor_2, 8, "Line.S", 80)
    ;  
    ;   AddGadgetColumn(Editor_2, 9, "Text.S", 80)
    ;   AddGadgetColumn(Editor_2, 10, "Line.S", 80)
    ;  
    AddGadgetColumn(Editor_2, 11, "Type.S", 130)
    ;AddGadgetColumn(Editor_2, 12, "ID.S", 80)
    AddGadgetColumn(Editor_2, 13, "X", 40)
    AddGadgetColumn(Editor_2, 14, "Y", 40)
    AddGadgetColumn(Editor_2, 15, "Width", 50)
    AddGadgetColumn(Editor_2, 16, "Height", 50)
    AddGadgetColumn(Editor_2, 17, "Caption.S", 80)
    AddGadgetColumn(Editor_2, 18, "Param1.S", 60)
    AddGadgetColumn(Editor_2, 19, "Param2.S", 60)
    AddGadgetColumn(Editor_2, 20, "Param3.S", 60)
    ;AddGadgetColumn(Editor_2, 21, "Flag", 80)
    AddGadgetColumn(Editor_2, 22, "Flag.S", 180)
   
    Save = ButtonGadget(#PB_Any, Width-240, 258, 75, 25,"Save")
    Run = ButtonGadget(#PB_Any, Width-160, 258, 75, 25,"Run")
    Open = ButtonGadget(#PB_Any, Width-80, 258, 75, 25,"Open")
   
    Check = ComboBoxGadget(#PB_Any, 6, 258, GadgetX(Save)-12, 24)
   
   
    BindEvent(#PB_Event_SizeWindow, @Window_0_Event_Size(),Window_0)
    BindEvent(#PB_Event_Gadget, @Window_0_Event_Gadget(),Window_0)
    HideWindow(Window_0,#False)
    ProcedureReturn Window_0
  EndProcedure
 
  ;-
  Window_0 = Window_0_Open()
 
  ;Define File$ = "CFE_Read_Test(const).pbf"
  ;Define File$ = "CFE_Read_Test(variab).pbf"
  Define File$=OpenFileRequester("Выберите файл с описанием окон", "", "Все файлы|*", 0)
  If File$
    Define Load$ = LoadFromFile(File$)
    ClearGadgetItems(Editor_0)
    AddGadgetItem(Editor_0,-1,Load$)
  EndIf
 
  While IsWindow( Window_0 )
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        CloseWindow( EventWindow() )
    EndSelect
  Wend
 
  End
CompilerEndIf



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 04, 2017 10:16 pm 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
А почему пытался? Давай же силы объединим и это дело закончим.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 7:01 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Цитата:
А почему пытался? Давай же силы объединим и это дело закончим.
Это я предлагал но никто не захотел. Я согласен если что :D


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 27, 2017 7:46 pm 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Кто-нибудь пробовал парсить код PB?
К примеру есть код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  ; Простая строка с комменарием
  OpenWindow(#Window1, 0, 0, 100, 100, "Титул", Flags) ; Открывает окно
 
  ; Строка с символами ";"
  OpenWindow(#Window2, 100, 0, 100, 100, "Ти ; ту;л", Flags)
 
  ; Строка с переносами
  OpenWindow(#Window3,
             0, ; Положение X
             100, ; Положение Y
             100, ; Ширина
             100, ; Высота
             "Титул", Flags)
 
  OpenWindow(#Window4, 100, 100, 100, 100, " Титул", Flags) ; ; ; ; ; ; Открывает окно
 
  ;   OpenWindow(#Window5, 100, 100, 100, 100, " Титул", Flags) ; Открывает окно
  ; OpenWindow(#Window,6 100, 100, 100, 100, " Титул", Flags) ; Открывает окно
;   OpenWindow(#Window7, 100, 100, 100, 100, " Титул", Flags) ; Открывает окно
 
  OpenWindow(8) : OpenWindow(9) : OpenWindow(10) : OpenWindow(11) ; hgjhgjhgjh
 
  ; Вложение
  OpenWindow(OpenWindow(OpenWindow()), OpenWindow())


Нужно вычленить в отдельный массив все OpenWindow() и проигнорировать комментарии.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс ноя 12, 2017 9:46 pm 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Спустя множество часов работы и потратив немереное количество сил, мы вместе наконец собрали редактор способный разбирать написанный PB-код, находить в нём описания окон и гаджетов, а за тем визуально их редактировать. Мы хотим поделиться ним с сообществом, а за одно узнать мнение и послушать идеи на этот счёт.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн ноя 13, 2017 8:58 pm 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
А вот и сам редактор во плоти. Отпишитесь пожалуйста кто его испытал.


Вложения:
Editor.zip [904.37 KiB]
Скачиваний: 48
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 14, 2017 4:32 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 571
Благодарил (а): 2 раз.
Поблагодарили: 32 раз.
Пункты репутации: 9
Тигрёнок писал(а):
Спустя множество часов работы и потратив немереное количество сил, мы вместе наконец собрали редактор способный разбирать написанный PB-код, находить в нём описания окон и гаджетов, а за тем визуально их редактировать. Мы хотим поделиться ним с сообществом, а за одно узнать мнение и послушать идеи на этот счёт.

А исходники будут? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 14, 2017 7:15 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 629
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Сергейчик писал(а):
А исходники будут?

ну да, Федя большой любитель синтаксис менять


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 14, 2017 12:02 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 571
Благодарил (а): 2 раз.
Поблагодарили: 32 раз.
Пункты репутации: 9
newJS писал(а):
Сергейчик писал(а):
А исходники будут?

ну да, Федя большой любитель синтаксис менять

Так как что то можно советывать незная кода?если только сказать зачем дурацкие прямоугольнички при перетаскивании гаджета,нелязя ли просто щелчком выделить и есле курсор внутри выделенного гаджета то уже редактирование?
Ну и где полноэкранный режим? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 14, 2017 9:50 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 139
Откуда: Україна
Благодарил (а): 7 раз.
Поблагодарили: 10 раз.
Пункты репутации: 4
"зачем дурацкие прямоугольнички"
А мне понравились, а вот "вырвиглаз"-шрифт боковой панели ужасны


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт ноя 23, 2017 8:19 am 
Не в сети
доцент

Зарегистрирован: Ср апр 28, 2010 4:02 pm
Сообщений: 49
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Спасибо всем) Высылаю новую версию.
Исходники мы пока решили придержать у себя. Хотим больше узнать о мнении на счёт программы.
Вопрос: А где лучше в дальнейшем размещать файлы, чтобы не захламлять форум?


Вложения:
Editor.zip [930.58 KiB]
Скачиваний: 46
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт ноя 23, 2017 10:07 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 629
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Тигрёнок писал(а):
Высылаю новую версию.

будем терпиливо ждать, почта россии быстренько из неё сделает старую :D
Тигрёнок писал(а):
Вопрос: А где лучше в дальнейшем размещать файлы, чтобы не захламлять форум?

на своей почте, на диске


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB