2016-04-19 12 views
0

Ein Methodenaufruf in Poppler gibt ein GDate Objekt in meinem Python-Code zurück. Ich finde keinen Weg, dieses Objekt schön zu drucken.PyGObject GTK + GLib.Date strftime()

die Python GI API Reference Folgen, kam ich mit dem Follow-up:

gdate_object = annot_mapping.annot.get_date() 
destination_buffer = '.' * 50 
print('Output:', GLib.Date.strftime(destination_buffer, 50, '%c', gdate_object)) 
print('Buffer:', annot_time) 

Dies ist jedoch nichts im Puffer platziert, während es tut Ausgabe der schriftlichen Puffergröße.

Wie bekomme ich Zugriff auf den Zielpuffer?

Antwort

1

Sieht so aus, als hätte niemand diese API dokumentiert, so dass sie für Introspektionsbindungen unterbrochen wird.

Ich habe einen einfachen Patch gemacht, aber es scheint, dass pygobject die Zuweisung von String-Puffern nicht mag, ich werde mit dem Upstream darüber sprechen.

diff --git a/glib/gdate.c b/glib/gdate.c 
index bea2448..bacdb93 100644 
--- a/glib/gdate.c 
+++ b/glib/gdate.c 
@@ -2418,8 +2418,8 @@ win32_strftime_helper (const GDate  *d, 

/** 
    * g_date_strftime: 
- * @s: destination buffer 
- * @slen: buffer size 
+ * @s: (out caller-allocates) (array length=slen): destination buffer 
+ * @slen: (in): buffer size 
    * @format: format string 
    * @date: valid #GDate 
    * 
+0

Wow, danke fürs Eingraben! Ich bin gespannt, was sie stromaufwärts sagen werden. Wenn Sie einen Fehlerbericht einreichen müssen, lassen Sie es mich bitte wissen. – timothymctim

+0

Also von dem, was ich erfahre, wird diese Funktion wahrscheinlich nie aus einer nach innen gekehrten Sprache verwendbar sein. lgi unterstützt nur Arrays mit fester Größe (was sinnvoll ist) und pygobject unterstützt sie überhaupt nicht. Jemand schlug vor, es in eine GDateTime umzuwandeln und 'g_date_time_format()' wenn möglich zu verwenden. Die API war nur schlecht für die GI-Nutzung ausgelegt. – TingPing

Verwandte Themen