From 3b5b00f5b070e2c45d55be5fc4b4e1815e8a5b17 Mon Sep 17 00:00:00 2001 From: cyber-dream Date: Sun, 23 Jul 2023 06:12:17 +0300 Subject: [PATCH] more work --- apps/BlogWriter/blogwriter.go | 15 +++- apps/aboutme/personalprops.go | 17 ++++- apps/blogviewer/blogviewer.go | 17 ++++- apps/finder/finder.go | 19 ++++- apps/img-viewer/imgviewer.go | 14 +++- apps/sunboard/sunboard.go | 34 +++++++-- apps/websiteapp.go | 10 +-- front/src/apps/about-me/about-me.less | 67 ++++++++---------- front/src/desktop.less | 35 ++++----- front/src/fonts/Charcoal.woff2 | Bin 0 -> 28952 bytes front/src/fonts/Geneva.woff2 | Bin 0 -> 32672 bytes front/src/mobile.less | 56 ++++++++++++--- front/src/theme.less | 35 ++++++++- front/src/wde/effects.less | 1 + front/src/wde/sunboard/sunboard-mobile.less | 17 ++--- front/src/wde/wde-desktop.js | 4 +- front/src/wde/wde-mobile.js | 2 + front/src/wde/wde.js | 2 +- front/src/wde/widgets/button/button.less | 27 +++++++ .../src/wde/widgets/title-bar/title-bar.less | 6 +- icons/github/color/favicon.ico | Bin 0 -> 6518 bytes icons/github/color/github.png | 3 + icons/hand/color/8.png | 3 + icons/twitter/color/favicon.ico | Bin 0 -> 1150 bytes icons/twitter/color/twitter.png | 3 + main.go | 2 +- templates/base/mobile-desktop.html | 6 +- templates/personal-properties/app.html | 3 +- templates/personal-properties/mobile-app.html | 3 +- templates/wde-widgets/window-title-bar.html | 2 +- 30 files changed, 289 insertions(+), 114 deletions(-) create mode 100644 front/src/fonts/Charcoal.woff2 create mode 100644 front/src/fonts/Geneva.woff2 create mode 100644 front/src/wde/widgets/button/button.less create mode 100644 icons/github/color/favicon.ico create mode 100644 icons/github/color/github.png create mode 100644 icons/hand/color/8.png create mode 100644 icons/twitter/color/favicon.ico create mode 100644 icons/twitter/color/twitter.png diff --git a/apps/BlogWriter/blogwriter.go b/apps/BlogWriter/blogwriter.go index d1eabd0..88152b8 100644 --- a/apps/BlogWriter/blogwriter.go +++ b/apps/BlogWriter/blogwriter.go @@ -1,14 +1,17 @@ package blogwriter import ( + "personalwebsite/apps" "personalwebsite/webfilesystem" "github.com/gin-gonic/gin" ) type BlogWriterApplication struct { - fs *webfilesystem.WebFileSystem - appID string + fs *webfilesystem.WebFileSystem + appID string + path string + manifest apps.ApplicationManifest } func NewBlogWriterApp(webfs *webfilesystem.WebFileSystem) *BlogWriterApplication { @@ -17,11 +20,17 @@ func NewBlogWriterApp(webfs *webfilesystem.WebFileSystem) *BlogWriterApplication appID: "BlogWriter", } } - +func (bw *BlogWriterApplication) GetManifest() apps.ApplicationManifest { + return bw.manifest +} func (bw *BlogWriterApplication) GetAppID() string { return bw.appID } +func (bw *BlogWriterApplication) GetPath() string { + return bw.path +} + func (bw *BlogWriterApplication) PublicRoutes(routes *gin.RouterGroup) {} func (bw *BlogWriterApplication) PrivateRoutes(routes *gin.RouterGroup) { diff --git a/apps/aboutme/personalprops.go b/apps/aboutme/personalprops.go index 2905ae3..be53fb5 100644 --- a/apps/aboutme/personalprops.go +++ b/apps/aboutme/personalprops.go @@ -5,6 +5,7 @@ import ( "html/template" "net/http" "path" + "personalwebsite/apps" "personalwebsite/apps/appCtx" "personalwebsite/errormessage" "personalwebsite/libs" @@ -20,20 +21,34 @@ type AboutMeApp struct { appID string mLib libs.MarkdownLib titleBarConfig wde.TitleBarConfig //TODO to app manifest? + path string + manifest apps.ApplicationManifest } func NewAboutMeApp(webFs *webfilesystem.WebFileSystem) *AboutMeApp { + manifest := apps.ApplicationManifest{} + _, err := webFs.Read(path.Join("/Applications/AboutMe.app", ".appmanifest"), &manifest) + if err != nil { + panic(err) + } newApp := AboutMeApp{ fs: webFs, appID: "AboutMe", + path: "/Applications/AboutMe.app", titleBarConfig: wde.TitleBarConfig{ Lable: "About Me", CloseButton: true, }, + manifest: manifest, } return &newApp } - +func (p *AboutMeApp) GetPath() string { + return p.path +} +func (p *AboutMeApp) GetManifest() apps.ApplicationManifest { + return p.manifest +} func (p *AboutMeApp) PublicRoutes(route *gin.RouterGroup) { route.POST("render", func(ctx *gin.Context) { filePath := ctx.Query("path") diff --git a/apps/blogviewer/blogviewer.go b/apps/blogviewer/blogviewer.go index 3f661c8..c8e05cf 100644 --- a/apps/blogviewer/blogviewer.go +++ b/apps/blogviewer/blogviewer.go @@ -4,6 +4,7 @@ import ( "errors" "net/http" "path" + "personalwebsite/apps" "personalwebsite/apps/appCtx" "personalwebsite/errormessage" "personalwebsite/libs" @@ -14,9 +15,11 @@ import ( ) type BlogViewerApplication struct { - fs *webfilesystem.WebFileSystem - appID string - mLib libs.MarkdownLib + fs *webfilesystem.WebFileSystem + appID string + mLib libs.MarkdownLib + path string + manifest apps.ApplicationManifest } func NewBlogViewerApp(webFs *webfilesystem.WebFileSystem) *BlogViewerApplication { @@ -26,10 +29,18 @@ func NewBlogViewerApp(webFs *webfilesystem.WebFileSystem) *BlogViewerApplication mLib: libs.MarkdownLib{}, } } +func (b *BlogViewerApplication) GetManifest() apps.ApplicationManifest { + return b.manifest +} func (b *BlogViewerApplication) GetAppID() string { return b.appID } + +func (b *BlogViewerApplication) GetPath() string { + return b.path +} + func (b *BlogViewerApplication) PrivateRoutes(route *gin.RouterGroup) { b.PublicRoutes(route) diff --git a/apps/finder/finder.go b/apps/finder/finder.go index 3ea01ac..a4a9226 100644 --- a/apps/finder/finder.go +++ b/apps/finder/finder.go @@ -1,6 +1,8 @@ package finder import ( + "path" + "personalwebsite/apps" "personalwebsite/apps/appCtx" "personalwebsite/wde" "personalwebsite/webfilesystem" @@ -12,24 +14,39 @@ type FinderApplication struct { fs *webfilesystem.WebFileSystem appID string titleBarConfig wde.TitleBarConfig + path string + manifest apps.ApplicationManifest // manifest apps.ApplicationManifest } func NewFinderApplication(webFs *webfilesystem.WebFileSystem) *FinderApplication { + manifest := apps.ApplicationManifest{} + _, err := webFs.Read(path.Join("/Applications/Finder.app", ".appmanifest"), &manifest) + if err != nil { + panic(err) + } return &FinderApplication{ fs: webFs, + path: "/Applications/Finder.app", appID: "Finder", titleBarConfig: wde.TitleBarConfig{ Lable: "Finder", CloseButton: true, }, + manifest: manifest, } } - +func (f *FinderApplication) GetManifest() apps.ApplicationManifest { + return f.manifest +} func (f *FinderApplication) GetAppID() string { return f.appID } +func (f *FinderApplication) GetPath() string { + return f.path +} + func (f *FinderApplication) Render(appCtx appCtx.AppContext) gin.H { return gin.H{ "TitleBarConfig": f.titleBarConfig, diff --git a/apps/img-viewer/imgviewer.go b/apps/img-viewer/imgviewer.go index 0f717fb..93a874e 100644 --- a/apps/img-viewer/imgviewer.go +++ b/apps/img-viewer/imgviewer.go @@ -2,14 +2,17 @@ package imgviewer import ( "net/http" + "personalwebsite/apps" "personalwebsite/webfilesystem" "github.com/gin-gonic/gin" ) type ImgViewerApp struct { - fs *webfilesystem.WebFileSystem - appID string + fs *webfilesystem.WebFileSystem + appID string + path string + manifest apps.ApplicationManifest } func NewImgViewerApp(webFs *webfilesystem.WebFileSystem) *ImgViewerApp { @@ -22,6 +25,9 @@ func NewImgViewerApp(webFs *webfilesystem.WebFileSystem) *ImgViewerApp { func (p *ImgViewerApp) PrivateRoutes(route *gin.RouterGroup) { p.PublicRoutes(route) } +func (i *ImgViewerApp) GetManifest() apps.ApplicationManifest { + return i.manifest +} func (p *ImgViewerApp) PublicRoutes(route *gin.RouterGroup) { route.GET("render", func(ctx *gin.Context) { isMobileParam := ctx.Query("isMobile") @@ -44,6 +50,10 @@ func (p *ImgViewerApp) PublicRoutes(route *gin.RouterGroup) { }) } +func (p *ImgViewerApp) GetPath() string { + return p.path +} + func (p *ImgViewerApp) GetAppID() string { return p.appID } diff --git a/apps/sunboard/sunboard.go b/apps/sunboard/sunboard.go index 23746be..374fc69 100644 --- a/apps/sunboard/sunboard.go +++ b/apps/sunboard/sunboard.go @@ -2,7 +2,9 @@ package sunboard import ( "net/http" + "path" "personalwebsite/apps" + "personalwebsite/wde" "personalwebsite/webfilesystem" "github.com/gin-gonic/gin" @@ -10,15 +12,26 @@ import ( type SunboardApp struct { fs *webfilesystem.WebFileSystem + wde *wde.WDE appID string appStorage *apps.ApplicationsStorage + path string + manifest apps.ApplicationManifest } -func NewSunboardApp(webFs *webfilesystem.WebFileSystem, appStorage *apps.ApplicationsStorage) *SunboardApp { +func NewSunboardApp(webFs *webfilesystem.WebFileSystem, wde *wde.WDE, appStorage *apps.ApplicationsStorage) *SunboardApp { + manifest := apps.ApplicationManifest{} + _, err := webFs.Read(path.Join("/Applications/Sunboard.app", ".appmanifest"), &manifest) + if err != nil { + panic(err) + } newApp := SunboardApp{ fs: webFs, + wde: wde, appID: "Sunboard", appStorage: appStorage, + path: "/Applications/Sunboard.app", + manifest: manifest, } return &newApp } @@ -30,21 +43,32 @@ func (a *SunboardApp) GetAppID() string { func (a *SunboardApp) PublicRoutes(route *gin.RouterGroup) { } -func (a *SunboardApp) PrivateRoutes(router *gin.RouterGroup) { +func (a *SunboardApp) GetPath() string { + return a.path +} +func (a *SunboardApp) GetManifest() apps.ApplicationManifest { + return a.manifest +} +func (a *SunboardApp) PrivateRoutes(router *gin.RouterGroup) { router.POST("render", func(ctx *gin.Context) { appIcons := []appIcon{} for _, app := range a.appStorage.Apps { - if app.GetAppID() == "Sunboard" { + if app.GetAppID() == "Sunboard" { //FIXME continue } + if app.GetManifest().Iconpath == "" { + continue + } + println(app.GetAppID() + " : " + app.GetPath()) + // iconPath := path.Join(, "icon.icn") appIcons = append(appIcons, appIcon{ Type: "Icon", - Icon: "", + Icon: "/system/libs/img/icon/get?path=" + app.GetManifest().Iconpath + "&size=32", Lable: app.GetAppID(), AppId: app.GetAppID(), - Path: "/Applications/" + app.GetAppID() + ".app", //FIXME + Path: app.GetPath(), }) } ctx.HTML(http.StatusOK, "sunboard/sunboard.html", gin.H{ diff --git a/apps/websiteapp.go b/apps/websiteapp.go index 4adae9d..cf750f1 100644 --- a/apps/websiteapp.go +++ b/apps/websiteapp.go @@ -15,15 +15,17 @@ type WebDEApplication interface { GetAppID() string PublicRoutes(*gin.RouterGroup) PrivateRoutes(*gin.RouterGroup) - // GetManifest() ApplicationManifest //TODO: Delete + GetPath() string + GetManifest() ApplicationManifest // GEtHtml() // GetId() string } type ApplicationManifest struct { - AppId string `bson:"appid" json:"appId"` - Js []string `bson:"js" json:"js"` - Css []string `bson:"css" json:"css"` + AppId string `bson:"appid" json:"appId"` + Js []string `bson:"js" json:"js"` + Css []string `bson:"css" json:"css"` + Iconpath string `bson:"iconpath" json:"iconpath"` } func NewApplicationsStorage(apps map[string]WebDEApplication, webfs *webfilesystem.WebFileSystem) *ApplicationsStorage { diff --git a/front/src/apps/about-me/about-me.less b/front/src/apps/about-me/about-me.less index 63b0c1b..c4aa470 100644 --- a/front/src/apps/about-me/about-me.less +++ b/front/src/apps/about-me/about-me.less @@ -1,27 +1,5 @@ -/* TODO Move this to body? */ -/*.ScrollContent { - width: 100%; - height: 100%; - overflow: scroll; - overflow-x: hidden; - /* Firefox */ - /* scrollbar-width: none; */ - /* Internet Explorer 10+ */ - /* -ms-overflow-style: none; */ +@import "../../theme.less"; - /* Auto layout */ - /*display: flex; - flex-direction: row; - justify-content: center; - align-items: flex-start; - padding: 0px; -}*/ - -/* WebKit */ -/* .ScrollContent::-webkit-scrollbar { - width: 0; - height: 0; -} */ .PersPropsContent{ width: 100%; height: 100%; @@ -101,10 +79,9 @@ gap:1px; } -.ShortBio .Name{ - font-family: "Virtue"; - /* FIXME */ - letter-spacing: 0.35px; +.ShortBio > .Text > .Name{ + &:extend(.large-system-font); + // background-color: aqua; } .PropertiesList .Links { @@ -115,12 +92,28 @@ height: auto; width: auto; + // background-color: aqua; + /* Auto layout */ + display: flex; + flex-direction: column; + align-items: end; + justify-content: center; + padding: 0px; + // gap:4px; +} +.Links > a{ /* Auto layout */ display: flex; flex-direction: row; - align-items: left; + align-items: end; + justify-content: center; padding: 0px; - gap:4px; + gap: 2px; +} +.Links > a > .link-lable{ + // background-color: aqua; + // line-height: 60px; + // display:table } .PropertiesList .Links .Link { @@ -145,9 +138,8 @@ } .Island .Title { - font-family: "Virtue"; - /* FIXME */ - letter-spacing: 0.35px; + //FIXME + &:extend(.large-system-font); position:relative; display: inline-block; max-width: 100%; @@ -156,10 +148,6 @@ top: -9px; } -.Focused .Island .Title{ - background-color: #CCCCCC; -} - .Island .Content{ width: 100%; /* top: 0px; */ @@ -183,9 +171,10 @@ } .Island .Key{ position: relative; - font-family: "Virtue"; - font-size: 11px; - letter-spacing: 0.35px; + &:extend(.large-system-font); + // font-family: "Virtue"; + // font-size: 11px; + // letter-spacing: 0.35px; text-align: end; width: 34%; white-space: nowrap; diff --git a/front/src/desktop.less b/front/src/desktop.less index 1cb3b29..5c8c922 100644 --- a/front/src/desktop.less +++ b/front/src/desktop.less @@ -1,42 +1,27 @@ @import "./wde/primitives.less"; @import "./wde/widgets/file-view/file-view.less"; @import "./wde/widgets/scrollbar/scrollbar.less"; +@import "./wde/widgets/button/button.less"; // @import "./wde/legacy-ui.less"; @import "./wde/widgets/basic-widgets.less"; @import "./theme.less"; @import "./wde/window-frame.less"; @import "./wde/widgets/title-bar/title-bar.less"; -// @font-face{ -// font-family: "Virtue"; -// src:url("/res/dev-fs/fonts/virtue.ttf"); -// } - -/* @font-face{ - font-family: "Virtue"; - src:url("/res/dev-fs/fonts/virtue.ttf") -} */ - -/* @media screen and (max-device-width: 2048px) and (max-device-height: 2048px) { - html { - zoom: 3 - } - } */ - .NoClick { pointer-events: none; } .Click { pointer-events: all; } -.DragArea +// .DragArea -*{ - font-family: Verdana, Geneva, sans-serif; - font-size: 11px; - font-style: normal; - font-weight:initial; -} +// *{ +// font-family: Verdana, Geneva, sans-serif; +// font-size: 11px; +// font-style: normal; +// font-weight:initial; +// } *::-webkit-scrollbar { /* WebKit */ width: 0; @@ -44,6 +29,7 @@ } body{ + &:extend(.views-font); // zoom: var(--zoom); position: absolute; width: 100%; @@ -52,6 +38,9 @@ body{ font-size: 11px; + // font-family: "Geneva"; + src:url("./fonts/Geneva.woff2"); + /* font: normal 14px Summer Pixel 22, "res/SummerPixel22Regular.ttf"; */ -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ diff --git a/front/src/fonts/Charcoal.woff2 b/front/src/fonts/Charcoal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d4293c9577f95d7e99426b1f3708d36fd04877b GIT binary patch literal 28952 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

;<&T2bhm3L{=%F?}CYuCFtE5lFnw;z{2 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 literal 0 HcmV?d00001 diff --git a/front/src/mobile.less b/front/src/mobile.less index 0a993cc..b5fc263 100644 --- a/front/src/mobile.less +++ b/front/src/mobile.less @@ -1,13 +1,23 @@ @import "./wde/sunboard/sunboard-mobile.less"; +@import "./theme.less"; +@import "./wde/effects.less"; +@import "./wde/widgets/button/button.less"; + +@font-face{ + font-family: "Geneva"; + src:url("./fonts/Geneva.woff2"); +} body{ + &:extend(.views-font); // zoom: 2; position: absolute; width: 100%; height: 100%; margin: 0px; - font-size: 16px; + + font-size: 12px; /* font: normal 14px Summer Pixel 22, "res/SummerPixel22Regular.ttf"; */ -webkit-touch-callout: none; /* iOS Safari */ @@ -19,6 +29,7 @@ body{ supported by Chrome, Edge, Opera and Firefox */ touch-action: manipulation; + background-color: @col-argent; // /* Auto layout */ // display: flex; // flex-direction: column; @@ -26,11 +37,11 @@ body{ // justify-content: flex-start; // margin: 32px; - background-image: - linear-gradient(45deg, @col-argent 25%, transparent 25%), - linear-gradient(45deg, transparent 75%, @col-argent 75%), - linear-gradient(45deg, transparent 75%, @col-argent 75%), - linear-gradient(45deg, @col-argent 25%, #777777 25%); + // background-image: + // linear-gradient(45deg, @col-argent 25%, transparent 25%), + // linear-gradient(45deg, transparent 75%, @col-argent 75%), + // linear-gradient(45deg, transparent 75%, @col-argent 75%), + // linear-gradient(45deg, @col-argent 25%, #777777 25%); background-size:10px 10px; @@ -41,11 +52,12 @@ body{ position: absolute; // background-color: aqua; inset: 16px; - bottom: 128px; + bottom: 100px; - border-radius: 15px; - border: 1px solid #000; - background: #99C; + border-radius: 5px; + border: @eff-border-black; + box-shadow: @eff-box-shadow-black; + background: @col-gainsboro; overflow: hidden; } @@ -71,4 +83,28 @@ body{ width: 100%; height: 100%; // position: absolute; +} + +.wde-mobile-button{ + &:extend(.wde-button); + &:active{ + &:extend(.wde-button:active); + } + height: 35px; + width: 95px; + /* Auto layout */ + display: flex; + // padding: 10px; + flex-direction: row; + justify-content: center; + align-items: center; + padding-right: 5px; + // gap: 53px; + // align-self: stretch; +} + +.wde-mobile-button > .icon{ + + // width: 8rem; + // height: 8rem; } \ No newline at end of file diff --git a/front/src/theme.less b/front/src/theme.less index 92ba542..6f0495c 100644 --- a/front/src/theme.less +++ b/front/src/theme.less @@ -1,10 +1,39 @@ @col-ceil: #9999CC; + @col-argent: #C0C0C0; @col-chinese-silver: #CCCCCC; @col-gainsboro: #DDDDDD; -@col-davys-grey: #555555; -@col-grey: #808080; + @col-bright-grey: #EEEEEE; +@col-davys-grey: #555555; +@col-granite-gray: #666666; +@col-grey: #808080; + @col-black: #000000; @col-white: #FFFFFF; -@col-raisin-black: #222222; \ No newline at end of file +@col-raisin-black: #222222; + + + +@font-face{ + font-family: "Geneva"; + src:url("./fonts/Geneva.woff2"); +} + +@font-face { + font-family: "Charcoal"; + src: url('./fonts/Charcoal.woff2'); +} + +.large-system-font{ + font-family: "Charcoal"; + // font-weight: bold; + letter-spacing: 0.35px; + font-size: 12px; +} +.small-system-font{ + font-family: "Geneva"; +} +.views-font{ + font-family: "Geneva"; +} \ No newline at end of file diff --git a/front/src/wde/effects.less b/front/src/wde/effects.less index 0d02b5c..929d105 100644 --- a/front/src/wde/effects.less +++ b/front/src/wde/effects.less @@ -41,4 +41,5 @@ @eff-box-shadow-black: 1px 1px 0px @col-black; @eff-box-shadow-convex: inset -1px -1px 0px rgba(0, 0, 0, 0.27),inset 1px 1px 0px @col-white; +@eff-box-shadow-convex-inverted: inset 1px 1px 0px rgba(0, 0, 0, 0.27),inset -1px -1px 0px @col-grey; @eff-box-shadow-adjective: -1px -1px 0px rgba(0, 0, 0, 0.25), 1px 1px 0px #FFFFFF; \ No newline at end of file diff --git a/front/src/wde/sunboard/sunboard-mobile.less b/front/src/wde/sunboard/sunboard-mobile.less index 1ff6e34..b5045df 100644 --- a/front/src/wde/sunboard/sunboard-mobile.less +++ b/front/src/wde/sunboard/sunboard-mobile.less @@ -15,7 +15,7 @@ #icons{ width: 100%; height: 100%; - background-color: @col-ceil; + // background-color: @col-ceil; } // #down-bar{ @@ -28,31 +28,32 @@ .apps-list{ /* Auto layout */ display: flex; - padding: 64px 32px; + padding: 64px 16px; align-items: flex-start; align-content: flex-start; - gap: 103px 18px; + gap: 64px 0px; flex: 1 0 0; align-self: stretch; flex-wrap: wrap; } .app-icon{ + // background-color: rgba(0, 255, 255, 0.133); width: 100px; - height: 100px; + // height: 100px; /* Auto layout */ display: flex; - padding: 4px 8px; + // padding: 4px 8px; flex-direction: column; align-items: center; gap: 10px; } .app-icon .icon{ - width: 64px; - height: 64px; - background-color: beige; + width: 32px; + height: 32px; + // background-color: beige; } .app-icon .lable{ diff --git a/front/src/wde/wde-desktop.js b/front/src/wde/wde-desktop.js index 1d845af..4e1c100 100644 --- a/front/src/wde/wde-desktop.js +++ b/front/src/wde/wde-desktop.js @@ -36,8 +36,8 @@ export default class WebDesktopEnvironment extends AbstractWebDesktopEnvironment async loadWDE(){ await this.Open("/Applications/Finder.app", ["/","--desktop", "desktop-layer"]) - await this.Open("/Applications/Finder.app", ["/", "desktop-layer"]) - // await this.Open("/Applications/AboutMe.app", ["/", "desktop-layer"]) + // await this.Open("/Applications/Finder.app", ["/", "desktop-layer"]) + await this.Open("/Applications/AboutMe.app", ["/", "desktop-layer"]) return let autoStart = document.body.querySelector("wde-autostart") diff --git a/front/src/wde/wde-mobile.js b/front/src/wde/wde-mobile.js index 70967bd..6c9f4fc 100644 --- a/front/src/wde/wde-mobile.js +++ b/front/src/wde/wde-mobile.js @@ -17,6 +17,8 @@ export default class MobileWebDesktopEnvironment extends AbstractWebDesktopEnvir this.FileView = WDEFileView this.#sunBoard = new MobileSunboard(this) // this.loadWDE() + + document.addEventListener("touchstart", function(){}, true);//For working :active in css } diff --git a/front/src/wde/wde.js b/front/src/wde/wde.js index a9d9d5f..234bdb3 100644 --- a/front/src/wde/wde.js +++ b/front/src/wde/wde.js @@ -33,7 +33,7 @@ export default class AbstractWebDesktopEnvironment{ * @returns {Object | undefined} //FIXME */ async _FetchAppManifest(path){ - // console.log(location) + console.log(path) // console.log(this.GetApiAddress()) const params = new URLSearchParams({path: path, mode: "json"}) const response = await fetch(`/system/loadApp?` + params) diff --git a/front/src/wde/widgets/button/button.less b/front/src/wde/widgets/button/button.less new file mode 100644 index 0000000..eb2e9e8 --- /dev/null +++ b/front/src/wde/widgets/button/button.less @@ -0,0 +1,27 @@ +@import "../../effects.less"; +@import "../../../theme.less"; + +.wde-button{ + &:active{ + background-color: @col-granite-gray; + box-shadow: @eff-box-shadow-convex-inverted; + // background-color: red; + } + background-color: @col-gainsboro; + box-shadow: @eff-box-shadow-convex; + border: @eff-border-black; + border-radius: 3px; + + + height: 20px; + width: auto; + +} + +// .wde-button:active{ +// background-color: red; +// } + +// .wde-button:hover{ +// background-color: pink; +// } \ No newline at end of file diff --git a/front/src/wde/widgets/title-bar/title-bar.less b/front/src/wde/widgets/title-bar/title-bar.less index 6c6b84e..3927d7d 100644 --- a/front/src/wde/widgets/title-bar/title-bar.less +++ b/front/src/wde/widgets/title-bar/title-bar.less @@ -28,8 +28,10 @@ pointer-events: none; white-space: nowrap; - font-family: "Virtue"; - letter-spacing: 0.35px; + &:extend(.large-system-font); + + // font-family: "Virtue"; + // letter-spacing: 0.35px; } .window-frame.Focused .title-bar .lable{ diff --git a/icons/github/color/favicon.ico b/icons/github/color/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a59308e2e7ef39c9aa77eb03d70fa1c02c738429 GIT binary patch literal 6518 zcmeHKOK4nG7``(#F-UJFcjmrkGEJv3HpTdY_(DMjK}3)WLN-!CT_}P(LpOp<2i&Sv zV^wq`U5FcTrMntXi3QPiAx0%w3w5EXO`1MJ$By4ObN`uh&zw7xPU>z34(FWzeBbx~ z_dn0Etdy0u#>OnvC2QZ1W$m>rt5k~mu4V0qZ69oa0MWFgvMktp{TwHEFqg}HGden& z6>KJxaU93}9QGH*W~yD+eK(hLYbdK2&nuYF^MX1H^j}l#t)}B-7r{FVM-yZCwFa6E z8)FyR8t!N6IQ+iPvEgCoHpG1Z@h+lF3I^@FA=&UR8sNOaaoF$5*qJ(-o2gW4HJwh^ zQ7%H~e&LUdjFe&fOSn=a*4tgz`w*oLZVhR=V%yGx!qaQp&OU(e_*3}VZ1w}>bXodn zKcREJ_Yu>?x<{!O{dQpPz7^eGHL>9B5VB~fxk%C=#=vb! zAwLg6{|L%5Vqa%rn>LQMfP+RO13V{7C}k9$r;Q)Z(0+fOH?wnMV#4XgA0HntPEAdX z_QGv--1m3g90cK8ST}3FADl0j%Qtl6`hK`d9O{K)v3N^2Y_~Cd!;R3WpfvWhtlLtl zG}4U++*QGXyNOcm#nJVcLwv)JqNCO`Gc&_FUhM<>uZm|IS|&!I&8rb1Xc)o}8S_1VQjH=IIsie{J(S z=K^QS+vHDAPusw)Ct$C_Z*_Kdb_*}ecr?rrxbx6W+7Ix_9Os`*@Qr;N&c{`+y@%XA zldMnQ`NQV%@OZsmZ@ew8-D{kI@A$&(BYzlU-!F#(P%rLH`%9PtL2hD6W<5dyFe!9UkxW zL*HTRe}ar7u8r%p_9O~u8s?e4&1V+RUg2)H#{7@Tx5ex57~)!p+nQ$;><72&SNQnG zXA^uZblDpl`Fwu2X!Kj-9?RidVt1ItLf?GPpx^l4CU&VY{&c^7g~vC9=xOzuyrmG| z5pAq-XX5*3MW^4I?=F)zeTruE#@Ntti2WYHu;zUM+pVVim-_{|-mAaSagOcLb>SPn zN};L^TUE#Ly+aJ&+|YRrXGP;bKF7;rFL#R?>G8VeX||C zx0m8Egg-&+6X5@j+dJ=b!}veoev0zFItHyJ)BB4tFekvDR`J)jP3?Hz=~w;ve({d~ zCx-AewN+n9?Pxt}bFrnIcf2*3KjysGck8i4>!Av6$G+I=oREuBO`31rr>P(1g6D(r zj7o?F|5bUWbf0UJza$&?6VFTN;=bUW6)s2nFuFsVcZr;-Njd}jAOnL83^E`Y_zzV~ B;@1EG literal 0 HcmV?d00001 diff --git a/icons/github/color/github.png b/icons/github/color/github.png new file mode 100644 index 0000000..fd23181 --- /dev/null +++ b/icons/github/color/github.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae3debc182acc9d3d30f192f946820f91979a5b252b8fa5396c5ffdd723c49d1 +size 800 diff --git a/icons/hand/color/8.png b/icons/hand/color/8.png new file mode 100644 index 0000000..a61bb58 --- /dev/null +++ b/icons/hand/color/8.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:894b29c6a46e214adc7eb7c9027eef761808e598e3743749eb5ad139fbec4bc2 +size 273 diff --git a/icons/twitter/color/favicon.ico b/icons/twitter/color/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b4a71699a727c7642612dfa116c748df3c530fe1 GIT binary patch literal 1150 zcmd5)O-lk%6un{KMi>_n?QH2z|AEpUs8vFnq*c3Gwi4VWK~P9g#F)@V5VDO#m`Wj1 zi6iuZF_nfwAvhW{l=i{vUUYJrrd$QR;mo~r?>*-o-Wz}ce5_W$_bAK`0t^Fy9f2jR zbm|xYu%};)G5ANYpck74Bbb{J{XCj*#{Sw6yiXUtu!>fR54lA4 zHxysAN(TX8VhETN?Lj%6j=#4XuHQ7e+FZMypOP~Zhgv@6j|r#P)iCrxe7TzR)b|{s zo~wS72F}r$7-?9PGhaxGak4sZ6qRee>dpf4>0kNuQHi@wj#q#YkM5It&HKEw zvi;RVDGcl(%E?Mi7}N4|k@4L-f%j@_lpk$43b`P#!WuBr&uqC<$yHmqQs8H_v+ADO z8s${K$u7?qQ$D|{Pqm-s_58p820X(Kni$hAfR+uQ$pMtj9i+Q4YXT@CSgFVP0GFBa AX8-^I literal 0 HcmV?d00001 diff --git a/icons/twitter/color/twitter.png b/icons/twitter/color/twitter.png new file mode 100644 index 0000000..73beb5a --- /dev/null +++ b/icons/twitter/color/twitter.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c73dae01abd81577a418308b3e6d40c059fb61b8682e2ec939697626051c3b0 +size 653 diff --git a/main.go b/main.go index 4da682a..e74d836 100644 --- a/main.go +++ b/main.go @@ -73,7 +73,7 @@ func main() { imgViewerApp := imgviewer.NewImgViewerApp(webfs) blogViewerApp := blogviewer.NewBlogViewerApp(webfs) blogWriterApp := blogwriter.NewBlogWriterApp(webfs) - sunBoardApp := sunboard.NewSunboardApp(webfs, appsStorage) + sunBoardApp := sunboard.NewSunboardApp(webfs, webde, appsStorage) appsStorage.Apps["personal-properties"] = persPropsApp appsStorage.Apps["finder"] = finderApp diff --git a/templates/base/mobile-desktop.html b/templates/base/mobile-desktop.html index 8511dc9..6a0db23 100644 --- a/templates/base/mobile-desktop.html +++ b/templates/base/mobile-desktop.html @@ -17,10 +17,10 @@ -->

-
- +
+ - +
{{.Lable}}