3 Copyright (C) 2000 Naba Kumar <gnome.org>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 #include <glade/glade.h>
27 #include <libanjuta/anjuta-utils.h>
28 #include <libanjuta/anjuta-debug.h>
30 #include "text_editor.h"
31 #include "style-editor.h"
33 #define string_assign(dest, src) g_free ((*dest)); (*dest) = g_strdup ((src));
34 #define GLADE_FILE PACKAGE_DATA_DIR"/glade/anjuta-editor-scintilla.glade"
36 gchar
*hilite_style
[] = {
37 "Normal <Default>", "style.*.32",
38 "Comments", "style.default.comment",
39 "Numbers", "style.default.number",
40 "Keywords", "style.default.keyword",
41 "System Keywords", "style.default.syskeyword",
42 "Local Keywords", "style.default.localkeyword",
43 "Double Quoted Strings", "style.default.doublequote",
44 "Single Quoted Strings", "style.default.singlequote",
45 "Unclosed Strings", "style.default.unclosedstring",
46 "Operators","style.default.operator",
47 "Preprocessor Directives", "style.default.preprocessor",
48 "Identifiers (Not C Style)", "style.default.identifier",
49 "Definitions (Not C Style)", "style.default.definition",
50 "Functions (Not C Style)", "style.default.function",
51 "Matched Braces", "style.*.34",
52 "Incomplete Brace", "style.*.35",
53 "Control Characters", "style.*.36",
54 "Line Numbers", "style.*.33",
55 "Indentation Guides", "style.*.37",
59 typedef struct _StyleData StyleData
;
66 gboolean bold
, italics
, underlined
;
70 gboolean font_use_default
;
71 gboolean attrib_use_default
;
72 gboolean fore_use_default
;
73 gboolean back_use_default
;
76 struct _StyleEditorPriv
80 GtkWidget
*hilite_item_combo
;
81 GtkWidget
*font_picker
;
82 GtkWidget
*font_bold_check
;
83 GtkWidget
*font_italics_check
;
84 GtkWidget
*font_underlined_check
;
85 GtkWidget
*fore_colorpicker
;
86 GtkWidget
*back_colorpicker
;
87 GtkWidget
*font_use_default_check
;
88 GtkWidget
*font_attrib_use_default_check
;
89 GtkWidget
*fore_color_use_default_check
;
90 GtkWidget
*back_color_use_default_check
;
91 GtkWidget
*caret_fore_color
;
92 GtkWidget
*selection_fore_color
;
93 GtkWidget
*selection_back_color
;
94 GtkWidget
*calltip_back_color
;
97 StyleData
*default_style
;
98 StyleData
*current_style
;
102 style_data_get_string (StyleData
* sdata
)
106 g_return_val_if_fail (sdata
!= NULL
, NULL
);
109 if ((sdata
->font
) && strlen (sdata
->font
) && sdata
->font_use_default
== FALSE
)
111 str
= g_strconcat ("font:", sdata
->font
, NULL
);
113 if (sdata
->size
> 0 && sdata
->font_use_default
== FALSE
)
119 g_strdup_printf ("%s,size:%d", tmp
,
124 str
= g_strdup_printf ("size:%d", sdata
->size
);
127 if (sdata
->attrib_use_default
== FALSE
)
134 str
= g_strconcat (tmp
, ",bold", NULL
);
138 str
= g_strdup ("bold");
145 str
= g_strconcat (tmp
, ",notbold", NULL
);
149 str
= g_strdup ("notbold");
156 str
= g_strconcat (tmp
, ",italics", NULL
);
160 str
= g_strdup ("italics");
167 str
= g_strconcat (tmp
, ",notitalics", NULL
);
171 str
= g_strdup ("notitalics");
173 if (sdata
->underlined
)
178 str
= g_strconcat (tmp
, ",underlined", NULL
);
182 str
= g_strdup ("underlined");
190 g_strconcat (tmp
, ",notunderlined",
195 str
= g_strdup ("notunderlined");
197 if (sdata
->eolfilled
)
202 str
= g_strconcat (tmp
, ",eolfilled", NULL
);
206 str
= g_strdup ("eolfilled");
214 g_strconcat (tmp
, ",noteolfilled",
219 str
= g_strdup ("noteolfilled");
222 if (sdata
->fore_use_default
== FALSE
)
227 str
= g_strconcat (tmp
, ",fore:", sdata
->fore
, NULL
);
231 str
= g_strconcat ("fore:", sdata
->fore
, NULL
);
233 if (sdata
->back_use_default
== FALSE
)
238 str
= g_strconcat (tmp
, ",back:", sdata
->back
, NULL
);
242 str
= g_strconcat ("back:", sdata
->back
, NULL
);
250 style_data_set_font (StyleData
* sdata
, const gchar
*font
)
252 PangoFontDescription
*desc
;
253 const gchar
*font_family
;
255 g_return_if_fail (sdata
);
257 desc
= pango_font_description_from_string (font
);
258 font_family
= pango_font_description_get_family(desc
);
259 string_assign (&sdata
->font
, font_family
);
261 /* Change to lower case */
264 gchar
*s
= sdata
->font
;
271 pango_font_description_free (desc
);
275 style_data_set_font_size_from_pango (StyleData
* sdata
, const gchar
*font
)
277 PangoFontDescription
*desc
;
279 g_return_if_fail (sdata
);
281 desc
= pango_font_description_from_string (font
);
282 sdata
->size
= pango_font_description_get_size (desc
) / PANGO_SCALE
;
283 pango_font_description_free (desc
);
287 style_data_set_fore (StyleData
* sdata
, const gchar
*fore
)
289 g_return_if_fail (sdata
);
290 string_assign (&sdata
->fore
, fore
);
294 style_data_set_back (StyleData
* sdata
, const gchar
*back
)
296 g_return_if_fail (sdata
);
297 string_assign (&sdata
->back
, back
);
301 style_data_set_item (StyleData
* sdata
, const gchar
*item
)
303 g_return_if_fail (sdata
);
304 string_assign (&sdata
->item
, item
);
308 style_data_new (void)
311 sdata
= g_new0 (StyleData
, 1);
313 sdata
->font
= g_strdup ("");
315 sdata
->font_use_default
= TRUE
;
316 sdata
->attrib_use_default
= TRUE
;
317 sdata
->fore_use_default
= TRUE
;
318 sdata
->back_use_default
= TRUE
;
319 style_data_set_fore (sdata
, "#000000"); /* Black */
320 style_data_set_back (sdata
, "#FFFFFF"); /* White */
325 style_data_destroy (StyleData
* sdata
)
330 g_free (sdata
->item
);
332 g_free (sdata
->font
);
334 g_free (sdata
->fore
);
336 g_free (sdata
->back
);
341 style_data_new_parse (gchar
* style_string
)
344 StyleData
*style_data
;
346 style_data
= style_data_new ();
350 val
= (style_string
!= NULL
)? g_strdup (style_string
) : NULL
;
354 gchar
*cpComma
, *colon
;
356 cpComma
= strchr (opt
, ',');
359 colon
= strchr (opt
, ':');
362 if (0 == strcmp (opt
, "italics"))
364 style_data
->italics
= TRUE
;
365 style_data
->attrib_use_default
= FALSE
;
367 if (0 == strcmp (opt
, "notitalics"))
369 style_data
->italics
= FALSE
;
370 style_data
->attrib_use_default
= FALSE
;
372 if (0 == strcmp (opt
, "bold"))
374 style_data
->bold
= TRUE
;
375 style_data
->attrib_use_default
= FALSE
;
377 if (0 == strcmp (opt
, "notbold"))
379 style_data
->bold
= FALSE
;
380 style_data
->attrib_use_default
= FALSE
;
382 if (0 == strcmp (opt
, "font"))
384 style_data_set_font (style_data
, colon
);
385 style_data
->font_use_default
= FALSE
;
387 if (0 == strcmp (opt
, "fore"))
389 style_data_set_fore (style_data
, colon
);
390 style_data
->fore_use_default
= FALSE
;
392 if (0 == strcmp (opt
, "back"))
394 style_data_set_back (style_data
, colon
);
395 style_data
->back_use_default
= FALSE
;
397 if (0 == strcmp (opt
, "size"))
399 style_data
->size
= atoi (colon
);
400 style_data
->font_use_default
= FALSE
;
402 if (0 == strcmp (opt
, "eolfilled"))
403 style_data
->eolfilled
= TRUE
;
404 if (0 == strcmp (opt
, "noteolfilled"))
405 style_data
->eolfilled
= FALSE
;
406 if (0 == strcmp (opt
, "underlined"))
408 style_data
->underlined
= TRUE
;
409 style_data
->attrib_use_default
= FALSE
;
411 if (0 == strcmp (opt
, "notunderlined"))
413 style_data
->underlined
= FALSE
;
414 style_data
->fore_use_default
= FALSE
;
427 on_use_default_font_toggled (GtkToggleButton
* tb
, gpointer data
)
433 g_return_if_fail (data
);
436 gtk_widget_set_sensitive (p
->priv
->font_picker
, TRUE
);
437 state
= gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tb
));
440 font_name
= g_strdup_printf ("%s %d",
441 p
->priv
->default_style
->font
,
442 p
->priv
->default_style
->size
);
446 if (p
->priv
->current_style
->font
&&
447 strlen (p
->priv
->current_style
->font
))
449 font_name
= g_strdup_printf ("%s %d",
450 p
->priv
->current_style
->font
,
451 p
->priv
->current_style
->size
);
455 font_name
= g_strdup_printf ("%s %d",
456 p
->priv
->default_style
->font
,
457 p
->priv
->default_style
->size
);
460 gtk_widget_set_sensitive (p
->priv
->font_picker
, !state
);
461 gtk_font_button_set_font_name (GTK_FONT_BUTTON (p
->priv
->font_picker
),
467 on_use_default_attrib_toggled (GtkToggleButton
* tb
, gpointer data
)
471 g_return_if_fail (data
);
473 gtk_widget_set_sensitive (p
->priv
->font_bold_check
, TRUE
);
474 gtk_widget_set_sensitive (p
->priv
->font_italics_check
, TRUE
);
475 gtk_widget_set_sensitive (p
->priv
->font_underlined_check
, TRUE
);
476 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tb
)))
478 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
479 (p
->priv
->font_bold_check
),
480 p
->priv
->default_style
->bold
);
481 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
482 (p
->priv
->font_italics_check
),
483 p
->priv
->default_style
->italics
);
484 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
486 font_underlined_check
),
487 p
->priv
->default_style
->underlined
);
488 gtk_widget_set_sensitive (p
->priv
->font_bold_check
, FALSE
);
489 gtk_widget_set_sensitive (p
->priv
->font_italics_check
,
491 gtk_widget_set_sensitive (p
->priv
->font_underlined_check
,
496 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
497 (p
->priv
->font_bold_check
),
498 p
->priv
->current_style
->bold
);
499 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
500 (p
->priv
->font_italics_check
),
501 p
->priv
->current_style
->italics
);
502 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
504 font_underlined_check
),
505 p
->priv
->current_style
->underlined
);
510 on_use_default_fore_toggled (GtkToggleButton
* tb
, gpointer data
)
515 g_return_if_fail (data
);
518 gtk_widget_set_sensitive (p
->priv
->fore_colorpicker
, TRUE
);
519 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tb
)))
521 gdk_color_parse (p
->priv
->default_style
->fore
, &color
);
522 gtk_color_button_set_color (GTK_COLOR_BUTTON (p
->priv
->fore_colorpicker
),
524 gtk_widget_set_sensitive (p
->priv
->fore_colorpicker
, FALSE
);
528 gdk_color_parse (p
->priv
->current_style
->fore
, &color
);
529 gtk_color_button_set_color (GTK_COLOR_BUTTON (p
->priv
->fore_colorpicker
),
535 on_use_default_back_toggled (GtkToggleButton
* tb
, gpointer data
)
540 g_return_if_fail (data
);
542 gtk_widget_set_sensitive (p
->priv
->back_colorpicker
, TRUE
);
543 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tb
)))
545 gdk_color_parse (p
->priv
->current_style
->back
, &color
);
546 gtk_color_button_set_color (GTK_COLOR_BUTTON (p
->priv
->back_colorpicker
),
548 gtk_widget_set_sensitive (p
->priv
->back_colorpicker
, FALSE
);
552 gdk_color_parse (p
->priv
->default_style
->back
, &color
);
553 gtk_color_button_set_color (GTK_COLOR_BUTTON (p
->priv
->back_colorpicker
),
559 on_hilite_style_entry_changed (GtkEditable
* editable
, gpointer user_data
)
562 const gchar
*style_item
;
564 g_return_if_fail (user_data
);
567 style_item
= gtk_entry_get_text (GTK_ENTRY (editable
));
568 if (!style_item
|| strlen (style_item
) <= 0)
570 if (p
->priv
->current_style
)
576 font
= gtk_font_button_get_font_name (GTK_FONT_BUTTON
577 (p
->priv
->font_picker
));
580 style_data_set_font (p
->priv
->current_style
, font
);
581 style_data_set_font_size_from_pango (p
->priv
->current_style
, font
);
585 style_data_set_font (p
->priv
->current_style
,
586 p
->priv
->default_style
->font
);
587 p
->priv
->current_style
->size
= p
->priv
->default_style
->size
;
590 p
->priv
->current_style
->bold
=
591 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
592 (p
->priv
->font_bold_check
));
593 p
->priv
->current_style
->italics
=
594 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
595 (p
->priv
->font_italics_check
));
596 p
->priv
->current_style
->underlined
=
597 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
598 (p
->priv
->font_underlined_check
));
599 p
->priv
->current_style
->eolfilled
=
600 (strcmp (style_item
, hilite_style
[1]) == 0);
602 gtk_color_button_get_color (GTK_COLOR_BUTTON (p
->priv
->fore_colorpicker
),
604 str
= anjuta_util_string_from_color (color
.red
,
607 style_data_set_fore (p
->priv
->current_style
, str
);
610 gtk_color_button_get_color (GTK_COLOR_BUTTON (p
->priv
->back_colorpicker
),
612 str
= anjuta_util_string_from_color (color
.red
,
615 style_data_set_back (p
->priv
->current_style
, str
);
618 p
->priv
->current_style
->font_use_default
=
619 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
620 (p
->priv
->font_use_default_check
));
621 p
->priv
->current_style
->attrib_use_default
=
622 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
623 (p
->priv
->font_attrib_use_default_check
));
624 p
->priv
->current_style
->fore_use_default
=
625 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
626 (p
->priv
->fore_color_use_default_check
));
627 p
->priv
->current_style
->back_use_default
=
628 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
629 (p
->priv
->back_color_use_default_check
));
631 p
->priv
->current_style
=
632 g_object_get_data (G_OBJECT (p
->priv
->dialog
),
635 g_return_if_fail (p
->priv
->current_style
);
637 /* We need to first toggle then set active to work properly */
638 gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON
639 (p
->priv
->font_use_default_check
));
640 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
641 (p
->priv
->font_use_default_check
),
642 p
->priv
->current_style
->font_use_default
);
644 gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON
645 (p
->priv
->font_attrib_use_default_check
));
646 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
647 (p
->priv
->font_attrib_use_default_check
),
648 p
->priv
->current_style
->attrib_use_default
);
650 gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON
651 (p
->priv
->fore_color_use_default_check
));
652 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
653 (p
->priv
->fore_color_use_default_check
),
654 p
->priv
->current_style
->fore_use_default
);
656 gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON
657 (p
->priv
->back_color_use_default_check
));
658 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
659 (p
->priv
->back_color_use_default_check
),
660 p
->priv
->current_style
->back_use_default
);
664 sync_from_props (StyleEditor
*se
)
669 g_return_if_fail (se
);
670 /* Never hurts to use g_object_*_data as temp hash buffer */
675 if (hilite_style
[i
] == NULL
)
677 str
= sci_prop_get_expanded (se
->props
, hilite_style
[i
+ 1]);
678 sdata
= style_data_new_parse (str
);
679 /* DEBUG_PRINT ("Parsing %s => %s", hilite_style[i + 1], str); */
683 style_data_set_item (sdata
, hilite_style
[i
]);
684 g_object_set_data_full (G_OBJECT (se
->priv
->dialog
),
685 hilite_style
[i
], sdata
,
686 (GtkDestroyNotify
)style_data_destroy
);
688 se
->priv
->default_style
=
689 gtk_object_get_data (GTK_OBJECT (se
->priv
->dialog
),
691 se
->priv
->current_style
= NULL
;
693 on_hilite_style_entry_changed (GTK_EDITABLE (GTK_COMBO
694 (se
->priv
->hilite_item_combo
)->entry
), se
);
696 str
= sci_prop_get (se
->props
, CARET_FORE_COLOR
);
701 gdk_color_parse (str
, &color
);
702 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->caret_fore_color
),
710 gdk_color_parse ("#000000", &color
);
711 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->caret_fore_color
),
715 str
= sci_prop_get (se
->props
, CALLTIP_BACK_COLOR
);
720 gdk_color_parse (str
, &color
);
721 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->calltip_back_color
),
729 gdk_color_parse ("#E6D6B6", &color
);
730 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->calltip_back_color
),
734 str
= sci_prop_get (se
->props
, SELECTION_FORE_COLOR
);
739 gdk_color_parse (str
, &color
);
740 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->selection_fore_color
),
748 gdk_color_parse ("#FFFFFF", &color
);
749 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->selection_fore_color
),
753 str
= sci_prop_get (se
->props
, SELECTION_BACK_COLOR
);
758 gdk_color_parse (str
, &color
);
759 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->selection_back_color
),
767 gdk_color_parse ("#000000", &color
);
768 gtk_color_button_set_color (GTK_COLOR_BUTTON (se
->priv
->selection_back_color
),
774 set_one_color (PropsID props
, gchar
*key
, GtkWidget
*picker
)
778 gtk_color_button_get_color (GTK_COLOR_BUTTON (picker
), &color
);
779 str
= anjuta_util_string_from_color (color
.red
,
784 sci_prop_set_with_key (props
, key
, str
);
790 sync_to_props (StyleEditor
*se
)
795 g_return_if_fail (se
);
796 /* Sync the current item */
797 on_hilite_style_entry_changed (GTK_EDITABLE (GTK_COMBO
798 (se
->priv
->hilite_item_combo
)->entry
), se
);
800 /* Transfer to props */
805 if (hilite_style
[i
] == NULL
)
808 gtk_object_get_data (GTK_OBJECT (se
->priv
->dialog
),
810 str
= style_data_get_string (sdata
);
813 sci_prop_set_with_key (se
->props
, hilite_style
[i
+ 1], str
);
817 set_one_color (se
->props
, CARET_FORE_COLOR
,
818 se
->priv
->caret_fore_color
);
820 set_one_color (se
->props
, CALLTIP_BACK_COLOR
,
821 se
->priv
->calltip_back_color
);
823 set_one_color (se
->props
, SELECTION_FORE_COLOR
,
824 se
->priv
->selection_fore_color
);
826 set_one_color (se
->props
, SELECTION_BACK_COLOR
,
827 se
->priv
->selection_back_color
);
831 apply_styles (StyleEditor
*se
)
837 filename
= anjuta_util_get_user_config_file_path ("scintilla","editor-style.properties",NULL
);
838 ofile
= fopen (filename
, "w");
840 DEBUG_PRINT ("Could not open %s for writing", filename
);
842 style_editor_save (se
, ofile
);
846 anjuta_preferences_set_int (se
->prefs
, DISABLE_SYNTAX_HILIGHTING
, 1);
847 anjuta_preferences_set_int (se
->prefs
, DISABLE_SYNTAX_HILIGHTING
, 0);
851 on_response (GtkWidget
*dialog
, gint res
, StyleEditor
*se
)
853 g_return_if_fail (se
);
857 case GTK_RESPONSE_APPLY
:
860 case GTK_RESPONSE_OK
:
862 case GTK_RESPONSE_CANCEL
:
863 style_editor_hide (se
);
869 on_delete_event (GtkWidget
*dialog
, GdkEvent
*event
, StyleEditor
*se
)
871 g_return_if_fail (se
);
872 style_editor_hide (se
);
876 create_style_editor_gui (StyleEditor
* se
)
879 GtkWidget
*pref_dialog
;
883 g_return_if_fail (se
);
884 g_return_if_fail (se
->priv
->dialog
== NULL
);
886 gxml
= glade_xml_new (GLADE_FILE
, "style_editor_dialog", NULL
);
887 se
->priv
->dialog
= glade_xml_get_widget (gxml
, "style_editor_dialog");
888 gtk_widget_show (se
->priv
->dialog
);
889 se
->priv
->font_picker
= glade_xml_get_widget (gxml
, "font");
890 se
->priv
->hilite_item_combo
= glade_xml_get_widget (gxml
, "combo");
891 se
->priv
->font_bold_check
= glade_xml_get_widget (gxml
, "bold");
892 se
->priv
->font_italics_check
= glade_xml_get_widget (gxml
, "italic");
893 se
->priv
->font_underlined_check
= glade_xml_get_widget (gxml
, "underlined");
894 se
->priv
->fore_colorpicker
= glade_xml_get_widget (gxml
, "fore_color");
895 se
->priv
->back_colorpicker
= glade_xml_get_widget (gxml
, "back_color");
896 se
->priv
->font_use_default_check
= glade_xml_get_widget (gxml
, "font_default");
897 se
->priv
->font_attrib_use_default_check
= glade_xml_get_widget (gxml
, "attributes_default");
898 se
->priv
->fore_color_use_default_check
= glade_xml_get_widget (gxml
, "fore_default");
899 se
->priv
->back_color_use_default_check
= glade_xml_get_widget (gxml
, "back_default");
900 se
->priv
->caret_fore_color
= glade_xml_get_widget (gxml
, "caret");
901 se
->priv
->calltip_back_color
= glade_xml_get_widget (gxml
, "calltip");
902 se
->priv
->selection_fore_color
= glade_xml_get_widget (gxml
, "selection_fore");
903 se
->priv
->selection_back_color
= glade_xml_get_widget (gxml
, "selection_back");
907 if (hilite_style
[i
] == NULL
)
909 list
= g_list_append (list
, hilite_style
[i
]);
911 gtk_combo_set_popdown_strings (GTK_COMBO (se
->priv
->hilite_item_combo
), list
);
914 pref_dialog
= anjuta_preferences_get_dialog (se
->prefs
);
915 gtk_window_set_transient_for (GTK_WINDOW (se
->priv
->dialog
),
916 GTK_WINDOW (pref_dialog
));
918 g_signal_connect (G_OBJECT (GTK_COMBO(se
->priv
->hilite_item_combo
)->entry
),
919 "changed", G_CALLBACK (on_hilite_style_entry_changed
),
921 g_signal_connect (G_OBJECT (se
->priv
->font_use_default_check
),
922 "toggled", G_CALLBACK (on_use_default_font_toggled
),
924 g_signal_connect (G_OBJECT (se
->priv
->font_attrib_use_default_check
),
925 "toggled", G_CALLBACK (on_use_default_attrib_toggled
),
927 g_signal_connect (G_OBJECT (se
->priv
->fore_color_use_default_check
),
928 "toggled", G_CALLBACK (on_use_default_fore_toggled
),
930 g_signal_connect (G_OBJECT (se
->priv
->back_color_use_default_check
),
931 "toggled", G_CALLBACK (on_use_default_back_toggled
),
933 g_signal_connect (G_OBJECT (se
->priv
->dialog
),
934 "delete_event", G_CALLBACK (on_delete_event
),
936 g_signal_connect (G_OBJECT (se
->priv
->dialog
),
937 "response", G_CALLBACK (on_response
),
939 g_object_unref (gxml
);
943 style_editor_new (AnjutaPreferences
*prefs
)
946 se
= g_new0 (StyleEditor
, 1);
947 se
->priv
= g_new0 (StyleEditorPriv
, 1);
948 se
->props
= text_editor_get_props ();
949 se
->priv
->dialog
= NULL
;
954 void style_editor_destroy (StyleEditor
*se
)
956 g_return_if_fail (se
);
957 if (se
->priv
->dialog
)
958 gtk_widget_destroy (se
->priv
->dialog
);
963 void style_editor_show (StyleEditor
*se
)
965 g_return_if_fail (se
);
966 if (se
->priv
->dialog
)
968 create_style_editor_gui (se
);
969 sync_from_props (se
);
972 void style_editor_hide (StyleEditor
*se
)
974 g_return_if_fail (se
);
975 g_return_if_fail (se
->priv
->dialog
);
976 gtk_widget_destroy (se
->priv
->dialog
);
977 se
->priv
->dialog
= NULL
;
981 style_editor_save (StyleEditor
*se
, FILE *fp
)
988 if (hilite_style
[i
] == NULL
)
990 str
= sci_prop_get (se
->props
, hilite_style
[i
+ 1]);
993 fprintf (fp
, "%s=%s\n", hilite_style
[i
+ 1], str
);
997 fprintf (fp, "%s=\n", hilite_style[i + 1]); */
999 str
= sci_prop_get (se
->props
, CARET_FORE_COLOR
);
1002 fprintf (fp
, "%s=%s\n", CARET_FORE_COLOR
, str
);
1006 str
= sci_prop_get (se
->props
, CALLTIP_BACK_COLOR
);
1009 fprintf (fp
, "%s=%s\n", CALLTIP_BACK_COLOR
, str
);
1013 str
= sci_prop_get (se
->props
, SELECTION_FORE_COLOR
);
1016 fprintf (fp
, "%s=%s\n", SELECTION_FORE_COLOR
, str
);
1020 str
= sci_prop_get (se
->props
, SELECTION_BACK_COLOR
);
1023 fprintf (fp
, "%s=%s\n", SELECTION_BACK_COLOR
, str
);