# include <string>
const std : : string configjson =
" { \n "
" \" gtk_theme \" : { \n "
" \" name \" : \" Adwaita \" , //Use \" \" for default theme, At least these two exist on all systems: Adwaita, Raleigh \n "
" \" variant \" : \" \" //Use \" \" for default variant, and \" dark \" for dark theme variant \n "
" }, \n "
" \" source \" : { \n "
" \" style \" : \" juci-light \" , //Use \" \" for default style, and for instance juci-dark together with dark gtk_theme variant. Styles from normal gtksourceview install: classic, cobalt, kate, oblivion, solarized-dark, solarized-light, tango \n "
" \" font \" : \" Monospace \" , //Use \" \" for default font, and for instance \" Monospace 12 \" to also set size. \n "
" \" clang_types \" : { \n "
" \" 8 \" : \" def:function \" , \n "
" \" 21 \" : \" def:function \" , \n "
" \" 22 \" : \" def:identifier \" , \n "
" \" 24 \" : \" def:function \" , \n "
" \" 25 \" : \" def:function \" , \n "
" \" 43 \" : \" def:type \" , \n "
" \" 44 \" : \" def:type \" , \n "
" \" 45 \" : \" def:type \" , \n "
" \" 46 \" : \" def:identifier \" , \n "
" \" 109 \" : \" def:string \" , \n "
" \" 500 \" : \" def:preprocessor \" , \n "
" \" 702 \" : \" def:statement \" , \n "
" \" 705 \" : \" def:comment \" \n "
" }, \n "
" \" tab_size \" : 2, \n "
" \" tab_char \" : \" \" , //Use \" \\ t \" for regular tab \n "
" \" highlight_current_line \" : true, \n "
" \" show_line_numbers \" : true \n "
" }, \n "
" \" keybindings \" : { \n "
" \" new_file \" : \" <primary>n \" , \n "
" \" open_folder \" : \" <primary><alt>o \" , \n "
" \" open_file \" : \" <primary>o \" , \n "
" \" save \" : \" <primary>s \" , \n "
" \" save_as \" : \" <primary><shift>s \" , \n "
" \" quit \" : \" <primary>q \" , \n "
" \" split_window \" : \" <primary><alt>s \" , \n "
" \" close_tab \" : \" <primary>w \" , \n "
" \" edit_copy \" : \" <primary>c \" , \n "
" \" edit_cut \" : \" <primary>x \" , \n "
" \" edit_paste \" : \" <primary>v \" , \n "
" \" edit_undo \" : \" <primary>z \" , \n "
" \" edit_redo \" : \" <primary><shift>z \" , \n "
" \" edit_find \" : \" <primary>f \" , \n "
" \" source_goto_line \" : \" <primary>g \" , \n "
" \" source_center_cursor \" : \" <primary>l \" , \n "
" \" source_goto_declaration \" : \" <primary>d \" , \n "
" \" source_goto_method \" : \" <primary>m \" , \n "
" \" source_rename \" : \" <primary>r \" , \n "
" \" compile_and_run \" : \" <primary>Return \" , \n "
" \" compile \" : \" <primary><shift>Return \" , \n "
" \" run_command \" : \" <alt>Return \" , \n "
" \" kill_last_running \" : \" <primary>Escape \" , \n "
" \" force_kill_last_running \" : \" <primary><shift>Escape \" \n "
" }, \n "
" \" project \" : { \n "
" \" make_command \" : \" make \" \n "
" }, \n "
" \" directoryfilter \" : { \n "
" \" ignore \" : [ \n "
" \" cmake \" , \n "
" \" # \" , \n "
" \" ~ \" , \n "
" \" .idea \" , \n "
" \" .so \" \n "
" ], \n "
" \" exceptions \" : [ \n "
" \" cmakelists.txt \" \n "
" ] \n "
" } \n "
" } \n " ;
const std : : string menuxml =
" <ui> \n "
" <menubar name= \" MenuBar \" > \n "
" <menu action= \" FileMenu \" > \n "
" <menuitem action= \" FileNewFile \" /> \n "
" <menu action= \" FileNewProject \" > \n "
" <menuitem action= \" FileNewProjectCpp \" /> \n "
" </menu> \n "
" <separator/> \n "
" <menuitem action= \" FileOpenFile \" /> \n "
" <menuitem action= \" FileOpenFolder \" /> \n "
" <separator/> \n "
" <menuitem action= \" FileSave \" /> \n "
" <menuitem action= \" FileSaveAs \" /> \n "
" <separator/> \n "
" <menuitem action= \" FileQuit \" /> \n "
" </menu> \n "
" <menu action= \" EditMenu \" > \n "
" <menuitem action= \" EditUndo \" /> \n "
" <menuitem action= \" EditRedo \" /> \n "
" <separator/> \n "
" <menuitem action= \" EditCopy \" /> \n "
" <menuitem action= \" EditCut \" /> \n "
" <menuitem action= \" EditPaste \" /> \n "
" <separator/> \n "
" <menuitem action= \" EditFind \" /> \n "
" </menu> \n "
" <menu action= \" SourceMenu \" > \n "
" <menuitem action= \" SourceGotoLine \" /> \n "
" <menuitem action= \" SourceCenterCursor \" /> \n "
" <separator/> \n "
" <menuitem action= \" SourceGotoDeclaration \" /> \n "
" <menuitem action= \" SourceGotoMethod \" /> \n "
" <menuitem action= \" SourceRename \" /> \n "
" </menu> \n "
" <menu action= \" ProjectMenu \" > \n "
" <menuitem action= \" ProjectCompileAndRun \" /> \n "
" <menuitem action= \" ProjectCompile \" /> \n "
" <separator/> \n "
" <menuitem action= \" ProjectRunCommand \" /> \n "
" <menuitem action= \" ProjectKillLastRunning \" /> \n "
" <menuitem action= \" ProjectForceKillLastRunning \" /> \n "
" </menu> \n "
" <menu action= \" WindowMenu \" > \n "
" <menuitem action= \" WindowCloseTab \" /> \n "
" <menuitem action= \" WindowSplitWindow \" /> \n "
" </menu> \n "
" <menu action= \" PluginMenu \" > \n "
" </menu> \n "
" <menu action= \" HelpMenu \" > \n "
" <menuitem action= \" HelpAbout \" /> \n "
" </menu> \n "
" </menubar> \n "
" </ui> \n " ;
const std : : string juci_light_style =
" <?xml version= \" 1.0 \" encoding= \" UTF-8 \" ?> \n "
" \n "
" <style-scheme id= \" juci-light \" _name= \" juci \" version= \" 1.0 \" > \n "
" <author>juCi++ team</author> \n "
" <_description>Default juCi++ style</_description> \n "
" \n "
" <!-- Palette --> \n "
" <color name= \" white \" value= \" #FFFFFF \" /> \n "
" <color name= \" black \" value= \" #000000 \" /> \n "
" <color name= \" gray \" value= \" #888888 \" /> \n "
" <color name= \" red \" value= \" #CC0000 \" /> \n "
" <color name= \" green \" value= \" #008800 \" /> \n "
" <color name= \" blue \" value= \" #0000FF \" /> \n "
" <color name= \" dark-blue \" value= \" #002299 \" /> \n "
" <color name= \" yellow \" value= \" #FFFF00 \" /> \n "
" <color name= \" orange \" value= \" #EE7700 \" /> \n "
" <color name= \" purple \" value= \" #990099 \" /> \n "
" \n "
" <style name= \" text \" foreground= \" #000000 \" background= \" #FFFFFF \" /> \n "
" <style name= \" selection \" background= \" #4A90D9 \" /> \n "
" \n "
" <!-- Current Line Highlighting --> \n "
" <style name= \" current-line \" background= \" #EEEEEE \" /> \n "
" \n "
" <!-- Bracket Matching --> \n "
" <style name= \" bracket-match \" foreground= \" white \" background= \" gray \" bold= \" true \" /> \n "
" <style name= \" bracket-mismatch \" foreground= \" white \" background= \" #FF0000 \" bold= \" true \" /> \n "
" \n "
" <!-- Search Matching --> \n "
" <style name= \" search-match \" background= \" yellow \" /> \n "
" \n "
" <!-- Language specifics --> \n "
" <style name= \" def:builtin \" foreground= \" blue \" /> \n "
" <style name= \" def:constant \" foreground= \" blue \" /> \n "
" <style name= \" def:boolean \" foreground= \" red \" /> \n "
" <style name= \" def:decimal \" foreground= \" red \" /> \n "
" <style name= \" def:base-n-integer \" foreground= \" red \" /> \n "
" <style name= \" def:floating-point \" foreground= \" red \" /> \n "
" <style name= \" def:complex \" foreground= \" red \" /> \n "
" <style name= \" def:character \" foreground= \" red \" /> \n "
" <style name= \" def:special-char \" foreground= \" red \" /> \n "
" \n \n "
" <!-- Language specifics used by clang-parser in default config --> \n "
" <style name= \" def:string \" foreground= \" red \" /> \n "
" <style name= \" def:comment \" foreground= \" gray \" /> \n "
" <style name= \" def:statement \" foreground= \" blue \" /> \n "
" <style name= \" def:type \" foreground= \" blue \" /> \n "
" <style name= \" def:function \" foreground= \" dark-blue \" /> \n "
" <style name= \" def:identifier \" foreground= \" purple \" /> \n "
" <style name= \" def:preprocessor \" foreground= \" green \" /> \n "
" <style name= \" def:error \" foreground= \" red \" /> \n "
" <style name= \" def:warning \" foreground= \" orange \" /> \n "
" <style name= \" def:note \" foreground= \" black \" background= \" yellow \" /> \n "
" \n "
" </style-scheme> \n " ;
const std : : string juci_dark_style =
" <?xml version= \" 1.0 \" encoding= \" UTF-8 \" ?> \n "
" \n "
" <style-scheme id= \" juci-dark \" _name= \" juci \" version= \" 1.0 \" > \n "
" <author>juCi++ team</author> \n "
" <_description>Default juCi++ style</_description> \n "
" \n "
" <!-- Palette --> \n "
" <color name= \" white \" value= \" #FFFFFF \" /> \n "
" <color name= \" black \" value= \" #000000 \" /> \n "
" <color name= \" gray \" value= \" #888888 \" /> \n "
" <color name= \" red \" value= \" #FF8888 \" /> \n "
" <color name= \" green \" value= \" #779955 \" /> \n "
" <color name= \" blue \" value= \" #8888FF \" /> \n "
" <color name= \" dark-blue \" value= \" #6666CC \" /> \n "
" <color name= \" yellow \" value= \" #444433 \" /> \n "
" <color name= \" orange \" value= \" #FF8800 \" /> \n "
" <color name= \" purple \" value= \" #DD88DD \" /> \n "
" \n "
" <style name= \" text \" foreground= \" #BBBBBB \" background= \" #222222 \" /> \n "
" <style name= \" selection \" background= \" #215D9C \" /> \n "
" \n "
" <!-- Current Line Highlighting --> \n "
" <style name= \" current-line \" background= \" #333333 \" /> \n "
" \n "
" <!-- Bracket Matching --> \n "
" <style name= \" bracket-match \" foreground= \" black \" background= \" gray \" bold= \" true \" /> \n "
" <style name= \" bracket-mismatch \" foreground= \" black \" background= \" #FF0000 \" bold= \" true \" /> \n "
" \n "
" <!-- Search Matching --> \n "
" <style name= \" search-match \" background= \" yellow \" /> \n "
" \n "
" <!-- Language specifics --> \n "
" <style name= \" def:builtin \" foreground= \" blue \" /> \n "
" <style name= \" def:constant \" foreground= \" blue \" /> \n "
" <style name= \" def:boolean \" foreground= \" red \" /> \n "
" <style name= \" def:decimal \" foreground= \" red \" /> \n "
" <style name= \" def:base-n-integer \" foreground= \" red \" /> \n "
" <style name= \" def:floating-point \" foreground= \" red \" /> \n "
" <style name= \" def:complex \" foreground= \" red \" /> \n "
" <style name= \" def:character \" foreground= \" red \" /> \n "
" <style name= \" def:special-char \" foreground= \" red \" /> \n "
" \n \n "
" <!-- Language specifics used by clang-parser in default config --> \n "
" <style name= \" def:string \" foreground= \" red \" /> \n "
" <style name= \" def:comment \" foreground= \" gray \" /> \n "
" <style name= \" def:statement \" foreground= \" blue \" /> \n "
" <style name= \" def:type \" foreground= \" blue \" /> \n "
" <style name= \" def:function \" foreground= \" dark-blue \" /> \n "
" <style name= \" def:identifier \" foreground= \" purple \" /> \n "
" <style name= \" def:preprocessor \" foreground= \" green \" /> \n "
" <style name= \" def:error \" foreground= \" red \" /> \n "
" <style name= \" def:warning \" foreground= \" orange \" /> \n "
" <style name= \" def:note \" foreground= \" #BBBBBB \" background= \" yellow \" /> \n "
" \n "
" </style-scheme> \n " ;
const std : : string pluginspy =
" #!/usr/bin/python \n "
" import juci_to_python_api as juci \n "
" import glob \n "
" \n "
" def loadplugins(): \n "
" plugin_files = glob.glob( \" ../plugins/*.py \" ) \n "
" for current_file in plugin_files: \n "
" juci.initPlugin(current_file) \n "
" loadplugins() \n " ;
const std : : string snippetpy =
" #!/usr/bin/python \n "
" #snippet plugin \n "
" import juci_to_python_api as juci, inspect \n "
" \n "
" def initPlugin(): \n "
" juci.addMenuElement( \" Snippet \" ) \n "
" juci.addSubMenuElement( \" SnippetMenu \" , #name of parent menu \n "
" \" Insert snippet \" , #menu description \n "
" \" insertSnippet() \" , #function to execute \n "
" inspect.getfile(inspect.currentframe()), #plugin path \n "
" \" <control><alt>space \" ) \n "
" snippets = {} \n "
" \n "
" snippets[ \" for \" ] = \" \" \" \\ \n "
" for(int i=0; i<v.size(); i++) { \n "
" // std::cout << v[i] << std::endl; \n "
" // Write code here \n "
" } \n "
" \" \" \" \n "
" \n "
" snippets[ \" if \" ] = \" \" \" \\ \n "
" if(true) { \n "
" // Write code here \n "
" } \n "
" \" \" \" \n "
" \n "
" snippets[ \" ifelse \" ] = \" \" \" \\ \n "
" if(false) { \n "
" // Write code here \n "
" } else { \n "
" // Write code here \n "
" } \n "
" \" \" \" \n "
" \n "
" snippets[ \" while \" ] = \" \" \" \\ \n "
" while(condition) { \n "
" // Write code here \n "
" } \n "
" \" \" \" \n "
" \n "
" snippets[ \" main \" ] = \" \" \" \\ \n "
" int main(int argc, char *argv[]) { \n "
" //Do something \n "
" } \n "
" \" \" \" \n "
" \n "
" snippets[ \" hello \" ] = \" \" \" \\ \n "
" #include <iostream> \n "
" \n "
" int main(int argc, char *argv[]) { \n "
" std::cout << \" Hello, world! << std::endl; \n "
" } \n "
" \" \" \" \n "
" \n "
" def getSnippet(word): \n "
" try: \n "
" output = snippets[word] \n "
" except KeyError: \n "
" output = word \n "
" return output \n "
" \n "
" def insertSnippet(): \n "
" theWord=juci.getWord() \n "
" output=getSnippet(theWord) \n "
" juci.replaceWord(output) \n " ;