milis/talimatname/genel/g/gtk-theme-config/gtk-theme-config-tr.vala

725 lines
24 KiB
Vala
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Gtk;
class ThemeConfigWindow : ApplicationWindow {
Label selectbg_label;
Label selectfg_label;
ColorButton selectbg_button;
ColorButton selectfg_button;
ColorButton panelbg_button;
ColorButton panelfg_button;
ColorButton menubg_button;
ColorButton menufg_button;
Switch select_switch;
Switch panel_switch;
Switch menu_switch;
Button revert_button;
Button apply_button;
Gdk.RGBA color_rgb;
File config_dir;
File home_dir;
File gtk3_config_file;
File gtk2_config_file;
File theme_path;
string color_hex;
string color_scheme;
string selectbg_value;
string selectfg_value;
string panelbg_value;
string panelfg_value;
string menubg_value;
string menufg_value;
internal ThemeConfigWindow (ThemeConfigApp app) {
Object (application: app, title: "Tema Yapılandırması");
// Set window properties
this.window_position = WindowPosition.CENTER;
this.resizable = false;
this.border_width = 10;
// Set window icon
try {
this.icon = IconTheme.get_default ().load_icon ("gtk-theme-config", 48, 0);
} catch (Error e) {
stderr.printf ("Uygulama simgesi yüklenemedi: %s\n", e.message);
}
// Methods
create_widgets ();
connect_signals ();
}
void set_values () {
// Set default values
selectbg_value = "#398ee7";
selectfg_value = "#eeeeee";
panelbg_value = "#cccccc";
panelfg_value = "#333333";
menubg_value = "#eeeeee";
menufg_value = "#333333";
select_switch.set_active (false);
panel_switch.set_active (false);
menu_switch.set_active (false);
// Read the current values
var settings = new GLib.Settings ("org.gnome.desktop.interface");
var color_scheme = settings.get_string ("gtk-color-scheme");
var theme_name = settings.get_string ("gtk-theme");
// Set paths of config files
config_dir = File.new_for_path (Environment.get_user_config_dir ());
home_dir = File.new_for_path (Environment.get_home_dir ());
gtk3_config_file = config_dir.get_child ("gtk-3.0").get_child ("gtk.css");
gtk2_config_file = home_dir.get_child (".gtkrc-2.0");
// Create path if doesn't exist
if (!gtk3_config_file.get_parent().query_exists ()) {
try {
gtk3_config_file.get_parent().make_directory_with_parents(null);
} catch (Error e) {
stderr.printf ("Üst dizin oluşturulamadı: %s\n", e.message);
}
}
// Detect current theme path
if (gtk3_config_file.query_exists ()) {
theme_path = gtk3_config_file;
} else if (home_dir.get_child (".themes/%s/gtk-3.0/gtk-main.css".printf (theme_name)).query_exists ()) {
theme_path = home_dir.get_child (".themes/%s/gtk-3.0/gtk-main.css".printf (theme_name));
} else if (home_dir.get_child (".themes/%s/gtk-3.0/gtk.css".printf (theme_name)).query_exists ()) {
theme_path = home_dir.get_child (".themes/%s/gtk-3.0/gtk.css".printf (theme_name));
} else if (File.parse_name ("/usr/share/themes/%s/gtk-3.0/gtk-main.css".printf (theme_name)).query_exists ()) {
theme_path = File.parse_name ("/usr/share/themes/%s/gtk-3.0/gtk-main.css".printf (theme_name));
} else if (File.parse_name ("/usr/share/themes/%s/gtk-3.0/gtk.css".printf (theme_name)).query_exists ()) {
theme_path = File.parse_name ("/usr/share/themes/%s/gtk-3.0/gtk.css".printf (theme_name));
}
// Read the current theme file
try {
var dis = new DataInputStream (theme_path.read ());
string line;
while ((line = dis.read_line (null)) != null) {
if ("@define-color selected_bg_color" in line) {
selectbg_value = line.substring (32, line.length-33);
if ("@" in selectbg_value) {
selectbg_value = "#398ee7";
}
}
if ("@define-color selected_fg_color" in line) {
selectfg_value = line.substring (32, line.length-33);
if ("@" in selectfg_value) {
selectfg_value = "#eeeeee";
}
}
if ("@define-color panel_bg_color" in line) {
panelbg_value = line.substring (29, line.length-30);
if ("@" in panelbg_value) {
panelbg_value = "#cccccc";
}
}
if ("@define-color panel_fg_color" in line) {
panelfg_value = line.substring (29, line.length-30);
if ("@" in panelfg_value) {
panelfg_value = "#333333";
}
}
if ("@define-color menu_bg_color" in line) {
menubg_value = line.substring (28, line.length-29);
if ("@" in menubg_value) {
menubg_value = "#eeeeee";
}
}
if ("@define-color menu_fg_color" in line) {
menufg_value = line.substring (28, line.length-29);
if ("@" in menufg_value) {
menufg_value = "#333333";
}
}
if ("/* select-on */" in line) {
select_switch.set_active (true);
}
if ("/* panel-on */" in line) {
panel_switch.set_active (true);
}
if ("/* menu-on */" in line) {
menu_switch.set_active (true);
}
}
} catch (Error e) {
stderr.printf ("Kullanıcı teması okunamadı: %s\n", e.message);
}
// Read the current color scheme
if (";" in color_scheme) {
string[] parts = color_scheme.split_set(";");
if ("selected_bg_color:#" in parts[0] && "selected_fg_color:#" in parts[1]) {
selectbg_value = parts[0].substring (18, parts[0].length-18);
selectfg_value = parts[1].substring (18, parts[1].length-18);
select_switch.set_active (true);
}
}
// Set colors
Gdk.RGBA color = Gdk.RGBA ();
color.parse (selectbg_value);
selectbg_button.set_rgba (color);
color.parse (selectfg_value);
selectfg_button.set_rgba (color);
color.parse (panelbg_value);
panelbg_button.set_rgba (color);
color.parse (panelfg_value);
panelfg_button.set_rgba (color);
color.parse (menubg_value);
menubg_button.set_rgba (color);
color.parse (menufg_value);
menufg_button.set_rgba (color);
apply_button.set_sensitive (false);
}
void create_widgets () {
// Create and setup widgets
var select_heading = new Label.with_mnemonic ("_<b>Özel vurgu renkleri</b>");
select_heading.set_use_markup (true);
select_heading.set_halign (Align.START);
var panel_heading = new Label.with_mnemonic ("_<b>Özel panel renkleri/b>");
panel_heading.set_use_markup (true);
panel_heading.set_halign (Align.START);
var menu_heading = new Label.with_mnemonic ("_<b>Özel menü renkleri</b>");
menu_heading.set_use_markup (true);
menu_heading.set_halign (Align.START);
selectbg_label = new Label.with_mnemonic ("_Arka planı vurgulayın");
selectbg_label.set_halign (Align.START);
selectfg_label = new Label.with_mnemonic ("_Metni vurgulayın");
selectfg_label.set_halign (Align.START);
var panelbg_label = new Label.with_mnemonic ("_Panel arka planı");
panelbg_label.set_halign (Align.START);
var panelfg_label = new Label.with_mnemonic ("_Panel metni");
panelfg_label.set_halign (Align.START);
var menubg_label = new Label.with_mnemonic ("_Menü arkaplanı");
menubg_label.set_halign (Align.START);
var menufg_label = new Label.with_mnemonic ("_Menü Metni");
menufg_label.set_halign (Align.START);
selectbg_button = new ColorButton ();
selectfg_button = new ColorButton ();
panelbg_button = new ColorButton ();
panelfg_button = new ColorButton ();
menubg_button = new ColorButton ();
menufg_button = new ColorButton ();
select_switch = new Switch ();
select_switch.set_halign (Align.END);
panel_switch = new Switch ();
panel_switch.set_halign (Align.END);
menu_switch = new Switch ();
menu_switch.set_halign (Align.END);
revert_button = new Button.from_stock(Stock.REVERT_TO_SAVED);
apply_button = new Button.from_stock (Stock.APPLY);
// Buttons
var buttons = new ButtonBox (Orientation.HORIZONTAL);
buttons.set_layout (ButtonBoxStyle.EDGE);
buttons.add (revert_button);
buttons.add (apply_button);
// Layout widgets
var grid = new Grid ();
grid.set_column_homogeneous (true);
grid.set_row_homogeneous (true);
grid.set_column_spacing (5);
grid.set_row_spacing (5);
grid.attach (select_heading, 0, 0, 1, 1);
grid.attach_next_to (select_switch, select_heading, PositionType.RIGHT, 1, 1);
grid.attach (selectbg_label, 0, 1, 1, 1);
grid.attach_next_to (selectbg_button, selectbg_label, PositionType.RIGHT, 1, 1);
grid.attach (selectfg_label, 0, 2, 1, 1);
grid.attach_next_to (selectfg_button, selectfg_label, PositionType.RIGHT, 1, 1);
grid.attach (panel_heading, 0, 3, 1, 1);
grid.attach_next_to (panel_switch, panel_heading, PositionType.RIGHT, 1, 1);
grid.attach (panelbg_label, 0, 4, 1, 1);
grid.attach_next_to (panelbg_button, panelbg_label, PositionType.RIGHT, 1, 1);
grid.attach (panelfg_label, 0, 5, 1, 1);
grid.attach_next_to (panelfg_button, panelfg_label, PositionType.RIGHT, 1, 1);
grid.attach (menu_heading, 0, 6, 1, 1);
grid.attach_next_to (menu_switch, menu_heading, PositionType.RIGHT, 1, 1);
grid.attach (menubg_label, 0, 7, 1, 1);
grid.attach_next_to (menubg_button, menubg_label, PositionType.RIGHT, 1, 1);
grid.attach (menufg_label, 0, 8, 1, 1);
grid.attach_next_to (menufg_button, menufg_label, PositionType.RIGHT, 1, 1);
grid.attach (buttons, 0, 9, 2, 1);
this.add (grid);
set_values ();
}
void connect_signals () {
selectbg_button.color_set.connect (() => {
on_selectbg_color_set ();
apply_button.set_sensitive (true);
});
selectfg_button.color_set.connect (() => {
on_selectfg_color_set ();
apply_button.set_sensitive (true);
});
panelbg_button.color_set.connect (() => {
on_panelbg_color_set ();
apply_button.set_sensitive (true);
});
panelfg_button.color_set.connect (() => {
on_panelfg_color_set ();
apply_button.set_sensitive (true);
});
menubg_button.color_set.connect (() => {
on_menubg_color_set ();
apply_button.set_sensitive (true);
});
menufg_button.color_set.connect (() => {
on_menufg_color_set ();
apply_button.set_sensitive (true);
});
select_switch.notify["active"].connect (() => {
apply_button.set_sensitive (true);
});
panel_switch.notify["active"].connect (() => {
apply_button.set_sensitive (true);
});
menu_switch.notify["active"].connect (() => {
apply_button.set_sensitive (true);
});
revert_button.clicked.connect (() => {
on_config_reset ();
revert_button.set_sensitive (false);
});
apply_button.clicked.connect (() => {
on_config_set ();
apply_button.set_sensitive (false);
revert_button.set_sensitive (true);
});
}
void rgb_to_hex () {
int r = (int)Math.round (color_rgb.red * 255);
int g = (int)Math.round (color_rgb.green * 255);
int b = (int)Math.round (color_rgb.blue * 255);
color_hex = "#%02x%02x%02x".printf (r, g, b);
}
void on_selectbg_color_set () {
color_rgb = selectbg_button.get_rgba ();
rgb_to_hex ();
selectbg_value = color_hex;
}
void on_selectfg_color_set () {
color_rgb = selectfg_button.get_rgba ();
rgb_to_hex ();
selectfg_value = color_hex;
}
void on_panelbg_color_set () {
color_rgb = panelbg_button.get_rgba ();
rgb_to_hex ();
panelbg_value = color_hex;
}
void on_panelfg_color_set () {
color_rgb = panelfg_button.get_rgba ();
rgb_to_hex ();
panelfg_value = color_hex;
}
void on_menubg_color_set () {
color_rgb = menubg_button.get_rgba ();
rgb_to_hex ();
menubg_value = color_hex;
}
void on_menufg_color_set () {
color_rgb = menufg_button.get_rgba ();
rgb_to_hex ();
menufg_value = color_hex;
}
void on_config_set () {
set_color_scheme ();
write_config ();
notify_change ();
}
void on_config_reset () {
reset_color_scheme ();
reset_config ();
set_values ();
notify_change ();
}
void set_color_scheme () {
// Determine color scheme
if (select_switch.get_active()) {
color_scheme = "\"selected_bg_color:%s;selected_fg_color:%s;\"".printf (selectbg_value, selectfg_value);
} else {
color_scheme = "\"\"";
}
// Set color scheme
try {
Process.spawn_command_line_sync ("gsettings set org.gnome.desktop.interface gtk-color-scheme %s".printf (color_scheme));
} catch (Error e) {
stderr.printf ("Could not set color scheme for gtk3: %s\n", e.message);
}
try {
Process.spawn_command_line_sync ("gconftool-2 -s /desktop/gnome/interface/gtk_color_scheme -t string %s".printf (color_scheme));
} catch (Error e) {
stderr.printf ("Could not set color scheme for gtk2: %s\n", e.message);
}
if (File.parse_name ("/usr/bin/xfconf-query").query_exists ()) {
try {
Process.spawn_command_line_sync ("xfconf-query -n -c xsettings -p /Gtk/ColorScheme -t string -s %s".printf (color_scheme));
} catch (Error e) {
stderr.printf ("Could not set color scheme for xfce: %s\n", e.message);
}
}
}
void reset_color_scheme () {
try {
Process.spawn_command_line_sync ("gsettings reset org.gnome.desktop.interface gtk-color-scheme");
} catch (Error e) {
stderr.printf ("CGtk3 için renk düzenini sıfırlayamadı: %s\n", e.message);
}
try {
Process.spawn_command_line_sync ("gconftool-2 -u /desktop/gnome/interface/gtk_color_scheme");
} catch (Error e) {
stderr.printf ("Gtk2 için renk düzenini sıfırlayamadı: %s\n", e.message);
}
if (File.parse_name ("/usr/bin/xfconf-query").query_exists ()) {
try {
Process.spawn_command_line_sync ("xfconf-query -c xsettings -p /Gtk/ColorScheme -r");
} catch (Error e) {
stderr.printf ("Cxfce için renk düzenini sıfırlayamadı: %s\n", e.message);
}
}
}
void reset_config () {
try {
if (gtk3_config_file.query_exists ()) {
gtk3_config_file.delete ();
}
} catch (Error e) {
stderr.printf ("Önceki gtk3 yapılandırması silinemiyor: %s\n", e.message);
}
try {
if (gtk2_config_file.query_exists ()) {
gtk2_config_file.delete ();
}
} catch (Error e) {
stderr.printf ("Önceki gtk2 yapılandırması silinemiyor: %s\n", e.message);
}
}
void write_config () {
// Determine states
string select_state1;
string select_state2;
string panel_state1;
string panel_state2;
string menu_state1;
string menu_state2;
string panel_gtk2;
string menu_gtk2;
if (select_switch.get_active()) {
select_state1 = "/* select-on */";
select_state2 = "/* select-on */";
} else {
select_state1 = "/* select-off";
select_state2 = "select-off */";
}
if (panel_switch.get_active()) {
panel_state1 = "/* panel-on */";
panel_state2 = "/* panel-on */";
panel_gtk2 = ("style \"gtk-theme-config-panel\" {\n" +
"\tbg[NORMAL] = \"%s\"\n" +
"\tbg[PRELIGHT] = shade(1.1,\"%s\")\n" +
"\tbg[ACTIVE] = shade(0.9,\"%s\")\n" +
"\tbg[SELECTED] = shade(0.97,\"%s\")\n" +
"\tfg[NORMAL] = \"%s\"\n" +
"\tfg[PRELIGHT] = \"%s\"\n" +
"\tfg[SELECTED] = \"%s\"\n" +
"\tfg[ACTIVE] = \"%s\"\n" +
"}\n\n" +
"widget \"*PanelWidget*\" style \"gtk-theme-config-panel\"\n" +
"widget \"*PanelApplet*\" style \"gtk-theme-config-panel\"\n" +
"widget \"*fast-user-switch*\" style \"gtk-theme-config-panel\"\n" +
"widget \"*CPUFreq*Applet*\" style \"gtk-theme-config-panel\"\n" +
"widget \"*indicator-applet*\" style \"gtk-theme-config-panel\"\n" +
"class \"PanelApp*\" style \"gtk-theme-config-panel\"\n" +
"class \"PanelToplevel*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*PanelToplevel*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*notif*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*Notif*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*Tray*\" style \"gtk-theme-config-panel\" \n" +
"widget_class \"*tray*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*computertemp*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*Applet*Tomboy*\" style \"gtk-theme-config-panel\"\n" +
"widget_class \"*Applet*Netstatus*\" style \"gtk-theme-config-panel\"\n" +
"widget \"*gdm-user-switch-menubar*\" style \"gtk-theme-config-panel\"\n" +
"widget \"*Xfce*Panel*\" style \"gtk-theme-config-panel\"\n" +
"class \"*Xfce*Panel*\" style \"gtk-theme-config-panel\"\n").printf (panelbg_value, panelbg_value, panelbg_value, panelbg_value, panelfg_value, panelfg_value, panelfg_value, panelfg_value);
} else {
panel_state1 = "/* panel-off";
panel_state2 = "panel-off */";
panel_gtk2 = "";
}
if (menu_switch.get_active()) {
menu_state1 = "/* menu-on */";
menu_state2 = "/* menu-on */";
menu_gtk2 = ("style \"gtk-theme-config-menu\" {\n" +
"\tbase[NORMAL] = \"%s\"\n" +
"\tbg[NORMAL] = \"%s\"\n" +
"\tbg[ACTIVE] = \"%s\"\n" +
"\tbg[INSENSITIVE] = \"%s\"\n" +
"\ttext[NORMAL] = \"%s\"\n" +
"\tfg[NORMAL] = \"%s\"\n" +
"}\n\n" +
"widget_class\"*<GtkMenu>*\"style\"gtk-theme-config-menu\"\n").printf (menubg_value, menubg_value, menubg_value, menubg_value, menufg_value, menufg_value);
} else {
menu_state1 = "/* menu-off";
menu_state2 = "menu-off */";;
menu_gtk2 = "";
}
// Write config
try {
var dos = new DataOutputStream (gtk3_config_file.replace (null, false, FileCreateFlags.REPLACE_DESTINATION));
dos.put_string ("/* Custom styles */\n\n");
string text = ("%s\n" +
"@define-color selected_bg_color %s;\n" +
"@define-color selected_fg_color %s;\n" +
"@define-color theme_selected_bg_color @selected_bg_color;\n" +
"@define-color theme_selected_fg_color @selected_fg_color;\n" +
"%s\n\n" +
"%s\n" +
"@define-color panel_bg_color %s;\n" +
"@define-color panel_fg_color %s;\n\n" +
"PanelWidget,\n" +
"PanelApplet,\n" +
"PanelToplevel,\n" +
"PanelSeparator,\n" +
"PanelApplet > GtkMenuBar.menubar,\n" +
"PanelApplet > GtkMenuBar.menubar.menuitem,\n" +
"PanelMenuBar.menubar,\n" +
"PanelMenuBar.menubar.menuitem,\n" +
"PanelAppletFrame,\n" +
"UnityPanelWidget,\n" +
".gnome-panel-menu-bar,\n" +
".unity-panel {\n" +
"\tbackground-image: -gtk-gradient(linear,left top,left bottom,from(shade(@panel_bg_color,1.2)),to(shade(@panel_bg_color,0.8)));\n" +
"\tcolor: @panel_fg_color;\n" +
"}\n\n" +
".unity-panel.menuitem,\n" +
".unity-panel .menuitem {\n" +
"\tcolor: @panel_fg_color;\n" +
"}\n\n" +
".unity-panel.menubar.menuitem:hover,\n" +
".unity-panel.menubar .menuitem *:hover {\n" +
"\tborder-color: shade(@panel_bg_color, 0.7);\n" +
"\tborder-image: none;\n" +
"\tbackground-image: -gtk-gradient(linear,left top,left bottom,from(shade(@panel_bg_color, 0.97)),to(shade(@panel_bg_color, 0.82)));\n" +
"\tcolor: @panel_fg_color;\n" +
"}\n\n" +
"PanelApplet .button {\n" +
"\tborder-color: transparent;\n" +
"\tborder-image: none;\n" +
"\tbackground-image: -gtk-gradient(linear,left top,left bottom,from(shade(@panel_bg_color,1.2)),to(shade(@panel_bg_color,0.8)));\n" +
"\tcolor: @panel_fg_color;\n" +
"\tbox-shadow: none;\n" +
"\ttext-shadow: none;\n" +
"\t-unico-inner-stroke-width: 0;\n" +
"}\n\n" +
"PanelApplet .button:active {\n" +
"\tborder-color: shade(@panel_bg_color,0.8);\n" +
"\tborder-image: none;\n" +
"\tbackground-image: -gtk-gradient(linear,left top,left bottom,from(shade(shade(@panel_bg_color,1.02),0.9)),to(shade(shade(@panel_bg_color,1.02),0.95)));\n" +
"\tcolor: @panel_fg_color;\n" +
"\tbox-shadow: none;\n" +
"\ttext-shadow: none;\n" +
"\t-unico-inner-stroke-width: 0;\n" +
"}\n\n" +
"PanelApplet .button:prelight {\n" +
"\tborder-color: transparent;\n" +
"\tborder-image: none;\n" +
"\tbackground-image: -gtk-gradient(linear,left top,left bottom,from(shade(@panel_bg_color,1.2)),to(shade(@panel_bg_color,1.0)));\n" +
"\tcolor: @panel_fg_color;\n" +
"\tbox-shadow: none;\n" +
"\ttext-shadow: none;\n" +
"\t-unico-inner-stroke-width: 0;\n" +
"}\n\n" +
"PanelApplet .button:active:prelight {\n" +
"\tborder-color: shade(@panel_bg_color,0.8);\n" +
"\tborder-image: none;\n" +
"\tbackground-image: -gtk-gradient(linear,left top,left bottom,from(shade(shade(@panel_bg_color,1.02),1.0)),to(shade(shade(@panel_bg_color,1.02),1.05)));\n" +
"\tcolor: @panel_fg_color;\n" +
"\tbox-shadow: none;\n" +
"\ttext-shadow: none;\n" +
"\t-unico-inner-stroke-width: 0;\n" +
"}\n\n" +
"WnckPager,\n" +
"WnckTasklist {\n" +
"\tbackground-color: @panel_bg_color;\n" +
"}\n\n" +
"%s\n\n" +
"%s\n" +
"@define-color menu_bg_color %s;\n" +
"@define-color menu_fg_color %s;\n\n" +
"GtkTreeMenu.menu,\n" +
"GtkMenuToolButton.menu,\n" +
"GtkComboBox .menu {\n" +
"\tbackground-color: @menu_bg_color;\n" +
"}\n\n" +
".primary-toolbar .button .menu,\n" +
".toolbar .menu,\n" +
".toolbar .primary-toolbar .menu,\n" +
".menu {\n" +
"\tborder-style: none;\n" +
"\tbackground-image: none;\n" +
"\tbackground-color: @menu_bg_color;\n" +
"\tcolor: @menu_fg_color;\n" +
"\tbox-shadow: none;\n" +
"\ttext-shadow: none;\n" +
"\t-unico-inner-stroke-width: 0;\n" +
"}\n\n" +
".menu.button:hover,\n" +
".menu.button:active,\n" +
".menu.button:active:insensitive,\n" +
".menu.button:insensitive,\n" +
".menu.button {\n" +
"\tbackground-color: @menu_bg_color;\n" +
"\tbackground-image: none;\n" +
"}\n\n" +
"GtkTreeMenu .menuitem * {\n" +
"\tcolor: @menu_fg_color;\n" +
"}\n\n" +
".menuitem,\n" +
".menu .menuitem {\n" +
"\tbackground-color: transparent;\n" +
"}\n\n" +
".menu .menuitem:active,\n" +
".menu .menuitem:hover {\n" +
"\tbackground-color: @theme_selected_bg_color;\n" +
"}\n\n" +
".menuitem.check,\n" +
".menuitem.radio,\n" +
".menuitem.check:hover,\n" +
".menuitem.radio:hover,\n" +
".menuitem.check:active,\n" +
".menuitem.radio:active {\n" +
"\tbackground-color: transparent;\n" +
"}\n\n" +
".menu .menuitem:insensitive,\n" +
".menu .menuitem *:insensitive {\n" +
"\tcolor: mix(@menu_fg_color,@menu_bg_color,0.5);\n" +
"}\n\n" +
".menuitem.arrow {\n" +
"\tcolor: alpha(@menu_fg_color, 0.6);\n" +
"}\n\n" +
".menuitem .entry {\n" +
"\tborder-color: shade(@menu_bg_color,0.7);\n" +
"\tborder-image: none;\n" +
"\tbackground-color: @menu_bg_color;\n" +
"\tbackground-image: none;\n" +
"\tcolor: @menu_fg_color;\n" +
"}\n\n" +
".menuitem .accelerator {\n" +
"\tcolor: alpha(@menu_fg_color,0.6);\n" +
"}\n\n" +
".menuitem .accelerator:insensitive {\n" +
"\tcolor: alpha(mix(@menu_fg_color,@menu_bg_color,0.5),0.6);\n" +
"\ttext-shadow: none;\n" +
"}\n\n" +
".menuitem.separator {\n" +
"\tbackground-color: transparent;\n" +
"\tcolor: shade(@menu_bg_color, 0.9);\n" +
"}\n\n" +
".menuitem GtkCalendar,\n" +
".menuitem GtkCalendar.button,\n" +
".menuitem GtkCalendar.header,\n" +
".menuitem GtkCalendar.view {\n" +
"\tborder-color: shade(@menu_bg_color,0.8);\n" +
"\tborder-image: none;\n" +
"\tbackground-color: @menu_bg_color;\n" +
"\tbackground-image: none;\n" +
"\tcolor: @menu_fg_color;\n" +
"}\n\n" +
".menuitem GtkCalendar:inconsistent {\n" +
"\tcolor: mix(@menu_fg_color,@menu_bg_color,0.5);\n" +
"}\n\n" +
"%s\n").printf (select_state1, selectbg_value, selectfg_value, select_state2, panel_state1, panelbg_value, panelfg_value, panel_state2, menu_state1, menubg_value, menufg_value, menu_state2);
uint8[] data = text.data;
long written = 0;
while (written < data.length) {
written += dos.write (data[written:data.length]);
}
} catch (Error e) {
stderr.printf ("Gtk3 yapılandırması yazılamadı: %s\n", e.message);
}
try {
var dos = new DataOutputStream (gtk2_config_file.replace (null, false, FileCreateFlags.REPLACE_DESTINATION));
dos.put_string ("# Custom styles\n\n");
string text = "%s\n%s".printf(panel_gtk2, menu_gtk2);
uint8[] data = text.data;
long written = 0;
while (written < data.length) {
written += dos.write (data[written:data.length]);
}
} catch (Error e) {
stderr.printf ("Gtk2 yapılandırması yazılamadı: %s\n", e.message);
}
}
void notify_change() {
try {
Process.spawn_command_line_async("notify-send -h int:transient:1 -i \"gtk-theme-config\" \"Changes applied.\" \"You might need to restart running applications.\"");
} catch (Error e) {
stderr.printf ("Bildirim görüntülenemiyor: %s\n", e.message);
}
}
}
class ThemeConfigApp : Gtk.Application {
internal ThemeConfigApp () {
Object (application_id: "org.themeconfig.app");
}
protected override void activate () {
var window = new ThemeConfigWindow (this);
window.show_all ();
}
}
int main (string[] args) {
return new ThemeConfigApp ().run (args);
}