[Gambas-user] gb.desktop.x11 (Refresh Taskbar)
Benoît Minisini
gambas at ...1...
Wed May 21 19:08:40 CEST 2014
Le 21/05/2014 18:58, herberth guzman a écrit :
> Hi all
>
> I want to tell mypanel works well, but I want to improve.
>
> The update of the open windows I do by a TIMER, but I would like to do it
> directly X11, someone who can help me please.
>
> Upgrading windows open is through a TIMER, but I would like to do it
> directly gb.desktop.x11, someone who can help me please.
>
> Attached is an example of my panel.
>
>
> ''CODE
> Public id_win_active As Integer
> Public HPanel_app As Panel
> Public hToggle As ToggleButton
>
>
> Public Sub Form_Open()
>
> Dim desk_w As Integer = Desktop.W
>
> X11.SetWindowProperty(Atom["_NET_WM_STRUT"], Atom["CARDINAL"], [0, 0, 0,
> 32], Me.Id)
> X11.SetWindowProperty(Atom["_NET_WM_STRUT_PARTIAL"], Atom["CARDINAL"],
> [0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 32, desk_w], Me.Id)
> X11.SetWindowProperty(Atom["_NET_WM_WINDOW_TYPE"], Atom["ATOM"],
> Atom["_NET_WM_WINDOW_TYPE_DOCK"], Me.Id)
>
> Me.X = 0
> Me.Y = Desktop.H - Me.H
> Me.W = Desktop.W
>
> Desktop_Windows
> Timer1.Start
> TimTask.Start
>
> End
>
> Public Sub Desktop_Windows()
>
> Dim i As Integer
>
> For i = 0 To Desktop.Windows.Count - 1
> If Desktop.Windows[i].Name Then
> hToggle = New ToggleButton(PanelTask) As "ToggleTask"
>
> Try hToggle.Picture = Desktop.Windows[i].Icon.Stretch(22, 22).Picture
> hToggle.Text = Left$(Desktop.Windows[i].Name, 25)
> hToggle.Height = 32
> 'hToggle.Font.Size = 8
> hToggle.Mouse = 13
> hToggle.Border = True
> hToggle.W = 250
> hToggle.Tooltip = Desktop.Windows[i].Name
> hToggle.Tag = Desktop.Windows[i].Id
>
> If Not hToggle.Text Then
> hToggle.Text = "Sin título"
> hToggle.W = 250
> Endif
>
> If Not hToggle.Text Then
> hToggle.Text = ("Untitled")
> hToggle.Picture = Picture["icon:/22/apps/application-default-icon"]
> hToggle.W = 250
> Endif
>
> If (hToggle.Picture = Picture[Null]) Then
> hToggle.Picture = Picture["icon:/22/apps/application-default-icon"]
> hToggle.W = 250
> Endif
>
> Endif
> Next
>
> End
>
> Public Sub ToggleTask_Click()
>
> Try id_win_active = Last.Tag
> Try Desktop.ActiveWindow = id_win_active
> Try Desktop.Windows.FromHandle(id_win_active).Minimized =
> Desktop.ActiveWindow = id_win_active
>
> End
>
> Public Sub Timer1_Timer()
>
> Dim x As String
>
> Timer1.Delay = 1000
> Timer1.Start
>
> x = Format$(Now, "hh:nn")
> TextLabelDate.Text = x
>
> End
>
> Public Sub Refresh_Taskbar() ''is not the best but it works
>
> Dim i As Integer
>
> Desktop.Windows.Refresh()
> If (PanelTask.Children.Count - (Desktop.Windows.Count - 2)) Then
> PanelTask.Children.Clear()
> For i = 1 To Desktop.Windows.Count - 2
> hToggle = New ToggleButton(PanelTask) As "ToggleTask"
> hToggle.W = 250
> Try hToggle.Picture = Desktop.Windows[i].Icon.Stretch(22, 22).Picture
> hToggle.Text = Left$(Desktop.Windows[i].Name, 25)
> hToggle.Height = 32
>
> hToggle.Mouse = 13
> hToggle.Tooltip = Desktop.Windows[i].Name
> hToggle.Tag = Desktop.Windows[i].Id
>
> If Not hToggle.Text Then
> hToggle.Text = ("Untitled")
> hToggle.Picture = Picture["icon:/22/apps/application-default-icon"]
> hToggle.W = 250
> Endif
> If (hToggle.Picture = Picture[Null]) Then
> hToggle.Picture = Picture["icon:/22/apps/application-default-icon"]
> hToggle.W = 250
> Endif
>
> Try hToggle.Visible = Not CBool(Desktop.Windows[i].SkipTaskbar)
>
> Next
> Else
>
> For Each hToggle In PanelTask.Children
> hToggle.Text = Left$(Desktop.Windows.FromHandle(hToggle.Tag).Name, 25)
> If Not hToggle.Text Then
> hToggle.Text = ("Untitled")
> hToggle.Picture = Picture["icon:/22/apps/application-default-icon"]
> hToggle.W = 250
> Endif
> If (hToggle.Picture = Picture[Null]) Then
> hToggle.Picture = Picture["icon:/22/apps/application-default-icon"]
> hToggle.W = 250
> Endif
>
> Next
> Endif
>
> Catch
>
> End
>
> Public Sub TimTask_Timer()
>
> Refresh_Taskbar
>
> End
>
> Herberth Guzmán
>
I told you to use a DesktopWatcher for that in my previous answer.
--
Benoît Minisini
More information about the User
mailing list