diff --git a/ide/config.nim b/ide/config.nim
deleted file mode 100755
index 448a67bda..000000000
--- a/ide/config.nim
+++ /dev/null
@@ -1,93 +0,0 @@
-# Does the config parsing for us
-
-import
- parsecfg, strtabs, strutils
-
-type
- TTokenClass* = enum
- gtBackground,
- gtNone,
- gtWhitespace,
- gtDecNumber,
- gtBinNumber,
- gtHexNumber,
- gtOctNumber,
- gtFloatNumber,
- gtIdentifier,
- gtKeyword,
- gtStringLit,
- gtLongStringLit,
- gtCharLit,
- gtEscapeSequence,
- gtOperator,
- gtPunctation,
- gtComment,
- gtLongComment,
- gtRegularExpression,
- gtTagStart,
- gtTagEnd,
- gtKey,
- gtValue,
- gtRawData,
- gtAssembler,
- gtPreprocessor,
- gtDirective,
- gtCommand,
- gtRule,
- gtHyperlink,
- gtLabel,
- gtReference,
- gtOther,
- gtCursor
-
- TColor* = colKeywords, colIdentifiers, colComments
- TConfiguration* = object of TObject ## the configuration object
- colors*: array [TTokenClass] of TColor ## the colors to use
- filelist*: seq[string] ## the filelist
-
-const
- colWhite = 0x00ffffff # rgb
- colBlack = 0x00000000
- colYellow =
-
-proc readConfig(filename: string): TConfiguration =
- # fill with reasonable defaults:
- result.filelist = []
- result.colors[gtBackground] = colWhite
- gtNone:
- gtWhitespace,
- gtDecNumber,
- gtBinNumber,
- gtHexNumber,
- gtOctNumber,
- gtFloatNumber,
- gtIdentifier,
- gtKeyword,
- gtStringLit,
- gtLongStringLit,
- gtCharLit,
- gtEscapeSequence,
- gtOperator,
- gtPunctation,
- gtComment,
- gtLongComment,
- gtRegularExpression,
- gtTagStart,
- gtTagEnd,
- gtKey,
- gtValue,
- gtRawData,
- gtAssembler,
- gtPreprocessor,
- gtDirective,
- gtCommand,
- gtRule,
- gtHyperlink,
- gtLabel,
- gtReference,
- gtOther
- gtCursor
- var
- p: TCfgParser
- if open(p, filename):
-
diff --git a/ide/main.nim b/ide/main.nim
deleted file mode 100755
index 2ccf0262f..000000000
--- a/ide/main.nim
+++ /dev/null
@@ -1,234 +0,0 @@
-# The beginning of an IDE for Nimrod
-# (c) 2008 Andreas Rumpf
-
-import os, glib2, gtk2, libglade2, dialogs, parseopt
-
-proc on_window_destroy(obj: PGtkObject, data: pointer) {.cdecl.} =
- gtk_main_quit()
-
-const
- GuiTemplate = "/media/hda1/Eigenes/nimrod/ide/nimide.glade"
-
-type
- TTab = object of TObject
- textview: PGtkTextView
- filename: string
- untitled: bool
-
- TMyTextEditor = object of TObject
- window: PGtkWindow
- statusbar: PGtkStatusBar
- textview: PGtkTextview
- statusbarContextId: int
-
-
-
-proc on_about_menu_item_activate(menuItem: PGtkMenuItem,
- e: var TMyTextEditor) {.cdecl.} =
- gtk_show_about_dialog(e.window,
- "comments", "A fast and lightweight IDE for Nimrod",
- "copyright", "Copyright \xc2\xa9 2010 Andreas Rumpf",
- "version", "0.1",
- "website", "http://force7.de/nimrod/",
- "program-name", "Nimrod IDE",
- nil)
-
-proc load_file(e: var TMyTextEditor, filename: string) =
- var
- err: pointer
- status: cstring
- text: cstring
- result: bool
- buffer: PGtkTextBuffer
- discard gtk_statusbar_push(e.statusbar, e.statusbar_context_id, "Loading...")
- while gtk_events_pending() != 0: discard gtk_main_iteration()
-
- # get the file contents
- result = g_file_get_contents(filename, addr(text), nil, addr(err))
- if not result:
- error(e.window, "Cannot load file")
- #g_error_free(err)
-
- # disable the text view while loading the buffer with the text
- gtk_widget_set_sensitive(e.text_view, false)
- buffer = gtk_text_view_get_buffer(e.text_view)
- gtk_text_buffer_set_text(buffer, text, -1)
- gtk_text_buffer_set_modified(buffer, false)
- gtk_widget_set_sensitive(e.text_view, true)
- g_free(text)
-
- e.filename = filename
- gtk_statusbar_pop(e.statusbar, e.statusbar_context_id)
- reset_default_status(e)
-
-proc write_file(e: var TMyTextEditor, filename: string) =
- var
- err: ptr GError
- status: cstring
- text: cstring
- result: bool
- buffer: PGtkTextBuffer
- start, ende: TGtkTextIter
- # add Saving message to status bar and ensure GUI is current
- gtk_statusbar_push(e.statusbar, e.statusbar_context_id, "Saving...")
- while gtk_events_pending(): gtk_main_iteration()
-
- # disable text view and get contents of buffer
- gtk_widget_set_sensitive(editor->text_view, FALSE)
- buffer = gtk_text_view_get_buffer(e.text_view)
- gtk_text_buffer_get_start_iter(buffer, start)
- gtk_text_buffer_get_end_iter(buffer, ende)
- text = gtk_text_buffer_get_text(buffer, start, ende, FALSE)
- gtk_text_buffer_set_modified(buffer, false)
- gtk_widget_set_sensitive(e.text_view, true)
- # set the contents of the file to the text from the buffer
- if filename != "":
- result = g_file_set_contents(filename, text, -1, addr(err))
- else:
- result = g_file_set_contents(editor->filename, text, -1, addr(err))
- if not result:
- error_message("cannot save")
- g_error_free(err)
- g_free(text)
- if filename != "":
- e.filename = filename
- gtk_statusbar_pop(e.statusbar, e.statusbar_context_id)
- reset_default_status(editor)
-
-
-proc check_for_save(e: var TMyTextEditor): bool =
- GtkTextBuffer *buffer;
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (editor->text_view));
- if gtk_text_buffer_get_modified(buffer):
- GtkWidget *dialog;
- const gchar *msg = "Do you want to save the changes you have made?";
- dialog = gtk_message_dialog_new (nil,
- GTK_DIALOG_MODAL or
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_YES_NO,
- msg);
- gtk_window_set_title (GTK_WINDOW (dialog), "Save?");
- result = gtk_dialog_run(dialog) != GTK_RESPONSE_NO
- gtk_widget_destroy(dialog)
-
-proc initApp(e: var TMyTextEditor) =
- var
- builder: PGladeXML
- window: PGtkWidget
- fontDesc: PPangoFontDescription
- id: int
- builder = glade_xml_new(GuiTemplate, nil, nil)
- if builder == nil:
- error_message("cannot open: " & GuiTemplate)
- quit(1)
- # get the components:
- e.window = GTK_WINDOW(glade_xml_get_widget(builder, "window"))
- e.statusbar = GTK_STATUSBAR(glade_xml_get_widget(builder, "statusbar"))
- e.textview = GTK_TEXTVIEW(glade_xml_get_widget(builder, "textview"))
-
- # connect the signal handlers:
- glade_xml_signal_connect(builder, "on_window_destroy",
- GCallback(on_window_destroy))
-
- font_desc = pango_font_description_from_string("monospace 10")
- gtk_widget_modify_font(e.textview, font_desc)
- pango_font_description_free(font_desc)
- gtk_window_set_default_icon_name(GTK_STOCK_EDIT)
-
- id = gtk_statusbar_get_context_id(e.statusbar, "Nimrod IDE")
- e.statusbarContextId = id
- reset_default_status(e)
-
- e.filename = ""
-
-
-proc main() =
- var
- editor: TMyTextEditor
-
- initApp(editor)
- gtk_widget_show(editor.window)
- gtk_main()
-
-gtk_nimrod_init()
-main()
-
-proc on_window_delete_event(widget: PGtkWidget, event: PGdkEvent,
- e: TMyTextEditor): bool {.cdecl.} =
- if check_for_save(editor):
- on_save_menu_item_activate(nil, editor)
- result = false
-
-proc on_new_menu_item_activate(GtkMenuItem *menuitem, TutorialTextEditor *editor)
- GtkTextBuffer *buffer;
-
- if check_for_save(editor):
- on_save_menu_item_activate(nil, editor)
-
- /* clear editor for a new file */
- editor->filename = nil;
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW (editor->text_view));
- gtk_text_buffer_set_text(buffer, "", -1);
- gtk_text_buffer_set_modified(buffer, FALSE);
-
- reset_default_status(editor);
-
-
-proc on_open_menu_item_activate(menuItem: PGtkMenuItem,
- TutorialTextEditor *editor) =
- gchar *filename;
-
- if check_for_save(editor):
- on_save_menu_item_activate(nil, editor)
- filename = get_open_filename(editor)
- if filename != nil: load_file(editor, filename)
-
-proc on_save_menu_item_activate(menuItem: PGtkMenuItem, TutorialTextEditor *editor) =
- gchar *filename;
- if (editor->filename == nil)
- {
- filename = get_save_filename(editor);
- if (filename != nil) write_file(editor, filename);
- }
- else write_file(editor, nil);
-
-proc on_save_as_menu_item_activate(GtkMenuItem *menuitem,
- TutorialTextEditor *editor) =
- gchar *filename;
-
- filename = get_save_filename(editor)
- if filename != nil: write_file(editor, filename)
-
-proc on_quit_menu_item_activate(GtkMenuItem *menuitem, TutorialTextEditor *editor)
- if check_for_save(editor):
- on_save_menu_item_activate(nil, editor)
- gtk_main_quit()
-
-proc on_cut_menu_item_activate(GtkMenuItem *menuitem, TutorialTextEditor *editor) =
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
-
- clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
- buffer = gtk_text_view_get_buffer(editor->text_view)
- gtk_text_buffer_cut_clipboard(buffer, clipboard, TRUE)
-
-proc on_copy_menu_item_activate(GtkMenuItem *menuitem, TutorialTextEditor *editor) =
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
- clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)
- buffer = gtk_text_view_get_buffer(editor->text_view)
- gtk_text_buffer_copy_clipboard(buffer, clipboard)
-
-
-proc on_paste_menu_item_activate(GtkMenuItem *menuitem, TutorialTextEditor *editor)
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
- clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)
- buffer = gtk_text_view_get_buffer(editor->text_view)
- gtk_text_buffer_paste_clipboard(buffer, clipboard, nil, TRUE)
-
-proc on_delete_menu_item_activate(GtkMenuItem *menuitem, TutorialTextEditor *editor)
- GtkTextBuffer *buffer;
- buffer = gtk_text_view_get_buffer(editor->text_view);
- gtk_text_buffer_delete_selection(buffer, FALSE, TRUE);
diff --git a/ide/nimide.glade b/ide/nimide.glade
deleted file mode 100755
index ce24683b2..000000000
--- a/ide/nimide.glade
+++ /dev/null
@@ -1,192 +0,0 @@
-
-
-
-
-
- GDK_EXTENSION_EVENTS_ALL
-
-
-
- 600
- 400
- True
-
-
-
- False
-
-
-
-
- True
- True
- 10
- 0
-
-
-
-
-
-
- tab
-
-
-
-
-
-
-
-
- tab
-
-
-
-
-
-
-
-
- tab
-
-
-
-
- 1
-
-
-
-
- True
-
-
- False
- 2
-
-
-
-
-
-
diff --git a/ide/nimide.gladep b/ide/nimide.gladep
deleted file mode 100755
index e429f891d..000000000
--- a/ide/nimide.gladep
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
- FALSE
-
diff --git a/ide/nimide.nim b/ide/nimide.nim
deleted file mode 100755
index 687098d1e..000000000
--- a/ide/nimide.nim
+++ /dev/null
@@ -1,189 +0,0 @@
-# The beginning of an IDE for Nimrod
-# (c) 2008 Andreas Rumpf
-
-import os, glib2, gdk2, gtk2, libglade2, pango, dialogs, parseopt
-
-const
- GuiTemplate = "nimide.glade"
- dummyConst = ""
-
-type
- TTab {.pure, final.} = object
- textview: PGtkTextView
- filename: string
- untitled: bool
- hbox: PGtkHBox
- e: PEditor
- PTab = ptr TTab
-
- TEditor = object of TObject
- window: PGtkWindow
- statusbar: PGtkStatusBar
- menu: PGtkMenuBar
- notebook: PGtkNotebook
- tabname: int # used for generating tab names
- tabs: seq[PTab]
- currTab: int
- PEditor = ptr TEditor
-
-proc onWindowDestroy(obj: PGtkObject, event: PGdkEvent,
- data: pointer): gboolean {.cdecl.} =
- gtkMainQuit()
-
-proc onAboutMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
- gtkShowAboutDialog(e.window,
- "comments", "A fast and lightweight IDE for Nimrod",
- "copyright", "Copyright \xc2\xa9 2010 Andreas Rumpf",
- "version", "0.1",
- "website", "http://force7.de/nimrod/",
- "program-name", "Nimrod IDE",
- nil)
-
-proc getTabIndex(e: PEditor, tab: PTab): int =
- var i = 0
- while true:
- var w = gtkNotebookGetNthPage(e.notebook, i)
- if w == nil: return -1
- var v = gtkNotebookGetTabLabel(e.notebook, w)
- if tab.hbox == v: return i
- inc(i)
-
-proc getActiveTab(e: PEditor): PTab =
- nil
-
-type
- TAnswer = enum
- answerYes, answerNo, answerCancel
-
-proc askWhetherToSave(e: PEditor): TAnswer =
- var dialog = gtkDialogNewWithButtons("Should the changes be saved?",
- e.window, GTK_DIALOG_MODAL, GTK_STOCK_SAVE, 1, "gtk-discard", 2,
- GTK_STOCK_CANCEL, 3, nil)
- result = TAnswer(gtkDialogRun(dialog)+1)
- gtkWidgetDestroy(dialog)
-
-proc saveTab(tab: PTab) =
- if tab.untitled:
- tab.filename = ChooseFileToSave(tab.e.window, getRoot(tab))
- tab.untitled = false
- XXX
-
-proc OnCloseTab(button: PGtkButton, tab: PTab) {.cdecl.} =
- var idx = -1
- for i in 0..high(tab.e.tabs):
- if tab.e.tabs[i] == tab:
- idx = i
- break
- if idx >= 0:
- if gtkTextBufferGetModified(gtkTextViewGetBuffer(tab.textView)):
- case askWhetherToSave(tab.e)
- of answerCancel: return
- of answerYes: saveTab(tab)
- of answerNo: nil
-
- gtkNotebookRemovePage(tab.e.notebook, idx)
- if idx < high(tab.e.tabs):
- for i in idx..high(tab.e.tabs)-1:
- tab.e.tabs[i] = tab.e.tabs[i+1]
- else:
- dec currTab
- GC_unref(tab.filename)
- dealloc(tab)
- #var idx = getTabIndex(tab.e, tab)
- #if idx >= 0: gtk_notebook_remove_page(tab.e.notebook, idx)
-
-proc createTab(e: PEditor, filename: string, untitled: bool) =
- var t = cast[PTab](alloc0(sizeof(TTab)))
- t.textview = gtkTextViewNewWithBuffer(gtkTextBufferNew(nil))
- var fontDesc = pangoFontDescriptionFromString("monospace 10")
- gtkWidgetModifyFont(t.textview, fontDesc)
- pangoFontDescriptionFree(fontDesc)
- t.filename = filename
- t.untitled = untitled
- gtkWidgetShow(t.textview)
- var scroll = gtkScrolledWindowNew(nil, nil)
- gtkContainerAdd(scroll, t.textview)
- gtkWidgetShow(scroll)
-
- t.e = e
- t.hbox = gtkHboxNew(false, 0)
- var image = gtkImageNewFromStock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU)
- var button = gtkButtonNew()
- var lab = gtkLabelNew(filename)
- gtkButtonSetImage(button, image)
- gtkButtonSetRelief(button, GTK_RELIEF_NONE)
- gtkBoxPackStart(t.hbox, lab, false, false, 2)
- gtkBoxPackEnd(t.hbox, button, false, false, 0)
-
- discard gSignalConnect(button, "clicked", G_Callback(onCloseTab), t)
- gtkWidgetShow(button)
- gtkWidgetShow(lab)
-
- var idx = gtkNotebookAppendPage(e.notebook, scroll, t.hbox)
- e.currTab = idx
- add(e.tabs, t)
- gtkNotebookSetCurrentPage(e.notebook, idx)
-
-
-proc onOpenMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
- var files = ChooseFilesToOpen(e.window, getRoot(getActiveTab(e)))
- for f in items(files): createTab(e, f, untitled=false)
-
-proc onSaveMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
- var cp = gtkNotebookGetCurrentPage(e.notebook)
-
-
-proc onSaveAsMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
- nil
-
-proc onNewMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
- inc(e.tabname)
- createTab(e, "untitled-" & $e.tabname, true)
-
-proc main(e: PEditor) =
- var builder = gladeXmlNew(getApplicationDir() / GuiTemplate, nil, nil)
- if builder == nil: quit("cannot open: " & GuiTemplate)
- # get the components:
- e.window = GTK_WINDOW(gladeXmlGetWidget(builder, "window"))
- e.statusbar = GTK_STATUSBAR(gladeXmlGetWidget(builder, "statusbar"))
- e.notebook = GTK_NOTEBOOK(gladeXmlGetWidget(builder, "notebook"))
- e.tabs = @[]
- e.currTab = -1
- setHomogeneous(e.notebook^, 1)
-
- # connect the signal handlers:
- gladeXmlSignalConnect(builder, "on_window_destroy",
- GCallback(onWindowDestroy))
- var about = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "about_menu_item"))
- discard gSignalConnect(about, "activate",
- G_CALLBACK(onAboutMenuItemActivate), e)
-
- var newItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "new_menu_item"))
- discard gSignalConnect(newItem, "activate",
- G_CALLBACK(onNewMenuItemActivate), e)
-
- var quitItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "quit_menu_item"))
- discard gSignalConnect(quitItem, "activate",
- G_CALLBACK(onWindowDestroy), e)
-
- var openItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "open_menu_item"))
- discard gSignalConnect(openItem, "activate",
- G_CALLBACK(onOpenMenuItemActivate), e)
-
- var saveItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_menu_item"))
- discard gSignalConnect(saveItem, "activate",
- G_CALLBACK(onSaveMenuItemActivate), e)
-
- var saveAsItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_as_menu_item"))
- discard gSignalConnect(saveAsItem, "activate",
- G_CALLBACK(onSaveAsMenuItemActivate), e)
-
- gtkWindowSetDefaultIconName(GTK_STOCK_EDIT)
- gtkWidgetShow(e.window)
- gtkMain()
-
-
-gtkNimrodInit()
-var e = cast[PEditor](alloc0(sizeof(TEditor)))
-main(e)
-