From f54c38f585536cbe88cdfddf9a699bf8ca909c6c Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Tue, 5 Mar 2024 23:42:08 -0700 Subject: Initial commit for nvim color picker. This is a very simplem plugin that lets the user set the color of a highlight group using a GUI colorpicker. This can be helpful for creating colorschemes. --- plugin/colorpicker.vim | 18 ++++++++++++++++++ plugin/pickcolors.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 plugin/colorpicker.vim create mode 100755 plugin/pickcolors.py diff --git a/plugin/colorpicker.vim b/plugin/colorpicker.vim new file mode 100644 index 0000000..088813f --- /dev/null +++ b/plugin/colorpicker.vim @@ -0,0 +1,18 @@ +let s:script_dir = expand(":p:h") + +let g:colorpicker_cmd = printf("%s/%s", s:script_dir, "pickcolors.py") + +function! PickColorFor(hlgroup, fgbg) + let opts = {} + + let opts.stdout_buffered = v:false + let opts.hlgroup = a:hlgroup + let opts.fgbg = a:fgbg + function opts.on_stdout(id, data, ev) dict + if len(a:data) > 0 + exec printf("hi %s %s=%s", self.hlgroup, self.fgbg, a:data[0]) + endif + endfunction + + let job = jobstart(g:colorpicker_cmd, opts) +endfunction diff --git a/plugin/pickcolors.py b/plugin/pickcolors.py new file mode 100755 index 0000000..50a2169 --- /dev/null +++ b/plugin/pickcolors.py @@ -0,0 +1,37 @@ +#!/usr/bin/python3 + +import sys +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QColor + +from PyQt5.QtWidgets import QApplication, QColorDialog + + +class ColorPicker(object): + + def __init__(self): + self.app = QApplication(sys.argv) + + def get_color(self): + color_dialog = QColorDialog(parent=None) + color_dialog.currentColorChanged.connect(self.on_color_changed) + color_dialog.finished.connect(self.close_on_finish) + color_dialog.exec_() + + def on_color_changed(self, color): + # Convert color to RGB format + # red, green, blue, _ = color.getRgb() + hex_color = color.name(QColor.HexRgb) + print(hex_color, flush=True) + # print(f"Selected Color: RGB({red}, {green}, {blue})") + + def run(self): + self.get_color() + sys.exit(self.app.exec_()) + + def close_on_finish(self, event): + sys.exit(0) + +if __name__ == "__main__": + picker = ColorPicker() + picker.run() -- cgit