]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/src/theme.cpp
Remove bogus executable permissions
[vlc] / modules / gui / skins2 / src / theme.cpp
old mode 100755 (executable)
new mode 100644 (file)
index d12e550..33051b3
@@ -2,7 +2,7 @@
  * theme.cpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: theme.cpp,v 1.1 2004/01/03 23:31:34 asmax Exp $
+ * $Id$
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -35,6 +35,85 @@ Theme::~Theme()
     m_fonts.clear();
     m_commands.clear();
     m_vars.clear();
+    m_curves.clear();
+}
+
+
+void Theme::loadConfig()
+{
+    msg_Dbg( getIntf(), "Loading theme configuration");
+
+    // Get config from vlcrc file
+    char *save = config_GetPsz( getIntf(), "skins2-config" );
+    if( !save ) return;
+
+    // Is there an existing config?
+    if( !strcmp( save, "" ) )
+    {
+        // Show the windows
+        m_windowManager.showAll();
+        return;
+    }
+
+    // Initialization
+    map<string, TopWindowPtr>::const_iterator it;
+    int i = 0;
+    int x, y, visible, scan;
+
+    // Get config for each window
+    for( it = m_windows.begin(); it != m_windows.end(); it++ )
+    {
+        TopWindow *pWin = (*it).second.get();
+        // Get config
+        scan = sscanf( &save[i * 13], "(%4d,%4d,%1d)", &x, &y, &visible );
+
+        // If config has the correct number of arguments
+        if( scan > 2 )
+        {
+            m_windowManager.startMove( *pWin );
+            m_windowManager.move( *pWin, x, y );
+            m_windowManager.stopMove();
+            if( visible )
+            {
+                m_windowManager.show( *pWin );
+            }
+        }
+
+        // Next window
+        i++;
+    }
+    free( save );
+}
+
+
+void Theme::saveConfig()
+{
+    msg_Dbg( getIntf(), "Saving theme configuration");
+
+    // Initialize char where config is stored
+    char *save  = new char[400];
+    map<string, TopWindowPtr>::const_iterator it;
+    int i = 0;
+    int x, y;
+
+    // Save config of every window
+    for( it = m_windows.begin(); it != m_windows.end(); it++ )
+    {
+        TopWindow *pWin = (*it).second.get();
+        // Print config
+        x = pWin->getLeft();
+        y = pWin->getTop();
+        sprintf( &save[i * 13], "(%4d,%4d,%1d)", x, y,
+            pWin->getVisibleVar().get() );
+        i++;
+    }
+
+    // Save config to file
+    config_PutPsz( getIntf(), "skins2-config", save );
+    config_SaveConfigFile( getIntf(), "skins2" );
+
+    // Free memory
+    delete[] save;
 }
 
 
@@ -48,7 +127,6 @@ Theme::~Theme()
     } \
     return (*it).second.get();
 
-
 GenericBitmap *Theme::getBitmapById( const string &id )
 {
     FIND_OBJECT( GenericBitmapPtr, m_bitmaps );
@@ -59,9 +137,9 @@ GenericFont *Theme::getFontById( const string &id )
     FIND_OBJECT( GenericFontPtr, m_fonts );
 }
 
-GenericWindow *Theme::getWindowById( const string &id )
+TopWindow *Theme::getWindowById( const string &id )
 {
-    FIND_OBJECT( GenericWindowPtr, m_windows );
+    FIND_OBJECT( TopWindowPtr, m_windows );
 }
 
 GenericLayout *Theme::getLayoutById( const string &id )
@@ -74,3 +152,5 @@ CtrlGeneric *Theme::getControlById( const string &id )
     FIND_OBJECT( CtrlGenericPtr, m_controls );
 }
 
+
+