lunes, 3 de marzo de 2008

Nos Linkamos con sworldwatch


El blog por excelencia de SmallWorld y programación Magik sworldwatch, hacen referencia nuestro Blog, cosa que nos enorgullece muchísimo.

Con apoyos como este, esperamos seguir vivos durante mucho tiempo, muchísimas gracias a Alfred Sawatzky, por su apoyo.

viernes, 29 de febrero de 2008

Ejemplo Barra de Progreso

Aquí tenéis otro ejemplo de código, esta vez una barra de progreso, que se abre en un dialog nuevo, es muy sencilla de utilizar.

_block
_local Bprog << progress_indicator_dialog.new ( "Generando" )
Bprog.info_string << "Prueba de barra progreso."
Bprog.bar_label << "Generación de frames frames..."
Bprog.image << { :help, _unset }
Bprog.activate ()

Bprog.max_count << 100

_for n _over range(1,100,1)
_loop
_thisthread.sleep(10)

Bprog.progress_changed(n)
_endloop
Bprog.close()
_endblock
$
Si tenéis preguntas sobre el código, me las podéis hacer como comentarios, intentare responder lo antes posible.

miércoles, 27 de febrero de 2008

Ejemplo con tree_item

primer ejemplo, creo que sencillo, por si alguna vez teneis que utilizar un tree_item.
El funcionamiento es sencillo, creamos un dialogo, montamos un tree_item en un Row_Col, para llenarlo usamos una Rope, rellena de display_tree.
Aquí un ejemplillo:

#% text_encoding = iso8859_1

def_slotted_exemplar(:Proba_tree,
{
{:item,_unset},
{:datos,_unset}
},
:model)
$

$
# Definicion de acceso a los slots de la clase
Proba_tree.define_slot_access(:item, :write, :private)
$
# Definicion de acceso a los slots de la clase
Proba_tree.define_slot_access(:datos, :write, :public)
$

_pragma(classify_level=basic)
_method Proba_tree.new()
##
## en el ini llenamos el Tree
.datos< _local dt, vals, dtC, dtCC
dt << display_tree.new("IMPAR")
dtC << display_tree.new(_unset, "UNO",dt)
dtC << display_tree.new(_unset, "TRES",dt)
dtC << display_tree.new(_unset, "CINCO",dt)
dtC << display_tree.new(_unset, "SIETE",dt)
dtC << display_tree.new(_unset, "NUEVE",dt)
dtCC << display_tree.new(_unset, "NUEVE UNO",dtC)
dtCC << display_tree.new(_unset, "NUEVE DOS",dtC)
dtCC << display_tree.new(_unset, "NUEVE TRES",dtC)
.datos.add(dt)
dt << display_tree.new("PAR")
dtC << display_tree.new(_unset, "DOS",dt)
dtC << display_tree.new(_unset, "CUATRO",dt)
dtC << display_tree.new(_unset, "SEIS",dt)
dtC << display_tree.new(_unset, "OCHO",dt)
dtC << display_tree.new(_unset, "DIEZ",dt)
.datos.add(dt)
>> _clone.init()

_endmethod
$

_pragma(classify_level=basic)
_private _method Proba_tree.init()
##
## Inicializacion del nuevo elemento
_super.init()
.item << property_list.new()
_self.changed(:datos, :renew)
>> _self

_endmethod
$

_pragma(classify_level=basic)
_method Proba_tree.capcalera
##
## Defineix una capçalera al tree_item
>> {"PROBA"}
_endmethod
$

# metodo redefinido de model del que recibe a_container con el
# cual no tenemos que crear ni el frame ni el panel. ya nos lo
# da :model
_pragma(classify_level=basic)
_method Proba_tree.activate_in(a_container)
##
## Activacion de pantalla

_local rc

# propiedades de la ventana
a_container.resizable? << _false
a_container.maximizable? << _true
a_container.minimizable? << _true

# cración de Tree item.
# Tree_item. :many significa que se puede seleccionar mas de uno

rc_0 << rowcol.new(a_container, 1, 1, :pixel,
:style, :top_level,
:col_spacing, 0
)
.item[:lista] << tree_item.new(rc_0,
:column_headings, _self.capcalera ,
:model, _self,
:aspect, :datos,
:data_selector, :datos,
:col, 1,
:col_alignment, :fill,
:row_alignment, :fill,
:height, 300,
:mode, :many,
:row, 1,
:width, 340 )

# elemento rowcol para colocar objetos en la pantalla
rc << rowcol.new(a_container, 1, 3, :pixel,
:style, :top_level,
:col_spacing, 0
)
# boton para salir de la pantalla
button_item.new(rc,"Salir",_self,
:quit|()|,
:row, 1,
:col, 2
)

>> a_container

_endmethod
$

# procedimiento para inicial la aplicación
_block
_local a << _unset
a << Proba_tree.new()
a.activate()
_endblock
$
Si teneis dudas las contestare en los comentarios.

Presentación

Antes de nada bienvenidos a lo que espero sea un blog útil para todos aquellos que nos tenemos que romper los cuernos, con la programación en Magik de Smallworld.
Hoy mismo he acabado una formación que ha durado un mes, para la adquisición de conocimientos sobre la materia, a partir de mañana empezara lo serio, trabajo para el cliente. Por ello he pensado que podria crear un Blog, donde ir colgando diferentes ejemplos, dudas que me surgieran,... ya que para la formación he tenido muchos problemas para encontrar información util, sencilla y ademas en castellano.

Espero no defraudar a nadie.