Document based Cocoa Application
2 maart 2004 - 23:24   
geplaatst door: blub
Ik ben nog altijd bezig aan mijn editor voor ASP,PHP, ... en andere scriptingtalen.
Als basis gebruik ik UKSyntaxColoredDocument Ik heb hier een filebrowser voor geschreven.
Via de filebrowser open ik de files in de textView.


[self initWithContentsOfFile:fullPath ofType:@"txt"];

Waar fullpath van mijn filebrowser komt.
Alles verloopt vrij goed.
Behalve dat ik niet kan saven ?
"save as" werkt wel.
Als ik de file's niet open via het menu word het save menu item gedisabled ?
Je kan het zelf testen want ik heb mijn proggie geupload op http://files.lab101.be/ (klik op UKSyntaxColoredDocument).

ps: het programma is verre van af ;)
opent alleen maar c,h,m,php,htm files

(Bewerkt door blub om 11:30, 3-03-2004)

Document based Cocoa Application
3 maart 2004 - 08:27    reactie #1
geplaatst door: Sander Cox
Om te kunnen saven moet je wel aangeven dat er wijzigingen zijn in de file. Heb je dat gedaan? (Heb de functie naam even niet bij de hand)
Document based Cocoa Application
3 maart 2004 - 11:33    reactie #2
geplaatst door: blub
Je bedoelt  

[[textView window] setDocumentEdited:YES];

Dit werkt niet :(
Ook als je in de file aanpassingen doet kan je nog niet gewoon saven alleen "save as" werkt?
Document based Cocoa Application
3 maart 2004 - 12:08    reactie #3
geplaatst door: Kool
Heb je deze methode gebruikt in MyDocument.m?

-(BOOL)writeToFile:(NSString *)fileName ofType:(NSString *)docType

En geeft die ook YES terug bij het saven?

[[textView window] setDocumentEdited:YES];

Krijg je wel een zwarte punt in de rode knop?

Is het menu wel goed "gelinkt" in IB?

Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.
Document based Cocoa Application
3 maart 2004 - 14:01    reactie #4
geplaatst door: blub

Citaat
Kool om 12:08, 3-03-2004
Heb je deze methode gebruikt in MyDocument.m?

-(BOOL)writeToFile:(NSString *)fileName ofType:(NSString *)docType
En geeft die ook YES terug bij het saven?


Ja ik gebruik die method.
Maar vermits hij word aangeroepen door NSDocument dus zou ik niet weten hoe ik kan controlleren of hij YES terug geeft ?
Citaat

Krijg je wel een zwarte punt in de rode knop?

Welke rode knop ?
De tasks knop ?
Daar verschijnt altijd een zwarte punt als ik run uiteraard.
Citaat

Is het menu wel goed "gelinkt" in IB?

Is dit niet vanzelf gebeurt bij een Document based cocoa application?

Ik heb ter verduidelijking mijn source code ook online gezet op http://files.lab101.be
In de file UKSyntaxColoredTextDocument.m gebeurt zo goed als alles en zit waarschijnlijk ook de fout.
Vanaf lijn 118 begint de code voor de "filebrowser"

Vanaf lijn 216 staat de code die nodig is voor een cocoa document based application.

Nog eens ter verduidelijking ik kan saven maar alleen door gebruik van "save as".
"save" werkt alleen als ik een file open via het menu item "open".

Ik hoop dat er iemand mij kan helpen want ik zou graag verder werken aan deze applicatie en ik ben nu al twee dagen aan het sukkelen met dat "save" gedoe :-(

Document based Cocoa Application
3 maart 2004 - 16:30    reactie #5
geplaatst door: Kool
> Ja ik gebruik die method. Maar vermits hij word aangeroepen door NSDocument dus zou ik niet weten hoe ik kan controlleren of hij YES terug geeft ?

Met een simpele NSLog(@"Saving now"); in je routine kan je zien of jouw programma daar langs komt. Aan het einde van de routine doe je iets ala return YES; om aan te geven dat het bewaren gelukt is.

> Welke rode knop ?  De tasks knop ? Daar verschijnt altijd een zwarte punt als ik run uiteraard.

Nee, die van je document window in je prog.

> Is dit niet vanzelf gebeurt bij een Document based cocoa application?

Ja, mits jij zelf niet heb zitten rommelen daar.

Ik heb ff geen tijd om naar jouw source te kijken.

Het lijkt mij dat je controller niet weet dat het een document geopend heeft. Ik weet niet precies hoe je het opent, maar het zou kunnen zijn dat je de documentController niet aanroept met initWithDocument. Of dat je nog zoiets als [self setDocument:justOpenedDocument]; in je controller moet aanroepen nadat je filebrowser opdracht gegeven heeft om een nieuw bestand te openen.

Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.
Document based Cocoa Application
5 maart 2004 - 02:05    reactie #6
geplaatst door: blub

Citaat
Kool om 16:30, 3-03-2004
>Het lijkt mij dat je controller niet weet dat het een document geopend heeft. Ik weet niet precies hoe je het opent, maar het zou kunnen zijn dat je de documentController niet aanroept met initWithDocument. Of dat je nog zoiets als [self setDocument:justOpenedDocument]; in je controller moet aanroepen nadat je filebrowser opdracht gegeven heeft om een nieuw bestand te openen.

Ja zoiets dacht ik ook.
Ik heb verschillende manier geprobeerd om documenten te openen via NSDocument maar telkens hetzelfde.
Ik heb het nu over een andere boeg gegooit.
I.p.v. van mijn programma te integreren in dat van UKcolored ... ga ik syntax highlighting in mijn applicatie steken.
Mijn applicatie is niet Document based.
Waardoor ik meer controlle heb over het saven en openen.
Ik heb ook wat aan het experimenteren geweest met NSScanner en het is blijkbaar niet zo moeilijke om syntax highlighting te bekomen.

Na veel teksten doorgenomen te hebben over Document based Cocoa applicatie's heb ik ondekt dat het ook mogelijk is om alle methods van NSDocument te overiden en zo het gene te bekomen wat ik wil.
Maar dan ben ik al zover aan het afwijken van NSDocnent dat ik beter zelf iets nieuws maak.
En al dat overiden enz is voor mij als beginner veel te moeilijk ;)
Daarom dat ik nu verder ga werken zoals ik een paragraaf terug beschreven heb.
Toch bedankt voor de uitleg.

Moest er ooit iets moois van komen van men programmake en als de code wat properder is dan gooi ik het wel online als opensource.

(Bewerkt door blub om 2:06, 5-03-2004)