Author: rmottola
Date: Fri Aug 29 02:25:06 2014
New Revision: 38051

URL: http://svn.gna.org/viewcvs/gnustep?rev=38051&view=rev
Log:
Implement and add a simple go-to-line panel

Added:
    apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.h
    apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.m
    
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/
    
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.classes
    
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.info
   (with props)
    
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/objects.gorm
   (with props)
Modified:
    apps/projectcenter/trunk/ChangeLog
    apps/projectcenter/trunk/Modules/Editors/ProjectCenter/GNUmakefile
    apps/projectcenter/trunk/Modules/Editors/ProjectCenter/PCEditorView.m

Modified: apps/projectcenter/trunk/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/ChangeLog?rev=38051&r1=38050&r2=38051&view=diff
==============================================================================
--- apps/projectcenter/trunk/ChangeLog  (original)
+++ apps/projectcenter/trunk/ChangeLog  Fri Aug 29 02:25:06 2014
@@ -1,3 +1,12 @@
+2014-08-29 Riccardo Mottola <r...@gnu.org>
+
+       * Modules/Editors/ProjectCenter/GNUmakefile
+       * Modules/Editors/ProjectCenter/LineJumper.h
+       * Modules/Editors/ProjectCenter/LineJumper.m
+       * Modules/Editors/ProjectCenter/PCEditorView.m
+       * Modules/Editors/ProjectCenter/Resources/LineJumper.gorm
+       Implement and add a simple go-to-line panel
+
 2014-08-25  Wolfgang Lux  <wolfgang....@gmail.com>
 
        * Modules/Editors/ProjectCenter/PCEditor.m (unhighlightCharacter:):

Modified: apps/projectcenter/trunk/Modules/Editors/ProjectCenter/GNUmakefile
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/GNUmakefile?rev=38051&r1=38050&r2=38051&view=diff
==============================================================================
--- apps/projectcenter/trunk/Modules/Editors/ProjectCenter/GNUmakefile  
(original)
+++ apps/projectcenter/trunk/Modules/Editors/ProjectCenter/GNUmakefile  Fri Aug 
29 02:25:06 2014
@@ -29,7 +29,8 @@
     Resources/FileH.tiff \
     Resources/FileHH.tiff \
     Resources/FileM.tiff \
-    Resources/FileMH.tiff
+    Resources/FileMH.tiff \
+    Resources/LineJumper.gorm
 
 #
 # Header files
@@ -38,7 +39,8 @@
     PCEditor.h \
     PCEditorView.h \
     SyntaxDefinition.h \
-    SyntaxHighlighter.h
+    SyntaxHighlighter.h \
+    LineJumper.h
 
 #
 # Class files
@@ -48,7 +50,8 @@
     PCEditorView.m \
     TextPattern.m \
     SyntaxDefinition.m \
-    SyntaxHighlighter.m 
+    SyntaxHighlighter.m \
+    LineJumper.m
 
 include ../../GNUmakefile.bundles
 include $(GNUSTEP_MAKEFILES)/bundle.make

Added: apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.h
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.h?rev=38051&view=auto
==============================================================================
--- apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.h (added)
+++ apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.h Fri Aug 
29 02:25:06 2014
@@ -0,0 +1,20 @@
+#import <Foundation/NSObject.h>
+#import <Protocols/CodeEditorView.h>
+
+@interface LineJumper : NSObject
+{
+  IBOutlet NSTextField *lineField;
+  IBOutlet NSButton *goToButton;
+}
+
++ (id)sharedInstance;
+
+- (NSPanel *)linePanel;
+
+/* Gets the first responder and returns it if it's an NSTextView */
+- (NSTextView<CodeEditorView> *)editorViewToUse;
+
+/* panel UI methods */
+- (IBAction)goToLine:(id)sender;
+
+@end

Added: apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.m?rev=38051&view=auto
==============================================================================
--- apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.m (added)
+++ apps/projectcenter/trunk/Modules/Editors/ProjectCenter/LineJumper.m Fri Aug 
29 02:25:06 2014
@@ -0,0 +1,72 @@
+#import "LineJumper.h"
+
+static id sharedLineJumper = nil;
+
+@implementation LineJumper
+
++ (id)sharedInstance
+{
+  if (!sharedLineJumper) 
+    {
+      sharedLineJumper = [[self allocWithZone:[[NSApplication 
sharedApplication] zone]] init];
+    }
+  return sharedLineJumper;
+}
+
+- (id) init
+{
+  if (!(self = [super init])) return nil;
+  //  [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(appDidActivate:) 
name:NSApplicationDidBecomeActiveNotification object:[NSApplication 
sharedApplication]];
+  // [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(addWillDeactivate:) 
name:NSApplicationWillResignActiveNotification object:[NSApplication 
sharedApplication]];
+  return self;
+}
+
+- (void)loadUI
+{
+  if (!lineField)
+    {
+      if (![NSBundle loadNibNamed:@"LineJumper" owner:self])
+        {
+          NSLog(@"Failed to load LineJumper.nib");
+          NSBeep();
+        }
+      if (self == sharedLineJumper)
+        [[lineField window] setFrameAutosaveName:@"GoTo Line"];
+    }
+}
+
+- (NSTextView<CodeEditorView> *)editorViewToUse
+{
+  id tv = [[NSApp mainWindow] firstResponder];
+  if([tv conformsToProtocol:@protocol(CodeEditorView)])
+    return tv;
+  return nil;
+}
+
+- (NSPanel *)linePanel {
+    if (!lineField)
+      [self loadUI];
+    return (NSPanel *)[lineField window];
+}
+
+- (void)orderFrontLinePanel:(id)sender
+{
+  NSPanel *panel = [self linePanel];
+  [lineField selectText:nil];
+  [panel makeKeyAndOrderFront:nil];
+}
+
+- (IBAction)goToLine:(id)sender
+{
+  NSUInteger line;
+  NSTextView<CodeEditorView> *cev;
+
+  line = (NSUInteger)[lineField integerValue];
+  cev = [self editorViewToUse];
+  if (cev)
+    {
+      [cev goToLineNumber:line];
+    }
+}
+
+@end

Modified: apps/projectcenter/trunk/Modules/Editors/ProjectCenter/PCEditorView.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/PCEditorView.m?rev=38051&r1=38050&r2=38051&view=diff
==============================================================================
--- apps/projectcenter/trunk/Modules/Editors/ProjectCenter/PCEditorView.m       
(original)
+++ apps/projectcenter/trunk/Modules/Editors/ProjectCenter/PCEditorView.m       
Fri Aug 29 02:25:06 2014
@@ -42,6 +42,7 @@
 
 #import "PCEditor.h"
 #import "SyntaxHighlighter.h"
+#import "LineJumper.h"
 
 static inline float my_abs(float aValue)
 {
@@ -623,7 +624,10 @@
 
 - (void)performGoToLinePanelAction:(id)sender
 {
-  NSLog(@"perform go to line!");
+  LineJumper *lj;
+
+  lj = [LineJumper sharedInstance];
+  [lj orderFrontLinePanel:self];
 }
 
 - (void)goToLineNumber:(NSUInteger)lineNumber

Added: 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.classes
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.classes?rev=38051&view=auto
==============================================================================
--- 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.classes
       (added)
+++ 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.classes
       Fri Aug 29 02:25:06 2014
@@ -0,0 +1,19 @@
+{
+    "## Comment" = "Do NOT change this file, Gorm maintains it";
+    FirstResponder = {
+       Actions = (
+           "goToLine:"
+       );
+       Super = NSObject;
+    };
+    LineJumper = {
+       Actions = (
+           "goToLine:"
+       );
+       Outlets = (
+           lineField,
+           goToButton
+       );
+       Super = NSObject;
+    };
+}

Added: 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.info
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.info?rev=38051&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.info
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/objects.gorm
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/objects.gorm?rev=38051&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
apps/projectcenter/trunk/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/objects.gorm
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream


_______________________________________________
Gnustep-cvs mailing list
Gnustep-cvs@gna.org
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to