Blob Blame History Raw
diff --git a/cmake/modules/FindLibKasten.cmake b/cmake/modules/FindLibKasten.cmake
index 087eedc..9fafd87 100644
--- a/cmake/modules/FindLibKasten.cmake
+++ b/cmake/modules/FindLibKasten.cmake
@@ -1,4 +1,4 @@
-# - Find Kasten libraries, v0 or v1
+# - Find Kasten libraries, v0, v1 or v2
 #
 # This module defines
 #  LIBKASTEN_FOUND - whether the libkasten libraries were found
@@ -12,44 +12,45 @@ if( LIBKASTEN_INCLUDE_DIR AND LIBKASTEN_LIBRARIES AND LIBKASTEN_VERSION )
     set( Kasten_FIND_QUIETLY TRUE )
 endif( LIBKASTEN_INCLUDE_DIR AND LIBKASTEN_LIBRARIES AND LIBKASTEN_VERSION )
 
-if( LIBKASTEN_FIND_VERSION EQUAL 1 )
-    find_library( KASTEN1_CORE_LIB
+if( LIBKASTEN_FIND_VERSION EQUAL 1 OR LIBKASTEN_FIND_VERSION EQUAL 2)
+    set( KV ${LIBKASTEN_FIND_VERSION} )
+    find_library( KASTEN1OR2_CORE_LIB
         NAMES
-        kasten1core
+        kasten${KV}core
         HINTS
         ${LIB_INSTALL_DIR}
         ${KDE4_LIB_DIR}
     )
 
-    find_library( KASTEN1_GUI_LIB
+    find_library( KASTEN1OR2_GUI_LIB
         NAMES
-        kasten1gui
+        kasten${KV}gui
         HINTS
         ${LIB_INSTALL_DIR}
         ${KDE4_LIB_DIR}
     )
 
-    find_library( KASTEN1_CONTROLLERS_LIB
+    find_library( KASTEN1OR2_CONTROLLERS_LIB
         NAMES
-        kasten1controllers
+        kasten${KV}controllers
         HINTS
         ${LIB_INSTALL_DIR}
         ${KDE4_LIB_DIR}
     )
 
-    find_path( KASTEN1_NORMAL_INCLUDE_DIR
+    find_path( KASTEN1OR2_NORMAL_INCLUDE_DIR
         NAMES
         abstractmodel.h
         PATH_SUFFIXES
-        kasten1
+        kasten${KV}
         HINTS
         ${INCLUDE_INSTALL_DIR}
         ${KDE4_INCLUDE_DIR}
     )
 
-    find_path( KASTEN1_CAMELCASE_INCLUDE_DIR
+    find_path( KASTEN1OR2_CAMELCASE_INCLUDE_DIR
         NAMES
-        Kasten1/AbstractModel
+        Kasten${KV}/AbstractModel
         PATH_SUFFIXES
         KDE
         HINTS
@@ -58,25 +59,25 @@ if( LIBKASTEN_FIND_VERSION EQUAL 1 )
     )
 
 
-    if( KASTEN1_NORMAL_INCLUDE_DIR AND KASTEN1_CAMELCASE_INCLUDE_DIR AND
-        KASTEN1_CORE_LIB AND KASTEN1_GUI_LIB AND KASTEN1_CONTROLLERS_LIB )
+    if( KASTEN1OR2_NORMAL_INCLUDE_DIR AND KASTEN1OR2_CAMELCASE_INCLUDE_DIR AND
+        KASTEN1OR2_CORE_LIB AND KASTEN1OR2_GUI_LIB AND KASTEN1OR2_CONTROLLERS_LIB )
         set( LIBKASTEN_FOUND TRUE )
-    endif( KASTEN1_NORMAL_INCLUDE_DIR AND KASTEN1_CAMELCASE_INCLUDE_DIR AND
-        KASTEN1_CORE_LIB AND KASTEN1_GUI_LIB AND KASTEN1_CONTROLLERS_LIB )
+    endif( KASTEN1OR2_NORMAL_INCLUDE_DIR AND KASTEN1OR2_CAMELCASE_INCLUDE_DIR AND
+        KASTEN1OR2_CORE_LIB AND KASTEN1OR2_GUI_LIB AND KASTEN1OR2_CONTROLLERS_LIB )
 
     if( LIBKASTEN_FOUND )
-        set( LIBKASTEN_VERSION 1 )
+        set( LIBKASTEN_VERSION ${KV} )
         set( LIBKASTEN_INCLUDE_DIRS
-            ${KASTEN1_NORMAL_INCLUDE_DIR}
-            ${KASTEN1_CAMELCASE_INCLUDE_DIR}
+            ${KASTEN1OR2_NORMAL_INCLUDE_DIR}
+            ${KASTEN1OR2_CAMELCASE_INCLUDE_DIR}
         )
         set( LIBKASTEN_LIBRARIES
-            ${KASTEN1_CORE_LIB}
-            ${KASTEN1_GUI_LIB}
-            ${KASTEN1_CONTROLLERS_LIB}
+            ${KASTEN1OR2_CORE_LIB}
+            ${KASTEN1OR2_GUI_LIB}
+            ${KASTEN1OR2_CONTROLLERS_LIB}
         )
     endif( LIBKASTEN_FOUND )
-endif( LIBKASTEN_FIND_VERSION EQUAL 1 )
+endif( LIBKASTEN_FIND_VERSION EQUAL 1 OR LIBKASTEN_FIND_VERSION EQUAL 2 )
 
 if( LIBKASTEN_FIND_VERSION EQUAL 0 )
     find_library( LIBKASTENCORE0_LIBRARY
diff --git a/cmake/modules/FindLibOktetaKasten.cmake b/cmake/modules/FindLibOktetaKasten.cmake
index 973f0f1..0985914 100644
--- a/cmake/modules/FindLibOktetaKasten.cmake
+++ b/cmake/modules/FindLibOktetaKasten.cmake
@@ -1,4 +1,4 @@
-# - Find Okteta Kasten libraries, v0 or v1
+# - Find Okteta Kasten libraries, v0, v1 or v2
 #
 # This module defines
 #  LIBOKTETAKASTEN_FOUND - whether the Okteta Kasten libraries were found
@@ -7,66 +7,128 @@
 #  LIBOKTETAKASTEN_INCLUDE_DIRS - the include paths of the Okteta Kasten libraries
 
 
-if( LIBOKTETAKASTEN_INCLUDE_DIRS AND LIBOKTETAKASTEN_LIBRARIES AND LIBOKTETAKASTEN_VERSION )
+if( LIBOKTETAKASTEN_INCLUDE_DIRS AND LIBOKTETAKASTEN_LIBRARIES AND LIBOKTETAKASTEN_VERSION AND
+    LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION AND LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION )
     # Already in cache, be silent
     set( OktetaKasten_FIND_QUIETLY TRUE )
-endif( LIBOKTETAKASTEN_INCLUDE_DIRS AND LIBOKTETAKASTEN_LIBRARIES AND LIBOKTETAKASTEN_VERSION )
+endif( LIBOKTETAKASTEN_INCLUDE_DIRS AND LIBOKTETAKASTEN_LIBRARIES AND LIBOKTETAKASTEN_VERSION AND
+       LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION AND LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION )
 
 
-# First search version 1
-find_library( LIBOKTETA1KASTEN1CORE_LIBRARY
+# First search version 2
+find_library( LIBOKTETA1KASTEN2CORE_LIBRARY
     NAMES
-    kasten1okteta1core
+    kasten2okteta1core
     HINTS
     ${LIB_INSTALL_DIR}
     ${KDE4_LIB_DIR}
 )
 
-find_library( LIBOKTETA1KASTEN1GUI_LIBRARY
+find_library( LIBOKTETA1KASTEN2GUI_LIBRARY
     NAMES
-    kasten1okteta1gui
+    kasten2okteta1gui
     HINTS
     ${LIB_INSTALL_DIR}
     ${KDE4_LIB_DIR}
 )
 
-find_library( LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY
+find_library( LIBOKTETA1KASTEN2CONTROLLERS_LIBRARY
     NAMES
-    kasten1okteta1controllers
+    kasten2okteta1controllers
     HINTS
     ${LIB_INSTALL_DIR}
     ${KDE4_LIB_DIR}
 )
 
 
-find_path( LIBOKTETAKASTEN_INCLUDE_DIR
+find_path( LIBOKTETA1KASTEN2_INCLUDE_DIR
     NAMES
     bytearraydocument.h
     PATH_SUFFIXES
-    kasten1/okteta1
+    kasten2/okteta1
     HINTS
     ${INCLUDE_INSTALL_DIR}
     ${KDE4_INCLUDE_DIR}
 )
 
-if( LIBOKTETAKASTEN_INCLUDE_DIR AND
-    LIBOKTETA1KASTEN1CORE_LIBRARY AND LIBOKTETA1KASTEN1GUI_LIBRARY AND LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY )
+if( LIBOKTETA1KASTEN2_INCLUDE_DIR AND
+    LIBOKTETA1KASTEN2CORE_LIBRARY AND LIBOKTETA1KASTEN2GUI_LIBRARY AND LIBOKTETA1KASTEN2CONTROLLERS_LIBRARY )
     set( LIBOKTETAKASTEN_FOUND  TRUE )
-endif( LIBOKTETAKASTEN_INCLUDE_DIR AND
-    LIBOKTETA1KASTEN1CORE_LIBRARY AND LIBOKTETA1KASTEN1GUI_LIBRARY AND LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY )
+endif( LIBOKTETA1KASTEN2_INCLUDE_DIR AND
+    LIBOKTETA1KASTEN2CORE_LIBRARY AND LIBOKTETA1KASTEN2GUI_LIBRARY AND LIBOKTETA1KASTEN2CONTROLLERS_LIBRARY )
 
 if( LIBOKTETAKASTEN_FOUND )
-    set( LIBOKTETAKASTEN_VERSION 1 )
+    set( LIBOKTETAKASTEN_VERSION 2 )
+    set( LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION 2 )
+    set( LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION 1 )
     set( LIBOKTETAKASTEN_LIBRARIES
-        ${LIBOKTETA1KASTEN1CORE_LIBRARY}
-        ${LIBOKTETA1KASTEN1GUI_LIBRARY}
-        ${LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY}
+        ${LIBOKTETA1KASTEN2CORE_LIBRARY}
+        ${LIBOKTETA1KASTEN2GUI_LIBRARY}
+        ${LIBOKTETA1KASTEN2CONTROLLERS_LIBRARY}
     )
     set( LIBOKTETAKASTEN_INCLUDE_DIRS
-        ${LIBOKTETAKASTEN_INCLUDE_DIR}
+        ${LIBOKTETA1KASTEN2_INCLUDE_DIR}
     )
 endif( LIBOKTETAKASTEN_FOUND )
 
+# Then search version 1
+if( NOT LIBOKTETAKASTEN_FOUND )
+    find_library( LIBOKTETA1KASTEN1CORE_LIBRARY
+        NAMES
+        kasten1okteta1core
+        HINTS
+        ${LIB_INSTALL_DIR}
+        ${KDE4_LIB_DIR}
+    )
+
+    find_library( LIBOKTETA1KASTEN1GUI_LIBRARY
+        NAMES
+        kasten1okteta1gui
+        HINTS
+        ${LIB_INSTALL_DIR}
+        ${KDE4_LIB_DIR}
+    )
+
+    find_library( LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY
+        NAMES
+        kasten1okteta1controllers
+        HINTS
+        ${LIB_INSTALL_DIR}
+        ${KDE4_LIB_DIR}
+    )
+
+
+    find_path( LIBOKTETA1KASTEN1_INCLUDE_DIR
+        NAMES
+        bytearraydocument.h
+        PATH_SUFFIXES
+        kasten1/okteta1
+        HINTS
+        ${INCLUDE_INSTALL_DIR}
+        ${KDE4_INCLUDE_DIR}
+    )
+
+    if( LIBOKTETA1KASTEN1_INCLUDE_DIR AND
+        LIBOKTETA1KASTEN1CORE_LIBRARY AND LIBOKTETA1KASTEN1GUI_LIBRARY AND LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY )
+        set( LIBOKTETAKASTEN_FOUND  TRUE )
+    endif( LIBOKTETA1KASTEN1_INCLUDE_DIR AND
+        LIBOKTETA1KASTEN1CORE_LIBRARY AND LIBOKTETA1KASTEN1GUI_LIBRARY AND LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY )
+
+    if( LIBOKTETAKASTEN_FOUND )
+        set( LIBOKTETAKASTEN_VERSION 1 )
+        set( LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION 1 )
+        set( LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION 1 )
+        set( LIBOKTETAKASTEN_LIBRARIES
+            ${LIBOKTETA1KASTEN1CORE_LIBRARY}
+            ${LIBOKTETA1KASTEN1GUI_LIBRARY}
+            ${LIBOKTETA1KASTEN1CONTROLLERS_LIBRARY}
+        )
+        set( LIBOKTETAKASTEN_INCLUDE_DIRS
+            ${LIBOKTETA1KASTEN1_INCLUDE_DIR}
+        )
+    endif( LIBOKTETAKASTEN_FOUND )
+endif( NOT LIBOKTETAKASTEN_FOUND )
+
 # Then search version 0
 if( NOT LIBOKTETAKASTEN_FOUND )
     find_library( LIBOKTETAKASTENCORE0_LIBRARY
@@ -112,6 +174,8 @@ if( NOT LIBOKTETAKASTEN_FOUND )
 
     if( LIBOKTETAKASTEN_FOUND )
         set( LIBOKTETAKASTEN_VERSION 0 )
+        set( LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION 0 )
+        set( LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION 0 )
         set( LIBOKTETAKASTEN_INCLUDE_DIRS
             ${LIBOKTETAKASTEN0_INCLUDE_DIR}
         )
@@ -138,4 +202,6 @@ mark_as_advanced(
     LIBOKTETAKASTEN_INCLUDE_DIRS
     LIBOKTETAKASTEN_LIBRARIES
     LIBOKTETAKASTEN_VERSION
+    LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION
+    LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION
 )
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index 1545d8c..aa0a0e6 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -6,8 +6,8 @@ macro_log_feature( LIBOKTETAKASTEN_FOUND
 )
 
 if( LIBOKTETAKASTEN_FOUND )
-set( LIBOKTETA_FIND_VERSION ${LIBOKTETAKASTEN_VERSION} )
-set( LIBKASTEN_FIND_VERSION ${LIBOKTETAKASTEN_VERSION} )
+set( LIBOKTETA_FIND_VERSION ${LIBOKTETAKASTEN_NEEDS_OKTETA_VERSION} )
+set( LIBKASTEN_FIND_VERSION ${LIBOKTETAKASTEN_NEEDS_KASTEN_VERSION} )
 macro_optional_find_package( LibOkteta )
 macro_optional_find_package( LibKasten )
 
@@ -16,7 +16,7 @@ macro_log_feature( LIBOKTETA_FOUND
   "" "Required for building Okteta KDevelop plugin."
 )
 macro_log_feature( LIBKASTEN_FOUND
-  "libkasten v${LIBKASTEN_FIND_VERSION}" "Kasten libraries" "kdesk/okteta/libs" FALSE
+  "libkasten v${LIBKASTEN_FIND_VERSION}" "Kasten libraries" "kdesk/okteta/libs/kasten" FALSE
   "" "Required for building Okteta KDevelop plugin."
 )
 endif( LIBOKTETAKASTEN_FOUND )
diff --git a/utils/okteta/kastentoolviewwidget.cpp b/utils/okteta/kastentoolviewwidget.cpp
index b10974e..6ec4f69 100644
--- a/utils/okteta/kastentoolviewwidget.cpp
+++ b/utils/okteta/kastentoolviewwidget.cpp
@@ -27,7 +27,10 @@
 // Okteta Kasten
 #include <bytearrayview.h>
 // Kasten
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+#include <Kasten2/AbstractToolView>
+#include <Kasten2/AbstractTool>
+#elif KASTEN_VERSION == 1
 #include <Kasten1/AbstractToolView>
 #include <Kasten1/AbstractTool>
 #else
diff --git a/utils/okteta/kdevokteta.rc b/utils/okteta/kdevokteta.rc
index e5314cf..b9ac33c 100644
--- a/utils/okteta/kdevokteta.rc
+++ b/utils/okteta/kdevokteta.rc
@@ -1,5 +1,5 @@
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<gui name="okteta" version="1">
+<gui name="okteta" version="2">
 <MenuBar>
   <Menu name="file">
     <Action name="file_save" group="save_merge" /> <!-- TODO: why isn't this offered by the host? -->
@@ -35,34 +35,45 @@
     <Separator group="edit_find_merge" />
     <Action name="goto_offset" group="edit_find_merge" />
   </Menu>
-  <Menu name="view"><text>View</text>
-    <Action name="view_zoom_in" group="view_operations" />
-    <Action name="view_zoom_out" group="view_operations" />
-    <Separator group="view_operations" />
-    <Action name="view_showsnonprinting" group="view_operations" />
-    <Action name="view_lineoffset" group="view_operations" />
-    <Action name="togglecolumns" group="view_operations" />
-    <Separator group="view_operations" />
-    <Action name="view_valuecoding" group="view_operations" />
-    <Action name="view_charencoding" group="view_operations" />
-    <Separator group="view_operations" />
-    <Action name="view_bytesperline" group="view_operations" />
-    <Action name="view_bytespergroup" group="view_operations" />
-    <Action name="resizestyle" group="view_operations" />
-    <Action name="viewmode" group="view_operations" />
+
+  <Menu name="editor">
+
+    <Menu name="view"><text>View</text>
+      <Action name="view_zoom_in" group="view_operations" />
+      <Action name="view_zoom_out" group="view_operations" />
+      <Separator group="view_operations" />
+      <Action name="view_showsnonprinting" group="view_operations" />
+      <Action name="view_lineoffset" group="view_operations" />
+      <Action name="togglecolumns" group="view_operations" />
+      <Separator group="view_operations" />
+      <Action name="view_valuecoding" group="view_operations" />
+      <Action name="view_charencoding" group="view_operations" />
+      <Separator group="view_operations" />
+      <Action name="view_bytesperline" group="view_operations" />
+      <Action name="view_bytespergroup" group="view_operations" />
+      <Action name="resizestyle" group="view_operations" />
+      <Action name="viewmode" group="view_operations" />
+      <Separator/>
+      <Action name="view_profile" />
+    </Menu>
+    <Menu name="bookmarks"><text>Bookmarks</text>
+      <Action name="bookmark_add" />
+      <Action name="bookmark_edit" />
+      <Separator/>
+      <Action name="bookmark_replace" />
+      <Action name="bookmark_remove" />
+      <Action name="bookmark_remove_all" />
+      <Separator/>
+      <Action name="bookmark_previous" />
+      <Action name="bookmark_next" />
+      <Separator/>
+      <ActionList name="bookmark_list" />
+    </Menu>
+
   </Menu>
-  <Menu name="bookmarks"><text>Bookmarks</text>
-    <Action name="bookmark_add" />
-    <Action name="bookmark_edit" />
-    <Separator/>
-    <Action name="bookmark_replace" />
-    <Action name="bookmark_remove" />
-    <Action name="bookmark_remove_all" />
-    <Separator/>
-    <Action name="bookmark_previous" />
-    <Action name="bookmark_next" />
-    <Separator/>
-    <ActionList name="bookmark_list" />
+
+  <Menu name="settings">
+    <Action name="settings_viewprofiles_manage" group="configure_merge" />
   </Menu>
 </MenuBar>
 
diff --git a/utils/okteta/oktetadocument.cpp b/utils/okteta/oktetadocument.cpp
index abb047d..6af5c11 100644
--- a/utils/okteta/oktetadocument.cpp
+++ b/utils/okteta/oktetadocument.cpp
@@ -23,9 +23,15 @@
 #include "oktetadocument.h"
 
 // plugin
+#include "oktetaplugin.h"
 #include "oktetaview.h"
 // Okteta
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+#include <kasten2/okteta1/bytearrayviewprofilemanager.h>
+#include <kasten2/okteta1/bytearrayviewprofilesynchronizer.h>
+#include <kasten2/okteta1/bytearrayrawfilesynchronizerfactory.h>
+#include <kasten2/okteta1/bytearraydocument.h>
+#elif KASTEN_VERSION == 1
 #include <kasten1/okteta1/bytearrayrawfilesynchronizerfactory.h>
 #include <kasten1/okteta1/bytearraydocument.h>
 #else
@@ -33,7 +39,13 @@
 #include <kasten/bytearraydocument.h>
 #endif
 // Kasten
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+#include <Kasten2/JobManager>
+#include <Kasten2/AbstractLoadJob>
+#include <Kasten2/AbstractSyncToRemoteJob>
+#include <Kasten2/AbstractSyncFromRemoteJob>
+#include <Kasten2/AbstractModelSynchronizer>
+#elif KASTEN_VERSION == 1
 #include <Kasten1/JobManager>
 #include <Kasten1/AbstractLoadJob>
 #include <Kasten1/AbstractSyncToRemoteJob>
@@ -86,7 +98,11 @@ KTextEditor::Cursor OktetaDocument::cursorPosition() const { return KTextEditor:
 IDocument::DocumentState OktetaDocument::state() const
 {
     return mByteArrayDocument ?
+#if KASTEN_VERSION == 2
+               ( mByteArrayDocument->synchronizer()->localSyncState() == Kasten::LocalHasChanges ?
+#else
                ( mByteArrayDocument->localSyncState() == Kasten::LocalHasChanges ?
+#endif
                    IDocument::Modified :
                    IDocument::Clean ) :
                IDocument::Clean;
@@ -105,7 +121,7 @@ bool OktetaDocument::save( IDocument::DocumentSaveMode mode )
 
     Kasten::AbstractSyncToRemoteJob* syncJob = synchronizer->startSyncToRemote();
     const bool syncSucceeded =
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 1 || KASTEN_VERSION == 2
         Kasten::JobManager::executeJob( syncJob );
 #else
         Kasten::JobManager::executeJob( syncJob, qApp->activeWindow() );
@@ -127,7 +143,7 @@ void OktetaDocument::reload()
 
     Kasten::AbstractSyncFromRemoteJob* syncJob = synchronizer->startSyncFromRemote();
     const bool syncSucceeded =
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 1 || KASTEN_VERSION == 2
         Kasten::JobManager::executeJob( syncJob );
 #else
         Kasten::JobManager::executeJob( syncJob, qApp->activeWindow() );
@@ -227,7 +243,10 @@ Sublime::View* OktetaDocument::newView( Sublime::Document* document )
         Kasten::AbstractModelSynchronizer* synchronizer = synchronizerFactory->createSynchronizer();
 
         Kasten::AbstractLoadJob* loadJob = synchronizer->startLoad( url() );
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+        connect( loadJob, SIGNAL(documentLoaded(Kasten2::AbstractDocument*)),
+                 SLOT(onByteArrayDocumentLoaded(Kasten2::AbstractDocument*)) );
+#elif KASTEN_VERSION == 1
         connect( loadJob, SIGNAL(documentLoaded(Kasten1::AbstractDocument*)),
                  SLOT(onByteArrayDocumentLoaded(Kasten1::AbstractDocument*)) );
 #else
@@ -235,7 +254,7 @@ Sublime::View* OktetaDocument::newView( Sublime::Document* document )
                  SLOT(onByteArrayDocumentLoaded(Kasten::AbstractDocument*)) );
 #endif
     const bool syncSucceeded =
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 1 || KASTEN_VERSION == 2
         Kasten::JobManager::executeJob( loadJob );
 #else
         Kasten::JobManager::executeJob( loadJob, qApp->activeWindow() );
@@ -244,7 +263,15 @@ Sublime::View* OktetaDocument::newView( Sublime::Document* document )
         delete synchronizerFactory;
     }
 
+#if KASTEN_VERSION == 2
+    Kasten::ByteArrayViewProfileManager* const viewProfileManager = mPlugin->viewProfileManager();
+    Kasten::ByteArrayViewProfileSynchronizer* viewProfileSynchronizer =
+        new Kasten::ByteArrayViewProfileSynchronizer( viewProfileManager );
+    viewProfileSynchronizer->setViewProfileId( viewProfileManager->defaultViewProfileId() );
+    return new OktetaView( this, viewProfileSynchronizer );
+#else
     return new OktetaView( this );
+#endif
 }
 
 bool OktetaDocument::closeDocument(bool silent)
@@ -257,7 +284,9 @@ void OktetaDocument::onByteArrayDocumentLoaded( Kasten::AbstractDocument* docume
     if( document )
     {
         mByteArrayDocument = static_cast<Kasten::ByteArrayDocument*>( document );
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+        connect( mByteArrayDocument, SIGNAL(localSyncStateChanged(Kasten2::LocalSyncState)),
+#elif KASTEN_VERSION == 1
         connect( mByteArrayDocument, SIGNAL(localSyncStateChanged(Kasten1::LocalSyncState)),
 #else
         connect( mByteArrayDocument, SIGNAL(localSyncStateChanged(Kasten::LocalSyncState)),
diff --git a/utils/okteta/oktetadocument.h b/utils/okteta/oktetadocument.h
index 56eba46..c03573a 100644
--- a/utils/okteta/oktetadocument.h
+++ b/utils/okteta/oktetadocument.h
@@ -85,7 +85,9 @@ class OktetaDocument : public Sublime::UrlDocument, public IDocument
   protected Q_SLOTS:
     void onByteArrayDocumentChanged();
     // Moc is too primitive to know about namespace aliase
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+    void onByteArrayDocumentLoaded( Kasten2::AbstractDocument* document );
+#elif KASTEN_VERSION == 1
     void onByteArrayDocumentLoaded( Kasten1::AbstractDocument* document );
 #else
     void onByteArrayDocumentLoaded( Kasten::AbstractDocument* document );
diff --git a/utils/okteta/oktetaglobal.h b/utils/okteta/oktetaglobal.h
index 0113bbb..857ba55 100644
--- a/utils/okteta/oktetaglobal.h
+++ b/utils/okteta/oktetaglobal.h
@@ -24,7 +24,11 @@
 #define OKTETAGLOBAL_H
 
 // Adaptions for the different version of Kasten and Okteta
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+namespace Kasten2 {}
+namespace Kasten = Kasten2;
+#define KASTEN_NAMESPACE Kasten2
+#elif KASTEN_VERSION == 1
 namespace Kasten1 {}
 namespace Kasten = Kasten1;
 #define KASTEN_NAMESPACE Kasten1
diff --git a/utils/okteta/oktetaplugin.cpp b/utils/okteta/oktetaplugin.cpp
index c8a7fd4..5691959 100644
--- a/utils/okteta/oktetaplugin.cpp
+++ b/utils/okteta/oktetaplugin.cpp
@@ -45,6 +45,10 @@
 #include <bookmarkstoolfactory.h>
 #include <structurestoolviewfactory.h>
 #include <structurestoolfactory.h>
+// Okteta Kasten
+#if KASTEN_VERSION == 2
+#include <bytearrayviewprofilemanager.h>
+#endif
 // KDev
 #include <project/projectmodel.h>
 #include <interfaces/icore.h>
@@ -77,15 +81,20 @@ void addTool( IUiController* uiController,
 
 
 OktetaPlugin::OktetaPlugin( QObject* parent, const QVariantList& args )
-  : IPlugin( OktetaPluginFactory::componentData(), parent ),
-    mDocumentFactory( new OktetaDocumentFactory(this) )
+  : IPlugin( OktetaPluginFactory::componentData(), parent )
+  , mDocumentFactory( new OktetaDocumentFactory(this) )
+#if KASTEN_VERSION == 2
+  , mViewProfileManager( new Kasten::ByteArrayViewProfileManager() )
+#endif
 {
     Q_UNUSED(args)
 
+#if KASTEN_VERSION == 0 || KASTEN_VERSION == 1
     KLocale* globalLocale = KGlobal::locale();
     globalLocale->insertCatalog( QString::fromLatin1("liboktetacore") );
     globalLocale->insertCatalog( QString::fromLatin1("libkasten") );
     globalLocale->insertCatalog( QString::fromLatin1("liboktetakasten") );
+#endif
 
     IUiController* uiController = core()->uiController();
     addTool( uiController, new Kasten::ChecksumToolViewFactory(), new Kasten::ChecksumToolFactory() );
diff --git a/utils/okteta/oktetaplugin.h b/utils/okteta/oktetaplugin.h
index 3eec9f7..d848aae 100644
--- a/utils/okteta/oktetaplugin.h
+++ b/utils/okteta/oktetaplugin.h
@@ -23,6 +23,8 @@
 #ifndef OKTETAPLUGIN_H
 #define OKTETAPLUGIN_H
 
+// Plugin
+#include "oktetaglobal.h"
 // KDev
 #include <interfaces/iplugin.h>
 // Qt
@@ -30,6 +32,10 @@
 
 class KUrl;
 
+namespace KASTEN_NAMESPACE
+{
+class ByteArrayViewProfileManager;
+}
 
 namespace KDevelop
 {
@@ -48,11 +54,19 @@ class OktetaPlugin: public IPlugin
   public: // KDevelop::IPlugin API
     virtual ContextMenuExtension contextMenuExtension( Context* context );
 
+#if KASTEN_VERSION == 2
+  public:
+    Kasten::ByteArrayViewProfileManager* viewProfileManager() const { return mViewProfileManager; }
+#endif
+
   private Q_SLOTS:
     void onOpenTriggered();
 
   protected:
     OktetaDocumentFactory* mDocumentFactory;
+#if KASTEN_VERSION == 2
+    Kasten::ByteArrayViewProfileManager* const mViewProfileManager;
+#endif
     QList<KUrl> mContextUrls;
 };
 
diff --git a/utils/okteta/oktetatoolviewfactory.cpp b/utils/okteta/oktetatoolviewfactory.cpp
index ed0cf13..fffa24e 100644
--- a/utils/okteta/oktetatoolviewfactory.cpp
+++ b/utils/okteta/oktetatoolviewfactory.cpp
@@ -25,7 +25,11 @@
 // plugin
 #include "kastentoolviewwidget.h"
 // Kasten
-#if KASTEN_VERSION == 1
+#if KASTEN_VERSION == 2
+#include <Kasten2/AbstractToolViewFactory>
+#include <Kasten2/AbstractToolFactory>
+#include <Kasten2/AbstractToolView>
+#elif KASTEN_VERSION == 1
 #include <Kasten1/AbstractToolViewFactory>
 #include <Kasten1/AbstractToolFactory>
 #include <Kasten1/AbstractToolView>
diff --git a/utils/okteta/oktetaview.cpp b/utils/okteta/oktetaview.cpp
index 249aaaa..d4142f3 100644
--- a/utils/okteta/oktetaview.cpp
+++ b/utils/okteta/oktetaview.cpp
@@ -33,9 +33,15 @@
 namespace KDevelop
 {
 
+#if KASTEN_VERSION == 2
+OktetaView::OktetaView( OktetaDocument* document, Kasten::ByteArrayViewProfileSynchronizer* viewProfileSynchronizer )
+  : Sublime::View( document, View::TakeOwnership ),
+    mByteArrayView( new Kasten::ByteArrayView( document->byteArrayDocument(), viewProfileSynchronizer ) )
+#else
 OktetaView::OktetaView( OktetaDocument* document )
   : Sublime::View( document, View::TakeOwnership ),
     mByteArrayView( new Kasten::ByteArrayView( document->byteArrayDocument() ) )
+#endif
 {
 }
 
diff --git a/utils/okteta/oktetaview.h b/utils/okteta/oktetaview.h
index 29a6b39..6d2e655 100644
--- a/utils/okteta/oktetaview.h
+++ b/utils/okteta/oktetaview.h
@@ -29,6 +29,7 @@
 #include <sublime/view.h>
 
 namespace KASTEN_NAMESPACE {
+class ByteArrayViewProfileSynchronizer;
 class ByteArrayView;
 }
 
@@ -43,8 +44,11 @@ class OktetaView : public Sublime::View
   Q_OBJECT
 
   public:
+#if KASTEN_VERSION == 2
+    OktetaView( OktetaDocument* document, Kasten::ByteArrayViewProfileSynchronizer* viewProfileSynchronizer );
+#else
     explicit OktetaView( OktetaDocument* document );
-
+#endif
     virtual ~OktetaView();
 
   public:
diff --git a/utils/okteta/oktetawidget.cpp b/utils/okteta/oktetawidget.cpp
index 0fac371..cd020b7 100644
--- a/utils/okteta/oktetawidget.cpp
+++ b/utils/okteta/oktetawidget.cpp
@@ -39,6 +39,10 @@
 #include <viewconfigcontroller.h>
 #include <viewmodecontroller.h>
 #include <viewstatuscontroller.h>
+#if KASTEN_VERSION == 2
+#include <viewprofilecontroller.h>
+#include <viewprofilesmanagecontroller.h>
+#endif
 // Kasten
 #include <readonlycontroller.h>
 // #include <document/readonly/readonlybarcontroller.h>
@@ -54,6 +58,7 @@
 // KDevelop
 #include <sublime/view.h>
 // KDE
+#include <KLocale>
 #include <KAction>
 #include <KStandardAction>
 #include <KActionCollection>
@@ -73,7 +78,7 @@ OktetaWidget::OktetaWidget( QWidget* parent, Kasten::ByteArrayView* byteArrayVie
     setComponentData( plugin->componentData() );
     setXMLFile( "kdevokteta.rc" );
 
-    setupActions();
+    setupActions(plugin);
 
     QVBoxLayout* layout = new QVBoxLayout( this );
     layout->setMargin( 0 );
@@ -82,7 +87,7 @@ OktetaWidget::OktetaWidget( QWidget* parent, Kasten::ByteArrayView* byteArrayVie
     setFocusProxy( widget );
 }
 
-void OktetaWidget::setupActions()
+void OktetaWidget::setupActions(OktetaPlugin* plugin)
 {
     mControllers.append( new Kasten::VersionController(this) );
     mControllers.append( new Kasten::ReadOnlyController(this) );
@@ -103,6 +108,15 @@ void OktetaWidget::setupActions()
     mControllers.append( new Kasten::PrintController( this ) );
     mControllers.append( new Kasten::ViewConfigController(this) );
     mControllers.append( new Kasten::ViewModeController(this) );
+#if KASTEN_VERSION == 2
+    Kasten::ByteArrayViewProfileManager* viewProfileManager = plugin->viewProfileManager();
+    mControllers.append( new Kasten::ViewProfileController(viewProfileManager, mByteArrayView->widget(), this) );
+    mControllers.append( new Kasten::ViewProfilesManageController(this, viewProfileManager, mByteArrayView->widget()) );
+    // update the text of the viewprofiles_manage action, to make clear this is just for byte arrays
+    QAction* viewprofilesManageAction = actionCollection()->action(QLatin1String("settings_viewprofiles_manage"));
+    viewprofilesManageAction->setText( i18nc("@action:inmenu",
+                                             "Manage Byte Array View Profiles...") );
+#endif
 
 //     Kasten::StatusBar* bottomBar = static_cast<Kasten::StatusBar*>( statusBar() );
 //     mControllers.append( new ViewStatusController(bottomBar) );
@@ -111,7 +125,6 @@ void OktetaWidget::setupActions()
 
     foreach( Kasten::AbstractXmlGuiController* controller, mControllers )
         controller->setTargetModel( mByteArrayView );
-
 #if 0
     QDesignerFormWindowManagerInterface* manager = mDocument->form()->core()->formWindowManager();
     KActionCollection* ac = actionCollection();
diff --git a/utils/okteta/oktetawidget.h b/utils/okteta/oktetawidget.h
index dfc9907..e62e58e 100644
--- a/utils/okteta/oktetawidget.h
+++ b/utils/okteta/oktetawidget.h
@@ -55,10 +55,10 @@ class OktetaWidget : public QWidget, public KXMLGUIClient
         void editSignals();
         void editTabOrder();
 #endif
-  protected:
-    void setupActions();
+  private:
+    void setupActions(OktetaPlugin* plugin);
 
-  protected:
+  private:
     Kasten::ByteArrayView* mByteArrayView;
     // TODO: move this to the plugin, per mainwindow
     QList<Kasten::AbstractXmlGuiController*> mControllers;