Comunidad Gambas-es
Nuevas Versiones de PicPanel y PicButton - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Controles/Librerías/Componentes (https://gambas-es.org/forum-7.html)
+--- Tema: Nuevas Versiones de PicPanel y PicButton (/thread-1279.html)

Páginas: 1 2


Nuevas Versiones de PicPanel y PicButton - Shordi - 09-03-2023

Aunque hace unas semanas or presenté los nuevos controles PicPanel y PicButton, a raíz de la colaboración con Harpo respecto al redondeo de paneles, he actualizado ambas clases para que contengan esa nueva característica. En concreto a Picpanel le he añadido la propiedad Radius, que establece el radio de las cuatro esquinas y luego una propiedad por cada una de ellas (TopLeftRadius, TopRightRadius, BottomRightRadius y BottomLeftRadius) para poder establecerlas individualmente.

El nuevo PicButton sólo dispone de Radius.

Los he probado con GTK3 y con QT5 y funcionan bien en ambos entornos. Los colores por defecto los he intentado aproximar lo más posible a los estándar y los he probado con Escritorios claros y oscuros y más o menos me funcionan bien... aunque eso me gustaría que lo probaseis en vuestras máquinas a ver qué tal quedan.

Ena demo, el aspecto del formulario test para Escritorios oscuros es éste:
[Imagen: xfz9hzO.png]

y para Escritorios Claros es éste:
[Imagen: VtFZBgq.png]

Le he limitado a ambos controles la cantidad de Radio que se puede dar a las esquinas, que antes se desmadraba. Ahora es la mitad del borde más corto del control, con lo se obtienen óvalos o círculos, pero sin desmadrarse demasiado.

No lo cuelgo aquí que como tiene imágenes incrustadas pesa demasiado para el foro. Lo podéis descargar de:

https://gitlab.com/shordi/PicPanel

Saludos


RE: Nuevas Versiones de PicPanel y PicButton - tincho - 09-03-2023

En Manjaro se ve así:
[Imagen: dod1Cvr.png][Imagen: sWBGpmZ.png]


RE: Nuevas Versiones de PicPanel y PicButton - jguardon - 09-03-2023

Eso tiene muy buena pinta. Lo único es que no creo que lo vaya a utilizar, soy bastante tradicional para las GUI's.

Gracias por compartir!

Saludos


RE: Nuevas Versiones de PicPanel y PicButton - tincho - 09-03-2023

Estoy haciendo un editor de texto usando un PicPanel modificado, va quedando así.

[Imagen: 3OAc5a8.png]
[Imagen: UR6e8fX.png]


RE: Nuevas Versiones de PicPanel y PicButton - Shordi - 09-03-2023

Ya nos lo enseñarás!! Big Grin Big Grin Big Grin


RE: Nuevas Versiones de PicPanel y PicButton - Harpo - 09-03-2023

Tiene buena pinta, gran trabajo.
Solo una recomendación si quiere optimizar código, en vez de asignar el DrawingArea a la propiedad _Container asignar el Panel interno.

Código:
'Me._Container = $hPicPanel
Me._Container = $Content

Con esto UserContainer asigna las propiedades de "contenedor" al panel, no sería necesario hacer Reparent de los hijos ni definir propiedades puente como Arrangement, Padding, etc.

Un saludo, Harpo.


RE: Nuevas Versiones de PicPanel y PicButton - tincho - 09-03-2023

(09-03-2023, 19:05)Shordi escribió: Ya nos lo enseñarás!! Big Grin Big Grin Big Grin

Hace un tiempo hice un editor rudimentario (que nunca termine) con el control TextEditor y ayer empece a aislar todo lo que resulte útil en un formulario independiente. No se en que derivara todo esto, probablemente en nada. Big Grin


RE: Nuevas Versiones de PicPanel y PicButton - Shordi - 09-03-2023

Cita:Con esto UserContainer asigna las propiedades de "contenedor" al panel, no sería necesario hacer Reparent de los hijos ni definir propiedades puente como Arrangement, Padding, etc.

Lo estuve pensando, pero luego no me decidí por miedo a liarla... Gracias por el tip.

Saludos


RE: Nuevas Versiones de PicPanel y PicButton - Shell - 30-03-2023

No es que sea en este proyecto en concreto, pero suele pasar cuando se usan controles diseñados por el usuario que
el editor de Gambas suele mostrar el mensaje que no ha encontrado el control.

Lo que hice fue compilar, pero seguía mostrándose el mensaje. Luego le di a recargar en el icono que veis
con las dos flechas y el mensaje desapareció.

[Imagen: 7FBgcdA.png]

Si que queda un poco desplazado, no centrado, pero supongo que eso debe ser cuestión de alguna propiedad, que solo es un test.
por lo demás muy chulo.

Saludos


RE: Nuevas Versiones de PicPanel y PicButton - tincho - 19-04-2023

Shordi
Estoy usando PicPanel n un proyecto, pero lo modifique un poco para usar arc en vez de curve ya que en los arcos (y en los chaflanes) se produce una aberración debido a los pixeles de la pantalla supongo.
Este es el código:

Código:
Public Sub PicPanel_Draw()

  Dim iColor, iMargin As Integer
  Dim iFlag As Integer = Style.StateOf(Me)
  Dim n, i As Integer
  Dim p As Integer
  Dim ax As Variant[] = [[Rad(0), Rad(270)], [Rad(270), Rad(90)], [Rad(180), Rad(90)], [Rad(90), Rad(90)]]
  Dim vx As Integer[][] = [[0, 0], [$hPicPanel.w, 0], [$hPicPanel.w, $hPicPanel.h], [0, $hPicPanel.h], [0, 0]]

  'Enabled / Disable
  If iFlag And Style.Disabled Then
    iColor = Color.Merge(Me.Background, $iBorderColor, 0.75)
  Else
    iColor = $iBorderColor
  Endif

  Paint.Begin($hPicPanel)
  Paint.MoveTo($Radius[0], $Radius[0])

  Paint.Arc($Radius[0], $Radius[0], $Radius[0], Rad(180), Rad(90), False) ' r0
  Paint.Arc($Radius[1], $hPicPanel.h - $Radius[1], $Radius[1], Rad(90), Rad(90), False) ' r1
  Paint.Arc($hPicPanel.w - $Radius[2], $hPicPanel.h - $Radius[2], $Radius[2], 0, Rad(90), False) ' r2
  Paint.Arc($hPicPanel.w - $Radius[3], $Radius[3], $Radius[3], Rad(270), Rad(90), False)  ' r3

  Paint.MoveTo($Radius[0], 0)
  Paint.LineTo($hPicPanel.w - $Radius[1], 0)

  Paint.MoveTo($hPicPanel.w, $Radius[1])
  Paint.LineTo($hPicPanel.w, $hPicPanel.h - $Radius[2])

  Paint.MoveTo($hPicPanel.w - $Radius[2], $hPicPanel.h)
  Paint.LineTo($Radius[3], $hPicPanel.h)

  Paint.MoveTo(0, $hPicPanel.h - $Radius[3])
  Paint.LineTo(0, $Radius[0])

  Paint.LineJoin = 1
  Paint.Brush = Paint.Color($iBorderColor)

  Paint.stroke(True)
  Paint.End

  'Content Adjust to bigger Radius
  For Each n In $Radius
    i = Max(n, i)
  Next
  iMargin = Int(i / 3)
  With $Content
    .X = iMargin
    .Y = iMargin
    .H = $hPicPanel.h - (iMargin * 2)
    .W = $hPicPanel.w - (iMargin * 2)
  End With
End

[Imagen: XKIzD9Q.png]