From 7bd54a8c0992745a9e69d6e26daf32fd7e0be510 Mon Sep 17 00:00:00 2001 From: Sergii Stoian Date: Mon, 22 Apr 2024 02:09:06 +0300 Subject: [PATCH] enable initial implementation of Services preferences --- Applications/Preferences/GNUmakefile | 4 +- .../English.lproj/Services.gorm/data.classes | 11 ++- .../English.lproj/Services.gorm/objects.gorm | Bin 2947 -> 7386 bytes .../Preferences/Modules/Services/Services.h | 11 ++- .../Preferences/Modules/Services/Services.m | 79 ++++++++++++------ 5 files changed, 73 insertions(+), 32 deletions(-) diff --git a/Applications/Preferences/GNUmakefile b/Applications/Preferences/GNUmakefile index 345b9ab68..a172f3a77 100644 --- a/Applications/Preferences/GNUmakefile +++ b/Applications/Preferences/GNUmakefile @@ -21,10 +21,10 @@ SUBPROJECTS = \ Modules/Keyboard \ Modules/Mouse \ Modules/Sound \ + Modules/Services \ Modules/Expert # Modules/Date \ # Modules/Menu \ -# Modules/Services \ # Modules/Password \ # Modules/Power @@ -39,10 +39,10 @@ $(APP_NAME)_RESOURCE_FILES = \ Modules/Keyboard/Keyboard.preferences \ Modules/Mouse/Mouse.preferences \ Modules/Sound/Sound.preferences \ + Modules/Services/Services.preferences \ Modules/Expert/Expert.preferences # Modules/Date/Date.preferences \ # Modules/Menu/Menu.preferences \ -# Modules/Services/Services.preferences \ # Modules/Password/Password.preferences \ # Modules/Power/Power.preferences diff --git a/Applications/Preferences/Modules/Services/English.lproj/Services.gorm/data.classes b/Applications/Preferences/Modules/Services/English.lproj/Services.gorm/data.classes index 5dd8811a9..23229bff7 100644 --- a/Applications/Preferences/Modules/Services/English.lproj/Services.gorm/data.classes +++ b/Applications/Preferences/Modules/Services/English.lproj/Services.gorm/data.classes @@ -1,11 +1,20 @@ { "## Comment" = "Do NOT change this file, Gorm maintains it"; + FirstResponder = { + Actions = ( + "setSeriviceState:" + ); + Super = NSObject; + }; Services = { Actions = ( + "setSeriviceState:" ); Outlets = ( view, - window + window, + actionButton, + servicesList ); Super = NSObject; }; diff --git a/Applications/Preferences/Modules/Services/English.lproj/Services.gorm/objects.gorm b/Applications/Preferences/Modules/Services/English.lproj/Services.gorm/objects.gorm index c1f260634d939d876777192fe26df481fdd1c583..7a1e02464afd0aa968a4eab2474cba77fe7f3d69 100644 GIT binary patch literal 7386 zcmdTJU31&U@c>dHB|%>_CCeX*WjC>{rfn9o+_-F-z>;d$X+_ya5?NL)nId6_Hbp8V zCE2Yzu&?j8Vw0B9>6O*^K?&|+`zc5grL7PpIEx7yC$ zT&Y?9wtC~#=MJOPEzXj6+ZukH!7C(RRcbY;7-PA?4Xs_)& zbINUe7XoxMC5)oIy5BDC)EwJkw3!wIMcaE3myu3`lsOY^eV;?T^} z1jPXfQs$5tDcbj))?TAt;bk>J(}g=dZG7=>f`l-vOA44atQQu8hV|?R2EODcvcBU1 z0*PMTv}A63p?~I|Wr_o}j`PR6w>f94MVv z!pF%m3N#{InSr6s2zi@M+tp#%93zKV+HbcTb;M}qxELzhxRkUMou)J#-~`upJA0P2KxAal#IEB0+ozE+2fTtbBc^?m(d4nUeeG*j>z1I zu?L_mPkvz7uy)=s&_|XiS&}TLdSuC)(_$E%t5)6fBoQG=t}(NoV69k;dzU0pvZy3E zm@-dOY_66ty&oeR1q*H{nfhoTN*3jdzLbaQSS+6IOrnp;v7|`p#tbIlz^Qy7jtTtp zEx-v!iswC4ALt)COjHjEi3?`T87dUZjaq|hdrH6=6>yV5iJep>wkS$sS2$Q?m$A&& z@P88v?;c{y!hy4D)?hGeFpZ-xMN71C&Mur&<3=!Uq;XyYi*_5=q4k1Q!S3U5wG&N@E|>yuuyn8m5*DYKp4wath`;GxCf)3m26Nrvs%=N0q+B=6f!l zvJv+A3>6rH+{lGX=2^-PDpN&sCW%eIa4BE#Q18f7QL<>1PTeGD+RFo{r znq2=EG1vd)`|kQz{+W{V$8+|N(b<31IrlbY$Mv7!#|fyYvdOhS>2d8qM1anjV`ZCo zCON@u^Iwz`tSE98OqKp)m*rJV`c!qR;sq=y8jUo~_Xth@gnXS+5#e;h@(x>`-UM6= z1%c&RA-G6mE;x9@NW+hYK0y#AOR~#iEC{Z@&q07Xb&qtBtPoF=J^3VdmRFY1@M3fX zzgEgg(d{nMGapRG^Zad9`YT0Sc z-EBHgoTgJpSl$WuTvuKrHAmZze`m@-SgFVU=6xHZh zpn);nYctVp^(xF`MP5@h;X7@&&4(m#_x0T0!9IG!=@UA;DsUG&WmZ_X4M)dyO`d{M`qP80sDD3am<9;vZ@(O}L? zfGtH6_5`&75^fl_Ljthy8J#zOeO_kau^Jo+yl6!CI}|kg8kFL*{W!c1J4*L?Iy&W{ zY+j&GDC#p;9Y1PuD@+KvDmPuIbS}tsx$1(0z(cw2!V?6xnh4yZwOa_>m-k#~ zBT$t0UD)qjM9c;ps1Yc%Nv0*`3DmpFS%Zo*&GZ0;|z tSts?D)5c;^rD|cf@q=Ii{)(#DK;l;+R$j`jI5p=f62ad(vs4Gfe*mLaO(y^V delta 1014 zcmZ`&O-~a+7=CwK=(b(tvs>sw%V+6A(RcY!!6=oggoD*&i6nZVz(zMIT~i9hi*2Iu zyve9Xe*j))!=LbCV&ct{{sYgRoY{e@QQyPlnfG}=o|$>)%kqn)mmV;8Rxq%IbAag2 zk4W*CE#RgWUVS)yD1DTopU(Ch?Z&0QUNkEJN`rwsa&ol1tXce)+M@lQc~&Ofn}kwXh)obMa!#)Izxx0A2w+?DOLs zNxY0il}_yU`*47y6W{t1rUsFcRdg$Ejjjm#)ZQj%;d8EKFx+I4+MNa<`#>6Eve z>Ym%c6xr6MFQhbe^*c*urWOk1jkcLR`Fgf}+X?{cLIU9MIT$gMq&t~v4uV>;ZaKSk z$E}uY&w_BSHi~J{H`4AKk@?wkO9oXiBgkl*jLK_=^}1Wlp+RFf`k&lIgLdGUAbWW3 zqu_FT&wP#tX8gDrT%JRBFnWvt6M z3!XB57wq_rljlF;t1SSW_BEOfV6ey%=0umSw#qK1vUxsr{FZvq5HZ0G2TCGB$vtR5 zmG!LQjEGR$RTSB>Ye&wmeSouq`+Y9f+~eGWK_i&|cb>u%X$a@Y=b`c5i((dn&M~}X zrbt@X*7MZx*mp|NQJVMAWMGz#dN|KOn$CK-z(9tkJzQj9j%GYuVj#yoml+tNIS;Rx pI&t*jI|j|;)xTvn#P}}zIyGn-S42d(eaNtU#0Cwo`N`l1{RG@M$NK;P diff --git a/Applications/Preferences/Modules/Services/Services.h b/Applications/Preferences/Modules/Services/Services.h index 1e51b707d..4015d1a60 100644 --- a/Applications/Preferences/Modules/Services/Services.h +++ b/Applications/Preferences/Modules/Services/Services.h @@ -2,7 +2,7 @@ // // Project: Preferences // -// Copyright (C) 2014-2019 Sergii Stoian +// Copyright (C) 2014-present Sergii Stoian // Copyright (C) 2022-2023 Andres Morales // // This application is free software; you can redistribute it and/or @@ -20,15 +20,20 @@ // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. // -#import +#import +#import + #import @interface Services: NSObject { + NSImage *image; id view; id window; + id servicesList; + id actionButton; - NSImage *image; + GSServicesManager *serviceManager; } @end diff --git a/Applications/Preferences/Modules/Services/Services.m b/Applications/Preferences/Modules/Services/Services.m index 04fe10c9a..0e2b2755d 100644 --- a/Applications/Preferences/Modules/Services/Services.m +++ b/Applications/Preferences/Modules/Services/Services.m @@ -20,32 +20,19 @@ // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. // -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - #import "Services.h" +#include "Foundation/NSDictionary.h" +#include "Foundation/NSObjCRuntime.h" +#include "GNUstepGUI/GSServicesManager.h" @implementation Services -static NSBundle *bundle = nil; -static NSUserDefaults *defaults = nil; -static NSMutableDictionary *domain = nil; +static NSBundle *bundle = nil; - (id)init { self = [super init]; - defaults = [NSUserDefaults standardUserDefaults]; - domain = [[defaults persistentDomainForName:NSGlobalDomain] mutableCopy]; - bundle = [NSBundle bundleForClass:[self class]]; NSString *imagePath = [bundle pathForResource:@"Services" ofType:@"tiff"]; image = [[NSImage alloc] initWithContentsOfFile:imagePath]; @@ -55,7 +42,6 @@ - (id)init - (void)dealloc { - NSLog(@"Services -dealloc"); [image release]; [super dealloc]; } @@ -64,19 +50,22 @@ - (void)awakeFromNib { [view retain]; [window release]; + + serviceManager = [GSServicesManager manager]; + [serviceManager rebuildServices]; + NSLog(@"Services: %@", [[serviceManager menuServices] allKeys]); + [servicesList loadColumnZero]; } - (NSView *)view { - if (view == nil) - { - if (![NSBundle loadNibNamed:@"Services" owner:self]) - { - NSLog (@"Services.preferences: Could not load NIB, aborting."); - return nil; - } + if (view == nil) { + if (![NSBundle loadNibNamed:@"Services" owner:self]) { + NSLog(@"Services.preferences: Could not load NIB, aborting."); + return nil; } - + } + return view; } @@ -93,6 +82,44 @@ - (NSImage *)buttonImage // // Action methods // +- (void)setServiceState:(id)sender +{ +} + +- (void)browser:(NSBrowser *)brow + willDisplayCell:(NSBrowserCell *)cell + atRow:(NSInteger)row + column:(NSInteger)col +{ + NSDictionary *services = [serviceManager menuServices]; + + if (col == 0) { + NSArray *apps = [services allKeys]; + NSString *app = [apps objectAtIndex:row]; + + // [cell setRepresentedObject:app]; + [cell setLeaf:NO]; + [cell setStringValue:app]; + } else { + // NSArray *ls = [[brow selectedCellInColumn:0] representedObject]; + // id it = [ls objectAtIndex:row]; + // NSString *name = [it valueForKeyPath:@"NSMenuItem.default"]; + // [cell setLeaf:YES]; + // [cell setStringValue:niceName(name)]; + // [cell setRepresentedObject:name]; + } +} + +- (NSInteger)browser:(NSBrowser *)brow numberOfRowsInColumn:(NSInteger)col +{ + if (col == 0) { + return [[[serviceManager menuServices] allKeys] count]; + } else { + // NSArray *ls = [[brow selectedCellInColumn:0] representedObject]; + // return [ls count]; + return 0; + } +} @end