Skip to content

Commit

Permalink
Merge pull request #243 from dubstar-04/fixes/styles
Browse files Browse the repository at this point in the history
Fixes/styles
  • Loading branch information
dubstar-04 authored Jan 7, 2024
2 parents d06b7b8 + eeb03e9 commit a4e2354
Show file tree
Hide file tree
Showing 13 changed files with 170 additions and 27 deletions.
1 change: 1 addition & 0 deletions data/io.github.dubstar_04.design.data.gresource.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<file>ui/preferences.ui</file>
<file>ui/preferencePageSettings.ui</file>
<file>ui/preferencePageDimensionStyle.ui</file>
<file>ui/preferencePageLineType.ui</file>
<file>ui/preferencePageTextStyle.ui</file>
<file>ui/layers.ui</file>
<file>ui/properties.ui</file>
Expand Down
3 changes: 3 additions & 0 deletions data/io.github.dubstar_04.design.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@
<li>Change text styles, vertical and horizontal alignment from the properties window</li>
<li>Highlight design entities on mouse hover</li>
<li>Fix opening files as arguments e.g. 'open with' from file browser</li>
<li>Add line styles selection to preferences window</li>
<li>Add line styles selection to layers window</li>
<li>Add line styles selection to properties window</li>
</ul>
</description>
</release>
Expand Down
1 change: 1 addition & 0 deletions data/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ blueprints = custom_target('blueprints',
'ui/preferences.blp',
'ui/preferencePageSettings.blp',
'ui/preferencePageDimensionStyle.blp',
'ui/preferencePageLineType.blp',
'ui/preferencePageTextStyle.blp',
'ui/layers.blp',
'ui/properties.blp',
Expand Down
Binary file modified data/screenshots/screenshot1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/screenshots/screenshot3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 5 additions & 4 deletions data/ui/layers.blp
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ template $LayersWindow : Adw.ApplicationWindow {

Adw.EntryRow nameEntry{
title: _("Name");
show-apply-button: true;
notify::active => $onLayerUpdate();
//show-apply-button: true;
entry-activated => $onLayerUpdate();
}

Adw.ActionRow {
Expand All @@ -141,11 +141,12 @@ template $LayersWindow : Adw.ApplicationWindow {

Adw.ActionRow {
title: _("Line Type");
subtitle: _("Line type for the selected layer. Not implimented");
subtitle: _("Line type for the selected layer");

[suffix]
Label lineTypeLabel{
DropDown lineType{
valign: center;
notify::selected-item => $onLayerUpdate();
}
}

Expand Down
31 changes: 31 additions & 0 deletions data/ui/preferencePageLineType.blp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Gtk 4.0;
using Adw 1;

template $PreferencePageLineType : Adw.PreferencesPage {
icon-name: "function-linear-symbolic";
title: _("Line Type");

ScrolledWindow {
child: Adw.Clamp {
child: Box {
orientation: vertical;
margin-top: 24;
margin-bottom: 24;
margin-start: 12;
margin-end: 12;
spacing: 6;

Box {
orientation: vertical;
spacing: 6;

ListBox stylesList{
selection-mode: none;
styles ["boxed-list"]
}
}

}; //Box
}; //Clamp
} //ScrolledWindow
}
52 changes: 34 additions & 18 deletions src/Design/layersWindow.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import {DesignCore} from '../Design-Core/core/designCore.js';
export const LayersWindow = GObject.registerClass({
GTypeName: 'LayersWindow',
Template: 'resource:///io/github/dubstar_04/design/ui/layers.ui',
InternalChildren: ['layerList', 'stack', 'backButton', 'nameEntry', 'frozenSwitch', 'lockedSwitch', 'lineTypeLabel', 'lineWeightLabel', 'plottingSwitch'],
InternalChildren: ['layerList', 'stack', 'backButton', 'nameEntry', 'frozenSwitch', 'lockedSwitch', 'lineType', 'lineWeightLabel', 'plottingSwitch'],
}, class LayersWindow extends Adw.ApplicationWindow {
constructor() {
super({});
Expand Down Expand Up @@ -68,21 +68,21 @@ export const LayersWindow = GObject.registerClass({

onEditAction(simpleAction, parameters) {
const layerName = parameters.deep_unpack();
this.selected_layer = DesignCore.LayerManager.getLayerByName(layerName);
this.selected_layer = DesignCore.LayerManager.getStyleByName(layerName);
this.onEditLayer();
}

onDeleteAction(simpleAction, parameters) {
// console.log("delete action")
const layerName = parameters.deep_unpack();
this.selected_layer = DesignCore.LayerManager.getLayerByName(layerName);
this.selected_layer = DesignCore.LayerManager.getStyleByName(layerName);
this.onLayerDelete();
}

onCurrentAction(simpleAction, parameters) {
// console.log("current action")
const layerName = parameters.deep_unpack();
DesignCore.LayerManager.setCLayer(layerName);
DesignCore.LayerManager.setCstyle(layerName);
this.reload();
}

Expand All @@ -96,6 +96,12 @@ export const LayersWindow = GObject.registerClass({
return rgba;
}

getLineTypes() {
const lineStyles = DesignCore.LTypeManager.getStyles();
const lineStyleNames = lineStyles.map((style) => style.name);
return lineStyleNames;
}

reload() {
this.clearList();
this.loadLayers();
Expand All @@ -113,8 +119,8 @@ export const LayersWindow = GObject.registerClass({
}

loadLayers() {
const layers = DesignCore.LayerManager.getLayers();
const clayer = DesignCore.LayerManager.getCLayer();
const layers = DesignCore.LayerManager.getStyles();
const clayer = DesignCore.LayerManager.getCstyle();

for (let i = 0; i < layers.length; i++) {
const colourButton = new Gtk.ColorButton({'valign': Gtk.Align.CENTER, 'rgba': this.toRgba(layers[i].colour)});
Expand Down Expand Up @@ -149,7 +155,7 @@ export const LayersWindow = GObject.registerClass({

onColourChange(colourButton) {
const row = colourButton.get_ancestor(Adw.ActionRow);
const layer = DesignCore.LayerManager.getLayerByName(row.title);
const layer = DesignCore.LayerManager.getStyleByName(row.title);
const rgba = colourButton.rgba.to_string();
const rgb = rgba.substr(4).split(')')[0].split(',');
// log(rgb)
Expand All @@ -163,7 +169,7 @@ export const LayersWindow = GObject.registerClass({
// Get the row of the switch
const row = toggle.get_ancestor(Adw.ActionRow);
// get the layer reference from the layer manager
const layer = DesignCore.LayerManager.getLayerByName(row.title);
const layer = DesignCore.LayerManager.getStyleByName(row.title);
// change the layer state
layer.on = state;
// redraw
Expand All @@ -178,14 +184,14 @@ export const LayersWindow = GObject.registerClass({

onNewClicked() {
// console.log("new clicked")
DesignCore.LayerManager.newLayer();
DesignCore.LayerManager.newStyle();
this.reload();
}

onLayerSelected(row) {
if (row) {
this._layerList.unselect_row(row);
this.selected_layer = DesignCore.LayerManager.getLayerByName(row.title);
this.selected_layer = DesignCore.LayerManager.getStyleByName(row.title);
this.onEditLayer();
}
}
Expand All @@ -194,7 +200,16 @@ export const LayersWindow = GObject.registerClass({
this._nameEntry.text = this.selected_layer.name;
this._frozenSwitch.active = this.selected_layer.frozen;
this._lockedSwitch.active = this.selected_layer.locked;
this._lineTypeLabel.label = this.selected_layer.lineType;

// set line type model and current index
const lineTypeNames = this.getLineTypes();
this._lineType.set_model(Gtk.StringList.new(lineTypeNames));
const selectedIndex = lineTypeNames.indexOf(this.selected_layer.lineType);

if (selectedIndex >= 0) {
this._lineType.set_selected(selectedIndex);
}

this._lineWeightLabel.label = this.selected_layer.lineWeight.toString();
this._plottingSwitch.active = this.selected_layer.plotting;

Expand All @@ -203,12 +218,13 @@ export const LayersWindow = GObject.registerClass({
}

onLayerUpdate() {
// console.log("update layer")
this.selected_layer.name = this._nameEntry.text;
const layerIndex = DesignCore.LayerManager.getStyleIndex(this.selected_layer.name);
DesignCore.LayerManager.renameStyle(layerIndex, this._nameEntry.text);
this.selected_layer.frozen = this._frozenSwitch.active;
this.selected_layer.locked = this._lockedSwitch.active;
// this.selected_layer.lineType = this._lineTypeLabel.label;
// this.selected_layer.lineWeight = this._lineWeightLabel.label;
const selectedLineType = this._lineType.get_selected_item().get_string();
this.selected_layer.lineType = selectedLineType;

this.selected_layer.plotting = this._plottingSwitch.active;
this.get_transient_for().getActiveCanvas().queue_draw();
}
Expand All @@ -229,14 +245,14 @@ export const LayersWindow = GObject.registerClass({
onConfirmDialog(dialog, response) {
// console.log("delete dialog callback")
if (response === 'delete') {
this.deleteLayer(this.selected_layer.name);
this.deleteStyle(this.selected_layer.name);
this.onBackClicked();
}
}

deleteLayer(layerName) {
deleteStyle(layerName) {
// console.log("delete layer")
DesignCore.LayerManager.deleteLayerName(layerName);
DesignCore.LayerManager.deleteStyle(DesignCore.LayerManager.getStyleIndex(layerName));
this.get_transient_for().getActiveCanvas().queue_draw();
}
}, // window
Expand Down
83 changes: 83 additions & 0 deletions src/Design/preferencePageLineType.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/* preferencesWindow.js
*
* Copyright 2024 Daniel Wood
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

import GObject from 'gi://GObject';
import Adw from 'gi://Adw?version=1';
import Gtk from 'gi://Gtk';

import {DesignCore} from '../Design-Core/core/designCore.js';

export const PreferencePageLineType = GObject.registerClass({
GTypeName: 'PreferencePageLineType',
Template: 'resource:///io/github/dubstar_04/design/ui/preferencePageLineType.ui',
InternalChildren: ['stylesList'],
}, class PreferencePageLineType extends Adw.PreferencesPage {
constructor() {
super({});
this.reload();
}

reload() {
this.clearStyleList();
this.load();
}

clearStyleList() {
// delete all current children
let child = this._stylesList.get_first_child();
while (child) {
const next = child.get_next_sibling();
this._stylesList.remove(child);
child = next;
}
}

load() {
const optionalStyles = DesignCore.LTypeManager.getOptionalStyles();

optionalStyles.forEach((style, index) => {
const row = new Adw.ActionRow(
{
title: style.name,
subtitle: style.description,
});

const styleLoaded = DesignCore.LTypeManager.styleExists(style.name);
const indelibleStyle = DesignCore.LTypeManager.indelibleStyles.some((iStyle) => iStyle.toUpperCase() === style.name);

const checkBox = new Gtk.CheckButton({active: styleLoaded, sensitive: !(styleLoaded||indelibleStyle)});
checkBox.connect('toggled', this.styleChecked.bind(this, row));
row.id = index;

row.add_prefix(checkBox);
this._stylesList.append(row);
});
}


styleChecked(row, checkBox) {
if (row) {
const optionalStyles = DesignCore.LTypeManager.getOptionalStyles();
DesignCore.LTypeManager.addStyle(optionalStyles[row.id]);
this.reload();
}
}
},
);


2 changes: 2 additions & 0 deletions src/Design/preferencesWindow.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import Adw from 'gi://Adw?version=1';
import {PreferencePageSettings} from './preferencePageSettings.js';
import {PreferencePageTextStyle} from './preferencePageTextStyle.js';
// import {PreferencePageDimensionStyle} from './preferencePageDimensionStyle.js';
import {PreferencePageLineType} from './preferencePageLineType.js';

export const PreferencesWindow = GObject.registerClass({
GTypeName: 'PreferencesWindow',
Expand All @@ -35,6 +36,7 @@ export const PreferencesWindow = GObject.registerClass({

this.add(new PreferencePageSettings(settings));
this.add(new PreferencePageTextStyle());
this.add(new PreferencePageLineType());
// this.add(new PreferencePageDimensionStyle());
}
},
Expand Down
8 changes: 6 additions & 2 deletions src/Design/propertiesWindow.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ export const PropertiesWindow = GObject.registerClass({
break;
case 'layer':
case 'styleName':
case 'lineType':
const model = this.getModel(property);
suffixWidget = Gtk.DropDown.new_from_strings(model);
suffixWidget.width_request = widgetWidth;
Expand Down Expand Up @@ -248,12 +249,11 @@ export const PropertiesWindow = GObject.registerClass({
switch (property) {
case 'layer':
model = [];
for (const layer of DesignCore.LayerManager.getLayers()) {
for (const layer of DesignCore.LayerManager.getStyles()) {
model.push(layer.name);
}
break;
case 'styleName':
// TODO: build model for styles
const styles = DesignCore.StyleManager.getStyles();
const styleNames = styles.map((style) => style.name);
model = styleNames;
Expand All @@ -266,6 +266,10 @@ export const PropertiesWindow = GObject.registerClass({
// TODO: build human readable model for alignment
model = ['Baseline', 'Bottom', 'Middle', 'Top'];
break;
case 'lineType':
const lineStyles = DesignCore.LTypeManager.getStyles();
const lineStyleNames = lineStyles.map((style) => style.name);
model = lineStyleNames;
}
return model;
}
Expand Down
5 changes: 3 additions & 2 deletions src/io.github.dubstar_04.design.src.gresource.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<file>Design/preferencePageSettings.js</file>
<file>Design/preferencePageDimensionStyle.js</file>
<file>Design/preferencePageTextStyle.js</file>
<file>Design/preferencePageLineType.js</file>
<file>Design/layersWindow.js</file>
<file>Design/exportWindow.js</file>
<file>Design/propertiesWindow.js</file>
Expand Down Expand Up @@ -81,8 +82,8 @@
<file>Design-Core/core/tools/trim.js</file>
<file>Design-Core/core/tools/tool.js</file>

<file>Design-Core/core/layers/layer.js</file>
<file>Design-Core/core/layers/layerManager.js</file>
<file>Design-Core/core/styles/layer.js</file>
<file>Design-Core/core/styles/layerManager.js</file>
<file>Design-Core/core/styles/ltype.js</file>
<file>Design-Core/core/styles/ltypeManager.js</file>
<file>Design-Core/core/styles/styleManagerBase.js</file>
Expand Down

0 comments on commit a4e2354

Please sign in to comment.