-
Posts
199 -
Joined
-
Last visited
Everything posted by zafrada
-
Como si no lo hubiera visto :tonto: Ese código es viejo, del 2009 cuando los métodos asíncronos se agregaron a Vala como característica experimental. Es difícil programar en Vala si no se está inmerso en el proyecto gnome, porque muchos de los ejemplos de la sintaxis misma del lenguaje son antiguas y no han sido actualizadas. De todas formas por si a alguien le sirve, obtuve una respuesta en forma de código de Nemequ, acá se los dejo, y bueno, cuando lo adapte en mi programa, postearé cómo me quedó el mío. Probablemente tenga que crear otro método. public async void load (Gtk.Image img, string filename) { GLib.File file = GLib.File.new_for_commandline_arg (filename); try { GLib.InputStream stream = yield file.read_async (); Gdk.Pixbuf pixbuf = yield Gdk.Pixbuf.new_from_stream_at_scale_async (stream, 320, -1, true); img.set_from_pixbuf (pixbuf); } catch ( GLib.Error e ) { GLib.error (e.message); } } private static int main (string[] args) { GLib.return_val_if_fail (args.length > 1, -1); Gtk.init (ref args); Gtk.Window win = new Gtk.Window (); win.destroy.connect (() => { Gtk.main_quit (); }); Gtk.Image image = new Gtk.Image (); win.add (image); load.begin (image, args[1], (obj, async_res) => { GLib.debug ("Finished loading."); }); win.show_all (); Gtk.main (); return 0; } Edit: Mi código ya funciona!!! =D así me quedó: public void load_thumbs(){ pane.set_visible(false); pane.newmodel = new Gtk.ListStore (2, typeof (Gdk.Pixbuf), typeof (string)); pane.set_selection_mode (Gtk.SelectionMode.SINGLE); pane.set_pixbuf_column (0); pane.set_model(pane.newmodel); string icon_style = """ .thumbnail-view { background-color: #FFFFFF; } .thumbnail-view:selected { background-color: #9D9D9D; border-color: shade (mix (rgb (34, 255, 120), #fff, 0.5), 0.9); } """; var icon_view_style = new Gtk.CssProvider (); try { icon_view_style.load_from_data (icon_style, -1); } catch (Error e) { warning (e.message); } pane.get_style_context ().add_class ("thumbnail-view"); pane.get_style_context ().add_provider (icon_view_style, Gtk.STYLE_PROVIDER_PRIORITY_THEME); //Add thumbnails to the iconview string buff1, buff2; for(int i=1; i<pane.image_list.size; i++){ buff1 = pane.image_list.get_full_filename(i); buff2 = pane.image_list.get_filename(i); load_image_async.begin (buff2, buff1, (obj, async_res) => { GLib.debug ("Finished loading."); }); } pane.selection_changed.connect (update_selected); pane.set_sensitive(true); this.queue_draw(); } private async void load_image_async (string filename, string full_filename) { GLib.File file = GLib.File.new_for_commandline_arg (full_filename); try { GLib.InputStream stream = yield file.read_async (); Gdk.Pixbuf image = yield Gdk.Pixbuf.new_from_stream_at_scale_async (stream, 110, -1, true); // Add the image name and thumbnail to the IconView Gtk.TreeIter root; pane.newmodel.append(out root); pane.newmodel.set(root, 0, image, -1); pane.newmodel.set(root, 1, filename, -1); pane.iters.append (root); stdout.printf("Added %s to thumbnailn", filename); } catch ( GLib.Error e ) { GLib.error (e.message); } } Ahora subiré un commit con la lista de imágenes funcionando al 100% por si a alguien le interesa. Los siguientes pasos son dar la opción para ocultar la barra y esas cosas.
-
Lo intenté con threads, el problema es que Gtk no es un toolkit seguro de threads externos, como lo explico, gtk ejecuta un loop principal, y en ese loop no se puede meter otro thread, hay que hacer algo para que funcione cada vez que te quieras "meter" en el loop principal, y tras un intento fallido, mejor decidí hacerlo con async. Además es lo que me recomendó un programador apodado Nemequ que es bien conocido y el loco es terrible seco XD. Y bueno, para cañangasñangas Básicamente es un iconview, que es un widget de gtk que te carga puros íconos chicos que se pueden seleccionar, como si fueran un botón, y que se acomodan al espacio que les des, se acomodan como una lista, o una fila, o una tabla, osea, es un widget súper potente, de lo más potente que tiene gtk. La idea es mostrar ahí varios thumbnails, previsualizaciones de imágenes. Lo que pasa es que estoy haciendo un visor de imágenes. Entonces al hacer click en estas imágenes, en teoría debería cambiarte a la imagen y así. El código que hice en un comienzo funciona perfecto, filete, mira, te muestro una imagen de cómo se ve: El problema que tiene es que se demora mucho en cargar, por lo que pensé que sería mejor que fuera cargando como un método asíncrono, para no bloquear la interfaz. Es precisamente eso lo que no he logrado. La página del proyecto: https://launchpad.net/foto Si no me equivoco, el último commit que subí, fue una versión que usaba threads, y funcionaba, pero tenía que hacerle join al thread (esperar a que terminara) o sino no me funcionaba, me mostraba tres imágenes en la lista, y después de unos segundos, desaparecían. Con gusto lo hago con threads, pero si me dicen como arreglar el problema que me daba XD Si les interesa compilar, necesitan gtk 3, vala 0.18 libgranite, libgee y no me acuerdo qué más
-
No entiendo la lógica de los métodos asíncronos, he tratado de hacer algo por mi cuenta, pero no me funciona. Estoy programando en Vala, es un método que carga thumbnails de forma asíncrona. Son los thumbnails que están en una lista de strings que contiene la dirección de la imagen. Tengo que hacerlo de forma asíncrona, porque si no lo hago así, si la lista de imágenes es muy larga, o hay imágenes muy grandes, el programa se me demora mucho en mostrar la interfaz gráfica. He visto que algunos ocupan YELD, pero no entiendo su utilidad. Otros ocupan enumeradores, o que se yo, no entiendo muy bien la lógica detrás de esto. Si alguien pudiera modificar este código para hacerlo funcionar sería genial. Estoy seguro que hay que hacerle muy pocos cambios para que funcione, ya que la versión no asíncrona funcionaba perfecto. Un millón de gracias!! public async void load_thumbs(){ pane.set_visible(false); pane.newmodel = new Gtk.ListStore (2, typeof (Gdk.Pixbuf), typeof (string)); pane.set_selection_mode (Gtk.SelectionMode.SINGLE); pane.set_pixbuf_column (0); pane.set_model(pane.newmodel); //Add thumbnails to the iconview string buff; for(int i=1; i<pane.image_list.size; i++){ buff = pane.image_list.get_full_filename(i); var file = File.new_for_path (buff); Gdk.Pixbuf image = null; try{ image.new_from_stream_at_scale_async (file.read(),110,80,false); stdout.printf("Added %s to thumbnail\n", buff); // Add the image name and thumbnail to the IconView Gtk.TreeIter root; pane.newmodel.append(out root); pane.newmodel.set(root, 0, image, -1); pane.newmodel.set(root, 1, pane.image_list.get_filename(i), -1); // Select the thumbnail if it is the first in list if (i==1) { pane.select_path (pane.newmodel.get_path (root)); } pane.iters.append (root); } catch(Error e){ warning (e.message); } } pane.selection_changed.connect (update_selected); pane.set_sensitive(true); this.queue_draw(); }
-
Ubuntu 11.10 se pega al cerrar sesión o reiniciar X
zafrada replied to criztmetal's topic in Debian-Ubuntu
Si no puedes entrar, entra a Unity 2d o al escritorio clásico -
Un señor levanta un muro en el frente de su casa, lo pinta de blanco, y se siente orgulloso de su trabajo.-Al otro día, hay una escritura en el muro VIVA LA U El hombre furioso, tira el muro abajo, y lo vuelve a construír, .... al otro día , otra vez VIVA LA U Maldiciendo el viejo, que más encima era del colo, vuelve a tirar el muro abajo, y comienza a construírlo nuevamente, pero agobiado por el cansancio, sólo llega a levantar tres hiladas de ladrillos, y se va a dormir... al otro día.... PROXIMAMENTE AQUI ... VIVA LA U...
-
Antes de eso, hay que habilitar la opción desde el gestor de usuarios de gnome. Pero no es recomendable hacerlo, ya que es inseguro, de hecho, ni siquiera se recomienda tener el usuario root activado, con sudo y un usuario administrador debería bastar.
-
Sigue el siguiente procedimiento: http://www.alebentelecom.es/blog/201004/reparar-boot-de-aranque-windows-7
-
Problema con la interfaz grafica de mi ubuntu 10.04
zafrada replied to tavoche's topic in Debian-Ubuntu
Qué instalaste, qué cambiaste, no somos adivinos. Saludos. -
Busqueda en GOOGLE LINK Aproximadamente 161.000 resultados Links Relacionados: https://answers.laun...question/193216 http://foro.ubuntu-g...-td3961146.html En realidad es tema ya se esta documentado bastante, es un bug que se produce con la combinación Firefox 11/12 con la ultima actualización de Flash. Efectivamente en el sitio oficial de Ubuntu, se esta tratando en la sección de colaboradores y des arrolladores. Otra solución (drástica) es hacer una instalación limpia de Ubuntu, ya sea 10.04, 11.04 o 12.04.... Y antes de hacer cualquier cosa actualizar completamente el sistema Ademas, los usuarios de Ubuntu suelen recurrir a foros oficiales de Ubuntu para reportar problemas, ya que en otros foros el soporte es limitado. sludos. CheloX Sin embargo los primeros dos resultados son tu página, y antes que termine la primera página los resultados están en otro contexto no relacionado. De todas formas gracias, esto le puede servir a más de alguien. PS: Posteaste con tu clon.
-
Si aún estás a tiempo, reconsidera el trabajar con mono en Linux, porque el proyecto Gnome está enfocándose en mejorar Vala, y Mono va a quedar de lado, por una cuestión de licencias.
-
SI ponen "chocoron" en google, aparece primero este tema XD
-
Sitio web con usuarios
zafrada replied to oki_alonso's topic in Webmaster, Tutoriales & Herramientas
o ocupar algún script, como joomla o wordpress -
jamás tuve el problema, si nadie ha posteado es porque nadie lo ha tenido.
-
La última versión de android para mi Galaxy Ace era el 2.3.7 que es la que tenía instalada. Tuve que reinstalar la ROM original de samsung en mi teléfono por un problema que tuve, la que trae android 2.3.4, por lo que luego de hacer todo el proceso, ahora conecté el celular al kies para actualizar a 2.3.7 desde ahí como ya lo había hecho en el pasado, pero no me aparece actualización!! dice que tengo la versión más reciente, pero eso no es así, en información del teléfono me aparece clarito que tengo 2.3.4. Yo ya había actualizado con el kies a la 2.3.7, pero ahora no me deja. Qué hago? Hay aplicaciones que requieren la 2.3.7 y no puedo instalarlas. El ROM que instalé es el oficial de samsung. No quiero tener que instalarme la ROM más reciente de forma manual.
-
Uff, qué puedo decir??? asombrosa idea, y en 51 líneas, realmente bueno. Vamos a probar, posteo mis resultados luego.
- 3 replies
-
- BASH twitter
- Hacks
-
(and 4 more)
Tagged with:
-
Estás equivocado, si funciona. Al ejecutar el código te abre 2 ventanas, al presionar el botón en la ventana principal, se cierra la ventana secundaria y se añade el contenido de la otra ventana dentro de la ventana principal. No puedes meter un Jframe dentro de otra ventana, lo que puedes hacer es obtener su Jcontentpane y insertarlo en otra ventana, pero no el Jframe, porque Jframe se extiende de Window de awt, osea, no es sólo un contenedor, es una ventana. Ahora hice otro de la forma que tú quieres hacerlo, aunque yo creo que no es la mejor, suponte tienes la clase ventana principal y la ventana secundaria, la ventana secundaria la dejas como atributo privado dentro de ventana principal, y la instancias junto con esta en el constructor. Luego, con un action performed en el botón de la ventana principal, obtienes el JContentPane y se lo agregas a tu JContentPane de la ventana principal, así: btnCopiarVentana.addActionListener(new ActionListener() { @SuppressWarnings("deprecation") public void actionPerformed(ActionEvent arg0) { frame.getContentPane().add(ventana.getContentPane()); ventana.hide(); //FIXME: el repaint no funciona, pero así si redibuja la ventana frame.setSize(400,201); frame.setSize(400,200); } }); Tienes que tener una variable booleana para verificar que ya no has agregado el jcontentpane antes, de esa forma no lo agregas 2 veces, acá no lo hice, pero está en el código anterior que te dejé. Te demuestro que funciona con un video: http://www.youtube.com/watch?v=0Lz2WHxxwr0&feature=youtu.be Y mira, lo mejoré http://www.youtube.com/watch?v=1f6C_3UB6Kg&feature=youtu.be
-
Lo correcto sería que tuvieras una clase que contuviera el contenido de esa ventana en un contenedor, y ese contenedor llamarlo desde la otra ventana. Te extiendes de container y listo, y con un método cierras la otra ventana y creas un contenedor nuevo con el contenido de la otra ventana en tu ventana actual... voy a ver si hago un código a modo de ejemplo y te lo posteo, pero no me respondiste si ocupas swing ni tampoco me mostraste código, o no tienes nada implementado? EDIT: Acá el código como prometí app.java import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.BoxLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class app { private window_container contentPane; private JFrame frame; private window win; private boolean window_added; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { app window = new app(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public app() { initialize(); } private void initialize() { window_added = false; frame = new JFrame("Ventana principal"); win = new window(); frame.setBounds(100, 100, 500, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.X_AXIS)); JButton btnAddWindow = new JButton("Add window"); btnAddWindow.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { add_pane(); //FIXME: pequeño hack para redibujar el jframe frame.setSize(500,401); frame.setSize(500,400); //no encontré otra forma de hacerlo que fuera mejor } }); frame.getContentPane().add(btnAddWindow); frame.pack(); frame.setSize(400,700); } private void add_pane(){ if(!window_added){ win.close(); contentPane = new window_container(); contentPane.setVisible(true); frame.getContentPane().add(contentPane); window_added = true; System.out.println("Agregado panel"); } else{ System.out.println("Panel no agregado"); } } } window.java import javax.swing.JFrame; public class window extends JFrame { private static final long serialVersionUID = 1L; private window_container contentPane; public window() { this.setTitle("Ventana secundaria"); setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); setBounds(100, 100, 500, 300); contentPane = new window_container(); setContentPane(contentPane); this.pack(); this.setSize(500,200); this.setVisible(true); } @SuppressWarnings("deprecation") public void close(){ this.hide(); } } window_container.java import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class window_container extends JPanel { private static final long serialVersionUID = 1L; public window_container(){ this.setBorder(new EmptyBorder(5, 5, 5, 5)); this.setLayout(new BorderLayout(0, 0)); JPanel panel = new JPanel(); this.add(panel, BorderLayout.CENTER); JLabel lblHola = new JLabel("Hola!!"); panel.add(lblHola); JButton btnHola = new JButton("hola"); panel.add(btnHola); } }
-
swing? pon algo de código aunque sea
-
DownVideo - Mi script para descargar videos
zafrada replied to nkdos's topic in Aportes varios, Manuales y Minicómos
Interesante, bueno uso a youtube-dl Vamos a ver si hago un aporte a esto luego. -
Cámbiale la frecuencia, pero desde compiz. Por cierto, Jupiter es harto antigua, trae el nautilus elementary, pero tiene un memory leak que te come toda la memoria ram.
-
Ahora que están saliendo tarjetas gráficas cada vez más rápido, al parecer la comunidad se está quedando chica con el soporte de drivers para modelos más nuevos, y los drivers privativos, que deberían soportarlas, no cumplen a cabalidad. Yo por mi parte he logrado mejorar un poco el rendimiento de Linux en mi note usando una imagen alpha de Elementary Luna, que viene con compiz, con drivers libres, usando los trucos que ya les había contado sobre desactivar la sincronización vertical y además de eso, desactivando la detección de frecuencia de actualización de la pantalla, que según leí en algunos foros, era un problema con las tarjetas Nvidia, pero al parecer el problema también afecta a las ATI, porque el rendimiento mejoró de una. Le asigné manualmente el valor de 60Hz. Si alguien decide hacer lo mismo que yo, tienen que averiguar a qué frecuencia trabaja su pantalla, pero 60Hz debería funcionar para la mayoría de las pantallas. Pal amigo de arriba, en volá el problema es la frecuencia de actualización de compiz, prueba desactivándola, tienes que instalar el compiz manager, la opción está en el plugin composite. Ahora el rendimiento es similar al de windows, pero windows anda algo mejor. La percepción que tengo es que si bien, windows se pega derepente, en Linux tengo un pequeño lag permanente. El touchpad no funciona bién, ya que se lagea un poco a veces, pero ahora anda mucho más decente y puedo navegar tranquilo, aún así no estoy conforme, varios plugins de compiz me han dado problemas y he tenido que desactivarlos, el pc se calienta rápido y después de un rato el ventilador empieza a webiar a máxima potencia.
-
Graficas de puntos en Java
zafrada replied to Vagabundo's topic in Aplicaciones de Escritorio & Scripts PHP
Si, de hecho, es la herramienta oficial para trabajar con javafx, pero a mi me gusta trabajar más con Eclipse. http://netbeans.org/features/javafx/ También bájate el java fx scene builder. -
Cuando me voy a logear con el diálogo flotante que aparece cuando uno hace click arriba a la derecha, no aparece el captcha, y eso es un problema, porque cuando ingreso mis datos, aunque estén correctamente, me manda al login diciéndome que no ingresé el captcha, y es una pérdida de tiempo. Ojalá puedan arreglarlo, gracias.
-
Ya dije como 20 veces que no estoy pidiendo ayuda, y ya dije que el problema del rendimiento no tiene solución, la única forma es hacer downgrade o algo similar, soy usuario avanzado de Linux, y no me interesa que me des ayuda tampoco. Es probable que si buscas en google, muchas de las respuestas y soluciones las haya escrito yo. Claro, mejoran el rendimiento, todas ellas, pero no al punto de ser satisfactorio, porque el problema viene de más abajo. Hice este tema para conversar del asunto. Y gracias a los que tienen comprensión lectora y realmente respondieron lo que pregunté y contaron su experiencia. Esto no hace más que confirmar el problema. Saludos.
-
Graficas de puntos en Java
zafrada replied to Vagabundo's topic in Aplicaciones de Escritorio & Scripts PHP
Ocupa JavaFX, tienes que instalar javafx. Yo también ocupo eclipse y el plugin e(fx)clipse http://efxclipse.org/ Un ejemplo: http://java-buddy.bl...beraxis-in.html Cómo se ve: