purebasic.info

PureBasic forum
Текущее время: Чт дек 14, 2017 1:00 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Прога типа conky
СообщениеДобавлено: Сб окт 07, 2017 7:35 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 15, 2014 2:21 pm
Сообщений: 72
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Всем привет!
Настроил себе conky и вроде бы всё устраивает, но как известно, нет предела совершенству...
вообщем, есть мысль написать самостоятельно подобную прогу без излишеств и с нужным функционалом
первое на что натыкаюсь: как сделать прозрачное окно, причем чтобы надписи на нем не становились прозрачными...
если у кого есть идеи и наработки в данном направлении - милости просим :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Прога типа conky
СообщениеДобавлено: Вс окт 08, 2017 6:18 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 527
Благодарил (а): 51 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
в примерах есть примеры с прозрачным окном

а чё за прога, чё делает?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Прога типа conky
СообщениеДобавлено: Вс окт 08, 2017 12:50 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 15, 2014 2:21 pm
Сообщений: 72
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
показывает различную инфу на рабочем столе
у меня, к примеру, выглядит сейчас вот так:
https://yadi.sk/i/lkeZ3Qdh3NZdrY
когда делаю прозрачное окно, например вот так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
; Module/File:     Window_SetTransparency.pb
; Function:        Set window transparency -Linux gtk2-gtk3.8
; Author:          Omi/shardik
; Date:            Oct. 14, 2014
; Version:         0.3 updt. gtk3.8
; Target Compiler: PureBasic 5.22/5.31/5.40
; Target OS:       Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni
;--------------------------------------------------------------
;depends on distribution (Lubuntu without function)
;still works till gtk3.8
 
EnableExplicit
 
ImportC ""
        gtk_widget_is_composited(*widget.GtkWidget)
        ;gtk_widget_set_opacity(*window.GtkWindow, opacity.d)
        gtk_window_set_opacity(*window.GtkWindow, opacity.d)
        gtk_scale_clear_marks(*scale.GtkScale)
        gtk_scale_add_mark(*scale.GtkScale, value.d, position.i, *markup)
        gtk_range_get_value.d(*range.GtkRange)
        gtk_adjustment_set_lower(*adjustment.GtkAdjustment, lower.d)
        gtk_adjustment_set_value(*adjustment.GtkAdjustment, value.d)
        g_signal_connect(*instance, detailed_signal.p-ascii, *c_handler, *|/1/>data, destroy= 0, flags= 0) As "g_signal_connect_data"
EndImport
 
; Object constants
#MainWin= 0
#TBar1  = 0
 
Global.i I, gEvent, gQuit, gCounter
Global *gWidget.GtkWidget, *gAdjustment.GtkAdjustment
 
ProcedureC Trackbar_changed(*trackbar, user_data)
        ; ----- set opacity with trackbar-position ...
        gtk_window_set_opacity(WindowID(#MainWin), gtk_range_get_value(*trackbar)); widget transparency set here
EndProcedure
 
If OpenWindow(#MainWin, 300, 200, 250, 200, "window-transparency", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
        TextGadget(#PB_Any, 5, 20, 90, 20, "transparency")
        TrackBarGadget(#TBar1, 90, 5, 150, 40, 0.5, 1);                    no lower-limit 0.5 possible (= 0) => need double instead PB-integer)
       
        ; ----- set trackbar to adjust transparency ...
        *gWidget= GadgetID(#TBar1)
        gtk_scale_set_value_pos_(*gWidget, #GTK_POS_RIGHT);                additional display value at right side
        gtk_scale_set_draw_value_(*gWidget, #True);                        display ON
        gtk_scale_clear_marks(*gWidget);                                   no marks => wrong cause pb-int-parameter
        *gAdjustment= gtk_range_get_adjustment_(*gWidget);                 get adjustment
        gtk_adjustment_set_lower(*gAdjustment, 0.5);                       set real lower-limit to 0.5
        gtk_adjustment_set_value(*gAdjustment, 0.8);                       preset value
        For I= 5 To 10
                gtk_scale_add_mark(*gWidget, I/10, #GTK_POS_TOP, #Null)
        Next I
        If Not gtk_widget_is_composited(WindowID(#MainWin))
                Debug "Window transparency is not supported on this system!"
        EndIf
       
        ; ----- set event for trackbar-change
        g_signal_connect(*gWidget, "value-changed", @Trackbar_changed(), *gWidget)
       
        ; ----- preset transparency ...
        gtk_window_set_opacity(WindowID(#MainWin), 0.8)
       
        Repeat
                gEvent= WaitWindowEvent()
               
                Select gEvent
                        Case #PB_Event_CloseWindow
                                gQuit= #True
                        Case #PB_Event_Gadget
                                ;  see Trackbar_changed(*trackbar, user_data) for event
                EndSelect
               
        Until gQuit
EndIf

все гаджеты на нем тоже становятся прозрачными, а мне этого не надо


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB