diff options
author | PhiLho <PhiLho@GMX.net> | 2010-05-21 16:03:21 +0200 |
---|---|---|
committer | PhiLho <PhiLho@GMX.net> | 2010-05-21 16:03:21 +0200 |
commit | 286e5958d662038fdc852861ecd07c89256495ab (patch) | |
tree | cea500e695b874f47358602c6433955963a9a7bc /ide/nimide.nim | |
parent | 227b76c34259cf406131d27fb8e0cc88530e38f7 (diff) | |
download | Nim-286e5958d662038fdc852861ecd07c89256495ab.tar.gz |
Integrating my changes, mostly minor/cosmetic fixes; plus a big Windows lib update
Diffstat (limited to 'ide/nimide.nim')
-rwxr-xr-x | ide/nimide.nim | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/ide/nimide.nim b/ide/nimide.nim index 741f71afb..687098d1e 100755 --- a/ide/nimide.nim +++ b/ide/nimide.nim @@ -15,7 +15,7 @@ type hbox: PGtkHBox e: PEditor PTab = ptr TTab - + TEditor = object of TObject window: PGtkWindow statusbar: PGtkStatusBar @@ -26,20 +26,20 @@ type currTab: int PEditor = ptr TEditor -proc onWindowDestroy(obj: PGtkObject, event: PGdkEvent, +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 leight-weight IDE for Nimrod", - "copyright", "Copyright \xc2\xa9 2009 Andreas Rumpf", + "comments", "A fast and lightweight IDE for Nimrod", + "copyright", "Copyright \xc2\xa9 2010 Andreas Rumpf", "version", "0.1", - "website", "http://nimrod.ethexor.com", + "website", "http://force7.de/nimrod/", "program-name", "Nimrod IDE", nil) -proc getTabIndex(e: PEditor, tab: PTab): int = +proc getTabIndex(e: PEditor, tab: PTab): int = var i = 0 while true: var w = gtkNotebookGetNthPage(e.notebook, i) @@ -47,43 +47,43 @@ proc getTabIndex(e: PEditor, tab: PTab): int = var v = gtkNotebookGetTabLabel(e.notebook, w) if tab.hbox == v: return i inc(i) - -proc getActiveTab(e: PEditor): PTab = + +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?", + +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: +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.} = + +proc OnCloseTab(button: PGtkButton, tab: PTab) {.cdecl.} = var idx = -1 - for i in 0..high(tab.e.tabs): - if tab.e.tabs[i] == tab: + for i in 0..high(tab.e.tabs): + if tab.e.tabs[i] == tab: idx = i break - if idx >= 0: + 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: + for i in idx..high(tab.e.tabs)-1: tab.e.tabs[i] = tab.e.tabs[i+1] else: dec currTab @@ -92,7 +92,7 @@ proc OnCloseTab(button: PGtkButton, tab: PTab) {.cdecl.} = #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) = +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") @@ -104,7 +104,7 @@ proc createTab(e: PEditor, filename: string, untitled: bool) = 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) @@ -114,16 +114,16 @@ proc createTab(e: PEditor, filename: string, untitled: bool) = 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))) @@ -131,8 +131,8 @@ proc onOpenMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} = proc onSaveMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} = var cp = gtkNotebookGetCurrentPage(e.notebook) - - + + proc onSaveAsMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} = nil @@ -140,7 +140,7 @@ proc onNewMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} = inc(e.tabname) createTab(e, "untitled-" & $e.tabname, true) -proc main(e: PEditor) = +proc main(e: PEditor) = var builder = gladeXmlNew(getApplicationDir() / GuiTemplate, nil, nil) if builder == nil: quit("cannot open: " & GuiTemplate) # get the components: @@ -155,27 +155,27 @@ proc main(e: PEditor) = gladeXmlSignalConnect(builder, "on_window_destroy", GCallback(onWindowDestroy)) var about = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "about_menu_item")) - discard gSignalConnect(about, "activate", + discard gSignalConnect(about, "activate", G_CALLBACK(onAboutMenuItemActivate), e) var newItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "new_menu_item")) - discard gSignalConnect(newItem, "activate", + discard gSignalConnect(newItem, "activate", G_CALLBACK(onNewMenuItemActivate), e) var quitItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "quit_menu_item")) - discard gSignalConnect(quitItem, "activate", + discard gSignalConnect(quitItem, "activate", G_CALLBACK(onWindowDestroy), e) var openItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "open_menu_item")) - discard gSignalConnect(openItem, "activate", + discard gSignalConnect(openItem, "activate", G_CALLBACK(onOpenMenuItemActivate), e) - - var saveItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_menu_item")) - discard gSignalConnect(saveItem, "activate", + + 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", + + var saveAsItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_as_menu_item")) + discard gSignalConnect(saveAsItem, "activate", G_CALLBACK(onSaveAsMenuItemActivate), e) gtkWindowSetDefaultIconName(GTK_STOCK_EDIT) |