I was wanting to ask you if your style comes from C++ coding?
Eh, I should have written that I was running MW Material Skimmer in SU '25. I also often have a year on year set up and go back and forth.
The load errors come from:
require 'zip'
require 'nokogiri'
They’re in a few places. I commented them out and all is good in the world. I don’t know about ruby gems or nokogiri or what they’re supposed to do here or if anything else broke.
The logging seems to work… at least launching the Html Dialog.
logs
2025-03-27 23:26:28: get_version callback triggered
2025-03-27 23:26:45: select_file callback triggered with params: "D:/SketchUp/Resources/PBR/Brick/Brick_21_1K.skm"
2025-03-27 23:26:45: File selected: D:/SketchUp/Resources/PBR/Brick/Brick_21_1K.skm
2025-03-27 23:26:45: File size: 5870077 bytes
2025-03-27 23:26:45: Successfully opened ZIP file: D:/SketchUp/Resources/PBR/Brick/Brick_21_1K.skm
2025-03-27 23:26:45: RGB value: (96, 58, 28). Has texture: 1
2025-03-27 23:26:45: path to texture_element: red_bricks_04_diff_1k_1.png
2025-03-27 23:26:45: PBR Texture extracted: red_bricks_04_rough_1k_2.png
2025-03-27 23:26:45: PBR Texture extracted: red_bricks_04_nor_dx_1k_3.png
2025-03-27 23:26:45: PBR Texture extracted: red_bricks_04_ao_1k_4.png
2025-03-27 23:26:45: texture entry found: red_bricks_04_diff_1k_1.png
2025-03-27 23:26:45: Texture extracted from D:/SketchUp/Resources/PBR/Brick/Brick_21_1K.skm
2025-03-27 23:26:45: title_element: Brick_21_1K
2025-03-27 23:26:45: Extracted title: Brick_21_1K
2025-03-27 23:26:45: Thumbnail extracted from D:/SketchUp/Resources/PBR/Brick/Brick_21_1K.skm
2025-03-27 23:26:45: Garbage collected...
2025-03-27 23:50:14: get_version callback triggered
2025-03-28 00:05:50: get_version callback triggered
2025-03-27 20:10:00: get_version callback triggered
2025-03-27 20:11:46: get_version callback triggered
2025-03-27 20:12:32: get_version callback triggered
2025-03-27 20:36:02: select_folder callback triggered
2025-03-27 20:41:27: get_version callback triggered
2025-03-27 20:43:09: get_version callback triggered
2025-03-27 20:43:14: select_folder callback triggered
2025-03-27 20:43:57: get_version callback triggered
2025-03-27 20:44:38: select_file callback triggered with params: nil
2025-03-27 20:46:13: get_version callback triggered
2025-03-27 20:51:55: get_version callback triggered
2025-03-27 20:57:08: get_version callback triggered
2025-03-28 09:23:23: get_version callback triggered
2025-03-28 09:24:03: get_version callback triggered
2025-03-28 09:32:52: show_logs callback triggered
Your file selection works.
The Submit feedback seems to work (opened at, didn’t send). Browse seems like it will work.
Your Recent Material dropdown is Modus 4 vs. Modus 5 - what you are using. So you can replace this:
material-name-input
<div class="input-group mb-3">
<input type="text" class="form-control" id="material-name-input" value="dummy material.skm">
<button class="btn btn-outline-secondary" type="button" id="browse-button">Browse</button>
<button class="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split"
data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Recent</span>
</button>
<ul class="dropdown-menu dropdown-menu-end" id="recent-files-dropdown"></ul>
</div>
And then style like this:
css
#recent-files-dropdown {
min-width: 200px;
}
Or
#recent-files-dropdown {
width: 100%; /* Match parent width if needed */
}
Or however you choose.
Just to point at some hassle points… sometimes (but your stuff is working) you might do something like:
jsdelivr
<link href="https://cdn.jsdelivr.net/npm/@trimble-oss/modus-bootstrap@2.0.8/dist/css/modus-bootstrap.min.css" rel="stylesheet">
And/or,
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
I don’t have Node installed or anything so sometimes those are easier if you can’t get Modus/Bootstrap/whatever working.
When you first posted this I took it and stripped it apart and kind of made my own template out of it. So thanks for sharing it. It’s interesting that you have callbacks in utils and your welcome_tab gets versions and you have the SharedConstants in another area. It was like a story with a twist 