cht電腦資訊gcin
adm Find login register

gcin 界面的改進討論

eliu
31
Promote 2 Bookmark 22008-01-03quote  

theme 一般就要一致,gcin 也可以設定 background 顏色,所以需求並不是那麼高。 其實我個人反而喜歡輸入的區域是看起來乾乾淨淨的,不要有什麼雜七雜八的花紋。

 

所謂 setenv 就是修改 gcin.c  加上這一行,

setenv("GTK2_RC_FILES", ".../gtkrc", 1);

gtk_init (&argc, &argv);
dpy = GDK_DISPLAY();

 

另外一種不改 gcin source 的方式就是包裝成 script, 

mv /usr/bin/gcin /usr/bin/gcin_exe

/usr/bin/gcin 的內容

export GTK2_RC_FILES=$HOME/.gcin/themes/gtkrc
gcin_exe &

 

edited: 1
winlin
32
Promote 0 Bookmark 02008-01-03quote  
eliu

theme 一般就要一致,gcin 也可以設定 background 顏色,所以需求並不是那麼高。 其實我個人反而喜歡輸入的區域是看起來乾乾淨淨的,不要有什麼雜七雜八的花紋。

老實說,在我作過部份theme之後,我同意老大所說的,背景還是乾乾淨淨會比較好
雜七雜八的花紋會讓gcin視窗看起有點吃力
如果真的要作背景圖樣,要儘量和字型顏色有明顯區別,否則畫面會亂成一團

不過,會想為gcin來點不同的theme
目的其一還是在於有時候gcin太難與程式相區隔,太不顯眼了(尤其在白色背景下)
其二,如果能稍稍把gcin佈置得漂亮一點,不但賞心悅目,在朋友面前也比較有面子
(歹勢,純粹是個人虛榮心作祟好糗呀,雖然老大可能一點都不在意別人評論gcin外觀如何)

eliu

另外一種不改 gcin source 的方式就是包裝成 script, 

mv /usr/bin/gcin /usr/bin/gcin_exe

/usr/bin/gcin 的內容

export GTK2_RC_FILES=$HOME/.gcin/themes/gtkrc
gcin_exe &

感謝建議,這招應該是最省力的辦法了
改天要寫文件或教學的時候就寫這個好了

edited: 1
winlin
33
Promote 0 Bookmark 02008-01-13quote  

binding styles to widget classes:
The syntax is of the form: class "GtkButton" style "my-button"
This would bind the my-button style to all instances of GtkButton.
Alternatively you can use the form:

widget_class "*Text*" style "bright_yellow"

where a "*" can be used as a wildcard in the class string, in this example to bind the bright_yellow style to any widget with "Text" in its the name.
To select a widget class only if it is a child of a particular widget class, eg the header of a treeview. use this type of notation: widget_class "*TreeView*Button*" style "mystyle" Standard shell globbing is used, so * represents zero or more chars, and ? represents any single character.

RC styles bound with widget take precedence over RC styles bound with widget_class, which, in turn, take precedence over RC styles bound with class. If multiple declarations are made for the same widget class, the later one takes priority. This can be overridden by specifying a priority highest, rc, theme, application, gtk, lowest
eg: widget_class "*Button*" style : highest "mystyle".
This aspect is easily overlooked, and can be a big source of problems if you are not careful. 

application specific styles:
if the application developer has explicitly exposed an element, it can be styled by specifying that element name in a gtkrc file.
eg if an app has an element called 'funky bar', you can style it using:

widget "funky bar" style "mystyle"

原文在此)  

 

老大好~
這陣子我仍斷續花心思為gcin作skin
不過theme的製作要懂一些gtk object才行,對不懂gtk程式的人不易入門...
我遇到幾個難解的困難需要您的幫忙

gtkrc似乎可以針對gtk2程式內的各個element套用style
不過我無法由看原始碼來了解gcin的各個部份叫作什麼
您有空的話,能否請您告訴我各個element的名稱叫什麼(如下圖)
這樣我才能在gtkrc裡指定它們的各種style
謝謝~

註:

G:指符號表的背景
I:是指tray icon的背景
J:是gcin-setup的背景

edited: 1
本人已不在此站活動
34
Promote 0 Bookmark 02008-01-13quote  

好像是這個要先看?

http://www.gtk.org/~otaylor/gtk/2.0/theme-engines.html

http://developer.gimp.org/api/2.0/gtk/gtk-Resource-Files.html

gtk 有個 demo 程式,會把各種 widget 做一個例子出來,應該也可以參考一下。

edited: 1
winlin
35
Promote 0 Bookmark 02008-01-14quote  
LGJ

好像是這個要先看?

http://www.gtk.org/~otaylor/gtk/2.0/theme-engines.html

http://developer.gimp.org/api/2.0/gtk/gtk-Resource-Files.html

gtk 有個 demo 程式,會把各種 widget 做一個例子出來,應該也可以參考一下。

感謝LGJ兄,第一個網址的內容我先前已有找到,而且有印下來看了
倒是第二個網址我今天再印下來看看,如果再有問題再向大家請教好了
感謝~

另外,請問,那個demo是 thewidgetfactory嗎?還是其他?

本人已不在此站活動
36
Promote 0 Bookmark 02008-01-14quote  
winlin

 

感謝LGJ兄,第一個網址的內容我先前已有找到,而且有印下來看了
倒是第二個網址我今天再印下來看看,如果再有問題再向大家請教好了
感謝~

gtk resource 要完整掌握的話,會有一點難度。

 

另外,請問,那個demo是 thewidgetfactory嗎?還是其他?

[edt1023@lgj ~]$ which gtk-demo
/usr/local/bin/gtk-demo

 

winlin
37
Promote 0 Bookmark 02008-03-13quote  

感謝LGJ兄
因為程度的關係,gtk resource的部份我還沒完全看懂
不過gtk2 pixbuf theme engine的寫法,在小弟try & error下,已經稍有進展

再貼個木紋質感的上來給大家看看

木紋的gcin skin

現在還有幾個困難點需要突破:
1. 從gcin原始碼中辨視出gcin視窗的各個widget命名(這樣才不會將屬性不小心套到別的元件上)
2.繼續深入了解pixbuf theme engine的各項細節:
(1)尋找讓gcin邊框呈不規則形狀的方法(這樣才有可能製作出比較多變化的外形,shaped window)
(2)分別為各個元件的設定屬性
(3)尋找text shadow效果的辦法

如果大家有什麼好的資源要指引或指導小弟怎做,我都相當歡迎,因為我的程度實在太差了 好糗呀

edited: 2
ychao
38
Promote 0 Bookmark 02008-02-03quote  
caleb

(對 mozilla 處理 OverTheSpot 的經驗太失望了,懶得 track bug XD) 

倒是gcin有沒有可能支援OnTheSpot呢?
winlin兄最後這個真不錯,小弟n年前用「自然」的時候,還蠻喜歡木紋跟大理石紋路的theme。 :) 

edited: 1
winlin
39
Promote 0 Bookmark 02008-02-03quote  
ychao

 

倒是gcin有沒有可能支援OnTheSpot呢?
winlin兄最後這個真不錯,小弟n年前用「自然」的時候,還蠻喜歡木紋跟大理石紋路的theme。 :) 

感謝ychao,我可能也是受自然輸入法的影響才這麼想為gcin弄些skin 吐舌頭
不過,理想上我還是希望gcin的介面能夠超越自然輸入,更為多樣化,不只是個方框而已 

jackblackevo
40
Promote 0 Bookmark 02008-02-16quote  

gcin-setup視窗的下拉選單開啟關閉後會變形:

ychao
41
Promote 0 Bookmark 02008-02-18quote  

 也來貼一下XO上面看到的gcin-setup好了,這裡是開了i18n後的英文介面。

 

edited: 5
winlin
42 改變gtab視窗的邊框屬性來改善gtab外觀?
Promote 0 Bookmark 02011-04-01quote  

eliu兄好:

為了透過改變gtab視窗的邊框屬性來改善gtab外觀,小弟針對win-gtab.cpp作了修改和測試。
如果eliu兄有興趣讓gtab的邊框好看些、方便以後的人製作gcin theme,
就麻煩eliu兄參考一下了,說明如下,感謝~

 

 

gtab輸入法的邊框造型是取決於gtk frame,而gtk frame有4種不同邊框屬性:

上圖取自:http://zetcode.com/tutorials/gtktutorial/gtkwidgets/
(註:Shadow_etched_In是gtk預設使用的屬性,所以gtab輸入外框全部是預設使用這種。)

這4種屬性當中,

  • Shadow_out有浮雕效果→適合用在「輸入法名稱」和「gtab的拆碼區」
  • Shadow_etched_out有明確的「相框」感→適合用在整個gtab外圍的邊框(也就是勾選「顯示外框」的那個框)

經過測試,
小弟發現若可以修改下面3個frame的邊框屬性,
則可以讓gtab介面看起來比較有變化一點:

  • 「顯示外框」改成:GTK_SHADOW_ETCHED_OUT
  • 「輸入法名稱」和「gtab的拆碼視窗」改成:GTK_SHADOW_OUT

套用前後的結果比較如下:(左側是目前的gtab外觀,右側是修改後的gtab外觀)





修改過的win-gtab.cpp(1.6.1-pre4)如附件,
我只加了3行在win-gtab.cpp這個檔案內的不同的位置:

#第412行
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);

#第475行
gtk_frame_set_shadow_type(GTK_FRAME(frame_input_method_name), GTK_SHADOW_OUT);

#第494行
gtk_frame_set_shadow_type(GTK_FRAME(frame_gtab), GTK_SHADOW_OUT);

(註:雖然編出來的gcin可以用,但是我不懂gtk,不確定插在上述3個位置會不會造成bug)

或許有人會覺得看起來gtk frame的4種屬性用在gtab看起來都差不多,
但是如果能在「顯示外框」、「輸入法名稱」和「gtab的拆碼視窗」指定了frame屬性,
對以後想要針對gcin來設計gtk theme的人來說會方便許多,
因為就此調整過後,設計者就能分別為「顯示外框」和「gtab的拆碼視窗」設計不同樣式了。

edited: 3
winlin
43
Promote 0 Bookmark 02011-04-05quote  

感謝eliu在1.6.1-pre5已經收錄小弟的提議。
經過這幾天的測試,小弟發現純「注音」輸入法也可以比照辦理(修改過後的win-pho.cpp如附件)。
如果eliu兄有意願,可以考慮再收錄這個提議,同樣也只是在win-pho.cpp(如附件)加入2行就行了:

第152行:

    gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);

第189行:

    gtk_frame_set_shadow_type(GTK_FRAME(frame_pho), GTK_SHADOW_OUT);

 

下面會拿一些screenshot來對照注音和gtab輸入法套用這個設定之後的差異,請耐心往下看。

由於1.6.1-pre5開始已經可以針對「 GTK_SHADOW_OUT」作設定,
所以只要針對gtk佈景主題作某些修改,就可以讓gtab輸入法的拆碼區像詞音輸入法一樣漂亮!以下是一個demo。

幾年前小弟有提到過一個不錯的gtk theme:ale-panther_gtk2
原先這個主題套用在詞音才會好看,gtab用起來效果平板,比起詞音實在遜多了:


在小弟針對gtab輸入法在theme的gtkrc裡加了幾行相關設定之後,

image         {           
function = SHADOW            
recolorable     = TRUE           
shadow = OUT            
file = "button1.png"            
border          = { 6,6,6,6 }           
stretch = TRUE
}

這樣一來,gtab輸入法的拆碼框就會套用button樣式,而使得介面效果和詞音輸入法相近了,
以下是修改前後的對照:



如果eliu兄願意在win-pho.cpp多加上那一行,之後「純注音」也可以和詞音一樣漂亮!感謝~

winlin
44
Promote 0 Bookmark 02011-04-11quote  

eliu兄好:

剛剛看到ubuntu-tw有人提微軟的螢幕小鍵盤OSK,查了一下

http://jinnsblog.blogspot.com/2008/10/osk-on-screen-keyboard.html

微軟的螢幕小鍵盤外圍有邊框包起來,小弟個人覺得有邊界會讓畫面看起來比較「精緻」一些,
如果eliu兄以後有空和覺得有必要,可否考慮:
讓勾選「顯示內框」時,能否一併套用到「小鍵盤」、「符號表」和「gcin-message」?
(像前2個討論串一樣設成 GTK_SHADOW_ETCHED_OUT

我本來想改好source code再放上來,但是這次看不懂win-kbm.cpp、win-message.cpp和win-sym.cpp了...

如果eliu兄覺得不妥或沒必要,不用改也沒關係,這個提議只算是錦上添花而已。感謝~

以下是有無邊框的對照圖:

edited: 3
winlin
45
Promote 0 Bookmark 02011-05-14quote  

eliu兄好:

gcin預設不使用「顯示內框」,不知道是什麼緣故?也許是為了走精簡風或節省記憶體?
小弟個人覺得預設開啟會比較好看一些些,也許會讓初次接觸gcin的人覺得沒那麼「樸實」。 Laughing
不過,eliu兄或覺得OK再改好了,感謝~

winlin
46
Promote 0 Bookmark 02011-05-15quote  

感謝eliu兄:1.6.4-pre6預設此一特色了!

prev,1,2

cht電腦資訊gcin
adm Find login register
views:166257