fixed settings to be uniform and update in real-time
This commit is contained in:
		
							parent
							
								
									29695b3de0
								
							
						
					
					
						commit
						35af373042
					
				
							
								
								
									
										241
									
								
								main.ts
								
								
								
								
							
							
						
						
									
										241
									
								
								main.ts
								
								
								
								
							| 
						 | 
				
			
			@ -132,9 +132,23 @@ class GridBackgroundSettingTab extends PluginSettingTab {
 | 
			
		|||
  display(): void {
 | 
			
		||||
    const { containerEl } = this;
 | 
			
		||||
    containerEl.empty();
 | 
			
		||||
    containerEl.createEl('h2', { text: 'Paper Background Settings' });
 | 
			
		||||
    containerEl.createEl('h2', { text: 'Bookify Settings' });
 | 
			
		||||
 | 
			
		||||
    let pageColour: ColorComponent;
 | 
			
		||||
    let transparencySliderComponent: SliderComponent;
 | 
			
		||||
    let transparencyTextComponent: TextComponent;
 | 
			
		||||
 | 
			
		||||
    let gridSizeSliderComponent: SliderComponent;
 | 
			
		||||
    let gridSizeTextComponent: TextComponent;
 | 
			
		||||
 | 
			
		||||
    let lineHeightSliderComponent: SliderComponent;
 | 
			
		||||
    let lineHeightTextComponent: TextComponent;
 | 
			
		||||
 | 
			
		||||
    let dotSizeSliderComponent: SliderComponent;
 | 
			
		||||
    let dotSizeTextComponent: TextComponent;
 | 
			
		||||
 | 
			
		||||
    let dotSpacingSliderComponent: SliderComponent;
 | 
			
		||||
    let dotSpacingTextComponent: TextComponent;
 | 
			
		||||
 | 
			
		||||
    // Paper Type Selection
 | 
			
		||||
    new Setting(containerEl)
 | 
			
		||||
| 
						 | 
				
			
			@ -153,24 +167,10 @@ class GridBackgroundSettingTab extends PluginSettingTab {
 | 
			
		|||
          });
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    // Universal Transparency Setting
 | 
			
		||||
    new Setting(containerEl)
 | 
			
		||||
      .setName('Transparency')
 | 
			
		||||
      .setDesc('Set the transparency level (0 to 1)')
 | 
			
		||||
      .addSlider(slider => {
 | 
			
		||||
        slider
 | 
			
		||||
          .setLimits(0, 1, 0.01)
 | 
			
		||||
          .setValue(this.plugin.settings.paper.transparency)
 | 
			
		||||
          .onChange(async (value) => {
 | 
			
		||||
            this.plugin.settings.paper.transparency = value;
 | 
			
		||||
            await this.plugin.saveSettings();
 | 
			
		||||
          });
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    // Universal Colour Setting
 | 
			
		||||
    new Setting(containerEl)
 | 
			
		||||
      .setName('Universal Colour')
 | 
			
		||||
      .setDesc('Set the colour for the lines/dots/grids)')
 | 
			
		||||
      .setDesc('Set the colour for the lines/dots/grids')
 | 
			
		||||
      .addColorPicker(colour => {
 | 
			
		||||
        pageColour = colour;
 | 
			
		||||
        colour
 | 
			
		||||
| 
						 | 
				
			
			@ -186,59 +186,254 @@ class GridBackgroundSettingTab extends PluginSettingTab {
 | 
			
		|||
          })
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    // Universal Transparency Setting
 | 
			
		||||
    new Setting(containerEl)
 | 
			
		||||
      .setName('Universal Transparency')
 | 
			
		||||
      .setDesc('Set the transparency level on a scale of 0 (transparent) to 1 (opaque)')
 | 
			
		||||
      .addSlider(slider => {
 | 
			
		||||
        transparencySliderComponent = slider;
 | 
			
		||||
        slider
 | 
			
		||||
          .setInstant(true)
 | 
			
		||||
          .setLimits(0, 1, 0.01)
 | 
			
		||||
          .setValue(this.plugin.settings.paper.transparency)
 | 
			
		||||
          .onChange(async (value) => {
 | 
			
		||||
            this.plugin.settings.paper.transparency = value;
 | 
			
		||||
            transparencySliderComponent.setValue(value);
 | 
			
		||||
            transparencyTextComponent.setValue(value.toString());
 | 
			
		||||
 | 
			
		||||
            await this.plugin.saveSettings();
 | 
			
		||||
          });
 | 
			
		||||
      })
 | 
			
		||||
      .addText(text => {
 | 
			
		||||
        transparencyTextComponent = text;
 | 
			
		||||
        text
 | 
			
		||||
          .setPlaceholder('e.g. 0.05')
 | 
			
		||||
          .setValue(this.plugin.settings.paper.transparency.toString())
 | 
			
		||||
          .onChange(async (value) => {
 | 
			
		||||
            let parsedValue = parseInt(value) || 0.05;
 | 
			
		||||
 | 
			
		||||
            if (parsedValue < 0) {
 | 
			
		||||
              parsedValue = 0
 | 
			
		||||
              
 | 
			
		||||
            } else if (parsedValue > 1) {
 | 
			
		||||
              parsedValue = 1
 | 
			
		||||
            } 
 | 
			
		||||
 | 
			
		||||
            this.plugin.settings.paper.transparency = parsedValue;
 | 
			
		||||
 | 
			
		||||
            transparencyTextComponent.setValue(parsedValue.toString());
 | 
			
		||||
            transparencySliderComponent.setValue(parsedValue);
 | 
			
		||||
            await this.plugin.saveSettings();
 | 
			
		||||
          })
 | 
			
		||||
          .inputEl.style.width = '50px'
 | 
			
		||||
        }
 | 
			
		||||
      )
 | 
			
		||||
      .addExtraButton(button =>
 | 
			
		||||
        button
 | 
			
		||||
          .setIcon('rotate-ccw')
 | 
			
		||||
          .setTooltip('Restore default')
 | 
			
		||||
          .onClick(async () => {
 | 
			
		||||
 | 
			
		||||
            this.plugin.settings.paper.transparency = DEFAULT_SETTINGS.paper.transparency;
 | 
			
		||||
            transparencyTextComponent.setValue('0.05');
 | 
			
		||||
            transparencySliderComponent.setValue(0.05);
 | 
			
		||||
 | 
			
		||||
            await this.plugin.saveSettings();
 | 
			
		||||
          })
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
    // Specific Settings Based on Paper Type
 | 
			
		||||
    if (this.plugin.settings.paper.paperType === 'grid') {
 | 
			
		||||
      new Setting(containerEl)
 | 
			
		||||
        .setName('Grid Size')
 | 
			
		||||
        .setDesc('Set the size of the grid (in px)')
 | 
			
		||||
        .addSlider(slider => {
 | 
			
		||||
          gridSizeSliderComponent = slider;
 | 
			
		||||
          slider
 | 
			
		||||
            .setInstant(true)
 | 
			
		||||
            .setLimits(20, 100, 1)
 | 
			
		||||
            .setValue(this.plugin.settings.grid.gridSize)
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              this.plugin.settings.grid.gridSize = value;
 | 
			
		||||
              this.plugin.settings.grid.gridSize = value || 20;
 | 
			
		||||
              gridSizeTextComponent.setValue(value.toString());
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
        })
 | 
			
		||||
        .addText(text => {
 | 
			
		||||
          gridSizeTextComponent = text;
 | 
			
		||||
          text
 | 
			
		||||
            .setPlaceholder('e.g. 20')
 | 
			
		||||
            .setValue(this.plugin.settings.grid.gridSize.toString())
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              let parsedValue = parseInt(value) || 20;
 | 
			
		||||
  
 | 
			
		||||
              if (parsedValue < 20) {
 | 
			
		||||
                parsedValue = 20
 | 
			
		||||
                
 | 
			
		||||
              } else if (parsedValue > 100) {
 | 
			
		||||
                parsedValue = 100
 | 
			
		||||
              } 
 | 
			
		||||
  
 | 
			
		||||
              this.plugin.settings.grid.gridSize = parsedValue;
 | 
			
		||||
              
 | 
			
		||||
              gridSizeTextComponent.setValue(parsedValue.toString());
 | 
			
		||||
              gridSizeSliderComponent.setValue(parsedValue); // Update the slider when text changes
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            })
 | 
			
		||||
            .inputEl.style.width = '50px'
 | 
			
		||||
          }
 | 
			
		||||
        )
 | 
			
		||||
        .addExtraButton(button =>
 | 
			
		||||
          button
 | 
			
		||||
            .setIcon('rotate-ccw')
 | 
			
		||||
            .setTooltip('Restore default')
 | 
			
		||||
            .onClick(async () => {
 | 
			
		||||
              this.plugin.settings.grid.gridSize = DEFAULT_SETTINGS.grid.gridSize;
 | 
			
		||||
              gridSizeSliderComponent.setValue(50);
 | 
			
		||||
              gridSizeTextComponent.setValue('50');
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            })
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
    } else if (this.plugin.settings.paper.paperType === 'lined') {
 | 
			
		||||
      new Setting(containerEl)
 | 
			
		||||
        .setName('Line Height')
 | 
			
		||||
        .setDesc('Set the height between lines (in px)')
 | 
			
		||||
        .addSlider(slider => {
 | 
			
		||||
          lineHeightSliderComponent = slider;
 | 
			
		||||
          slider
 | 
			
		||||
            .setLimits(10, 50, 1)
 | 
			
		||||
            .setInstant(true)
 | 
			
		||||
            .setLimits(20, 100, 1)
 | 
			
		||||
            .setValue(this.plugin.settings.lined.lineHeight)
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              this.plugin.settings.lined.lineHeight = value;
 | 
			
		||||
              lineHeightSliderComponent.setValue(value);
 | 
			
		||||
              lineHeightTextComponent.setValue(value.toString());
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
        })
 | 
			
		||||
        .addText(text => {
 | 
			
		||||
        lineHeightTextComponent = text;
 | 
			
		||||
        text
 | 
			
		||||
          .setPlaceholder('e.g. 20')
 | 
			
		||||
          .setValue(this.plugin.settings.lined.lineHeight.toString())
 | 
			
		||||
          .onChange(async (value) => {
 | 
			
		||||
            let parsedValue = parseInt(value) || 20;
 | 
			
		||||
 | 
			
		||||
            this.plugin.settings.lined.lineHeight = parsedValue;
 | 
			
		||||
 | 
			
		||||
            lineHeightTextComponent.setValue(parsedValue.toString());
 | 
			
		||||
            lineHeightSliderComponent.setValue(parsedValue);
 | 
			
		||||
            await this.plugin.saveSettings();
 | 
			
		||||
          })
 | 
			
		||||
          .inputEl.style.width = '50px'
 | 
			
		||||
        }
 | 
			
		||||
      )
 | 
			
		||||
      .addExtraButton(button =>
 | 
			
		||||
        button
 | 
			
		||||
          .setIcon('rotate-ccw')
 | 
			
		||||
          .setTooltip('Restore default')
 | 
			
		||||
          .onClick(async () => {
 | 
			
		||||
 | 
			
		||||
            this.plugin.settings.lined.lineHeight = DEFAULT_SETTINGS.lined.lineHeight;
 | 
			
		||||
            lineHeightTextComponent.setValue('20');
 | 
			
		||||
            lineHeightSliderComponent.setValue(20);
 | 
			
		||||
 | 
			
		||||
            await this.plugin.saveSettings();
 | 
			
		||||
          })
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
    } else if (this.plugin.settings.paper.paperType === 'bullet') {
 | 
			
		||||
      new Setting(containerEl)
 | 
			
		||||
        .setName('Dot Size')
 | 
			
		||||
        .setDesc('Set the size of the dots (in px)')
 | 
			
		||||
        .addSlider(slider => {
 | 
			
		||||
          dotSizeSliderComponent = slider;
 | 
			
		||||
          slider
 | 
			
		||||
            .setLimits(2, 10, 1)
 | 
			
		||||
            .setInstant(true)
 | 
			
		||||
            .setLimits(1, 5, 0.5)
 | 
			
		||||
            .setValue(this.plugin.settings.bullet.dotSize)
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              this.plugin.settings.bullet.dotSize = value;
 | 
			
		||||
              dotSizeSliderComponent.setValue(value);
 | 
			
		||||
              dotSizeTextComponent.setValue(value.toString());
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
        })
 | 
			
		||||
        .addText(text => {
 | 
			
		||||
          dotSizeTextComponent = text;
 | 
			
		||||
          text
 | 
			
		||||
            .setPlaceholder('e.g. 5')
 | 
			
		||||
            .setValue(this.plugin.settings.bullet.dotSize.toString())
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              let parsedValue = parseInt(value);
 | 
			
		||||
  
 | 
			
		||||
              this.plugin.settings.grid.gridSize = parsedValue;
 | 
			
		||||
              
 | 
			
		||||
              dotSizeTextComponent.setValue(parsedValue.toString());
 | 
			
		||||
              dotSizeSliderComponent.setValue(parsedValue);
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            })
 | 
			
		||||
            .inputEl.style.width = '50px'
 | 
			
		||||
          }
 | 
			
		||||
        )
 | 
			
		||||
        .addExtraButton(button =>
 | 
			
		||||
          button
 | 
			
		||||
            .setIcon('rotate-ccw')
 | 
			
		||||
            .setTooltip('Restore default')
 | 
			
		||||
            .onClick(async () => {
 | 
			
		||||
              this.plugin.settings.grid.gridSize = DEFAULT_SETTINGS.bullet.dotSize;
 | 
			
		||||
              dotSizeSliderComponent.setValue(5);
 | 
			
		||||
              dotSizeTextComponent.setValue('5');
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            })
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
      new Setting(containerEl)
 | 
			
		||||
        .setName('Dot Spacing')
 | 
			
		||||
        .setDesc('Set the spacing between dots (in px)')
 | 
			
		||||
        .addSlider(slider => {
 | 
			
		||||
          dotSpacingSliderComponent = slider;
 | 
			
		||||
          slider
 | 
			
		||||
            .setInstant(true)
 | 
			
		||||
            .setLimits(10, 50, 1)
 | 
			
		||||
            .setValue(this.plugin.settings.bullet.dotSpacing)
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              this.plugin.settings.bullet.dotSpacing = value;
 | 
			
		||||
 | 
			
		||||
              dotSpacingSliderComponent.setValue(value);
 | 
			
		||||
              dotSpacingTextComponent.setValue(value.toString());
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
        })
 | 
			
		||||
        .addText(text => {
 | 
			
		||||
          dotSpacingTextComponent = text;
 | 
			
		||||
          text
 | 
			
		||||
            .setPlaceholder('e.g. 5')
 | 
			
		||||
            .setValue(this.plugin.settings.bullet.dotSize.toString())
 | 
			
		||||
            .onChange(async (value) => {
 | 
			
		||||
              let parsedValue = parseInt(value);
 | 
			
		||||
  
 | 
			
		||||
              this.plugin.settings.bullet.dotSpacing = parsedValue;
 | 
			
		||||
              
 | 
			
		||||
              dotSpacingTextComponent.setValue(parsedValue.toString());
 | 
			
		||||
              dotSpacingSliderComponent.setValue(parsedValue);
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            })
 | 
			
		||||
            .inputEl.style.width = '50px'
 | 
			
		||||
          }
 | 
			
		||||
        )
 | 
			
		||||
        .addExtraButton(button =>
 | 
			
		||||
          button
 | 
			
		||||
            .setIcon('rotate-ccw')
 | 
			
		||||
            .setTooltip('Restore default')
 | 
			
		||||
            .onClick(async () => {
 | 
			
		||||
              this.plugin.settings.bullet.dotSpacing = DEFAULT_SETTINGS.bullet.dotSpacing;
 | 
			
		||||
              dotSpacingSliderComponent.setValue(20);
 | 
			
		||||
              dotSpacingTextComponent.setValue('20');
 | 
			
		||||
              await this.plugin.saveSettings();
 | 
			
		||||
            })
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue