[RESUELTO] Macro para mostrar una barra de herramientas

Discute sobre el procesador de textos
Responder
JoanC
Mensajes: 25
Registrado: Mar Feb 04, 2014 9:38 pm

[RESUELTO] Macro para mostrar una barra de herramientas

Mensaje por JoanC »

Hola.

Estoy preparando LibreOffice para la escuela y quiero mostrar determinadas barras de herramientas con los botones más adecuados a cada franja de edad.

Gracias a vosotros he conseguido un botón para que muestre el text escrito por los chavales en "letra de palo" (arial+mayúsculas) y letra ligada (font Abecedario).

Ahora quiero que el usuario alumno pueda seleccionar mediante una barra con cinco botones (educación infantil/ciclo inicial/ciclo medio/ciclo superio/maestros), las barras de herramientas que visualizará. Por ejemplo: una niña de 5 años tendrá en la barra los botones de crear documento nuevo, abrir, guardar, imprimir, letra de palo y letra ligada, insertar una imagen y salir. en cambio, un maestro visualizará las barras estándard y de formato.

Tengo una macro que oculta todas las barras de herramientas, excepto el menú principal (fichero, edita, visualiza...). A continuación pensaba visualizar las barras oportunas mediante una macro de combinación de teclas. Pero, al contrario que con lo de aplicar un estilo a un párrafo -de letra de palo o de letra ligada-, esta vez no me deja guardar la macro en el mòdulo. Es decir: puedo guardar ciertas secuencias de teclas, pero no Visualizar/Barras de herramientas y la barra que preciso.

No es posible una tal combinación de teclas? Hay alguna otra manera de mostrar la barra de herramientas, por ejemplo, mediante alguna función?

Muchas gracias por la atención
Joan
Última edición por JoanC el Dom Feb 09, 2014 1:38 pm, editado 1 vez en total.
LibreOffice 4.2.
xubuntu
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para mostrar una barra de herramientas

Mensaje por fornelasa »

Hola JoanC.....
Me parece que la consulta no es clara.
¿Deseas por ejemplo ocultar o mostrar una barra de herramientas?, por ejemplo: tal vez mostrar u ocultar la barra de herramientas "Standard".
¿algo como esto?
Saludos, Federico.
Adjuntos
Mostrar_Ocultar.odt
Mostrar/Ocultar barra
(11.06 KiB) Descargado 410 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
JoanC
Mensajes: 25
Registrado: Mar Feb 04, 2014 9:38 pm

Re: Macro para mostrar una barra de herramientas

Mensaje por JoanC »

Hola, FORNELASA.

Tienes razón: no se entiende mucho lo que pretendo. Voy a ir poco a poco y especificando tanto como pueda.

A grandes rasgos pretendo un entorno (entiéndase barras con iconos) para 4 niveles educativos diferentes y los maestros:
  • Educación Infantil
  • Ciclo Inicial
  • Ciclo Medio
  • Ciclo Superior.
  • Maestros
Los de Educación Infantil precisan pocos iconos en su barra de herramientas: (Nuevo/Abrir/Guardar/Letra de Palo/Letra Ligada/Salir).
Los de Ciclo Inicial añadirían en su barra los iconos de Página completa/Anchura de página y los de formato: estilo de título/color de letra/añadir una imagen...
Así con todos los ciclos, hasta llegar a los maestros que utilizarían las barras de herramients Estándard y Formato.

Mi idea es que, al empezar, aparezca el menú de niveles educativos (usuarios: Infantil/Inicial/Medio/Superior).
El alumno pulsaría el botón correspondiente y aparecerían las barras de herramientas correspondientes.

Por lo tanto, mi pregunta se centra aquí: esconder las barras de herramientas que no procedan y mostrar las pertinentes, de manera automatizada.

Pongo una imagen de cómo se veria el menú principal (siempre visible, para poder cambiar a cualquier nivel), el menú para Educación infantil, una barra de visualización y un texto donde se aprecia la letra de palo -línea superior- y la letra ligada -línea inferior-.
Ejemplo_pantalla_LibreOffice.png
Ejemplo_pantalla_LibreOffice.png (6.89 KiB) Visto 6148 veces
Para mostrar una barra de herramientas, usando una macro, me he topado con un problema. Inicialmente pensé en lo siguiente:
  • Alt-V (menú Ver)
  • B (Barras de herramientas)
  • 1 (1.- Educación Infantil, que es el nombre de la barra de herramientas que tengo. El 1 aparece subrayado en mi lista de barras de herramientas).
Pues bien: cuando pulso sobre el botón Terminar la grabación, no me ofrece la posibilidad de guardar la macro (se cierra la ventana donde se encuentra el botón y ahí termina su trabajo).

Luego me he dado cuenta de que cuando aparecen según qué elementos de la barra de menú, no guarda la macro. Quizás cuando en el menú hay más opciones...

Por ello no puedo realizar mi idea inicial: un menú de botones que, al ser pulsados, presentasen las barras de cada nivel, y ocultasen las anteriores.

Esta tarde estaba pensando si sería posible arrancar el LibreOffice cargando una plantilla en la que estuvieran directamente las barras de un solo nivel educativo. Ya crearía un lanzador para cada uno...

Espero no haber confundido más todavía...
LibreOffice 4.2.
xubuntu
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para mostrar una barra de herramientas

Mensaje por fornelasa »

Bien, parece que ahí vamos.
Mas preguntas:
1) ¿Viste el archivo que envié en mi post previo?
2) ¿Tus barras de herramientas son "barras personalizadas"?
3) ¿O son las barras propias del programa (como por ejemplo la barra "Formateo") a las cuales les quitaste o agregaste iconos?

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
JoanC
Mensajes: 25
Registrado: Mar Feb 04, 2014 9:38 pm

Re: Macro para mostrar una barra de herramientas

Mensaje por JoanC »

Caramba, FORNELASA, tienes razón: ¡leí precipitadamente!

Cuando escribiste: "¿algo como esto?" pensé que te referías a lo que habías escrito en la línea anterior (¿Deseas por ejemplo ocultar o mostrar...). ¡Y ahora me doy cuenta de que habías enviado un archivo! :crazy:

He abierto el archivo y eso es lo que quiero: mostrar/esconder las barras de herramientas. :bravo:

Veo tu macro y lo simple que es. ¡Bravo! Como tu sugieres, al preguntar si son barras del programa, ¿puedo saber el nombre de mis barras de herramientas? ¡Qué emoción! Si es así, ya le veo casi la solución a mi problema...

Joan
LibreOffice 4.2.
xubuntu
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para mostrar una barra de herramientas

Mensaje por fornelasa »

sí podemos saberlo.
ahorita no estoy en el foro, escribo desde el móvil pero en cuando pueda escribo la macro para obtener los nombres de las barras de herramientas.
saludos.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para mostrar una barra de herramientas

Mensaje por fornelasa »

Si creamos una barra de herramientas nueva personalizada y le asignamos por ejemplo el nombre "mibarra", por alguna razón que desconozco "internamente" Writer le asigna un sinonimo similar a "custom_toolbar_2137", nos toca entonces detectar que "custom_toolbar_XXXX" pertenece a "mibarra".

Esta macro muestra en una hoja de Writer todos los nombres de barra existentes.

Código: Seleccionar todo

Sub ObtenerNombres
   Dim oCursor As Object 
   Set oCursor = ThisComponent.Text.CreateTextCursor() 

   Dim oProv As Object 
   Set oProv = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier") 

   Dim oMat As Object 
   Set oMat = oProv.getUIConfigurationManager("com.sun.star.text.TextDocument" ) 

   Dim oArray() 
   oArray = oMat.getUIElementsInfo(3) 
    
   Dim n As Integer 
   For n = LBound(oArray) To UBound(oArray) 
      Dim Items() 
      Items = oArray(n) 
      Dim m As Integer 
      For m = LBound(Items) To UBound(Items) 
         ThisComponent.Text.InsertString oCursor, Items(m).Name & ": " & Items(m).Value, False 
         ThisComponent.Text.InsertControlCharacter oCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False 
      Next 
   Next 
End Sub
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
JoanC
Mensajes: 25
Registrado: Mar Feb 04, 2014 9:38 pm

Re: Macro para mostrar una barra de herramientas

Mensaje por JoanC »

Muchas gracias, Federico. :super:

Tus respuestas lo han logrado. Cuando escribiste que se podia mostrar, y mientras esperaba -¡qué nervios!-, busqué alguna manera de poder saber cómo se identificaban las barras de menú. Encontré un script, aquí, en donde contaba la forma un tanto aleatoria de identificar a los elementos.
Entonces me puse a "esconder" mis barras y a mostrarme el orden (creo) de disposición en la zona de barras, y la URL del recurso (barra en este caso).

Código: Seleccionar todo

Sub Esconde_menus()
   Dim doc As Object
   Dim frame As Object
   Dim lmgr As Object
   Dim LayoutElements
   Dim i As Integer
   
   doc = ThisComponent
   frame = doc.CurrentController.Frame
   lmgr = frame.LayoutManager
   LayoutElements = lmgr.getElements
   for i = 0 to UBound(LayoutElements, 1)-1
      lmgr.hideElement(LayoutElements(i).ResourceURL)
      print i
      print LayoutElements(i).ResourceURL
   next i
End Sub
Con ello comprendí que el orden de disposición (la letra i del código), podia variar a cada aparición, pero no el RESOURCEURL. Ese número era el que me servía para identificar mi barra, entre sesión y sesión. Es lo que en tu correo escribes como: private:resource/toolbar/custom_toolbar_68e465d3, donde el último número es el que LibreOffice asigna "aleatoriamente", pero que luego mantiene siempre.

Ahora mismo he terminado con el trabajo y tiene un aspecto muy cercano a lo que pretendía.

Por lo tanto te quiero mostrar mi más profundo agradecimiento, Federico :bravo: , por la rapidez de tus correos, por lo acertado de tus respuestas y por haberme ayudado en un resultado que va a repercutir en muchos alumnos (en mi escuela asisten 372) y quizas en alumnos de otras escuelas, si se sienten interesados en mi distribución Linux.

Ahora pienso que si alguien se plantea un problema parecido al mío, voy a dejar un ejemplo de cómo hago desaparecer las barras que no me interesan y cómo hago aparecer las que quiero:

Código: Seleccionar todo

REM	Mostrar menú d'infantil

Sub Barras_Infantil()
   Dim doc As Object
   Dim frame As Object
   Dim lmgr As Object
   Dim LayoutElements
   
   doc = ThisComponent
   frame = doc.CurrentController.Frame
   lmgr = frame.LayoutManager
   LayoutElements = lmgr.getElements

REM	Esconde las barras que no necesito ver
REM	La Estándard de Maestros
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_23eaad1b")
REM	La de Formato de Maestros
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_69d22a22")
REM	La de Navegación de Maestros
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_5b6cc745")
REM	La de Ciclo Inicial
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_281d5bac")
REM	La de Ciclo Medio
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_37cdefa6")
REM	La de Ciclo Superior
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_33ecfa0f")
REM	La de Formato de Ciclo Superior
	lmgr.hideElement("private:resource/toolbar/custom_toolbar_573265b6")

REM	Muestra la barra de Educación Infantil
	lmgr.showElement("private:resource/toolbar/custom_toolbar_68e465d3")

End Sub
Reitero mi agradecimiento, Federico
Joan
LibreOffice 4.2.
xubuntu
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Macro para mostrar una barra de herramientas

Mensaje por fornelasa »

:super:
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: [RESUELTO] Macro para mostrar una barra de herramientas

Mensaje por SLV-es »

Gracias por compartir la solución :bravo: :bravo: :bravo:
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Responder