Nuevo widget portado a T-Gtk
Recientemente estoy realizando portando mas widgets en T-Gtk, y esta vez le
a tocado a los iconview.
Desarrollando la aplicacion que anteriormente habiamos comentado, me encontré
con la necesidad de mostrar una imagen.
Pensé un momento, y me dí cuenta, que lo mejor era mostrar todas las imagenes
que quiesiera.
Para ello, la mejor manera que vi, fue el usar el widget llamado GtkIconView.
Dicho widget hace uso de un modelo de datos, para mostrar imagenes más una etiqueta.
Su funcionamiento es muy simple usando POO, podemos realizar lo que estamos buscando, que era mostrar una lista de imagenes.
El codigo es muy simple:
DEFINE WINDOW oWnd TITLE "GtkIconView. T-Gtk for [x]Harbour (c)03-2006 Rafa Carmona" SIZE 500,500
DEFINE SCROLLEDWINDOW oScroll OF oWnd CONTAINER
oModel := Create_Model()
DEFINE ICONVIEW oIconView MODEL oModel OF oScroll CONTAINER
* Indicamos que la primera columna es el que contiene el texto.
oIconView:SetTexColumn( 1 )
* Indicamos que la segunda columna es el que contiene la imagen.
oIconView:SetPixBufColumn( 2 )
* Indicamos que queremos 5 columnas.
oIconView:SetColumns( 5 )
* Cada vez que activemos la imagen, double-click o return, saltaremos
* a la funcion Comprueba, y veremos como mostrar la imagen real.
oIconView:bItem_Activated := {|oSender,pPath| Comprueba( oSender, pPath ) }
ACTIVATE WINDOW oWnd CENTER
Como podeis apreciar, el codigo inicial, son unas pocas lineas, sin ningun
tipo de misterio ni complicacion.
Ahora nos detendremos en la creacion del modelo de datos, que lo realizamos
desde la funcion Create_Model(), el cual podeis observar a continuacion,
y os sorprendereis lo poquita cosa que es:
FUNCTION Create_Model()
local aIter := array( 4 )
local oLbx, x, oImage,pixbuf
Local aFiles := {}
local aPngs := Directory( "../../images/*.png" )
local aJpgs := Directory( "../../images/*.jpg" )
* Obtenemos TODOS los ficheros graficos
Aeval( aPngs ,{ | a| AADD( aFiles, a[1] ) } )
Aeval( aJpgs ,{ | a| AADD( aFiles, a[1] ) } )
* Definimos el model de datos, ListStore, con los tipos adecuados.
DEFINE LIST_STORE oLbx TYPES G_TYPE_STRING, GDK_TYPE_PIXBUF
For x := 1 To Len( aFiles )
APPEND LIST_STORE oLbx ITER aIter
SET LIST_STORE oLbx ITER aIter POS 1 VALUE aFiles[x]
* Cargamos la imagen
DEFINE IMAGE oImage FILE "../../images/"+aFiles[ x ] LOAD
* Conversion de la imagen a 100x100
pixbuf := gdk_pixbuf_scale_simple( oImage:GetPixBuf(), 100,100 )
SET LIST_STORE oLbx ITER aIter POS 2 VALUE pixbuf
gdk_pixbuf_unref( pixbuf )
Next
RETURN oLbx
La única cosa que nos trae la atencion, es la funcion gdk_pixbuf_scale_simple().
Bueno, he de decir, que si cargamos el modelo de datos con la imagen, este lo
cargará con el tamaño REAL, asi, tendremos en la vista de los iconos, diferentes
tamaños, dando la sensacion un poco extraña.
Para ello lo que vamos a realizar, es transformar dicha imagen a una que nos
interese, en este caso a 100x100.
Asi, cuando cargamos la imagen:
DEFINE IMAGE oImage FILE "../../images/"+aFiles[ x ] LOAD
Podemos facilmente transformala al tamaño que nos interese:
pixbuf := gdk_pixbuf_scale_simple( oImage:GetPixBuf(), 100,100 )
Y podeis observar , como el valor de la variable, pixbuf, es la que vamos
a introducir en el modelo de datos:
SET LIST_STORE oLbx ITER aIter POS 2 VALUE pixbuf
Y lo último que nos queda por hacer, es desreferenciar el pixbuf:
gdk_pixbuf_unref( pixbuf )
Ahora lo úncio que nos queda, es coger el valor de donde estamos
y hacer algo interesante , como mostrar la imagen en su tamaño real,
en una ventana.
Static Function Comprueba( oIconView, pPath )
Local oWnd , oImage, width, height, pImage, cText
* Obtenemos el nombre del fichero
cText := oIconView:GetValue( 1,, pPath )
DEFINE WINDOW oWnd TITLE cText TYPE_HINT GDK_WINDOW_TYPE_HINT_MENU
DEFINE IMAGE oImage FILE "../../images/"+cText OF oWnd CONTAINER
ACTIVATE WINDOW oWnd MODAL CENTER
Return nil
Bueno, espero que con esta explicación podais entender mejor dicho widget.
Como siempre , una imagen vale más que mil palabras ;-)
强烈推荐:最好的翻译公司在上海,提供日语翻译、英语翻译、韩语翻译等多语种的语言翻译服务。上海翻译公司在行业翻译领域如经济翻译、法律翻译等颇有建树,公司还具体提供澳大利亚移民的证件翻译服务。
Escrito por translation a las Octubre 17, 2007 10:26 AMArchlord Gold cheap Archlord Gold buy Archlord Gold cheap wow power leveling cheap Warcraft power leveling World of warcraft Power Level World of warcraft PowerLevel World of warcraft Power Leveling World of warcraft PowerLeveling Warcraft Power Level Warcraft PowerLevel Warcraft Power Leveling Warcraft PowerLeveling wow power level wow powerlevel wow power leveling wow powerleveling runescape power leveling rs2 power leveling runescape powerleveling runescape power level runescape money runescape gold buy runescape gold buy runescape money runescape items runescape accounts buy runescape accounts buy runescape items cheap runescape money cheap runescape gold runescape gp dofus kamas buy dofus kamas Guild Wars Gold buy Guild Wars Gold GW Gold rs2 money rs2 gold rs2 items rs2 accounts buy runescape money buy rs2 money buy rs2 gold runescape Guide rs2 Guide rs2 accounts buy rs2 accounts runescape accounts buy runescape accounts runescape 陈楚生 http://www.vgoldseller.com http://www.vgoldsupply.com http://www.runescape4money.net http://www.buylotrogold.org www.runescapemoney-runescapegold.cn www.runescape2vip.cn www.runescape2store.com www.rs2-accounts.com www.buydofuskamas.com
Escrito por adasd a las Noviembre 6, 2007 09:38 AM上海恒语翻译广州翻译
深圳翻译北京翻译
天津翻译厦门翻译
成都翻译武汉翻译
南京翻译郑州翻译
重庆翻译山东翻译
网络营销软件
网络营销软件
网络营销软件
群发软件
群发软件
---
群发软件
博客群建软件
网络营销软件
论坛群发软件
网站排名软件
群发软件
推广小助手破解版
论坛群发
网站排名软件
群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件博客群发软件网络营销软件网络营销软件
网站排名软件网站排名软件网站优化软件信息群发软件信息群发软件信息群发软件论坛群发软件网站推广软件网站推广软件博客群发软件博客群发软件
群发软件
网络营销软件
论坛群发
网站推广软件
群发软件群发软件博客群发软件论坛群发软件网络营销软件论坛群发软件
信息群发软件推广软件网站推广软件网络营销软件网站推广软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件
网站排名软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
网站推广软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
博客群发软件
信息群发软件
论坛群发软件
信息群发软件
博客群发软件
qq群发软件
邮件群发软件
博客群建软件
企业名录搜索软件
信息群发软件
邮件群发软件
论坛群发软件
博客群发软件
网站推广软件
网络营销软件
全能营销破解版
网络营销软件
论坛群发软件
论坛群发软件
论坛群发软件
网络营销软件
信息群发软件
信息群发软件
信息群发软件
群发软件
论坛群发软件
Trying to be impressive!deeply wonderful here!
[url=http://www.enjoy-rs.com] runescape money[/url]
[url=http://www.enjoy-rs.com/free-runescape-gold.html] runescape gold[/url]
[url=http://www.enjoy-rs.com/runescape-gold.html] runescape money[/url]
[url=http://www.enjoy-rs.com/runescape-items.html] runescape items[/url]
[url=http://www.enjoy-rs.com/runescape-powerleveling.html]runescape power leveling[/url]
[url=http://www.enjoy-rs.com/runescape-logs.html]runescape logs[/url]
[url=http://www.enjoy-rs.com/runescape-accounts.html]runescape accounts[/url]
enjoy-rs is an professional store for runescape gold,items,money,accounts,powerleveling,questqoint,runes and some other goods with fast delivery and world class service.
URL:www.enjoy-rs.com
合肥汽车租赁,合肥市汽车租赁公司,合肥汽车租赁公司,合肥租车,合肥婚庆租车 ,合肥商务车租赁,婚庆租车,商务车租赁,汽车租赁
Links
wind generator ,ball valve ,auto bearing ,die casting
,automotive bearing ,plate bending machine ,water filter ,wooden toys ,die casting
,wind generators,ball valves,auto bearing,aluminium die casting,automotive bearing,plate rolling machine,water filters,wooden toys,casting,China Manufacturer directory,China Manufacturer directory, ,Daily Necessities,Knitting needle,China Manufacturers,radiator,furniture,iron casting,hydraulic valves ,Aluminum radiator ,Electric radiator,Towel warmer ,Bedroom Furniture Dining room Furniture Living room Furniture Home Office Furniture Youth Furniture ,Ductile Iron Casting ,Grey Iron Casting,
Rubber machinery ,Plastic mchinery,wind turbine
Trying to be impressive!deeply wonderful here!
runescape gold
runescape money
runescape money
runescape items
runescape power leveling
runescape logs
runescape accounts
enjoy-rs is an professional store for runescape gold,items,money,accounts,powerleveling,questqoint,runes and some other goods with fast delivery and world class service.
URL:www.enjoy-rs.com