Shordi 14-10-2022, 19:25
Al fin creo que la nueva versión de gbAmp está presentable como para traerla a que la destripéis aquí. El Hilo original del proyecto queda lejano en el tiempo y sólo tiene interés como ejemplo de la forma en la que nacen y van creciendo los programas. Las novedades de esta versión son:

1.- Una estética nueva, más parecida a Audacious... o no, según se mire. Para las dudas que se plantearon sobre esto ver el hilo ¿Crear o Copiar? 
2.- Un módulo de descarga de Sonido de Videos o de Listas de Reproducción de Youtube incorporado. Gestado en el hilo Extractor de Música de Youtube
3.- Un Divisor de Pistas, es decir extraer canciones de un archivo mayor, gestado en el hilo mentado del Extractor de Música.
4.- Un editor de Temas que te permite cambiar el aspecto de tu gbAmp a gusto y placer.
5.- Creación de Listas de Reproducción propias.

No me ha sido fácil porque por primera vez me he metido en el meollo de la estética "fuera de programa" y es un carajal del demonio que me planteó nuevos e interesantes retos, a saber:

1.- Establecer imágenes como fondo de los formularios (la propiedad picture que llevan no me servía al no ser ajustable), lo cual me llevó a crear el control Picpanel, un panel que dispone de la propiedad BgPicture, la imagen de fondo. (La versión que subí en ese hilo es obsoleta, por cierto y gbAmp incorpora una más simple)

2.- Establecer imágenes como fondo de los Buttons y ToolButtons, porque cuando te pones, te pones y por otro lado no es posible cambiar el color de los botones en el momento
de ser pulsados, lo que lleva a efectos bastante feos. De ahí desarrollé el control PicButton que ya he desechado por el más versátil PicToolButton (es un ToolButton con imagen de fondo y sin borde excepto cuando el ratón está sobre él y en el que puedes controlar el color del fondo al ser pulsado. Dispone de la propiedad Border que si se establece a True deja fijo el borde, con lo que virtualmente lo conviertes en un button)

3.- Poder incrustar controles (botones y demás) en la línea de cabeceras de la ventana, donde apliqué la solución que desarrollé en este hilo.

4.- Un Texto que se deslice por la pantalla de manera continua. Para lo que creé el control Banner.

5.- Flexibilidad a la hora de mostrar los iconos según los colores elegidos. Al final lo he solucionado incorporando dos sets de iconos, unos claros y otros oscuros que pueden ser elegidos en el Editor de temas. No me gusta mucho hacerlo así. Siempre he preferido usar los del stock porque los incrustados agrandan el ejecutable muchas veces de manera innecesaria. En una presunta versión de distribución estos iconos se copiarían en user.home/.config/Temas/ en tiempo de instalación del paquete .deb y no ocuparían espacio en el ejecutable tal como hacen ahora mismo.

No es perfecto, por cuanto hay controles nativos de gambas que no admiten configuración en lo que a los colores se refiere. Así, el botoncito de la flecha de los combobox o las barras de desplazamiento de los Scroll tienen como color el del tema de escritorio y no hay manera de cambiarlo. Podría crear mis propias barras de desplazamiento y mi propio combobox con colorín configurable... pero me da muuucha pereza. Si el color del tema del sistema no cuadra con el tema de gbAmp... Cambia el tema de gbAmp, que para eso tiene un editor de temas.

A este respecto le he incorporado tres temas (cuatro si contamos el tema "Desktop", que son los colores del sistema),

"gbAmp Dark" parecido a Audacious y apto para temas de escritorio oscuros.
[Imagen: ozjuoc8.png]
El Tema "gbAmp Light", apto para temas de escritorio claros
[Imagen: MwrlSBK.png]

Y el tema "Bronce", que no es ni claro ni oscuro, pero que me encanta:
[Imagen: zj76hHq.png]

(El tío feo de la foto de la cabecera (una broma con mi nieta) se puede quitar en la pantalla de Preferencias, por supuesto.)

Advertir que sólo funciona con QT5 (y supongo que con QT4) . GTK es una caca (lo siento), al menos en su integración con gambas. Con GTK3 la cosa mejora... pero no funciona tampoco. Lo siento es QT y punto.
No está terminado, por supuesto, le falta añadir alguna traducción, pulir el código que los nombres de las variables en inglés y demás zarandajas, etc. Pero ya os podéis hacer una idea de cómo va el tema. De hecho lo voy a dejar reposar unos días a la espera de los feedbacks y bugs que me enviéis, que presumo numerosos.
En la Granja tendréis la última versión y, por supuesto, la podréis encontrar en https://gitlab.com/shordi/gbamp.

Saludos.
AlfredoSC 13-10-2022, 01:38
Hola a todos:

Con gran tristeza cada vez le digo adiós a mis mejores conectores de electrónica, fabricados para durar muchos años, con una resistencia "bruta", para uso rudo. Entre ellos puedo mencionar:
Conectores DB-9, DB-15, DB-25 machos y hembras
Conectores Centronics para impresoras
Conectores DIN y Minidin para teclados y ratones
Conectores IDE para discos duros y otros dispositivos
Conectores USB 1.0, 2.0 Tipo A y tipo B

Los conectores de hoy día, duran menos, no hacen buen contacto, se aflojan. Hacen honor al consumismo, pero dan empleo a reparadores. No por eso dejan de ser muy malos. Cómo es que ganaron terreno en el mundo de la electrónica y computación?.

El tema viene a colación, por la recién noticia de que la UE (Unión Europea) ha obligado a los fabricantes a estandarizar un sólo conector para los dispositivos informáticos electrónicos. Acaso será lo mejor de lo mejor que haya existido?. Habrá quien se oponga a semejante orden?.

Saludos...
Shell 12-10-2022, 12:12
Buenas!.

He creado un ejemplo que tomando un directorio, indexa todos los nombres de los archivos y los muestra en un TabStrip.
En este caso, una vez que se muestran los archivos se desactiva el botón de seleccionar directorio.
La salida es esta:

[Imagen: 3ktQE75.png]

El formulario tiene su propiedad arrangement a vertical. Activadas a True, tanto Margin como Spacing.
El botón está dentro de un contenedor junto con un muelle y tiene su arrangement a horizontal
El TabStrip tiene su arrangement a vertical y su propiedad Expand a True.

Se muestra así en modo diseño.

[Imagen: VQDImoq.png]

Al ejecutarlo por primera vez, vemos el TabStrip tal como se ve en esa imagen, vacío, pero se ve.
Si lo hacemos no visible, el contenedor donde se encuentra el botón subirá arriba y una vez se haya seleccionado
un directorio, volverá a su lugar, mostrándose correctamente. No queda arriba y debajo el TabStrip ( eso es correcto).

¿ No creéis que el contenedor donde se encuentra el botón debería quedarse mejor abajo al inicio ?.
Pero al hacerse invisible TabStrip, desaparece este y sube el otro contenedor donde esta el botón.
No existe control que lo empuje abajo.

¿ Qué debería ser lo más estético ?.

El tema del control de errores puede no estar depurado, si recibe datos el array de los datos creo que lo solucioné.
Últimamente usando la clase Dialog, me muestra errores en la salida de consola cuando no hago algo bien.
( Creo que esto no solía mostrarse en otras versiones de Gambas, puede que se haya añadido con el tiempo, me parece bien).

Os adjunto el código.

Código:
Private grupoficheros As New String[]
Private carchivos As New Collection

Public Sub btndSelectDir_Click()
 
  Dim i As Integer
 
  grupoficheros.Clear()
 
  Dialog.Title = "Selecione un directorio"
  If Dialog.SelectDirectory() Then Return
 
  grupoficheros = Dir(Dialog.Path, "*.*", gb.File).Sort()
 
  Indexar(grupoficheros, TabStrip1)
  TabStrip1.Visible = True

  For i = 0 To TabStrip1.Count - 1
    TabStrip1.Index = i   
    CrearGridView(TabStrip1, carchivos[TabStrip1.Current.Text])
  Next
  btndSelectDir.Enabled = False
 
End

Public Sub Indexar(atmp As String[], tabstripficheros As TabStrip)
 
  Dim letra As String
  Dim archivo As String
  Dim aarchivos As String[]
  Dim i As Integer  
 
  i = 0
 
  For Each archivo In atmp
    letra = Left(archivo, 1)
    If Not carchivos.Exist(letra) Then
      aarchivos = New String[]
      carchivos[letra] = aarchivos
      tabstripficheros.Count = i + 1
      tabstripficheros[i].Text = letra
      carchivos[letra].add(archivo)
      Inc i
    Else
      carchivos[letra].add(archivo)
    Endif
  Next
 
End

Public Sub CrearGridView(contenedor As TabStrip, lista As String[])
 
  Dim ggridview As GridView
  Dim filas As Integer
  Dim x As Integer
 
  If lista.Count = 0 Then Return
 
  ggridview = New GridView(contenedor) As "hgrd"
  With ggridview
    .Expand = True
    .Columns.Count = 1
    .Rows.Count = 1
    .Header = GridView.Both
    .Mode = Select.Single
    .ScrollBar = Scroll.Both
  End With
 
  filas = 0
  'Rellenar las celdas  
  For x = 0 To lista.Max
    ggridview.Rows.Count = filas + 1
    ggridview[x, 0].Text = lista[x]
    Inc filas   
  Next
 
End

Public Sub Form_Open()

  TabStrip1.Visible = False

End

Y su código fuente.

Saludos

Un muelle entre el tabStrip y el contenedor inferior

[Imagen: fOM59N3.png]

Cuando se ejecuta bien, pero cuando el tabstrip aparece..

[Imagen: zfVy83e.png]

Problema de contenedores.
Archivos adjuntos
.gz
MostrarArchivosPorIndice-0.0.1.tar.gz (Tamaño: 12.5 KB Descargas: 2)
Páginas (564):    1 260 261 262 263 264 564   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 292
Último miembro: DarkWolf
Temas del foro: 1,742
Mensajes del foro: 9,029
Últimos temas
Ordenar en un TableView
Foro: General
Último mensaje por: Shordi, 03-11-2025, 18:41
Respuestas: 3 - Vistas: 101
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 02-11-2025, 13:36
Respuestas: 9 - Vistas: 1,546
Reportes de Gambas
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: Alberto59, 27-10-2025, 16:34
Respuestas: 2 - Vistas: 1,329
Ordenando las carpetas
Foro: Programación en otros lenguajes
Último mensaje por: tercoide, 22-10-2025, 15:57
Respuestas: 0 - Vistas: 112
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.