Skip to content

Commit 4971c27

Browse files
authored
🔀 Merge pull request #49 from geriyoco/feat/display-filename
🗃️ Display filename in gallery and viewer
2 parents f661231 + b24cba2 commit 4971c27

File tree

8 files changed

+66
-7
lines changed

8 files changed

+66
-7
lines changed

media/gallery.css

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ html {
1717

1818
.image-container {
1919
overflow: hidden;
20+
padding: 2%;
21+
width: 100%;
2022
justify-self: center;
2123
border-radius: 5px;
2224
background-color: none;
@@ -32,7 +34,8 @@ html {
3234

3335
.image {
3436
border-radius: 5px;
35-
height: 100%;
37+
padding-top: 2%;
38+
height: 85%;
3639
width: 100%;
3740
object-fit: scale-down;
3841
}
@@ -45,4 +48,12 @@ html {
4548

4649
.loaded {
4750
opacity: 1;
51+
}
52+
53+
.filename {
54+
width: 100%;
55+
text-align: center;
56+
text-overflow: ellipsis;
57+
overflow: hidden;
58+
white-space: nowrap;
4859
}

media/gallery.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,27 @@
4646
imgNode.setAttribute("src", message.imgSrc);
4747
imgNode.setAttribute("data-src", message.imgSrc);
4848

49+
let divNode = document.createElement("div");
50+
divNode.setAttribute("class", "filename");
51+
divNode.setAttribute("id", message.imgPath + "-filename");
52+
divNode.textContent = message.imgPath.split("/").pop();
53+
4954
let containerNode = document.createElement("div");
5055
containerNode.setAttribute("class", "image-container");
5156
containerNode.appendChild(imgNode);
57+
containerNode.appendChild(divNode);
5258
grid.appendChild(containerNode);
5359
break;
5460
case 'vscodeImageGallery.changeImage':
5561
let timestamp = new Date().getTime();
5662
let changeImage = document.getElementById(message.imgPath);
5763
changeImage.setAttribute("src", message.imgSrc + "?t=" + timestamp);
5864
changeImage.setAttribute("data-src", message.imgSrc + "?t=" + timestamp);
65+
66+
let changeFilename = document.getElementById(message.imgPath + "-filename");
67+
changeFilename.setAttribute("class", "filename");
68+
changeFilename.setAttribute("id", message.imgPath + "-filename");
69+
changeFilename.textContent = message.imgPath.split("/").pop();
5970
break;
6071
case 'vscodeImageGallery.deleteImage':
6172
let deleteImage = document.getElementById(message.imgPath);

media/placeholder.jpg

2.31 KB
Loading

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
"Visualization"
1717
],
1818
"activationEvents": [
19-
"onStartupFinished"
19+
"onCommand:vscodeImageGallery.openGallery",
20+
"onWebviewPanel:gryc.gallery",
21+
"onWebviewPanel:gryc.viewer",
22+
"onCustomEditor:gryc.editor"
2023
],
2124
"main": "./dist/extension.js",
2225
"browser": "./dist/extension.js",

src/main_panel.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as utils from './utils';
44
export async function createPanel(context: vscode.ExtensionContext, galleryFolder?: vscode.Uri) {
55
const panel = vscode.window.createWebviewPanel(
66
'gryc.gallery',
7-
'Image Gallery',
7+
`Image Gallery${galleryFolder ? ': ' + utils.getFilename(galleryFolder.path) : ''}`,
88
vscode.ViewColumn.One,
99
{
1010
enableScripts: true,
@@ -31,12 +31,13 @@ export function getWebviewContent(
3131
webview: vscode.Webview,
3232
imgWebviewUris: vscode.Uri[],
3333
) {
34-
const placeholderUrl = "https://www.prowebdesign.ro/wp-content/uploads/2012/12/2-150x150.jpg";
34+
const placeholderUrl = webview.asWebviewUri(vscode.Uri.joinPath(context.extensionUri, 'media', 'placeholder.jpg'));
3535
const imgHtml = imgWebviewUris.map(
3636
img => {
3737
return `
3838
<div class="image-container">
3939
<img id="${img.path}" src="${placeholderUrl}" data-src="${webview.asWebviewUri(img)}" class="image lazy">
40+
<div id="${img.path}-filename" class="filename">${utils.getFilename(img.path)}</div>
4041
</div>
4142
`;
4243
}

src/utils.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,54 @@ export const nonce = getNonce();
2525

2626
export function getGlob() {
2727
const imgExtensions = [
28+
'ai',
2829
'avif',
2930
'bmp',
31+
'dib',
3032
'gif',
33+
'heif',
34+
'heic',
35+
'eps',
3136
'ico',
37+
'ind',
38+
'indd',
39+
'indt',
40+
'jp2',
41+
'j2k',
42+
'jpf',
43+
'jpx',
44+
'jpm',
45+
'mj2',
3246
'jpg',
3347
'jpe',
3448
'jpeg',
49+
'jpg_orig',
3550
'jif',
3651
'jfif',
3752
'jfi',
53+
'tif',
54+
'tiff',
55+
'psd',
3856
'png',
57+
'raw',
58+
'arw',
59+
'cr2',
60+
'nrw',
61+
'k25',
3962
'webp',
4063
'svg',
64+
'svgz',
4165
];
4266
let upperCaseImg = imgExtensions.map(ext => ext.toUpperCase());
4367
const globPattern = '**/*.{' + [...imgExtensions, ...upperCaseImg].join(',') + '}';
4468
return globPattern;
69+
}
70+
71+
export function getFilename(imgPath: string) {
72+
let filename = decodeURI(imgPath).split("/").pop();
73+
74+
if (filename) {
75+
return filename.split("?").shift();
76+
}
77+
return filename;
4578
}

src/viewer_panel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export function createPanel(
77
) {
88
const panel = vscode.window.createWebviewPanel(
99
'gryc.viewer',
10-
'Image Gallery: Viewer',
10+
`${utils.getFilename(imgSrc)}`,
1111
vscode.ViewColumn.Two,
1212
{
1313
enableScripts: true,

0 commit comments

Comments
 (0)