]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
animate iconify/reestore. yeah.
[chaz/openbox] / openbox / config.c
index 66c836ea16d0238e0178e47a68bc1c9f7e44442e..367fb2f9e9b3e335d0ae23ed87beb99fa40fb86a 100644 (file)
@@ -2,7 +2,7 @@
 
    config.c for the Openbox window manager
    Copyright (c) 2006        Mikael Magnusson
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -26,6 +26,7 @@
 #include "screen.h"
 #include "parser/parse.h"
 #include "openbox.h"
+#include "gettext.h"
 
 gboolean config_focus_new;
 gboolean config_focus_follow;
@@ -40,12 +41,14 @@ gboolean config_theme_keepborder;
 gboolean config_theme_hidedisabled;
 
 gchar   *config_title_layout;
-gboolean config_title_number;
+
+gboolean config_animate_iconify;
 
 RrFont *config_font_activewindow;
 RrFont *config_font_inactivewindow;
 RrFont *config_font_menuitem;
 RrFont *config_font_menutitle;
+RrFont *config_font_osd;
 
 gint    config_desktops_num;
 GSList *config_desktops_names;
@@ -76,7 +79,6 @@ gint config_mouse_threshold;
 gint config_mouse_dclicktime;
 
 gboolean config_menu_warppointer;
-gboolean config_menu_xorstyle;
 guint    config_menu_hide_delay;
 gboolean config_menu_middle;
 guint    config_submenu_show_delay;
@@ -274,47 +276,60 @@ static void parse_key(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                       GList *keylist)
 {
     gchar *key;
-    ObAction *action;
-    xmlNodePtr n, nact;
-    GList *it;
+    xmlNodePtr n;
+    gboolean is_chroot = FALSE;
 
-    if ((n = parse_find_node("chainQuitKey", node))) {
-        key = parse_string(doc, n);
-        translate_key(key, &config_keyboard_reset_state,
-                      &config_keyboard_reset_keycode);
-        g_free(key);
-    }
+    if (!parse_attr_string("key", node, &key))
+        return;
 
-    n = parse_find_node("keybind", node);
-    while (n) {
-        if (parse_attr_string("key", n, &key)) {
-            keylist = g_list_append(keylist, key);
+    parse_attr_bool("chroot", node, &is_chroot);
 
-            parse_key(i, doc, n->children, keylist);
+    keylist = g_list_append(keylist, key);
 
-            it = g_list_last(keylist);
-            g_free(it->data);
-            keylist = g_list_delete_link(keylist, it);
+    if ((n = parse_find_node("keybind", node->children))) {
+        while (n) {
+            parse_key(i, doc, n, keylist);
+            n = parse_find_node("keybind", n->next);
         }
-        n = parse_find_node("keybind", n->next);
     }
-    if (keylist) {
-        nact = parse_find_node("action", node);
-        while (nact) {
-            if ((action = action_parse(i, doc, nact,
-                                       OB_USER_ACTION_KEYBOARD_KEY)))
+    else if ((n = parse_find_node("action", node->children))) {
+        while (n) {
+            ObAction *action;
+            
+            action = action_parse(i, doc, n, OB_USER_ACTION_KEYBOARD_KEY);
+            if (action)
                 keyboard_bind(keylist, action);
-            nact = parse_find_node("action", nact->next);
+            n = parse_find_node("action", n->next);
         }
     }
+
+    if (is_chroot)
+        keyboard_chroot(keylist);
+
+    g_free(key);
+    keylist = g_list_delete_link(keylist, g_list_last(keylist));
 }
 
 static void parse_keyboard(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                            gpointer d)
 {
+    xmlNodePtr n;
+    gchar *key;
+
     keyboard_unbind_all();
 
-    parse_key(i, doc, node->children, NULL);
+    if ((n = parse_find_node("chainQuitKey", node->children))) {
+        key = parse_string(doc, n);
+        translate_key(key, &config_keyboard_reset_state,
+                      &config_keyboard_reset_keycode);
+        g_free(key);
+    }
+
+    if ((n = parse_find_node("keybind", node->children)))
+        while (n) {
+            parse_key(i, doc, n, NULL);
+            n = parse_find_node("keybind", n->next);
+        }
 }
 
 /*
@@ -437,12 +452,12 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         g_free(config_title_layout);
         config_title_layout = parse_string(doc, n);
     }
-    if ((n = parse_find_node("titleNumber", node)))
-        config_title_number = parse_bool(doc, n);
     if ((n = parse_find_node("keepBorder", node)))
         config_theme_keepborder = parse_bool(doc, n);
     if ((n = parse_find_node("hideDisabled", node)))
         config_theme_hidedisabled = parse_bool(doc, n);
+    if ((n = parse_find_node("animateIconify", node)))
+        config_animate_iconify = parse_bool(doc, n);
 
     n = parse_find_node("font", node);
     while (n) {
@@ -452,18 +467,17 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         gint         size = RrDefaultFontSize;
         RrFontWeight weight = RrDefaultFontWeight;
         RrFontSlant  slant = RrDefaultFontSlant;
-        gboolean     shadow = RrDefaultFontShadow;
-        gint         offset = RrDefaultFontShadowOffset;
-        gchar        tint = RrDefaultFontShadowTint;
 
         if (parse_attr_contains("ActiveWindow", n, "place"))
             font = &config_font_activewindow;
         else if (parse_attr_contains("InactiveWindow", n, "place"))
             font = &config_font_inactivewindow;
-        else if (parse_attr_contains("MenuTitle", n, "place"))
+        else if (parse_attr_contains("MenuHeader", n, "place"))
             font = &config_font_menutitle;
         else if (parse_attr_contains("MenuItem", n, "place"))
             font = &config_font_menuitem;
+        else if (parse_attr_contains("OnScreenDisplay", n, "place"))
+            font = &config_font_osd;
         else
             goto next_font;
 
@@ -489,18 +503,8 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                 slant = RR_FONTSLANT_OBLIQUE;
             g_free(s);
         }
-        if ((fnode = parse_find_node("shadow", n->children)))
-            shadow = parse_bool(doc, fnode);
-        if ((fnode = parse_find_node("shadowoffset", n->children)))
-            offset = parse_int(doc, fnode);
-        if ((fnode = parse_find_node("shadowtint", n->children))) {
-            tint = parse_int(doc, fnode);
-            if (tint > 100) tint = 100;
-            else if (tint < -100) tint = -100;
-        }
 
-        *font = RrFontOpen(ob_rr_inst, name, size, weight, slant,
-                           shadow, offset, tint);
+        *font = RrFontOpen(ob_rr_inst, name, size, weight, slant);
         g_free(name);
     next_font:
         n = parse_find_node("font", n->next);
@@ -551,8 +555,6 @@ static void parse_resize(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     
     if ((n = parse_find_node("drawContents", node)))
         config_resize_redraw = parse_bool(doc, n);
-    if ((n = parse_find_node("fourCorner", node)))
-        config_resize_four_corners = parse_bool(doc, n);
     if ((n = parse_find_node("popupShow", node))) {
         config_resize_popup_show = parse_int(doc, n);
         if (parse_contains("Always", doc, n))
@@ -616,11 +618,11 @@ static void parse_dock(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             config_dock_nostrut = parse_bool(doc, n);
     }
     if ((n = parse_find_node("stacking", node))) {
-        if (parse_contains("top", doc, n))
+        if (parse_contains("above", doc, n))
             config_dock_layer = OB_STACKING_LAYER_ABOVE;
         else if (parse_contains("normal", doc, n))
             config_dock_layer = OB_STACKING_LAYER_NORMAL;
-        else if (parse_contains("bottom", doc, n))
+        else if (parse_contains("below", doc, n))
             config_dock_layer = OB_STACKING_LAYER_BELOW;
     }
     if ((n = parse_find_node("direction", node))) {
@@ -642,7 +644,7 @@ static void parse_dock(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             config_dock_app_move_button = b;
             config_dock_app_move_modifiers = s;
         } else {
-            g_warning("invalid button '%s'", str);
+            g_message(_("Invalid button '%s' specified in config file"), str);
         }
         g_free(str);
     }
@@ -663,8 +665,6 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         }
         if ((n = parse_find_node("warpPointer", node)))
             config_menu_warppointer = parse_bool(doc, n);
-        if ((n = parse_find_node("xorStyle", node)))
-            config_menu_xorstyle = parse_bool(doc, n);
         if ((n = parse_find_node("hideDelay", node)))
             config_menu_hide_delay = parse_int(doc, n);
         if ((n = parse_find_node("middle", node)))
@@ -809,8 +809,8 @@ void config_startup(ObParseInst *i)
 
     config_theme = NULL;
 
+    config_animate_iconify = TRUE;
     config_title_layout = g_strdup("NLIMC");
-    config_title_number = TRUE;
     config_theme_keepborder = TRUE;
     config_theme_hidedisabled = FALSE;
 
@@ -870,7 +870,6 @@ void config_startup(ObParseInst *i)
     parse_register(i, "resistance", parse_resistance, NULL);
 
     config_menu_warppointer = TRUE;
-    config_menu_xorstyle = TRUE;
     config_menu_hide_delay = 250;
     config_menu_middle = FALSE;
     config_submenu_show_delay = 0;
This page took 0.030226 seconds and 4 git commands to generate.