From: Timo Mueller <timo.muel...@bmw-carit.de>

The added functions allow storing the yocto settings in the
preferences store of a project. Project-specific yocto settings as
well as the used profiles can be stored.

Signed-off-by: Timo Mueller <timo.muel...@bmw-carit.de>
---
 .../src/org/yocto/sdk/ide/YoctoSDKUtils.java       | 110 +++++++++++++++++++++
 1 file changed, 110 insertions(+)

diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java 
b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java
index 12af7e3..857928c 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java
@@ -32,9 +32,13 @@ import 
org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ProjectScope;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
 import org.eclipse.jface.preference.IPreferenceStore;
+import org.osgi.service.prefs.BackingStoreException;
 import org.yocto.sdk.ide.preferences.PreferenceConstants;
 
 public class YoctoSDKUtils {
@@ -62,6 +66,7 @@ public class YoctoSDKUtils {
                Other
        };
 
+       private static final String PROJECT_SCOPE = "org.yocto.sdk.ide";
        private static final String POKY_DEVICE_EMPTY = "Poky.SDK.Device.Empty";
        private static final String TOOLCHAIN_LOCATION_EMPTY     = 
"Poky.SDK.Location.Empty";
        private static final String SDK_TARGET_EMPTY      = 
"Poky.SDK.Target.Empty";
@@ -397,6 +402,74 @@ public class YoctoSDKUtils {
 
        }
 
+       /* Get POKY Preference settings from project's preference store */
+       public static YoctoUIElement getElemFromProjectPreferences(IProject 
project)
+       {
+               IScopeContext projectScope = new ProjectScope(project);
+               IEclipsePreferences projectNode = 
projectScope.getNode(PROJECT_SCOPE);
+               if (projectNode == null)
+               {
+                       return getElemFromProjectEnv(project);
+               }
+
+               YoctoUIElement elem = new YoctoUIElement();
+               
elem.setStrToolChainRoot(projectNode.get(PreferenceConstants.TOOLCHAIN_ROOT,""));
+               
elem.setStrTarget(projectNode.get(PreferenceConstants.TOOLCHAIN_TRIPLET,""));
+               
elem.setStrQemuKernelLoc(projectNode.get(PreferenceConstants.QEMU_KERNEL,""));
+               
elem.setStrSysrootLoc(projectNode.get(PreferenceConstants.SYSROOT,""));
+               
elem.setStrQemuOption(projectNode.get(PreferenceConstants.QEMU_OPTION,""));
+               String sTemp = 
projectNode.get(PreferenceConstants.TARGET_ARCH_INDEX,"");
+               if (!sTemp.isEmpty())
+                       
elem.setIntTargetIndex(Integer.valueOf(sTemp).intValue());
+               if 
(projectNode.get(PreferenceConstants.SDK_MODE,"").equalsIgnoreCase(IPreferenceStore.TRUE))
+               {
+                       
elem.setEnumPokyMode(YoctoUIElement.PokyMode.POKY_SDK_MODE);
+               }
+               else
+                       
elem.setEnumPokyMode(YoctoUIElement.PokyMode.POKY_TREE_MODE);
+
+               
if(projectNode.get(PreferenceConstants.TARGET_MODE,"").equalsIgnoreCase(IPreferenceStore.TRUE))
+                       
elem.setEnumDeviceMode(YoctoUIElement.DeviceMode.QEMU_MODE);
+               else
+                       
elem.setEnumDeviceMode(YoctoUIElement.DeviceMode.DEVICE_MODE);
+               return elem;
+       }
+
+       /* Save POKY Preference settings to project's preference store */
+       public static void saveElemToProjectPreferences(YoctoUIElement elem, 
IProject project)
+       {
+               IScopeContext projectScope = new ProjectScope(project);
+               IEclipsePreferences projectNode = 
projectScope.getNode(PROJECT_SCOPE);
+               if (projectNode == null)
+               {
+                       return;
+               }
+
+               projectNode.putInt(PreferenceConstants.TARGET_ARCH_INDEX, 
elem.getIntTargetIndex());
+               if (elem.getEnumPokyMode() == 
YoctoUIElement.PokyMode.POKY_SDK_MODE)
+                       projectNode.put(PreferenceConstants.SDK_MODE, 
IPreferenceStore.TRUE);
+               else
+                       projectNode.put(PreferenceConstants.SDK_MODE, 
IPreferenceStore.FALSE);
+               projectNode.put(PreferenceConstants.QEMU_KERNEL, 
elem.getStrQemuKernelLoc());
+               projectNode.put(PreferenceConstants.QEMU_OPTION, 
elem.getStrQemuOption());
+               projectNode.put(PreferenceConstants.SYSROOT, 
elem.getStrSysrootLoc());
+               if (elem.getEnumDeviceMode() == 
YoctoUIElement.DeviceMode.QEMU_MODE)
+                       projectNode.put(PreferenceConstants.TARGET_MODE, 
IPreferenceStore.TRUE);
+               else
+                       projectNode.put(PreferenceConstants.TARGET_MODE, 
IPreferenceStore.FALSE);
+               projectNode.put(PreferenceConstants.TOOLCHAIN_ROOT, 
elem.getStrToolChainRoot());
+               projectNode.put(PreferenceConstants.TOOLCHAIN_TRIPLET, 
elem.getStrTarget());
+
+               try
+               {
+                       projectNode.flush();
+               } catch (BackingStoreException e)
+               {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+       }
+
        /* Get POKY Preference settings from project's environment */
        public static YoctoUIElement getElemFromProjectEnv(IProject project)
        {
@@ -689,6 +762,27 @@ public class YoctoSDKUtils {
                saveProfilesToStore(profileElement, 
YoctoSDKPlugin.getDefault().getPreferenceStore());
        }
 
+       /* Save profiles and selected profile to the project's preference store 
*/
+       public static void saveProfilesToProjectPreferences(YoctoProfileElement 
profileElement, IProject project) {
+               IScopeContext projectScope = new ProjectScope(project);
+               IEclipsePreferences projectPreferences = 
projectScope.getNode(PROJECT_SCOPE);
+               if (projectPreferences == null) {
+                       return;
+               }
+
+               projectPreferences.put(PreferenceConstants.PROFILES, 
profileElement.getProfilesAsString());
+               projectPreferences.put(PreferenceConstants.SELECTED_PROFILE, 
profileElement.getSelectedProfile());
+
+               try
+               {
+                       projectPreferences.flush();
+               } catch (BackingStoreException e)
+               {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+       }
+
        /* Save profiles and selected profile to a specific preference store */
        public static void saveProfilesToStore(YoctoProfileElement 
profileElement, IPreferenceStore store)
        {
@@ -710,4 +804,20 @@ public class YoctoSDKUtils {
 
                return new YoctoProfileElement(profiles, selectedProfile);
        }
+
+       /* Get profiles and selected profile from the project's preference 
store */
+       public static YoctoProfileElement 
getProfilesFromProjectPreferences(IProject project)
+       {
+               IScopeContext projectScope = new ProjectScope(project);
+               IEclipsePreferences projectNode = 
projectScope.getNode(PROJECT_SCOPE);
+               if (projectNode == null)
+               {
+                       return getProfilesFromDefaultStore();
+               }
+
+               String profiles = projectNode.get(PreferenceConstants.PROFILES, 
"");
+               String selectedProfile = 
projectNode.get(PreferenceConstants.SELECTED_PROFILE, "");
+
+               return new YoctoProfileElement(profiles, selectedProfile);
+       }
 }
-- 
1.7.11.7

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to