Как создать динамический макет панели для этого мастера создания логотипа? - PullRequest
0 голосов
/ 27 мая 2010

Я хочу создать мастер для логотипа ниже с 3 параметрами. Я могу сделать заголовок динамическим, но для изображения и градиента он жестко закодирован, потому что я не вижу, как сделать их динамичными. Код следует за картинками:

альтернативный текст http://reboltutorial.com/bugs/wizard1.png

альтернативный текст http://reboltutorial.com/bugs/wizard2.png

custom-styles: stylize [
  lab: label  60x20 right bold middle font-size 11
  btn: button 64x20 font-size 11 edge [size: 1x1]
  fld: field  200x20 font-size 11 middle edge [size: 1x1]
  inf: info   font-size 11 middle edge [size: 1x1]
  ari: field wrap font-size 11 edge [size: 1x1] with [flags: [field tabbed]]
]

panel1: layout/size [

    origin 0 space 2x2 across
        styles custom-styles
    h3 "Parameters" font-size 14 return 
    lab "Title" fld_title: fld "EXPERIMENT" return 
    lab "Logo" fld_logo: fld "http://www.rebol.com/graphics/reb-logo.gif" return 
    lab "Gradient" fld_gradient: fld "5 55 5 10 10 71.0.6 30.10.10 71.0.6"
] 278x170

panel2: layout/size [
    ;layout (window client area) size is 278x170 at the end of the spec block
    at 0x0 ;put the banner on the top left corner
    box 278x170 effect [ ; default box face size is 100x100
      draw [
        anti-alias on
        line-width 2.5 ; number of pixels in width of the border
        pen black      ; color of the edge of the next draw element

        fill-pen radial 100x50 5 55 5 10 10 71.0.6 30.10.10 71.0.6

        ; the draw element
        box     ; another box drawn as an effect
          15     ; size of rounding in pixels
          0x0 ; upper left corner
          278x170 ; lower right corner
      ]
    ]
    pad 30x-150
    Text fld_title/text font [name: "Impact" size: 24 color: white]
    image http://www.rebol.com/graphics/reb-logo.gif
] 278x170

main: layout [
    vh2 "Logo Badge Wizard"
    guide
    pad 20
    button "Parameters" [panels/pane: panel1  show panels ]
    button "Rendering" [show panel2 panels/pane: panel2  show panels]
    button "Quit" [Unview]
    return
    box 2x170 maroon
    return
    panels: box 278x170
]

panel1/offset: 0x0
panel2/offset: 0x0

panels/pane: panel1

view main

1 Ответ

1 голос
/ 28 мая 2010

Сделать блок для 2-го макета шаблоном.

Поместите туда нужные переменные и окружите их ()

При рендеринге сделайте копию / deep, чтобы сделать копию шаблона, затем создайте / deep, чтобы заменить переменные, взятые из экрана параметров, создайте макет из вашей копии шаблона и установите панель на новый макет.

...