11 Commits
Author SHA1 Message Date
RonnyDo 7bc46bd78f add editorconfig 2020-05-03 02:04:56 +02:00
RonnyDo 10bfe6637d Merge branch 'master' of https://github.com/RonnyDo/ColorPicker 2020-05-03 02:03:49 +02:00
RonnyDo 0c069a94b6 update changelog 2020-05-03 02:03:01 +02:00
RonnyDo c169c75744 Update README.md 2020-05-03 01:28:27 +02:00
RonnyDo c1cd137825 Merge pull request #76 from clappingmonkey/master
Add Bulgarian translation.
2020-05-03 01:25:02 +02:00
clappingmonkey 03a97c55cc add file for bulgarian; edit and add bg in LINGUAS. 2020-02-17 12:25:23 +02:00
RonnyDo ed24697961 code refactoring 2020-01-05 00:18:12 +01:00
RonnyDo 6ae6ec8825 correct copy icon 2020-01-04 23:15:52 +01:00
RonnyDo 9853a843d3 Merge pull request #74 from ryonakano/fix-deprecations
Fix deprecations
2020-01-04 22:53:22 +01:00
Ryo Nakano fefbcb7b04 Fix deprecations 2020-01-03 13:21:50 +09:00
RonnyDo c042a00abd add batches 2020-01-02 22:26:58 +01:00
10 changed files with 149 additions and 101 deletions

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
# EditorConfig <https://EditorConfig.org>
root = true
# elementary defaults
[*]
charset = utf-8
end_of_line = lf
indent_size = tab
indent_style = space
insert_final_newline = true
max_line_length = 80
tab_width = 4
# Markup files
[{*.html,*.xml,*.xml.in,*.yml}]
tab_width = 2
+3
View File
@@ -1,3 +1,6 @@
[![Build Status](https://travis-ci.com/RonnyDo/ColorPicker.svg?branch=master)](https://travis-ci.com/RonnyDo/ColorPicker)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
# Color Picker
One Color Picker to rule them all! No overhelming menus or settings. An easy tool with the features you need.
@@ -22,16 +22,24 @@
<category>Development</category>
</categories>
<releases>
​<release version="1.1.4" date="2020-05-03" urgency="low">
​ <description>
<ul>
<li>Added Bulgarian translation (kudos to @clappingmonkey)</li>
</ul>
</description>
​</release>
​<release version="1.1.3" date="2020-01-02" urgency="medium">
​ <description>
<ul>
<li>Added Polish translation (kudos to @michalzkosmosu)</li>
<li>Added Dutch translation (kudos to @Vistaus)</li>
<li>Added Turkish translation (kudos to @ibrakap)</li>
<li>Added Turkish translation (kudos to @onderbakirtas )</li>
<li>Fix build integration (kudos to @meisenzahl)</li>
</ul>
</description>
​</release>
​<release version="1.1.2" date="2019-01-02" urgency="medium">
​ <description>
<ul>
+6
View File
@@ -1,3 +1,9 @@
com.github.ronnydo.colorpicker (1.1.4) bionic; urgency=low
* Added Bulgarian translation (kudos to @clappingmonkey)
-- Ronny Dobra <ronnydobra@arcor.de> Thu, 03 May 2020 00:31:00 +0100
com.github.ronnydo.colorpicker (1.1.3) bionic; urgency=medium
* Added Polish translation (kudos to @michalzkosmosu)
+5
View File
@@ -6,6 +6,11 @@ project('com.github.ronnydo.colorpicker', ['vala', 'c'],
gnome = import('gnome')
i18n = import('i18n')
add_project_arguments(
'-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()),
language: 'c'
)
conf = configuration_data()
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
configure_file(output: 'config.h', configuration: conf)
+1
View File
@@ -1,3 +1,4 @@
bg
ca
de
es
+33
View File
@@ -0,0 +1,33 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the com.github.danrabbit.nimbus package.
# clappingmonkey <clappingmonkey33@gmail.com>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: com.github.ronnydo.colorpicker\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-21 20:40-0700\n"
"PO-Revision-Date: 2020-02-17 13:00+0300\n"
"Last-Translator: clappingmonkey <clappingmonkey@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bulgarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Color Picker"
msgstr "Color Picker"
msgid "Pick Color"
msgstr "Избери Цвят"
msgid "Format"
msgstr "Формат"
msgid "Color History"
msgstr "История"
+7 -8
View File
@@ -75,7 +75,7 @@ namespace ColorPicker {
var format_entry = new Gtk.Entry ();
format_entry.placeholder_text = ext_active_color.to_css_rgb_string ();
format_entry.set_editable (false);
format_entry.set_icon_from_icon_name (Gtk.EntryIconPosition.SECONDARY, "edit-copy");
format_entry.set_icon_from_icon_name (Gtk.EntryIconPosition.SECONDARY, "edit-copy-symbolic");
format_entry.margin_end = 6;
var color_format_combobox = new Gtk.ComboBoxText ();
@@ -170,8 +170,8 @@ namespace ColorPicker {
this.present ();
});
var win = mouse_position.get_window ();
//var win = mouse_position.get_window ();
mouse_position.picked.connect ((t, color) => {
ext_active_color = (ExtRGBA) color;
color_area.set_color (ext_active_color);
@@ -203,17 +203,16 @@ namespace ColorPicker {
Gtk.Clipboard.get_default (this.get_display ()).set_text (format_entry.get_text (), -1);
}
});
//color_format_combobox.changed.connect (color_format_changed);
color_format_combobox.changed.connect (() => {
int id = color_format_combobox.get_active ();
update_color_format_combobox_text (format_entry, id);
ColorPicker.settings.color_format_index = id;
});
// handle changed color in color history
color_history.color_clicked.connect ((t, color) => {
ext_active_color = (ExtRGBA) color;
+1 -1
View File
@@ -180,7 +180,7 @@ namespace ColorPicker.Widgets {
ctx.rel_line_to (triangle_width / 2, -1 * triangle_height);
ctx.rel_line_to (triangle_width / 2, triangle_height);
ctx.close_path ();
Gdk.cairo_set_source_rgba (ctx, style_context.get_background_color(Gtk.StateFlags.NORMAL));
Gdk.cairo_set_source_rgba (ctx, style_context.get_color (Gtk.StateFlags.NORMAL));
ctx.fill ();
+68 -91
View File
@@ -29,7 +29,7 @@ namespace ColorPicker.Widgets {
public signal void moved (Gdk.RGBA color);
const string dark_border_color_string = "#333333";
private Gdk.RGBA dark_border_color = Gdk.RGBA();
private Gdk.RGBA dark_border_color = Gdk.RGBA();
const string bright_border_color_string = "#FFFFFF";
private Gdk.RGBA bright_border_color = Gdk.RGBA();
@@ -44,16 +44,17 @@ namespace ColorPicker.Widgets {
// and https://github.com/RonnyDo/ColorPicker/issues/19
int snapsize = 31;
int min_zoomlevel = 2;
int max_zoomlevel = 7;
int max_zoomlevel = 14;
//int max_zoomlevel = 7;
int zoomlevel = 3;
int shadow_width = 15;
private Gdk.Cursor magnifier = null;
construct {
type = Gtk.WindowType.POPUP;
}
public Picker () {
stick ();
@@ -61,22 +62,24 @@ namespace ColorPicker.Widgets {
set_deletable (false);
set_skip_taskbar_hint (true);
set_skip_pager_hint (true);
set_keep_above (true);
dark_border_color.parse (dark_border_color_string);
set_keep_above (true);
dark_border_color.parse (dark_border_color_string);
bright_border_color.parse (bright_border_color_string);
// restore zoomlevel
if (settings.zoomlevel >= min_zoomlevel && settings.zoomlevel <= max_zoomlevel) {
zoomlevel = settings.zoomlevel;
}
var screen = get_screen ();
set_default_size (screen.get_width (), screen.get_height ());
}
var display = Gdk.Display.get_default ();
Gdk.Monitor monitor = display.get_primary_monitor ();
Gdk.Rectangle geom = monitor.get_geometry ();
set_default_size (geom.width, geom.height);
}
public override bool button_release_event (Gdk.EventButton e) {
// button_1 is left mouse button
if (e.button == 1) {
@@ -89,24 +92,24 @@ namespace ColorPicker.Widgets {
return true;
}
public override bool draw (Cairo.Context cr) {
public override bool draw (Cairo.Context cr) {
return false;
}
public override bool motion_notify_event (Gdk.EventMotion e) {
Gdk.RGBA color = get_color_at ((int) e.x_root, (int) e.y_root);
moved (color);
set_magnifier_cursor ();
return true;
return true;
}
public override bool scroll_event (Gdk.EventScroll e) {
switch (e.direction) {
case Gdk.ScrollDirection.UP:
@@ -130,25 +133,26 @@ namespace ColorPicker.Widgets {
public void set_magnifier_cursor () {
// draw cursor
var manager = Gdk.Display.get_default ().get_default_seat ();
// get cursor position
int px, py;
get_pointer (out px, out py);
get_window ().get_device_position (manager.get_pointer (), out px, out py, null);
var radius = snapsize * zoomlevel / 2;
// take screenshot
var latest_pb = snap (px - snapsize / 2, py - snapsize / 2, snapsize, snapsize);
// get a small area (snap) meant to be zoomed
var snapped_pixbuf = snap (px - snapsize / 2, py - snapsize / 2, snapsize, snapsize);
// Zoom that screenshot up, and grab a snapsize-sized piece from the middle
var scaled_pb = latest_pb.scale_simple (snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2 , Gdk.InterpType.NEAREST);
var scaled_pb = snapped_pixbuf.scale_simple (snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2 , Gdk.InterpType.NEAREST);
// Create the base surface for our cursor
var base_surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2);
var base_context = new Cairo.Context (base_surface);
// Create the circular path on our base surface
base_context.arc (radius + shadow_width, radius + shadow_width, radius, 0, 2 * Math.PI);
@@ -158,10 +162,10 @@ namespace ColorPicker.Widgets {
// Clip to that circular path, keeping the path around for later, and paint the pasted screenshot
base_context.save ();
base_context.clip_preserve ();
base_context.paint ();
base_context.paint ();
base_context.restore ();
// Draw a shadow as outside magnifier border
double shadow_alpha = 0.6;
base_context.set_line_width (1);
@@ -202,33 +206,21 @@ namespace ColorPicker.Widgets {
base_context.stroke ();
// turn the base surface into a pixbuf and thence a cursor
var drawn_pb = Gdk.pixbuf_get_from_surface(base_surface, 0, 0, base_surface.get_width(), base_surface.get_height());
magnifier = new Gdk.Cursor.from_pixbuf(
magnifier = new Gdk.Cursor.from_surface(
get_screen ().get_display (),
drawn_pb,
drawn_pb.get_width () / 2,
drawn_pb.get_height () / 2);
/*
uint max_cursor_width, max_cursor_height, default_cursor_width, default_cursor_height;;
get_screen ().get_display ().get_maximal_cursor_size (out max_cursor_width, out max_cursor_height);
print ("\n\nCursor size is " + drawn_pb.get_width().to_string () + "x" + drawn_pb.get_height().to_string ());
print ("\nAllowed size is " + max_cursor_width.to_string () + "x" + max_cursor_height.to_string ());
print ("\nDefault size is " + get_screen ().get_display ().get_default_cursor_size ().to_string ());
*/
// Set the cursor
var manager = Gdk.Display.get_default ().get_device_manager ();
manager.get_client_pointer ().grab (
base_surface,
base_surface.get_width () / 2,
base_surface.get_height () / 2);
// Set the cursor
manager.grab (
get_window (),
Gdk.GrabOwnership.APPLICATION,
Gdk.SeatCapabilities.ALL,
true,
Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.SCROLL_MASK,
magnifier,
Gdk.CURRENT_TIME);
new Gdk.Event (Gdk.EventType.BUTTON_PRESS | Gdk.EventType.MOTION_NOTIFY | Gdk.EventType.SCROLL),
null);
}
@@ -241,10 +233,10 @@ namespace ColorPicker.Widgets {
public override bool key_press_event (Gdk.EventKey e) {
var manager = Gdk.Display.get_default ().get_default_seat ();
int px, py;
get_pointer (out px, out py);
var manager = Gdk.Display.get_default ().get_device_manager ();
get_window ().get_device_position (manager.get_pointer (), out px, out py, null);
switch (e.keyval) {
case Gdk.Key.Escape:
cancelled ();
@@ -254,16 +246,16 @@ namespace ColorPicker.Widgets {
picked (color);
break;
case Gdk.Key.Up:
manager.get_client_pointer ().warp (get_screen (), px, py - 1);
manager.get_pointer ().warp (get_screen (), px, py - 1);
break;
case Gdk.Key.Down:
manager.get_client_pointer ().warp (get_screen (), px, py + 1);
manager.get_pointer ().warp (get_screen (), px, py + 1);
break;
case Gdk.Key.Left:
manager.get_client_pointer ().warp (get_screen (), px - 1, py);
manager.get_pointer ().warp (get_screen (), px - 1, py);
break;
case Gdk.Key.Right:
manager.get_client_pointer ().warp (get_screen (), px + 1, py);
manager.get_pointer ().warp (get_screen (), px + 1, py);
break;
}
@@ -297,38 +289,23 @@ namespace ColorPicker.Widgets {
public override void show_all () {
base.show_all ();
var manager = Gdk.Display.get_default ().get_device_manager ();
var pointer = manager.get_client_pointer ();
var keyboard = pointer.get_associated_device ();
var manager = Gdk.Display.get_default ().get_default_seat ();
var window = get_window ();
var status = pointer.grab (window,
Gdk.GrabOwnership.NONE,
var status = manager.grab (window,
Gdk.SeatCapabilities.ALL,
false,
Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK,
new Gdk.Cursor.for_display (window.get_display (), Gdk.CursorType.CROSSHAIR),
Gtk.get_current_event_time ());
new Gdk.Event (Gdk.EventType.BUTTON_PRESS | Gdk.EventType.BUTTON_RELEASE | Gdk.EventType.MOTION_NOTIFY),
null);
if (status != Gdk.GrabStatus.SUCCESS) {
pointer.ungrab (Gtk.get_current_event_time ());
manager.ungrab ();
}
// show magnifier
set_magnifier_cursor ();
if (keyboard != null) {
status = keyboard.grab (window,
Gdk.GrabOwnership.NONE,
false,
Gdk.EventMask.KEY_PRESS_MASK,
null,
Gtk.get_current_event_time ());
if (status != Gdk.GrabStatus.SUCCESS) {
keyboard.ungrab (Gtk.get_current_event_time ());
}
}
}
public new void close () {