Hirdetés
- Samsung Galaxy S23 Ultra - non plus ultra
- Yettel topik
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
- Samsung Galaxy A56 - megbízható középszerűség
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy S25 - végre van kicsi!
- Telekom mobilszolgáltatások
- Apple iPhone 13 Pro Max - őnagysága
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Az Apple bemutatta az iPhone 17-et
-
Mobilarena
Új hozzászólás Aktív témák
-
Forest_roby
őstag
Hi! ha ráérnétek ránéznétek erre a kódrészletre: /elég nagy/
void
on_save_xml_button_clicked (GtkButton *button,
gpointer user_data)
{
g_message(''%s(): start: '', __func__);
//az xml dokument elõállításához
xmlDocPtr document;
xmlNodePtr styles;
xmlNodePtr style;
xmlNodePtr text;
xmlNodePtr property;
GtkWidget *window;
GtkTextView *text_view;
GtkTextBuffer *text_buffer;
GtkTextIter start_line;
GtkTextIter end_line;
gchar *the_text;
GSList *activ_tags;
GSList *p;
gchar *name;
gchar *font;
//file keresõ ablakhoz
GtkWidget *save_file;
gchar *file_name;
int response;
//fájl név
window = GTK_WIDGET(lookup_widget(GTK_WIDGET(button), ''myeditor_window''));
file_name = (gchar*)g_object_get_data(G_OBJECT(window),''file_name'');
if (file_name == NULL){
save_file = gtk_file_chooser_dialog_new(''Save file'', NULL,
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
NULL);
response = gtk_dialog_run(GTK_DIALOG(save_file));
if (response == GTK_RESPONSE_OK){
file_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(save_file));
g_object_set_data(G_OBJECT(window), ''file_name'', file_name);
g_message(''%s(): file name is: %s'', __func__, file_name);
}else if (response == GTK_RESPONSE_CANCEL){
gtk_widget_destroy(save_file);
return;
}
gtk_widget_destroy(save_file);
}
//fájl név megvan
//xml dokumentum elõállítása
document = xmlNewDoc(''1.0''); //új dokumentum a memóriában
document -> children = xmlNewDocNode(document, NULL, ''doc'', NULL); //gyökérelem létrehozása
styles = xmlNewChild(document -> children, NULL, ''styles'', NULL); //stílusok
text = xmlNewChild(document -> children, NULL, ''text'', NULL); //szöveg - tulajdonságokkal
text_view = GTK_TEXT_VIEW(lookup_widget(window, ''myeditor_textview''));
text_buffer = gtk_text_view_get_buffer(text_view);
gtk_text_buffer_get_start_iter(text_buffer, &start_line);
end_line = start_line;
gint counter = 1;
while (!gtk_text_iter_is_end(&end_line)){
gtk_text_iter_forward_to_line_end(&end_line);
the_text = gtk_text_buffer_get_text(text_buffer, &start_line, &end_line, TRUE);
/*if (activ_tags != NULL){
g_object_get(G_OBJECT(g_slist_nth_data(activ_tags, 0)), ''name'', &name, NULL);
g_object_get(G_OBJECT(g_slist_nth_data(activ_tags, 0)), ''font'', &font, NULL);
}else{
name = ''Default'';
font = ''Arial Normal 8'';
}
//stílus
style = xmlNewChild(styles, NULL, ''style'', NULL);
xmlSetProp(style, ''name'', name);
xmlSetProp(style, ''font'', font);
//szöveg
property = xmlNewChild(text, NULL, ''proporty'', the_text);
xmlSetProp(property, ''style'', name);*/
/*******************************************************************************************/
activ_tags = gtk_text_iter_get_tags(&start_line);
gchar *n;
n=g_strdup_printf(''%d. style'', counter);
counter=counter+1;
style = xmlNewChild(styles, NULL, ''style'', NULL);
xmlSetProp(style, ''name'', n);
g_message(''ITT VAN! n:%s counter: %d'', n, counter);
for(p = gtk_text_iter_get_tags(&start_line); p != NULL; p = g_slist_next(p))
{
gchar *name;
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''name'', &name, NULL);
//g_message(''Tag neve: %s'', name);
if( strncmp(name, ''justify'', 7) == 0){
gchar *m;
m=g_strdup_printf(''%s'',name);
m = &m[8];
//g_message(''\t\tjustification:\t\t%s'', m);
xmlSetProp(style, ''justification'', m);
//g_free(m);
}else if( strncmp(name, ''foreground:'', 11) == 0){
gchar *m;
m=g_strdup_printf(''%s'',name);
m = &m[12];
//g_message(''\t\tforeground:\t\t%s'', m);
xmlSetProp(style, ''foreground'', m);
//g_free(m);
}else if( strncmp(name, ''background:'', 11) == 0){
gchar *m;
m=g_strdup_printf(''%s'',name);
m = &m[12];
//g_message(''\t\tbackground:\t\t%s'', m);
xmlSetProp(style, ''background'', m);
//g_free(m);
}else if( strncmp(name, ''indent:'', 7) == 0){
gint *ind;
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''indent'', &ind, NULL);
//g_message(''\t\tindent:\t\t\t%d'', ind);
xmlSetProp(style, ''indent'', ind);
}else if( strncmp(name, ''own:'', 4) == 0){
gchar *font;
gint *left_margin;
gint *right_margin;
gint *pixels_above_lines;
gint *pixels_below_lines;
gint *pixels_inside_wrap;
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''font'', &font, NULL);
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''left-margin'', &left_margin, NULL);
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''right-margin'', &right_margin, NULL);
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''pixels-above-lines'', &pixels_above_lines, NULL);
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''pixels-below-lines'', &pixels_below_lines, NULL);
g_object_get(G_OBJECT(g_slist_nth_data(p, 0)), ''pixels-inside-wrap'', &pixels_inside_wrap, NULL);
//g_message(''\t\tfont:\t\t\t%s'', font);
xmlSetProp(style, ''font'', font);
//g_message(''\t\tleft-margin:\t\t%d'', left_margin);
xmlSetProp(style, ''left-margin'', left_margin);
//g_message(''\t\tright-margin:\t\t%d'', right_margin);
xmlSetProp(style, ''right-margin'', right_margin);
//g_message(''\t\tpixels-above-lines:\t%d'', pixels_above_lines);
xmlSetProp(style, ''pixels-above-lines'', pixels_above_lines);
//g_message(''\t\tpixels-below-lines:\t%d'', pixels_below_lines);
xmlSetProp(style, ''pixels-below-lines'', pixels_below_lines);
//g_message(''\t\tpixels-inside-wrap:\t%d'', pixels_inside_wrap);
xmlSetProp(style, ''pixels-inside-wrap'', pixels_inside_wrap);
}else{
g_message(''HA EZT AZ ÜZIT MEGLÁTOD, AKKOR VMI BAJ VAN!'');
g_message(''name: %s'', name);
}
}
/************************************************************************************/
//szöveg
property = xmlNewChild(text, NULL, ''proporty'', the_text);
xmlSetProp(property, ''style'', n);
g_free(n);
gtk_text_iter_forward_line(&start_line);
}
//xml dokumentum elõállítása - befejezve
//fájlba mentés
if (!xmlSaveFormatFileEnc(file_name, document, ''UTF-8'', 1)){//memóriában levó állomány mentése
g_error(''Error saving document: %m'');
}
//fájlba mentés - befejezve
}
Gomblenyomásra a szövegszerkesztőben lévő szöveg bekezdésenkénti ( soronkénti ) lementését végzi xml formátumba ( bekezdésenként léptet a stylusok miatt *minden bekezdéshez társít 1db stylust -nincs stylus átlapolódás bekezdéseken belül ill között. ).
Eléggé nagy a kód és nehezen találom meg a hibákat. Van amikor jól műxik, van amikor rosszúl és van amikor fagy -eléggé rendszertelenűl. Valszeg változó felszabadítási problémákból elég sok lesz, nem tom.
Légyszi segítsetek a hibákat kiszűrni, akinek kell a progi tesztelés miatt msn -en át tudom küldeni. ( linux alatt írtam )
Előre is köszi!
Forest
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Kormányok / autós szimulátorok topikja
- Kertészet, mezőgazdaság topik
- Parfüm topik
- Samsung Galaxy S23 Ultra - non plus ultra
- LED világítás a lakásban
- Luck Dragon: Asszociációs játék. :)
- Yettel topik
- One otthoni szolgáltatások (TV, internet, telefon)
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- További aktív témák...
- 1080Ti FE Accelero Xtreme IV hűtővel
- ÚJ Apple Macbook Air 15,3 M4 /16GB/256GB - Éjfekete - (2025) - mw1l3mg/a - MAGYAR - 3 év garancia
- Apple Watch Series 4 Nike 44mm Teljes doboz, sok tartozék, 100% akku
- LG 77C4 - 77" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - 1000 Nits
- Dell G15 5530 gyári kijelzőt keresek (DP/N: 0VPD4)
- Iphone 12 Mini 64GB // Számla + Garancia //
- Bomba ár! Dell Latitude E7470 - i5-6GEN I 8GB I 256GB SSD I 14" FHD I HDMI I CAM I W11 I Gari!
- GYÖNYÖRŰ iPhone XR 64GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3117
- Bomba ár! Dell Latitude E5450 - i5-5GEN I 4GB I 500GB I 14" HD I HDMI I Cam I W10 I Gari!
- Acer TravelMate P214 i3-1115G4 12GB 256GB 14" FHD 1év garancia
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest