2010-05-07 207 views

回答

3

glade2適合我。但如果您使用新的glade3功能,它不會對您有所幫助。

+0

你能提供鏈接glade2下載,我找不到它在任何地方。只有glade3鏈接。我正在尋找glade2的窗口。 – User7723337 2010-05-07 09:59:57

+0

嘗試https://sourceforge.net/projects/gladewin32/files/ (對不起,如果它不工作,我使用Linux) – 2010-05-07 20:40:59

5

您不需要工具。就在你最喜歡的腳本語言編寫一個腳本來格式化您的林間空地文件作爲C字符串字面:

例如,讓我們把它glade_file.c

const gchar *my_glade_file = 
    "<interface>" 
     "<object class=\"GtkDialog\">" 
      "<et-cetera />" 
     "</object>" 
    "</interface>"; 

編譯glade_file.c到你的程序,那麼這樣當您建立你的界面:

extern const gchar *my_glade_file; 
result = gtk_builder_add_from_string(builder, my_glade_file, -1, &error); 
+1

我想看看生成的代碼。我在林間空地創建了一個非常複雜的複合小部件,如果我通過手動編碼開始實施它,則需要很長時間。所以我正在尋找一個轉換器,它將爲我提供這個我在林間空地創建的小部件的源代碼。 – User7723337 2010-05-07 10:02:16

+0

在Glade 3中沒有生成代碼。如果您已經在Glade中創建了這個小部件,爲什麼要手動重新實現呢? – ptomato 2010-05-07 13:47:42

+0

,因爲我想創建它的列表。 – User7723337 2010-05-07 13:52:25

1

我不得不寫一個小python腳本來做到這一點,希望這有助於其他人:

import xml.dom.minidom 
class XmlWriter: 
    def __init__(self): 
     self.snippets = [] 
    def write(self, data): 
     if data.isspace(): return 
     self.snippets.append(data) 
    def __str__(self): 
     return ''.join(self.snippets) 

if __name__ == "__main__": 
    writer = XmlWriter() 
    xml = xml.dom.minidom.parse("example.glade") 
    xml.writexml(writer) 
    strippedXml = ("%s" % (writer)).replace('"', '\\"') 

    byteCount = len(strippedXml) 
    baseOffset=0 
    stripSize=64 

    output = open("example.h", 'w') 
    output.write("static const char gladestring [] = \n{\n") 
    while baseOffset < byteCount: 
     skipTrailingQuote = 0 
     if baseOffset+stripSize < byteCount and strippedXml[baseOffset+stripSize] == '"': 
      skipTrailingQuote = 1 
     output.write(' "%s"\n' % (strippedXml[baseOffset:baseOffset+stripSize+skipTrailingQuote])) 
     baseOffset += stripSize + skipTrailingQuote 

    output.write("};\n") 
    output.close()