Created
September 15, 2012 12:44
-
-
Save ssrihari/3727630 to your computer and use it in GitHub Desktop.
Diff tito upstream/master
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/README b/README | |
index 29f1af1..0c68004 100644 | |
--- a/README | |
+++ b/README | |
@@ -1,97 +1,136 @@ | |
- ------------------------------ | |
- GNU Image Manipulation Program | |
- 2.8 Stable Branch | |
- ------------------------------ | |
- | |
-GIMP 2.8 replaces earlier GIMP 2.x versions. It is advised that you | |
-uninstall them before installing GIMP 2.8. If you want to keep your | |
-older GIMP 2.x installation in parallel to GIMP 2.8, you have to | |
-choose a separate prefix which is not in your default library search | |
-path. Otherwise your prevoius GIMP installation will start to use the | |
-new libraries. You have been warned. | |
- | |
-If you think you found a bug in this version, please make sure that it | |
-hasn't been reported earlier and that it is not just new stuff that is | |
-still being worked on and obviously not quite finished yet. | |
- | |
-If you want to hack on GIMP, please read the file HACKING. For | |
-detailed installation instructions, see the file INSTALL. | |
- | |
- | |
-1. Web Resources | |
-================ | |
- | |
-GIMP's home page is at: | |
- | |
- http://www.gimp.org/ | |
- | |
-Please be sure to visit this site for information, documentation, | |
-tutorials, news, etc. All things GIMP-ish are available from there. | |
- | |
-The automated plug-in registry is located at: | |
- | |
- http://registry.gimp.org/ | |
- | |
-There you can get the latest versions of plug-ins, using a convenient | |
-forms-based interface. | |
- | |
-The latest version of GIMP can be found at: | |
- | |
- http://www.gimp.org/downloads/ | |
- | |
- | |
-2. Mailing Lists | |
-================ | |
- | |
-We have several mailing lists dedicated to GIMP user and development | |
-discussion. There is more info at | |
- | |
- http://www.gimp.org/mail_lists.html | |
- | |
-Links to several archives of the mailing lists are included in that page. | |
- | |
-Gimp-user-list is a mailing list dedicated to user problems, hints and | |
-tips, discussion of cool effects, etc. Gimp-developer-list is oriented | |
-to GIMP core and plug-in developers. Most people will only want to be | |
-subscribed to gimp-user-list. If you want to help develop GIMP, the | |
-gimp-developer mailing list is a good starting point. | |
- | |
- | |
-3. IRC | |
-====== | |
- | |
-And finally, for the real junkies, there is an IRC channel devoted to | |
-GIMP. On GIMPNet (a private free software oriented network) there is | |
-#gimp. Many of the developers hang out there. Some of the GIMPNet | |
-servers are: | |
- | |
- irc.gimp.org:6667 | |
- irc.us.gimp.org:6667 | |
- irc.eu.gimp.org:6667 | |
- | |
- | |
-4. Customizing | |
-============== | |
- | |
-The look of GIMP's interface can be customized like any other GTK app | |
-by editing the ~/.gtkrc-2.0 file or by using "themes" (ready-made | |
-customizations). For downloadable themes and further details, see | |
-http://art.gnome.org/themes/gtk2 . Additionally, GIMP reads the file | |
-~/.gimp-2.8/gtkrc so you can have settings that only apply to GIMP. | |
- | |
-Included is a set of keybindings similar to those in Adobe Photoshop. | |
-You can find them in the ps-menurc file. To use them, copy this file | |
-to ~/.gimp-2.8/menurc. You can also manually change the keybindings to | |
-any of your choice by editing ~/.gimp-2.8/menurc. | |
- | |
- | |
-Have fun, | |
- | |
- Spencer Kimball | |
- Peter Mattis | |
- Federico Mena | |
- Manish Singh | |
- Sven Neumann | |
- Michael Natterer | |
- Dave Neary | |
- Martin Nordholts | |
+Tito | |
+==== | |
+ | |
+With small (but awesome) additions, this is still The GIMP. | |
+ | |
+See the [demo](http://youtu.be/G0PuH1LFWhA?hd=1) for an insight into the usage. | |
+ | |
+ | |
+Tito is a text input tool developed for the GIMP as a first attempt | |
+to add an | |
+ `intent driven interface` that helps to get at the menus faster. | |
+ | |
+If, | |
+ - You forgot where something appears in the menu, | |
+ - or find it cumbersome to traverse through the menu everytime, | |
+ - or forgot a shortcut, | |
+ - or choose what you want from a bunch of smiliar actions, | |
+ then Tito should help you. | |
+ | |
+`Press [Shift+?] to activate Tito` | |
+ | |
+### See the following sections for more information: | |
+ - [Algorithm](#i-algorithm) | |
+ - [UI/UX](#ii-ui-ux) | |
+ - [Ideas](#iii-ideas-not-yet-implemented) | |
+ - [Pitfalls](#iv-pitfalls) | |
+ | |
+ | |
+## [I] Algorithm | |
+ | |
+### Data | |
+##### *What is searched?* | |
+ 1.User-readable texts of Menuitems, Tools, Dockable-dialogs and Plugins: | |
+ Labels(as they appear in the menus) | |
+ Tooltips(small descriptions) of all actions | |
+ 2. User history [Previously applied actions through Tito] | |
+ 3. Avoides search in main-menus, popups and context-actions | |
+ | |
+### Mechanism | |
+ 1.Labels first | |
+ 2.If keyword is two characters, | |
+ then match them with first letters of first and second word in the labels. | |
+ [Ex: 'gb' will list 'Gaussian Blur...'] | |
+ 3.Tooltips | |
+ When keyword is longer than two characters | |
+ [Tooltips need to be searched because they might contain vital keywords | |
+ that might be absent in the labels. Ex: 'adjust' will list 'Canvas Size...'] | |
+ 4.User history | |
+ If keyword matches with previously applied actions, it is listed first. | |
+ [Also, the list of previously used actions appears when the down-arrow key is pressed] | |
+ | |
+### Adaptiveness | |
+ Frequently used actions appear higher in the results list. | |
+ This is great when dealing with frequently used menuitems that don't have shortcuts. | |
+ Over a period of time, this would largely reduce the number of keystrokes. | |
+ | |
+ | |
+## [II] UI / UX | |
+ | |
+### Keyword entry | |
+ Occupies minimal space, does not hinder with work-area | |
+ Has the look and feel of a search-bar with editable text area | |
+ Preferences: | |
+ Position | |
+ -Right top [Default, and most used location for a search bar] | |
+ -Middle [For those who can't take their eyes off the canvas] | |
+ -User specific [Adjust by giving coordinates] | |
+ [The coordinates are in percentages that are limited by the current width] | |
+ Width | |
+ Adjustable from 20% to 60% of screen width_hbox | |
+ | |
+### Results list | |
+ A navigable dropdown-list of runnable actions | |
+ Each result shows: | |
+ - The icon corresponding to the action | |
+ - The Label as in the menus | |
+ - A corresponding shortcut if available | |
+ - A short description (tooltip) if available | |
+ A result, after selection, can be 'applied' by | |
+ -Hitting return | |
+ -Double click | |
+ Preferences: | |
+ Height [Show more/less results] | |
+ | |
+### Toggle actions | |
+ Actions like 'Show Grid' or "Single-Window Mode" are displayed with | |
+ appropriate icons that indicate their state | |
+ | |
+### Autohide | |
+ A preference that would help toggle the visibility of Tito. | |
+ If not set, then Tito would remain over GIMP | |
+ and the user would press [Shift+?] to switch to Tito | |
+ | |
+### Show inert actions | |
+ If set, then the actions that are currently unavailable | |
+ would be shown, but 'greyed-out'. If not set, they would not be shown. | |
+ | |
+### Quick apply | |
+ Hitting return while in the keyword area runs the first result. | |
+ | |
+ | |
+ | |
+## [III] Ideas (not yet implemented) | |
+ | |
+### Thesaurus | |
+ Map the dictionary of image editing with the GIMP terminology. | |
+ So, 'scale', 'resize', 'shrink', 'expand' could transform to a single meaning. | |
+ | |
+### Wider search | |
+ Search through the user help/documentation. | |
+ Search based on menu hierarchy. | |
+ | |
+### Highlight keywords in result | |
+ | |
+### Command system | |
+ An epic addition to the GIMP interface that would allow entering commands | |
+ or a sequence of commands to perform complex manipulations. | |
+ | |
+ | |
+ | |
+## [IV] Pitfalls | |
+ | |
+### Menu Path | |
+ Tried and failed in attaining the menu-path, ui-path that corresponds to an action. | |
+ There is apparently no Gtk mechanism to do this. | |
+ The only way to do this would be to parse the entire menu ui XML, | |
+ which would increase the complexity enormously and put limitations on performance. | |
+ | |
+### Autocomplete | |
+ To reduce the number of keystrokes to search and apply, we tried different mechanisms | |
+ of 'auto-complete' and settled with the very basics. | |
+ | |
+### Advanced search | |
+ We tried using a search engine to parse through XML databases that contained | |
+ organized information. We indexed the text and used APIs to invoke the search engine. | |
+ This turned out to be an overkill. | |
\ No newline at end of file | |
diff --git a/app/actions/dialogs-actions.c b/app/actions/dialogs-actions.c | |
index 535b87f..e814a0a 100644 | |
--- a/app/actions/dialogs-actions.c | |
+++ b/app/actions/dialogs-actions.c | |
@@ -264,7 +264,13 @@ static const GimpStringActionEntry dialogs_toplevel_actions[] = | |
NC_("dialogs-action", "_About"), NULL, | |
NC_("dialogs-action", "About GIMP"), | |
"gimp-about-dialog", | |
- GIMP_HELP_ABOUT_DIALOG } | |
+ GIMP_HELP_ABOUT_DIALOG }, | |
+ | |
+ { "dialogs-tito", GTK_STOCK_FIND, | |
+ NC_("dialogs-action", "_Tito"), NULL, //label | |
+ NC_("dialogs-action", "Menu search and more..."),//tooltip | |
+ "gimp-tito-dialog", | |
+ GIMP_HELP_TITO_DIALOG } | |
}; | |
diff --git a/app/actions/image-commands.c b/app/actions/image-commands.c | |
index 27aabcc..83df4fc 100644 | |
--- a/app/actions/image-commands.c | |
+++ b/app/actions/image-commands.c | |
@@ -85,6 +85,7 @@ static void image_resize_callback (GtkWidget *dialog, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet layer_set, | |
+ gboolean resize_text_layers, | |
gpointer data); | |
static void image_resize_options_free (ImageResizeOptions *options); | |
@@ -586,6 +587,7 @@ image_resize_callback (GtkWidget *dialog, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet layer_set, | |
+ gboolean resize_text_layers, | |
gpointer data) | |
{ | |
ImageResizeOptions *options = data; | |
@@ -612,6 +614,7 @@ image_resize_callback (GtkWidget *dialog, | |
context, | |
width, height, offset_x, offset_y, | |
layer_set, | |
+ resize_text_layers, | |
progress); | |
if (progress) | |
diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c | |
index 3b59012..f61a0b9 100644 | |
--- a/app/actions/layers-commands.c | |
+++ b/app/actions/layers-commands.c | |
@@ -130,6 +130,7 @@ static void layers_resize_layer_callback (GtkWidget *dialog, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet unused, | |
+ gboolean unused2, | |
gpointer data); | |
static gint layers_mode_index (GimpLayerModeEffects layer_mode); | |
@@ -1172,6 +1173,7 @@ layers_resize_layer_callback (GtkWidget *dialog, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet unused, | |
+ gboolean unused2, | |
gpointer data) | |
{ | |
GimpContext *context = GIMP_CONTEXT (data); | |
diff --git a/app/core/core-enums.c b/app/core/core-enums.c | |
index 5f206a3..3dfbaac 100644 | |
--- a/app/core/core-enums.c | |
+++ b/app/core/core-enums.c | |
@@ -1226,6 +1226,7 @@ gimp_dirty_mask_get_type (void) | |
{ GIMP_DIRTY_DRAWABLE, "GIMP_DIRTY_DRAWABLE", "drawable" }, | |
{ GIMP_DIRTY_VECTORS, "GIMP_DIRTY_VECTORS", "vectors" }, | |
{ GIMP_DIRTY_SELECTION, "GIMP_DIRTY_SELECTION", "selection" }, | |
+ { GIMP_DIRTY_ACTIVE_DRAWABLE, "GIMP_DIRTY_ACTIVE_DRAWABLE", "active-drawable" }, | |
{ GIMP_DIRTY_ALL, "GIMP_DIRTY_ALL", "all" }, | |
{ 0, NULL, NULL } | |
}; | |
@@ -1242,6 +1243,7 @@ gimp_dirty_mask_get_type (void) | |
{ GIMP_DIRTY_DRAWABLE, "GIMP_DIRTY_DRAWABLE", NULL }, | |
{ GIMP_DIRTY_VECTORS, "GIMP_DIRTY_VECTORS", NULL }, | |
{ GIMP_DIRTY_SELECTION, "GIMP_DIRTY_SELECTION", NULL }, | |
+ { GIMP_DIRTY_ACTIVE_DRAWABLE, "GIMP_DIRTY_ACTIVE_DRAWABLE", NULL }, | |
{ GIMP_DIRTY_ALL, "GIMP_DIRTY_ALL", NULL }, | |
{ 0, NULL, NULL } | |
}; | |
diff --git a/app/core/core-enums.h b/app/core/core-enums.h | |
index 00fcb9b..a7e6f6a 100644 | |
--- a/app/core/core-enums.h | |
+++ b/app/core/core-enums.h | |
@@ -571,6 +571,7 @@ typedef enum /*< pdb-skip >*/ | |
GIMP_DIRTY_DRAWABLE = 1 << 6, | |
GIMP_DIRTY_VECTORS = 1 << 7, | |
GIMP_DIRTY_SELECTION = 1 << 8, | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE = 1 << 9, | |
GIMP_DIRTY_ALL = 0xffff | |
} GimpDirtyMask; | |
diff --git a/app/core/gimp-modules.c b/app/core/gimp-modules.c | |
index 0d4764b..215f23d 100644 | |
--- a/app/core/gimp-modules.c | |
+++ b/app/core/gimp-modules.c | |
@@ -73,6 +73,9 @@ gimp_modules_load (Gimp *gimp) | |
if (gimp->no_interface) | |
return; | |
+ /* FIXME, gimp->be_verbose is not yet initialized in init() */ | |
+ gimp->module_db->verbose = gimp->be_verbose; | |
+ | |
filename = gimp_personal_rc_file ("modulerc"); | |
if (gimp->be_verbose) | |
diff --git a/app/core/gimpcurve-map.c b/app/core/gimpcurve-map.c | |
index 81a1c9d..b7cfce3 100644 | |
--- a/app/core/gimpcurve-map.c | |
+++ b/app/core/gimpcurve-map.c | |
@@ -29,6 +29,17 @@ | |
#include "gimpcurve-map.h" | |
+#if defined (HAVE_FINITE) | |
+#define FINITE(x) finite(x) | |
+#elif defined (HAVE_ISFINITE) | |
+#define FINITE(x) isfinite(x) | |
+#elif defined (G_OS_WIN32) | |
+#define FINITE(x) _finite(x) | |
+#else | |
+#error "no FINITE() implementation available?!" | |
+#endif | |
+ | |
+ | |
enum | |
{ | |
CURVE_NONE = 0, | |
@@ -204,18 +215,17 @@ gimp_curve_map_value_inline (GimpCurve *curve, | |
{ | |
if (curve->identity) | |
{ | |
- return value; | |
- } | |
+ if (FINITE (value)) | |
+ return CLAMP (value, 0.0, 1.0); | |
- if (value < 0.0) | |
- { | |
- return curve->samples[0]; | |
- } | |
- else if (value >= 1.0) | |
- { | |
- return curve->samples[curve->n_samples - 1]; | |
+ return 0.0; | |
} | |
- else /* interpolate the curve */ | |
+ | |
+ /* check for known values first, so broken values like NaN | |
+ * delivered by broken drivers don't run into the interpolation | |
+ * code | |
+ */ | |
+ if (value > 0.0 && value < 1.0) /* interpolate the curve */ | |
{ | |
gdouble f; | |
gint index; | |
@@ -231,4 +241,12 @@ gimp_curve_map_value_inline (GimpCurve *curve, | |
return (1.0 - f) * curve->samples[index] + f * curve->samples[index + 1]; | |
} | |
+ else if (value >= 1.0) | |
+ { | |
+ return curve->samples[curve->n_samples - 1]; | |
+ } | |
+ else | |
+ { | |
+ return curve->samples[0]; | |
+ } | |
} | |
diff --git a/app/core/gimpimage-resize.c b/app/core/gimpimage-resize.c | |
index 2ed9df7..3a3c231 100644 | |
--- a/app/core/gimpimage-resize.c | |
+++ b/app/core/gimpimage-resize.c | |
@@ -39,6 +39,8 @@ | |
#include "gimpprogress.h" | |
#include "gimpsamplepoint.h" | |
+#include "text/gimptextlayer.h" | |
+ | |
#include "gimp-intl.h" | |
@@ -53,7 +55,7 @@ gimp_image_resize (GimpImage *image, | |
{ | |
gimp_image_resize_with_layers (image, context, | |
new_width, new_height, offset_x, offset_y, | |
- GIMP_ITEM_SET_NONE, | |
+ GIMP_ITEM_SET_NONE, TRUE, | |
progress); | |
} | |
@@ -65,6 +67,7 @@ gimp_image_resize_with_layers (GimpImage *image, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet layer_set, | |
+ gboolean resize_text_layers, | |
GimpProgress *progress) | |
{ | |
GList *list; | |
@@ -171,6 +174,9 @@ gimp_image_resize_with_layers (GimpImage *image, | |
if (gimp_viewable_get_children (GIMP_VIEWABLE (item))) | |
continue; | |
+ if (! resize_text_layers && gimp_item_is_text_layer (item)) | |
+ continue; | |
+ | |
gimp_item_get_offset (item, &old_offset_x, &old_offset_y); | |
gimp_item_resize (item, context, | |
diff --git a/app/core/gimpimage-resize.h b/app/core/gimpimage-resize.h | |
index 8912b86..7edd646 100644 | |
--- a/app/core/gimpimage-resize.h | |
+++ b/app/core/gimpimage-resize.h | |
@@ -34,6 +34,7 @@ void gimp_image_resize_with_layers (GimpImage *image, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet layer_set, | |
+ gboolean resize_text_layers, | |
GimpProgress *progress); | |
void gimp_image_resize_to_layers (GimpImage *image, | |
diff --git a/app/dialogs/Makefile.am b/app/dialogs/Makefile.am | |
index c6ae168..c1715ac 100644 | |
--- a/app/dialogs/Makefile.am | |
+++ b/app/dialogs/Makefile.am | |
@@ -82,6 +82,8 @@ libappdialogs_a_sources = \ | |
tips-dialog.h \ | |
tips-parser.c \ | |
tips-parser.h \ | |
+ tito-dialog.c \ | |
+ tito-dialog.h \ | |
user-install-dialog.c \ | |
user-install-dialog.h \ | |
vectors-export-dialog.c \ | |
diff --git a/app/dialogs/dialogs-constructors.c b/app/dialogs/dialogs-constructors.c | |
index ff16c5f..f29a502 100644 | |
--- a/app/dialogs/dialogs-constructors.c | |
+++ b/app/dialogs/dialogs-constructors.c | |
@@ -78,7 +78,7 @@ | |
#include "preferences-dialog.h" | |
#include "quit-dialog.h" | |
#include "tips-dialog.h" | |
- | |
+#include "tito-dialog.h" | |
#include "gimp-intl.h" | |
@@ -195,6 +195,15 @@ dialogs_about_get (GimpDialogFactory *factory, | |
} | |
GtkWidget * | |
+dialogs_tito_get (GimpDialogFactory *factory, | |
+ GimpContext *context, | |
+ GimpUIManager *ui_manager, | |
+ gint view_size) | |
+{ | |
+ return tito_dialog_create (); | |
+} | |
+ | |
+GtkWidget * | |
dialogs_error_get (GimpDialogFactory *factory, | |
GimpContext *context, | |
GimpUIManager *ui_manager, | |
diff --git a/app/dialogs/dialogs-constructors.h b/app/dialogs/dialogs-constructors.h | |
index f868728..aa81b44 100644 | |
--- a/app/dialogs/dialogs-constructors.h | |
+++ b/app/dialogs/dialogs-constructors.h | |
@@ -69,6 +69,10 @@ GtkWidget * dialogs_about_get (GimpDialogFactory *factory, | |
GimpContext *context, | |
GimpUIManager *ui_manager, | |
gint view_size); | |
+GtkWidget * dialogs_tito_get (GimpDialogFactory *factory, | |
+ GimpContext *context, | |
+ GimpUIManager *ui_manager, | |
+ gint view_size); | |
GtkWidget * dialogs_error_get (GimpDialogFactory *factory, | |
GimpContext *context, | |
GimpUIManager *ui_manager, | |
diff --git a/app/dialogs/dialogs.c b/app/dialogs/dialogs.c | |
index d570b24..2249b80 100644 | |
--- a/app/dialogs/dialogs.c | |
+++ b/app/dialogs/dialogs.c | |
@@ -277,6 +277,8 @@ static const GimpDialogFactoryEntry entries[] = | |
dialogs_tips_get, TRUE, FALSE, FALSE), | |
TOPLEVEL ("gimp-about-dialog", | |
dialogs_about_get, TRUE, FALSE, FALSE), | |
+ TOPLEVEL ("gimp-tito-dialog", | |
+ dialogs_tito_get, TRUE, FALSE, FALSE), | |
TOPLEVEL ("gimp-error-dialog", | |
dialogs_error_get, TRUE, FALSE, FALSE), | |
TOPLEVEL ("gimp-close-all-dialog", | |
diff --git a/app/dialogs/resize-dialog.c b/app/dialogs/resize-dialog.c | |
index 6e92a73..b11b4de 100644 | |
--- a/app/dialogs/resize-dialog.c | |
+++ b/app/dialogs/resize-dialog.c | |
@@ -53,6 +53,7 @@ typedef struct | |
GtkWidget *offset; | |
GtkWidget *area; | |
GimpItemSet layer_set; | |
+ gboolean resize_text_layers; | |
GimpResizeCallback callback; | |
gpointer user_data; | |
} ResizeDialog; | |
@@ -158,13 +159,14 @@ resize_dialog_new (GimpViewable *viewable, | |
g_object_weak_ref (G_OBJECT (dialog), | |
(GWeakNotify) resize_dialog_free, private); | |
- private->viewable = viewable; | |
- private->old_width = width; | |
- private->old_height = height; | |
- private->old_unit = unit; | |
- private->layer_set = GIMP_ITEM_SET_NONE; | |
- private->callback = callback; | |
- private->user_data = user_data; | |
+ private->viewable = viewable; | |
+ private->old_width = width; | |
+ private->old_height = height; | |
+ private->old_unit = unit; | |
+ private->layer_set = GIMP_ITEM_SET_NONE; | |
+ private->resize_text_layers = FALSE; | |
+ private->callback = callback; | |
+ private->user_data = user_data; | |
gimp_image_get_resolution (image, &xres, &yres); | |
@@ -288,8 +290,12 @@ resize_dialog_new (GimpViewable *viewable, | |
gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); | |
gtk_widget_show (frame); | |
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); | |
+ gtk_container_add (GTK_CONTAINER (frame), vbox); | |
+ gtk_widget_show (vbox); | |
+ | |
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); | |
- gtk_container_add (GTK_CONTAINER (frame), hbox); | |
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); | |
gtk_widget_show (hbox); | |
label = gtk_label_new_with_mnemonic (_("Resize _layers:")); | |
@@ -306,6 +312,16 @@ resize_dialog_new (GimpViewable *viewable, | |
private->layer_set, | |
G_CALLBACK (gimp_int_combo_box_get_active), | |
&private->layer_set); | |
+ | |
+ button = gtk_check_button_new_with_mnemonic (_("Resize _text layers")); | |
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), | |
+ private->resize_text_layers); | |
+ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); | |
+ gtk_widget_show (button); | |
+ | |
+ g_signal_connect (button, "toggled", | |
+ G_CALLBACK (gimp_toggle_button_update), | |
+ &private->resize_text_layers); | |
} | |
return dialog; | |
@@ -342,6 +358,7 @@ resize_dialog_response (GtkWidget *dialog, | |
gimp_size_entry_get_refval (entry, 0), | |
gimp_size_entry_get_refval (entry, 1), | |
private->layer_set, | |
+ private->resize_text_layers, | |
private->user_data); | |
break; | |
diff --git a/app/dialogs/resize-dialog.h b/app/dialogs/resize-dialog.h | |
index 2f15576..be44564 100644 | |
--- a/app/dialogs/resize-dialog.h | |
+++ b/app/dialogs/resize-dialog.h | |
@@ -27,6 +27,7 @@ typedef void (* GimpResizeCallback) (GtkWidget *dialog, | |
gint offset_x, | |
gint offset_y, | |
GimpItemSet layer_set, | |
+ gboolean resize_text_layers, | |
gpointer user_data); | |
diff --git a/app/dialogs/tito-dialog.c b/app/dialogs/tito-dialog.c | |
new file mode 100644 | |
index 0000000..b1329bf | |
--- /dev/null | |
+++ b/app/dialogs/tito-dialog.c | |
@@ -0,0 +1,1139 @@ | |
+ /* GIMP - The GNU Image Manipulation Program | |
+ * Copyright (C) 2012 Srihari Sriraman, Suhas V, Vidyashree K, Zeeshan Ali Ansari | |
+ * | |
+ * 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/>. | |
+ */ | |
+ | |
+#include "config.h" | |
+#include <string.h> | |
+#include <time.h> | |
+#include <ctype.h> | |
+#include <stdlib.h> | |
+#include <glib/gstdio.h> | |
+#include <gtk/gtk.h> | |
+#include <gdk/gdk.h> | |
+#include <gdk/gdkkeysyms.h> | |
+#include "libgimpbase/gimpbase.h" | |
+#include "dialogs-types.h" | |
+#include "widgets/gimpuimanager.h" | |
+#include "widgets/gimpaction.h" | |
+#include "tito-dialog.h" | |
+#include "gimp-intl.h" | |
+ | |
+#define MAX_HISTORY_ACTIONS 20 | |
+ | |
+gboolean tito_run_result_action (void); | |
+static GtkWidget* tito_setup_results_list (void); | |
+static gboolean tito_search_dialog (void); | |
+static gboolean tito_is_action_match (GtkAction *action, | |
+ const gchar* keyword); | |
+static void tito_add_to_results_list (const gchar *label, | |
+ const gchar *tooltip, | |
+ GtkAction* action); | |
+static void tito_search_history_and_actions (const gchar *keyword); | |
+ | |
+static void tito_update_history (GtkAction *action); | |
+static void tito_read_history (void); | |
+static void tito_fill_history (void); | |
+static void tito_clear_history (void); | |
+ | |
+static void tito_preferences_dialog (void); | |
+static void tito_set_default_preferences (void); | |
+static void tito_update_preferences (void); | |
+static void tito_write_preferences (void); | |
+static void tito_read_preferences (void); | |
+static void tito_set_prefereces_ui_values (void); | |
+ | |
+gboolean tito_initializer (void); | |
+void tito_finalizer (void); | |
+static void tito_context_menu (void); | |
+ | |
+static GtkWidget *tito_dialog; | |
+static GtkWidget *list; | |
+static GtkWidget *list_view; | |
+static GtkWidget *keyword_entry; | |
+static GtkWidget *preferences_button; | |
+ | |
+GimpUIManager *manager; | |
+static gchar *history_file_path; | |
+static gchar *preference_file_path; | |
+static gint cur_no_of_his_actions; | |
+static gint default_height = 1; | |
+static gboolean first_time = TRUE; | |
+static gint tmp_x, tmp_y; | |
+static gint par_x, par_y; | |
+static gint par_height, par_width; | |
+static GtkCellRenderer *cell_renderer; | |
+ | |
+ | |
+enum RES_COL { | |
+ RESULT_ICON, | |
+ RESULT_DATA, | |
+ RESULT_ACTION, | |
+ IS_SENSITIVE, | |
+ N_COL | |
+}; | |
+ | |
+static struct HISTORY { | |
+ GtkAction *history_action; | |
+ int count; | |
+}history[MAX_HISTORY_ACTIONS]; | |
+ | |
+static struct HISTORY_ACTION_NAME{ | |
+ char *action_name; | |
+ int no; | |
+}name[MAX_HISTORY_ACTIONS]; | |
+ | |
+static struct PREFERENCES { | |
+ int POSITION; | |
+ float POSITION_X; | |
+ float POSITION_Y; | |
+ int NO_OF_RESULTS; | |
+ float WIDTH; | |
+ gboolean AUTO_HIDE; | |
+ gboolean SHOW_INSENSITIVE; | |
+ gdouble OPACITY; | |
+}PREF; | |
+ | |
+static struct TITO_PREF_UI{ | |
+ GtkWidget *specify_radio; | |
+ GtkWidget *pos_x_hbox; | |
+ GtkWidget *pos_y_hbox; | |
+ GtkWidget *right_top_radio; | |
+ GtkWidget *middle_radio; | |
+ GtkWidget *pos_x_spin_button; | |
+ GtkWidget *pos_y_spin_button; | |
+ GtkWidget *no_of_results_spin_button; | |
+ GtkWidget *width_spin_button; | |
+ GtkWidget *opacity_spin_button; | |
+ GtkWidget *autohide_check_button; | |
+ GtkWidget *show_insensitive_check_button; | |
+}PREF_UI; | |
+ | |
+GtkWidget * | |
+tito_dialog_create (void) | |
+{ | |
+ if(!tito_initializer()) | |
+ g_message("Tito tito_initializer failed"); | |
+ tito_search_dialog(); | |
+ return tito_dialog; | |
+} | |
+ | |
+static void | |
+modify_position_spins (void) | |
+{ | |
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(PREF_UI.specify_radio))) | |
+ { | |
+ gtk_widget_set_sensitive(PREF_UI.pos_x_hbox, TRUE); | |
+ gtk_widget_set_sensitive(PREF_UI.pos_y_hbox, TRUE); | |
+ } | |
+ else | |
+ { | |
+ gtk_widget_set_sensitive(PREF_UI.pos_x_hbox, FALSE); | |
+ gtk_widget_set_sensitive(PREF_UI.pos_y_hbox, FALSE); | |
+ } | |
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(PREF_UI.pos_x_spin_button), | |
+ (gdouble)(PREF.POSITION_X/par_width*100)); | |
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(PREF_UI.pos_y_spin_button), | |
+ (gdouble)(PREF.POSITION_Y/par_height*100)); | |
+ gtk_spin_button_set_range (GTK_SPIN_BUTTON(PREF_UI.pos_x_spin_button), | |
+ (gdouble)0, | |
+ (gdouble)( 100-gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(PREF_UI.width_spin_button)))); | |
+} | |
+ | |
+static void | |
+tito_clear_history_button_clicked ( GtkButton *button, | |
+ gpointer user_data) | |
+{ | |
+ tito_clear_history(); | |
+} | |
+ | |
+static void | |
+restore_defaults_button_clicked ( GtkButton *button, | |
+ gpointer user_data) | |
+{ | |
+ tito_set_default_preferences(); | |
+ tito_set_prefereces_ui_values(); | |
+} | |
+ | |
+static void | |
+tito_set_prefereces_ui_values (void) | |
+{ | |
+ if( PREF.POSITION == 0) | |
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(PREF_UI.right_top_radio), TRUE); | |
+ else if( PREF.POSITION == 1) | |
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(PREF_UI.middle_radio), TRUE); | |
+ else | |
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(PREF_UI.specify_radio), TRUE); | |
+ | |
+ modify_position_spins(); | |
+ | |
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(PREF_UI.no_of_results_spin_button), (gdouble)PREF.NO_OF_RESULTS); | |
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(PREF_UI.width_spin_button), (gdouble)PREF.WIDTH); | |
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(PREF_UI.opacity_spin_button), (gdouble)PREF.OPACITY*100); | |
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(PREF_UI.autohide_check_button), PREF.AUTO_HIDE); | |
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(PREF_UI.show_insensitive_check_button), PREF.SHOW_INSENSITIVE); | |
+ | |
+} | |
+ | |
+static gboolean | |
+on_focus_out (GtkWidget *widget, | |
+ GdkEventFocus *event, | |
+ gpointer data) | |
+{ | |
+ if(!gtk_widget_is_focus(preferences_button)) | |
+ tito_finalizer(); | |
+ return TRUE; | |
+} | |
+ | |
+ | |
+static void | |
+key_released( GtkWidget *widget, | |
+ GdkEventKey *event, | |
+ gpointer func_data) | |
+{ | |
+ const gchar *entry_text; | |
+ entry_text = gtk_editable_get_chars(GTK_EDITABLE(widget),0,-1); | |
+ | |
+ switch (event->keyval) | |
+ { | |
+ case GDK_Escape: | |
+ { | |
+ tito_finalizer(); | |
+ return; | |
+ } | |
+ case GDK_Return: | |
+ { | |
+ tito_run_result_action(); | |
+ return; | |
+ } | |
+ } | |
+ | |
+ if(strcmp(entry_text,"")!=0) | |
+ { | |
+ gtk_window_resize(GTK_WINDOW(tito_dialog),(PREF.WIDTH * par_width)/100, | |
+ (PREF.NO_OF_RESULTS*40+100)); | |
+ gtk_list_store_clear (GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list)))); | |
+ gtk_widget_show_all(list_view); | |
+ tito_search_history_and_actions(entry_text); | |
+ gtk_tree_selection_select_path ( gtk_tree_view_get_selection(GTK_TREE_VIEW(list)), | |
+ gtk_tree_path_new_from_string("0")); | |
+ } | |
+ else if(strcmp(entry_text,"")==0 && (event->keyval == GDK_Down) ) | |
+ { | |
+ gtk_window_resize(GTK_WINDOW(tito_dialog),(PREF.WIDTH * par_width)/100, | |
+ (PREF.NO_OF_RESULTS*40+100)); | |
+ gtk_list_store_clear (GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list)))); | |
+ gtk_widget_show_all(list_view); | |
+ tito_search_history_and_actions(" "); | |
+ gtk_tree_selection_select_path ( gtk_tree_view_get_selection(GTK_TREE_VIEW(list)), | |
+ gtk_tree_path_new_from_string("0")); | |
+ | |
+ } | |
+ else | |
+ { | |
+ gtk_widget_hide(list_view); | |
+ gtk_window_resize (GTK_WINDOW(tito_dialog),(PREF.WIDTH * par_width)/100,default_height); | |
+ } | |
+} | |
+ | |
+static gboolean | |
+result_selected ( GtkWidget * widget, | |
+ GdkEventKey* pKey, | |
+ gpointer func_data) | |
+{ | |
+ if (pKey->type == GDK_KEY_PRESS) | |
+ { | |
+ switch (pKey->keyval) | |
+ { | |
+ case GDK_Return: | |
+ { | |
+ tito_run_result_action(); | |
+ break; | |
+ } | |
+ case GDK_Escape: | |
+ { | |
+ tito_finalizer(); | |
+ return TRUE; | |
+ } | |
+ case GDK_Up: | |
+ { | |
+ GtkTreeSelection *selection; | |
+ GtkTreeModel *model; | |
+ GtkTreeIter iter; | |
+ GtkTreePath *path; | |
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list)); | |
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); | |
+ | |
+ if (gtk_tree_selection_get_selected(selection, &model, &iter)) | |
+ { | |
+ path = gtk_tree_model_get_path(model,&iter); | |
+ if(strcmp(gtk_tree_path_to_string(path),"0")==0) | |
+ { | |
+ gtk_widget_grab_focus((GTK_WIDGET(keyword_entry))); | |
+ return TRUE; | |
+ } | |
+ } | |
+ } | |
+ } | |
+ } | |
+ return FALSE; | |
+} | |
+ | |
+ | |
+static void | |
+row_activated ( GtkTreeView *treeview, | |
+ GtkTreePath *path, | |
+ GtkTreeViewColumn *col, | |
+ gpointer userdata) | |
+{ | |
+ tito_run_result_action(); | |
+} | |
+ | |
+static gboolean | |
+tito_action_view_accel_find_func ( GtkAccelKey *key, | |
+ GClosure *closure, | |
+ gpointer data) | |
+{ | |
+ return (GClosure *) data == closure; | |
+} | |
+ | |
+static gchar* | |
+find_accel_label (GtkAction *action) | |
+{ | |
+ guint accel_key = 0; | |
+ GdkModifierType accel_mask = 0; | |
+ GClosure *accel_closure = NULL; | |
+ gchar *accel_string; | |
+ GtkAccelGroup *accel_group; | |
+ | |
+ accel_group = gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (manager)); | |
+ accel_closure = gtk_action_get_accel_closure (action); | |
+ | |
+ if(accel_closure) | |
+ { | |
+ GtkAccelKey *key; | |
+ key = gtk_accel_group_find (accel_group, | |
+ tito_action_view_accel_find_func, | |
+ accel_closure); | |
+ if (key && | |
+ key->accel_key && | |
+ key->accel_flags & GTK_ACCEL_VISIBLE) | |
+ { | |
+ accel_key = key->accel_key; | |
+ accel_mask = key->accel_mods; | |
+ } | |
+ } | |
+ accel_string = gtk_accelerator_get_label (accel_key, accel_mask); | |
+ if(strcmp(accel_string,"")) | |
+ return accel_string; | |
+ | |
+ return NULL; | |
+} | |
+ | |
+ | |
+static void | |
+tito_add_to_results_list( const gchar *label, | |
+ const gchar *tooltip, | |
+ GtkAction* action) | |
+{ | |
+ GtkListStore *store; | |
+ GtkTreeIter iter; | |
+ gchar *markuptxt; | |
+ gchar *accel_string = find_accel_label (action); | |
+ const gchar *stock_id = gtk_action_get_stock_id (action); | |
+ char *data = g_new(char,1024); | |
+ char shortcut[1024] = ""; | |
+ | |
+ if(data==NULL) | |
+ return; | |
+ if(strchr(label, '@')!=NULL||strchr(label, '&')!=NULL) | |
+ return; | |
+ | |
+ if(GTK_IS_TOGGLE_ACTION(action)) | |
+ { | |
+ if(gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action))) | |
+ stock_id = GTK_STOCK_OK; | |
+ else | |
+ stock_id = GTK_STOCK_NO; | |
+ } | |
+ | |
+ if(accel_string==NULL) | |
+ strcpy(shortcut,""); | |
+ else if(strchr(accel_string,'<')!=NULL) | |
+ strcpy(shortcut,""); | |
+ else | |
+ { | |
+ strcpy(shortcut," | "); | |
+ strcat(shortcut,accel_string); | |
+ } | |
+ | |
+ if(tooltip==NULL) | |
+ strcpy(data,""); | |
+ else if(strchr(tooltip, '<')!=NULL) | |
+ strcpy(data,""); | |
+ else | |
+ { | |
+ strcpy(data,"\n"); | |
+ strcat(data,tooltip); | |
+ } | |
+ | |
+ markuptxt = g_strdup_printf("%s<small>%s<span weight='light'>%s</span></small>", | |
+ label, shortcut, data); | |
+ store= GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list))); | |
+ gtk_list_store_append(store, &iter); | |
+ gtk_list_store_set(store, &iter, | |
+ RESULT_ICON, stock_id, | |
+ RESULT_DATA, markuptxt, | |
+ RESULT_ACTION, action, | |
+ IS_SENSITIVE, gtk_action_get_sensitive(action), | |
+ -1); | |
+ g_free(data); | |
+} | |
+ | |
+gboolean | |
+tito_run_result_action (void) | |
+{ | |
+ GtkTreeSelection *selection; | |
+ GtkTreeModel *model; | |
+ GtkTreeIter iter; | |
+ | |
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list)); | |
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); | |
+ if (gtk_tree_selection_get_selected(selection, &model, &iter)) | |
+ { | |
+ GtkAction *action; | |
+ gtk_tree_model_get (model, &iter, RESULT_ACTION, &action, -1); | |
+ if(!gtk_action_get_sensitive(action)) | |
+ return FALSE; | |
+ | |
+ if(PREF.AUTO_HIDE) | |
+ gtk_widget_hide(tito_dialog); | |
+ gtk_action_activate(action); | |
+ tito_finalizer(); | |
+ tito_update_history(action); | |
+ } | |
+ return TRUE; | |
+} | |
+ | |
+ | |
+void | |
+tito_search_history_and_actions (const gchar *keyword) | |
+{ | |
+ GList *list; | |
+ int i = 0; | |
+ manager= gimp_ui_managers_from_name ("<Image>")->data; | |
+ if(strcmp(keyword,"")==0) | |
+ return; | |
+ | |
+ //search in history | |
+ for(i=0;i<cur_no_of_his_actions;i++) | |
+ { | |
+ if(history[i].history_action!=NULL) | |
+ { | |
+ if(tito_is_action_match(history[i].history_action,keyword)) | |
+ tito_add_to_results_list( gimp_strip_uline (gtk_action_get_label (history[i].history_action)), | |
+ gtk_action_get_tooltip (history[i].history_action), | |
+ history[i].history_action ); | |
+ } | |
+ } | |
+ | |
+ //for every action group | |
+ for (list = gtk_ui_manager_get_action_groups (GTK_UI_MANAGER (manager)); | |
+ list; | |
+ list = g_list_next (list)) | |
+ { | |
+ GimpActionGroup *group = list->data; | |
+ GList *actions; | |
+ GList *list2; | |
+ | |
+ | |
+ //get and sort actions | |
+ actions = gtk_action_group_list_actions (GTK_ACTION_GROUP (group)); | |
+ actions = g_list_sort (actions, (GCompareFunc) gimp_action_name_compare); | |
+ | |
+ //for every action | |
+ for (list2 = actions; list2; list2 = g_list_next (list2)) | |
+ { | |
+ GtkAction *action = list2->data; | |
+ const gchar *name; | |
+ gboolean is_redundant = FALSE; | |
+ name = gtk_action_get_name (action); | |
+ | |
+ | |
+ //exclude menus, popups, context and undo | |
+ if (strstr (name, "-menu") || | |
+ strstr (name, "-popup") || | |
+ strstr (name,"context") || | |
+ strstr (name,"edit-undo") || | |
+ name[0] == '<') | |
+ continue; | |
+ | |
+ if( !gtk_action_get_sensitive(action) && !(PREF.SHOW_INSENSITIVE) ) | |
+ continue; | |
+ | |
+ for(i=0;i<cur_no_of_his_actions;i++) | |
+ { | |
+ if(history[i].history_action!=NULL) | |
+ { | |
+ if(strcmp(gtk_action_get_name(history[i].history_action),name)==0) | |
+ { | |
+ is_redundant = TRUE; | |
+ break; | |
+ } | |
+ } | |
+ } | |
+ | |
+ if(is_redundant) | |
+ continue; | |
+ | |
+ if(tito_is_action_match(action,keyword)) | |
+ { | |
+ tito_add_to_results_list( gimp_strip_uline (gtk_action_get_label (action)), | |
+ gtk_action_get_tooltip (action), | |
+ action); | |
+ } | |
+ } | |
+ g_list_free (actions); | |
+ } | |
+} | |
+ | |
+static void tito_fill_history (void) | |
+{ | |
+ GList *list; | |
+ int i = 0; | |
+ manager= gimp_ui_managers_from_name ("<Image>")->data; | |
+ | |
+ for (list = gtk_ui_manager_get_action_groups (GTK_UI_MANAGER (manager)); | |
+ list; | |
+ list = g_list_next (list)) | |
+ { | |
+ GimpActionGroup *group = list->data; | |
+ GList *actions; | |
+ GList *list2; | |
+ | |
+ //get and sort actions | |
+ actions = gtk_action_group_list_actions (GTK_ACTION_GROUP (group)); | |
+ actions = g_list_sort (actions, (GCompareFunc) gimp_action_name_compare); | |
+ | |
+ //for every action | |
+ for (list2 = actions; list2; list2 = g_list_next (list2)) | |
+ { | |
+ GtkAction *action = list2->data; | |
+ const gchar *action_name; | |
+ action_name = gtk_action_get_name (action); | |
+ | |
+ //exclude menus and popups | |
+ if ( strstr (action_name, "-menu") || | |
+ strstr (action_name, "-popup") || | |
+ strstr (action_name, "context") || | |
+ action_name[0] == '<') | |
+ continue; | |
+ | |
+ for(i=0;i<cur_no_of_his_actions;i++) | |
+ { | |
+ if(name[i].action_name!=NULL) | |
+ { | |
+ if(strcmp(name[i].action_name,action_name)==0) | |
+ { | |
+ history[i].history_action=action; | |
+ history[i].count=name[i].no; | |
+ } | |
+ } | |
+ } | |
+ } | |
+ } | |
+} | |
+ | |
+static gboolean | |
+fuzzy_search ( gchar *string, | |
+ gchar *key) | |
+{ | |
+ gchar *remaining_string = string; | |
+ if ( strlen(key) == 0 ) | |
+ return TRUE; | |
+ | |
+ if ( (remaining_string = strchr(string, key[0])) != NULL ) | |
+ return fuzzy_search( remaining_string+1, key+1 ); | |
+ else | |
+ return FALSE; | |
+} | |
+ | |
+static gboolean | |
+tito_is_action_match ( GtkAction *action, | |
+ const gchar* keyword) | |
+{ | |
+ gchar *label, *tooltip, *key; | |
+ int i; | |
+ gchar* space_pos; | |
+ label = g_new(gchar,1024); | |
+ key = g_new(gchar,1024); | |
+ tooltip = g_new(gchar,1024); | |
+ | |
+ strcpy(label, gimp_strip_uline (gtk_action_get_label (action))); | |
+ strcpy(key,keyword); | |
+ | |
+ for(i=0;i<strlen(label);i++) | |
+ label[i]=tolower(label[i]); | |
+ for(i=0;i<strlen(key);i++) | |
+ key[i]=tolower(key[i]); | |
+ if(strlen(key)==2) | |
+ { | |
+ space_pos=strchr(label,' '); | |
+ if(space_pos!=NULL) | |
+ { | |
+ space_pos++; | |
+ if(key[0]==label[0] && key[1]==*space_pos) | |
+ return TRUE; | |
+ } | |
+ } | |
+ | |
+ if(strstr(label,key)) | |
+ return TRUE; | |
+ | |
+ if(fuzzy_search(label,key)) | |
+ return TRUE; | |
+ | |
+ if(strlen(key)>2 || strcmp(key," ")==0) | |
+ { | |
+ if(gtk_action_get_tooltip(action)!=NULL) | |
+ { | |
+ strcpy(tooltip,gtk_action_get_tooltip (action)); | |
+ for(i=0;i<strlen(tooltip);i++) | |
+ tooltip[i]=tolower(tooltip[i]); | |
+ | |
+ if(strstr(tooltip,key)) | |
+ return TRUE; | |
+ } | |
+ } | |
+ | |
+ g_free(label); | |
+ g_free(key); | |
+ g_free(tooltip); | |
+ | |
+ return FALSE; | |
+} | |
+ | |
+static void | |
+tito_read_history (void) | |
+{ | |
+ int i; | |
+ FILE *fp; | |
+ cur_no_of_his_actions=0; | |
+ | |
+ fp= fopen(history_file_path,"r"); | |
+ if(fp==NULL) | |
+ return; | |
+ | |
+ for(i=0;i<MAX_HISTORY_ACTIONS;i++) | |
+ { | |
+ if(fscanf(fp,"%s %d",name[i].action_name,&name[i].no) == EOF) | |
+ break; | |
+ cur_no_of_his_actions++; | |
+ } | |
+ fclose(fp); | |
+ tito_fill_history(); | |
+} | |
+ | |
+static int | |
+compare ( const void * a, | |
+ const void * b) | |
+{ | |
+ struct HISTORY *p = (struct HISTORY *)a; | |
+ struct HISTORY *q = (struct HISTORY *)b; | |
+ return (q->count - p->count); | |
+} | |
+ | |
+static void | |
+tito_update_history (GtkAction *action) | |
+{ | |
+ int i; | |
+ FILE *fp; | |
+ gboolean is_present=FALSE; | |
+ | |
+ fp= fopen(history_file_path,"w"); | |
+ if(fp==NULL) | |
+ { | |
+ g_message("Unable to open history file to write"); | |
+ return; | |
+ } | |
+ | |
+ //check if already in history var | |
+ for(i=0;i<cur_no_of_his_actions;i++) | |
+ { | |
+ if(strcmp(gtk_action_get_name(action),gtk_action_get_name(history[i].history_action))==0) | |
+ { | |
+ history[i].count++; | |
+ is_present=TRUE; | |
+ break; | |
+ } | |
+ } | |
+ | |
+ //assign action to history var | |
+ if(!is_present) | |
+ { | |
+ if(cur_no_of_his_actions==MAX_HISTORY_ACTIONS) | |
+ { | |
+ history[MAX_HISTORY_ACTIONS-1].history_action = action; | |
+ history[MAX_HISTORY_ACTIONS-1].count=1; | |
+ } | |
+ else | |
+ { | |
+ history[cur_no_of_his_actions].history_action = action; | |
+ history[cur_no_of_his_actions++].count=1; | |
+ } | |
+ } | |
+ | |
+ //sort history according to count | |
+ qsort (history, cur_no_of_his_actions, sizeof(struct HISTORY), compare); | |
+ | |
+ //write history vars to file | |
+ for(i=0;i<cur_no_of_his_actions;i++) | |
+ { | |
+ if(history[i].history_action != NULL) | |
+ fprintf(fp,"%s %d \n",gtk_action_get_name(history[i].history_action), | |
+ history[i].count); | |
+ } | |
+ | |
+ fclose(fp); | |
+} | |
+ | |
+static void | |
+tito_update_position (void) | |
+{ | |
+ if(PREF.POSITION == 0) | |
+ { | |
+ PREF.POSITION_X = (1-PREF.WIDTH/100)*par_width+par_x; | |
+ PREF.POSITION_Y = 0.04*par_height+par_y; | |
+ } | |
+ else if(PREF.POSITION == 1) | |
+ { | |
+ PREF.POSITION_X = (par_width- PREF.WIDTH*par_width*.01)/2 + par_x; | |
+ PREF.POSITION_Y = 0.2*par_height + par_y; | |
+ } | |
+ else | |
+ { | |
+ PREF.POSITION_X = tmp_x*par_width/100 + par_x; | |
+ PREF.POSITION_Y = tmp_y*par_height/100 + par_y; | |
+ } | |
+ gtk_window_move (GTK_WINDOW(tito_dialog),PREF.POSITION_X,PREF.POSITION_Y); | |
+} | |
+ | |
+void | |
+tito_finalizer(void) | |
+{ | |
+ if(!PREF.AUTO_HIDE) | |
+ { | |
+ gtk_widget_hide(list_view); | |
+ gtk_window_resize (GTK_WINDOW(tito_dialog),PREF.WIDTH*par_width/100,default_height); | |
+ gtk_entry_set_text(GTK_ENTRY(keyword_entry),""); | |
+ gtk_widget_grab_focus(keyword_entry); | |
+ } | |
+ else | |
+ gtk_widget_destroy(tito_dialog); | |
+} | |
+ | |
+static void | |
+initialize_storage (void) | |
+{ | |
+ gchar *dir_filename = g_build_filename (gimp_directory (), "tito", NULL); | |
+ | |
+ g_mkdir (dir_filename, | |
+ S_IRUSR | S_IWUSR | S_IXUSR | | |
+ S_IRGRP | S_IXGRP | | |
+ S_IROTH | S_IXOTH); | |
+ | |
+ history_file_path= g_new(gchar, 1024); | |
+ strcpy(history_file_path, dir_filename); | |
+ | |
+ preference_file_path= g_new(gchar,1024); | |
+ strcpy(preference_file_path, dir_filename); | |
+ | |
+ strcat(history_file_path,"/history"); | |
+ strcat(preference_file_path,"/preferences"); | |
+ | |
+ g_free (dir_filename); | |
+} | |
+ | |
+gboolean | |
+tito_initializer(void) | |
+{ | |
+ int i=0; | |
+ GdkWindow *par_window = gdk_screen_get_active_window(gdk_screen_get_default()); | |
+ gdk_window_get_geometry (par_window, &par_x, &par_y, &par_width, &par_height, NULL); | |
+ | |
+ if(first_time) | |
+ { | |
+ initialize_storage(); | |
+ | |
+ for(i=0;i<MAX_HISTORY_ACTIONS;i++) | |
+ { | |
+ name[i].action_name = g_new(char, 100); | |
+ strcpy(name[i].action_name,""); | |
+ name[i].no=0; | |
+ } | |
+ first_time=FALSE; | |
+ } | |
+ tito_read_preferences(); | |
+ tito_read_history(); | |
+ gtk_accel_map_change_entry ("<Actions>/dialogs/dialogs-tito",'?',GDK_SHIFT_MASK,FALSE); | |
+ return TRUE; | |
+} | |
+ | |
+static void | |
+tito_clear_history (void) | |
+{ | |
+ FILE *fp; | |
+ fp = fopen(history_file_path,"w"); | |
+ if(fp == NULL) | |
+ { | |
+ g_message("file not created"); | |
+ return; | |
+ } | |
+ fclose(fp); | |
+} | |
+ | |
+static void | |
+tito_set_default_preferences (void) | |
+{ | |
+ PREF.POSITION = 0; | |
+ PREF.WIDTH = 40; | |
+ PREF.POSITION_X = (1-0.4)*par_width+par_x; | |
+ PREF.POSITION_Y = 0.04*par_height+par_y; | |
+ PREF.NO_OF_RESULTS = 4; | |
+ PREF.AUTO_HIDE = TRUE; | |
+ PREF.SHOW_INSENSITIVE = TRUE; | |
+ PREF.OPACITY = 1; | |
+ tito_write_preferences(); | |
+} | |
+ | |
+static void | |
+tito_update_preferences (void) | |
+{ | |
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(PREF_UI.right_top_radio))) | |
+ PREF.POSITION = 0; | |
+ else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(PREF_UI.middle_radio))) | |
+ PREF.POSITION = 1; | |
+ else | |
+ { | |
+ PREF.POSITION = 2; | |
+ tmp_x = (gfloat) gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(PREF_UI.pos_x_spin_button)); | |
+ tmp_y = (gfloat) gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(PREF_UI.pos_y_spin_button)); | |
+ } | |
+ | |
+ PREF.NO_OF_RESULTS = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(PREF_UI.no_of_results_spin_button)); | |
+ PREF.WIDTH = (gfloat)gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(PREF_UI.width_spin_button)); | |
+ PREF.OPACITY = (gdouble)gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(PREF_UI.opacity_spin_button))/100; | |
+ PREF.AUTO_HIDE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(PREF_UI.autohide_check_button)); | |
+ PREF.SHOW_INSENSITIVE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(PREF_UI.show_insensitive_check_button)); | |
+ | |
+ tito_update_position(); | |
+ tito_write_preferences(); | |
+ tito_finalizer(); | |
+} | |
+ | |
+static void | |
+tito_write_preferences (void) | |
+{ | |
+ FILE *fp; | |
+ fp=fopen(preference_file_path,"w"); | |
+ if(fp == NULL) | |
+ return; | |
+ fprintf(fp,"%d %f %f %d %f %d %d %lf", PREF.POSITION,PREF.POSITION_X, PREF.POSITION_Y, | |
+ PREF.NO_OF_RESULTS, PREF.WIDTH, PREF.AUTO_HIDE,PREF.SHOW_INSENSITIVE,PREF.OPACITY); | |
+ fclose(fp); | |
+} | |
+ | |
+static void | |
+tito_read_preferences (void) | |
+{ | |
+ FILE *fp; | |
+ fp=fopen(preference_file_path,"r"); | |
+ if(fp == NULL) | |
+ { | |
+ tito_set_default_preferences(); | |
+ return; | |
+ } | |
+ if(fscanf(fp,"%d %f %f %d %f %d %d %lf", &PREF.POSITION, &PREF.POSITION_X, &PREF.POSITION_Y, | |
+ &PREF.NO_OF_RESULTS, &PREF.WIDTH, &PREF.AUTO_HIDE, &PREF.SHOW_INSENSITIVE, &PREF.OPACITY) == 0) | |
+ tito_set_default_preferences(); | |
+ fclose(fp); | |
+} | |
+ | |
+static gboolean | |
+context_menu_invoked ( GtkWidget *widget, | |
+ GdkEvent *event, | |
+ gpointer user_data) | |
+{ | |
+ tito_context_menu(); | |
+ return TRUE; | |
+} | |
+ | |
+static void | |
+context_menu_handler( GtkMenuItem* menuitem, | |
+ gpointer *data) | |
+{ | |
+ if(strchr(gtk_menu_item_get_label(menuitem),'r')!=NULL) | |
+ tito_preferences_dialog(); | |
+ else | |
+ gtk_widget_destroy(tito_dialog); | |
+} | |
+ | |
+static void | |
+tito_context_menu (void) | |
+{ | |
+ GtkWidget *preferences_menuitem; | |
+ GtkWidget *close_menuitem; | |
+ GtkWidget *context_menu; | |
+ | |
+ context_menu = gtk_menu_new(); | |
+ preferences_menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES,NULL); | |
+ close_menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE,NULL); | |
+ | |
+ gtk_menu_shell_append (GTK_MENU_SHELL(context_menu), preferences_menuitem); | |
+ gtk_menu_shell_append (GTK_MENU_SHELL(context_menu), close_menuitem); | |
+ | |
+ gtk_widget_show(context_menu); | |
+ gtk_widget_show(preferences_menuitem); | |
+ gtk_widget_show(close_menuitem); | |
+ | |
+ g_signal_connect (preferences_menuitem, "activate", G_CALLBACK (context_menu_handler), NULL); | |
+ g_signal_connect (close_menuitem, "activate", G_CALLBACK (context_menu_handler), NULL); | |
+ | |
+ gtk_menu_popup( GTK_MENU(context_menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time()); | |
+} | |
+ | |
+static void | |
+tito_preferences_dialog (void) | |
+{ | |
+ GtkWidget *pref_dialog; | |
+ GtkWidget *top_hbox; | |
+ | |
+ GtkWidget *position_frame; | |
+ GtkWidget *position_vbox; | |
+ GtkWidget *pos_x_label; | |
+ GtkWidget *pos_y_label; | |
+ GtkWidget *specify_alignment_x; | |
+ GtkWidget *specify_alignment_y; | |
+ | |
+ GtkWidget *display_frame; | |
+ GtkWidget *display_vbox; | |
+ GtkWidget *no_of_results_hbox; | |
+ GtkWidget *width_hbox; | |
+ GtkWidget *opacity_hbox; | |
+ GtkWidget *no_of_results_label; | |
+ GtkWidget *width_label; | |
+ GtkWidget *opacity_label; | |
+ | |
+ GtkWidget *bottom_hbox; | |
+ GtkWidget *tito_clear_history_button; | |
+ GtkWidget *restore_defaults_button; | |
+ | |
+ pref_dialog = gtk_dialog_new_with_buttons ( "Tito preferences", | |
+ NULL, | |
+ GTK_DIALOG_MODAL, | |
+ GTK_STOCK_OK, | |
+ GTK_RESPONSE_ACCEPT, | |
+ GTK_STOCK_CANCEL, | |
+ GTK_RESPONSE_REJECT, | |
+ NULL); | |
+ | |
+ gtk_window_set_position (GTK_WINDOW(pref_dialog), GTK_WIN_POS_CENTER_ALWAYS); | |
+ top_hbox = gtk_hbox_new (FALSE,10); | |
+ gtk_box_pack_start (GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(pref_dialog))), top_hbox, FALSE, FALSE, 2); | |
+ | |
+ //Position preferences | |
+ position_frame = gtk_frame_new("Postion"); | |
+ position_vbox = gtk_vbox_new(TRUE,2); | |
+ | |
+ gtk_frame_set_shadow_type (GTK_FRAME(position_frame), GTK_SHADOW_ETCHED_IN); | |
+ | |
+ PREF_UI.right_top_radio = gtk_radio_button_new_with_label(NULL,"Right-Top"); | |
+ PREF_UI.middle_radio = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (PREF_UI.right_top_radio), "Middle"); | |
+ PREF_UI.specify_radio = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (PREF_UI.right_top_radio), "Specify"); | |
+ PREF_UI.pos_x_hbox = gtk_hbox_new(FALSE, 1); | |
+ PREF_UI.pos_y_hbox = gtk_hbox_new(FALSE, 1); | |
+ specify_alignment_x = gtk_alignment_new (1,0,0,0); | |
+ specify_alignment_y = gtk_alignment_new (1,0,0,0); | |
+ pos_x_label = gtk_label_new("x:"); | |
+ pos_y_label = gtk_label_new("y:"); | |
+ PREF_UI.pos_x_spin_button = gtk_spin_button_new_with_range (0, 100-PREF.WIDTH, 1); | |
+ PREF_UI.pos_y_spin_button = gtk_spin_button_new_with_range (0, 50, 1); | |
+ | |
+ gtk_box_pack_start (GTK_BOX(top_hbox), position_frame, FALSE, FALSE, 2); | |
+ gtk_container_add (GTK_CONTAINER(position_frame), position_vbox); | |
+ gtk_box_pack_start (GTK_BOX (position_vbox), PREF_UI.right_top_radio, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (position_vbox), PREF_UI.middle_radio, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (position_vbox), PREF_UI.specify_radio, TRUE, TRUE, 2); | |
+ | |
+ gtk_box_pack_start (GTK_BOX (position_vbox), specify_alignment_x, TRUE, TRUE, 1); | |
+ gtk_container_add (GTK_CONTAINER (specify_alignment_x), PREF_UI.pos_x_hbox); | |
+ gtk_box_pack_start (GTK_BOX (PREF_UI.pos_x_hbox),pos_x_label, TRUE, TRUE, 1); | |
+ gtk_box_pack_start (GTK_BOX (PREF_UI.pos_x_hbox),PREF_UI.pos_x_spin_button, TRUE, TRUE, 1); | |
+ | |
+ gtk_box_pack_start (GTK_BOX (position_vbox), specify_alignment_y, TRUE, TRUE, 1); | |
+ gtk_container_add (GTK_CONTAINER (specify_alignment_y), PREF_UI.pos_y_hbox); | |
+ gtk_box_pack_start (GTK_BOX (PREF_UI.pos_y_hbox),pos_y_label, TRUE, TRUE, 1); | |
+ gtk_box_pack_start (GTK_BOX (PREF_UI.pos_y_hbox),PREF_UI.pos_y_spin_button, TRUE, TRUE, 1); | |
+ | |
+ //Display preferences | |
+ display_frame = gtk_frame_new("Display"); | |
+ display_vbox = gtk_vbox_new(TRUE,2); | |
+ | |
+ gtk_frame_set_shadow_type (GTK_FRAME(display_frame), GTK_SHADOW_ETCHED_IN); | |
+ | |
+ no_of_results_hbox = gtk_hbox_new(FALSE,2); | |
+ width_hbox = gtk_hbox_new(FALSE,2); | |
+ opacity_hbox = gtk_hbox_new(FALSE,2); | |
+ no_of_results_label = gtk_label_new("Results height:"); | |
+ PREF_UI.no_of_results_spin_button = gtk_spin_button_new_with_range(2,10,1); | |
+ width_label = gtk_label_new("Tito Width:"); | |
+ PREF_UI.width_spin_button = gtk_spin_button_new_with_range(20,60,1); | |
+ opacity_label = gtk_label_new("Tito Opacity:"); | |
+ PREF_UI.opacity_spin_button = gtk_spin_button_new_with_range(40,100,10); | |
+ PREF_UI.autohide_check_button = gtk_check_button_new_with_label("Autohide"); | |
+ PREF_UI.show_insensitive_check_button = gtk_check_button_new_with_label("Show inert actions"); | |
+ tito_clear_history_button = gtk_button_new_with_label ("Clear history"); | |
+ restore_defaults_button = gtk_button_new_with_label ("Restore defaults"); | |
+ | |
+ gtk_box_pack_start (GTK_BOX(top_hbox), display_frame, FALSE, FALSE, 2); | |
+ gtk_container_add (GTK_CONTAINER(display_frame), display_vbox); | |
+ gtk_box_pack_start (GTK_BOX (display_vbox), no_of_results_hbox, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (no_of_results_hbox), no_of_results_label, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (no_of_results_hbox), PREF_UI.no_of_results_spin_button, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (display_vbox), width_hbox, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (width_hbox), width_label, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (width_hbox), PREF_UI.width_spin_button, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (display_vbox), opacity_hbox, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (opacity_hbox), opacity_label, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (opacity_hbox), PREF_UI.opacity_spin_button, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (display_vbox), PREF_UI.autohide_check_button, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (display_vbox), PREF_UI.show_insensitive_check_button, TRUE, TRUE, 2); | |
+ | |
+ //Clear and restore | |
+ bottom_hbox = gtk_hbox_new(TRUE,2); | |
+ gtk_box_pack_start (GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(pref_dialog))), bottom_hbox, FALSE, FALSE, 2); | |
+ gtk_box_pack_start (GTK_BOX (bottom_hbox), tito_clear_history_button, TRUE, TRUE, 2); | |
+ gtk_box_pack_start (GTK_BOX (bottom_hbox), restore_defaults_button, TRUE, TRUE, 2); | |
+ | |
+ tito_set_prefereces_ui_values(); | |
+ gtk_widget_show_all (pref_dialog); | |
+ | |
+ g_signal_connect (PREF_UI.right_top_radio, "toggled", G_CALLBACK (modify_position_spins), NULL); | |
+ g_signal_connect (PREF_UI.middle_radio, "toggled", G_CALLBACK (modify_position_spins), NULL); | |
+ g_signal_connect (PREF_UI.specify_radio, "toggled", G_CALLBACK (modify_position_spins), NULL); | |
+ g_signal_connect (tito_clear_history_button, "clicked", G_CALLBACK (tito_clear_history_button_clicked), NULL); | |
+ g_signal_connect (restore_defaults_button, "clicked", G_CALLBACK (restore_defaults_button_clicked), NULL); | |
+ | |
+ if(gtk_dialog_run (GTK_DIALOG (pref_dialog)) == GTK_RESPONSE_ACCEPT) | |
+ tito_update_preferences(); | |
+ | |
+ gtk_widget_destroy (pref_dialog); | |
+} | |
+ | |
+static GtkWidget* | |
+tito_setup_results_list(void) | |
+{ | |
+ gint wid1=100; | |
+ GtkWidget *sc_win; | |
+ GtkListStore *store; | |
+ GtkCellRenderer *cell1; | |
+ GtkTreeViewColumn *column1, *column2; | |
+ | |
+ sc_win= gtk_scrolled_window_new(NULL, NULL); | |
+ store=gtk_list_store_new(N_COL, G_TYPE_STRING, G_TYPE_STRING, GTK_TYPE_ACTION,G_TYPE_BOOLEAN); | |
+ list=gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); | |
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(list),FALSE); | |
+ | |
+ cell1 = gtk_cell_renderer_pixbuf_new (); | |
+ column1=gtk_tree_view_column_new_with_attributes(NULL, | |
+ cell1, | |
+ "stock_id", RESULT_ICON, | |
+ NULL); | |
+ gtk_tree_view_append_column(GTK_TREE_VIEW(list),column1); | |
+ gtk_tree_view_column_add_attribute(column1, cell1, "sensitive", IS_SENSITIVE); | |
+ gtk_tree_view_column_set_min_width(column1,22); | |
+ | |
+ cell_renderer = gtk_cell_renderer_text_new(); | |
+ column2=gtk_tree_view_column_new_with_attributes(NULL, | |
+ cell_renderer, | |
+ "markup", RESULT_DATA, | |
+ NULL); | |
+ gtk_tree_view_column_add_attribute(column2, cell_renderer, "sensitive", IS_SENSITIVE); | |
+ gtk_tree_view_append_column(GTK_TREE_VIEW(list),column2); | |
+ gtk_tree_view_column_set_max_width(column2,wid1); | |
+ | |
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_win), | |
+ GTK_POLICY_NEVER, | |
+ GTK_POLICY_AUTOMATIC); | |
+ | |
+ gtk_container_add(GTK_CONTAINER(sc_win),list); | |
+ g_object_unref(G_OBJECT(store)); | |
+ return sc_win; | |
+} | |
+ | |
+static gboolean | |
+tito_search_dialog (void) | |
+{ | |
+ GtkWidget *main_vbox, *main_hbox; | |
+ GtkWidget *preferences_image; | |
+ | |
+ tito_dialog= gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
+ | |
+ gtk_window_set_decorated (GTK_WINDOW(tito_dialog),FALSE); | |
+ gtk_window_set_default_size (GTK_WINDOW(tito_dialog),(PREF.WIDTH/100)*par_width,default_height); | |
+ tito_update_position(); | |
+ gtk_window_set_opacity (GTK_WINDOW(tito_dialog),PREF.OPACITY); | |
+ if(!PREF.AUTO_HIDE) | |
+ gtk_window_set_keep_above(GTK_WINDOW(tito_dialog),TRUE); | |
+ | |
+ main_vbox = gtk_vbox_new (FALSE, 2); | |
+ gtk_container_add (GTK_CONTAINER (tito_dialog), main_vbox); | |
+ gtk_widget_show (main_vbox); | |
+ | |
+ main_hbox = gtk_hbox_new (FALSE, 2); | |
+ gtk_box_pack_start(GTK_BOX(main_vbox),main_hbox,FALSE,TRUE,0); | |
+ gtk_widget_show (main_hbox); | |
+ | |
+ keyword_entry = gtk_entry_new(); | |
+ gtk_entry_set_has_frame(GTK_ENTRY(keyword_entry),FALSE); | |
+ gtk_entry_set_icon_from_stock(GTK_ENTRY(keyword_entry),GTK_ENTRY_ICON_PRIMARY,GTK_STOCK_FIND); | |
+ gtk_widget_show (keyword_entry); | |
+ gtk_box_pack_start(GTK_BOX(main_hbox),keyword_entry,TRUE,TRUE,0); | |
+ | |
+ preferences_image = gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU); | |
+ preferences_button = gtk_button_new(); | |
+ gtk_button_set_image (GTK_BUTTON(preferences_button),preferences_image); | |
+ gtk_widget_show (preferences_image); | |
+ gtk_widget_show (preferences_button); | |
+ gtk_box_pack_end(GTK_BOX(main_hbox),preferences_button,FALSE,TRUE,0); | |
+ | |
+ list_view = tito_setup_results_list(); | |
+ gtk_box_pack_start(GTK_BOX(main_vbox),list_view,TRUE,TRUE,0); | |
+ | |
+ | |
+ gtk_widget_set_events(tito_dialog, GDK_KEY_RELEASE_MASK); | |
+ gtk_widget_set_events(tito_dialog, GDK_KEY_PRESS_MASK); | |
+ gtk_widget_set_events(tito_dialog, GDK_BUTTON_PRESS_MASK); | |
+ gtk_widget_set_events(preferences_button, GDK_BUTTON_PRESS_MASK); | |
+ | |
+ g_signal_connect(list, "row-activated", (GCallback) row_activated, NULL); | |
+ g_signal_connect (keyword_entry, "key-release-event", G_CALLBACK (key_released), NULL); | |
+ g_signal_connect (list, "key_press_event", G_CALLBACK (result_selected), NULL); | |
+ g_signal_connect (preferences_button, "clicked", G_CALLBACK(context_menu_invoked),NULL); | |
+ g_signal_connect (tito_dialog, "focus-out-event", G_CALLBACK (on_focus_out), NULL); | |
+ | |
+ gtk_widget_show (tito_dialog); | |
+ return TRUE; | |
+} | |
diff --git a/app/dialogs/tito-dialog.h b/app/dialogs/tito-dialog.h | |
new file mode 100644 | |
index 0000000..8feba93 | |
--- /dev/null | |
+++ b/app/dialogs/tito-dialog.h | |
@@ -0,0 +1,24 @@ | |
+/* GIMP - The GNU Image Manipulation Program | |
+ * Copyright (C) 2012 Srihari Sriraman, Suhas Bharadwaj, Vidyashree K, Zeeshan Ali Ansari | |
+ * | |
+ * 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/>. | |
+ */ | |
+ | |
+#ifndef __TITO_DIALOG_H__ | |
+#define __TITO_DIALOG_H__ | |
+ | |
+ | |
+GtkWidget * tito_dialog_create (void); | |
+ | |
+#endif /* __TITO_DIALOG_H__ */ | |
diff --git a/app/display/gimpdisplayshell-dnd.c b/app/display/gimpdisplayshell-dnd.c | |
index cdb64e7..e401716 100644 | |
--- a/app/display/gimpdisplayshell-dnd.c | |
+++ b/app/display/gimpdisplayshell-dnd.c | |
@@ -166,13 +166,13 @@ gimp_display_shell_dnd_position_item (GimpDisplayShell *shell, | |
{ | |
gint item_width = gimp_item_get_width (item); | |
gint item_height = gimp_item_get_height (item); | |
+ gint off_x, off_y; | |
if (item_width >= gimp_image_get_width (image) && | |
item_height >= gimp_image_get_height (image)) | |
{ | |
- gimp_item_set_offset (item, | |
- (gimp_image_get_width (image) - item_width) / 2, | |
- (gimp_image_get_height (image) - item_height) / 2); | |
+ off_x = (gimp_image_get_width (image) - item_width) / 2; | |
+ off_y = (gimp_image_get_height (image) - item_height) / 2; | |
} | |
else | |
{ | |
@@ -181,10 +181,14 @@ gimp_display_shell_dnd_position_item (GimpDisplayShell *shell, | |
gimp_display_shell_untransform_viewport (shell, &x, &y, &width, &height); | |
- gimp_item_set_offset (item, | |
- x + (width - item_width) / 2, | |
- y + (height - item_height) / 2); | |
+ off_x = x + (width - item_width) / 2; | |
+ off_y = y + (height - item_height) / 2; | |
} | |
+ | |
+ gimp_item_translate (item, | |
+ off_x - gimp_item_get_offset_x (item), | |
+ off_y - gimp_item_get_offset_y (item), | |
+ FALSE); | |
} | |
static void | |
diff --git a/app/display/gimpdisplayshell-tool-events.c b/app/display/gimpdisplayshell-tool-events.c | |
index 6b8df80..d9d2176 100644 | |
--- a/app/display/gimpdisplayshell-tool-events.c | |
+++ b/app/display/gimpdisplayshell-tool-events.c | |
@@ -1686,7 +1686,9 @@ gimp_display_shell_initialize_tool (GimpDisplayShell *shell, | |
} | |
else if ((active_tool->drawable != | |
gimp_image_get_active_drawable (image)) && | |
- ! gimp_tool_control_get_preserve (active_tool->control)) | |
+ (! gimp_tool_control_get_preserve (active_tool->control) && | |
+ (gimp_tool_control_get_dirty_mask (active_tool->control) & | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE))) | |
{ | |
/* create a new one, deleting the current */ | |
gimp_context_tool_changed (gimp_get_user_context (gimp)); | |
diff --git a/app/gui/gui.c b/app/gui/gui.c | |
index f3ad117..0bd62a8 100644 | |
--- a/app/gui/gui.c | |
+++ b/app/gui/gui.c | |
@@ -492,6 +492,10 @@ gui_restore_after_callback (Gimp *gimp, | |
"/dummy-menubar/image-popup/Help/dialogs-about", | |
_("About GIMP")); | |
+ gui_add_to_app_menu (image_ui_manager, group, | |
+ "/dummy-menubar/image-popup/Help/dialogs-tito", | |
+ _("Menu search and more")); | |
+ | |
/* the preferences group */ | |
group = ige_mac_menu_add_app_menu_group (); | |
diff --git a/app/tools/gimpcagetool.c b/app/tools/gimpcagetool.c | |
index 28d4a40..3c31d5f 100644 | |
--- a/app/tools/gimpcagetool.c | |
+++ b/app/tools/gimpcagetool.c | |
@@ -184,7 +184,8 @@ gimp_cage_tool_init (GimpCageTool *self) | |
GIMP_DIRTY_IMAGE | | |
GIMP_DIRTY_IMAGE_STRUCTURE | | |
GIMP_DIRTY_DRAWABLE | | |
- GIMP_DIRTY_SELECTION); | |
+ GIMP_DIRTY_SELECTION | | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE); | |
gimp_tool_control_set_wants_click (tool->control, TRUE); | |
gimp_tool_control_set_tool_cursor (tool->control, | |
GIMP_TOOL_CURSOR_PERSPECTIVE); | |
diff --git a/app/tools/gimpforegroundselecttool.c b/app/tools/gimpforegroundselecttool.c | |
index 6085a56..73cf5cd 100644 | |
--- a/app/tools/gimpforegroundselecttool.c | |
+++ b/app/tools/gimpforegroundselecttool.c | |
@@ -185,7 +185,9 @@ gimp_foreground_select_tool_init (GimpForegroundSelectTool *fg_select) | |
gimp_tool_control_set_scroll_lock (tool->control, FALSE); | |
gimp_tool_control_set_preserve (tool->control, FALSE); | |
- gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE_SIZE); | |
+ gimp_tool_control_set_dirty_mask (tool->control, | |
+ GIMP_DIRTY_IMAGE_SIZE | | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE); | |
gimp_tool_control_set_precision (tool->control, | |
GIMP_CURSOR_PRECISION_PIXEL_CENTER); | |
gimp_tool_control_set_tool_cursor (tool->control, | |
diff --git a/app/tools/gimpimagemaptool.c b/app/tools/gimpimagemaptool.c | |
index cf31208..766e349 100644 | |
--- a/app/tools/gimpimagemaptool.c | |
+++ b/app/tools/gimpimagemaptool.c | |
@@ -211,7 +211,8 @@ gimp_image_map_tool_init (GimpImageMapTool *image_map_tool) | |
GIMP_DIRTY_IMAGE | | |
GIMP_DIRTY_IMAGE_STRUCTURE | | |
GIMP_DIRTY_DRAWABLE | | |
- GIMP_DIRTY_SELECTION); | |
+ GIMP_DIRTY_SELECTION | | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE); | |
image_map_tool->drawable = NULL; | |
image_map_tool->operation = NULL; | |
diff --git a/app/tools/gimpiscissorstool.c b/app/tools/gimpiscissorstool.c | |
index bc9ebb8..bcf5338 100644 | |
--- a/app/tools/gimpiscissorstool.c | |
+++ b/app/tools/gimpiscissorstool.c | |
@@ -340,7 +340,9 @@ gimp_iscissors_tool_init (GimpIscissorsTool *iscissors) | |
gimp_tool_control_set_scroll_lock (tool->control, TRUE); | |
gimp_tool_control_set_snap_to (tool->control, FALSE); | |
gimp_tool_control_set_preserve (tool->control, FALSE); | |
- gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE_SIZE); | |
+ gimp_tool_control_set_dirty_mask (tool->control, | |
+ GIMP_DIRTY_IMAGE_SIZE | | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE); | |
gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_ISCISSORS); | |
iscissors->op = ISCISSORS_OP_NONE; | |
diff --git a/app/tools/gimprectangleselecttool.c b/app/tools/gimprectangleselecttool.c | |
index 446c7f9..1d3acb1 100644 | |
--- a/app/tools/gimprectangleselecttool.c | |
+++ b/app/tools/gimprectangleselecttool.c | |
@@ -227,6 +227,7 @@ gimp_rectangle_select_tool_init (GimpRectangleSelectTool *rect_sel_tool) | |
GIMP_CURSOR_PRECISION_PIXEL_BORDER); | |
gimp_tool_control_set_tool_cursor (tool->control, | |
GIMP_TOOL_CURSOR_RECT_SELECT); | |
+ gimp_tool_control_set_preserve (tool->control, FALSE); | |
gimp_tool_control_set_dirty_mask (tool->control, | |
GIMP_DIRTY_IMAGE_SIZE | | |
GIMP_DIRTY_SELECTION); | |
diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c | |
index 4ea0b08..e532044 100644 | |
--- a/app/tools/gimptransformtool.c | |
+++ b/app/tools/gimptransformtool.c | |
@@ -215,7 +215,8 @@ gimp_transform_tool_init (GimpTransformTool *tr_tool) | |
gimp_tool_control_set_dirty_mask (tool->control, | |
GIMP_DIRTY_IMAGE_SIZE | | |
GIMP_DIRTY_DRAWABLE | | |
- GIMP_DIRTY_SELECTION); | |
+ GIMP_DIRTY_SELECTION | | |
+ GIMP_DIRTY_ACTIVE_DRAWABLE); | |
gimp_tool_control_set_precision (tool->control, | |
GIMP_CURSOR_PRECISION_SUBPIXEL); | |
diff --git a/app/widgets/gimpactionview.c b/app/widgets/gimpactionview.c | |
index f64a11f..e2f7fda 100644 | |
--- a/app/widgets/gimpactionview.c | |
+++ b/app/widgets/gimpactionview.c | |
@@ -67,6 +67,7 @@ static void gimp_action_view_accel_cleared (GtkCellRendererAccel *accel, | |
const char *path_string, | |
GimpActionView *view); | |
+static void tito_search(const gchar* sname, const gchar* slabel, const gchar* stooltip, GtkAction *action); | |
G_DEFINE_TYPE (GimpActionView, gimp_action_view, GTK_TYPE_TREE_VIEW) | |
@@ -249,6 +250,7 @@ gimp_action_view_new (GimpUIManager *manager, | |
GdkModifierType accel_mask = 0; | |
GClosure *accel_closure = NULL; | |
GtkTreeIter action_iter; | |
+ const gchar *tooltip = gtk_action_get_tooltip (action); | |
if (strstr (name, "-menu") || | |
strstr (name, "-popup") || | |
@@ -256,7 +258,9 @@ gimp_action_view_new (GimpUIManager *manager, | |
continue; | |
label = gimp_strip_uline (gtk_action_get_label (action)); | |
- | |
+ | |
+ tito_search(name,label,tooltip,action); | |
+ | |
if (! (label && strlen (label))) | |
{ | |
g_free (label); | |
@@ -691,6 +695,7 @@ gimp_action_view_conflict_confirm (GimpActionView *view, | |
_("Shortcut \"%s\" is already taken " | |
"by \"%s\" from the \"%s\" group."), | |
accel_string, label, group->label); | |
+ | |
gimp_message_box_set_text (box, | |
_("Reassigning the shortcut will cause it " | |
"to be removed from \"%s\"."), | |
@@ -865,3 +870,16 @@ gimp_action_view_accel_cleared (GtkCellRendererAccel *accel, | |
_("Removing shortcut failed.")); | |
} | |
} | |
+ | |
+static void tito_search(const gchar* sname, const gchar* slabel, const gchar* stooltip, GtkAction *saction) | |
+{ | |
+ const gchar* keyword="gauss"; | |
+ | |
+ if(strstr(sname,keyword)) | |
+ { | |
+ g_message("%s %s",slabel,stooltip); | |
+ gtk_action_activate(saction); | |
+ } | |
+/* else if(strstr(stooltip,keyword))*/ | |
+/* g_message("%s %s",slabel,stooltip);*/ | |
+} | |
diff --git a/app/widgets/gimpdeviceinfo-coords.c b/app/widgets/gimpdeviceinfo-coords.c | |
index eb5ddbf..d974af2 100644 | |
--- a/app/widgets/gimpdeviceinfo-coords.c | |
+++ b/app/widgets/gimpdeviceinfo-coords.c | |
@@ -112,7 +112,7 @@ gimp_device_info_get_device_coords (GimpDeviceInfo *info, | |
GdkWindow *window, | |
GimpCoords *coords) | |
{ | |
- gdouble axes[GDK_AXIS_LAST]; | |
+ gdouble axes[GDK_AXIS_LAST] = { 0, }; | |
*coords = default_coords; | |
diff --git a/app/widgets/gimphelp-ids.h b/app/widgets/gimphelp-ids.h | |
index 332ec35..1cee40c 100644 | |
--- a/app/widgets/gimphelp-ids.h | |
+++ b/app/widgets/gimphelp-ids.h | |
@@ -495,6 +495,7 @@ | |
#define GIMP_HELP_DOCK_SHOW_BUTTON_BAR "gimp-dock-show-button-bar" | |
#define GIMP_HELP_ABOUT_DIALOG "gimp-about-dialog" | |
+#define GIMP_HELP_TITO_DIALOG "gimp-tito-dialog" | |
#define GIMP_HELP_COLOR_DIALOG "gimp-color-dialog" | |
#define GIMP_HELP_DEVICE_STATUS_DIALOG "gimp-device-status-dialog" | |
#define GIMP_HELP_DISPLAY_FILTER_DIALOG "gimp-display-filter-dialog" | |
diff --git a/menus/image-menu.xml.in b/menus/image-menu.xml.in | |
index 3910039..bd46da2 100644 | |
--- a/menus/image-menu.xml.in | |
+++ b/menus/image-menu.xml.in | |
@@ -687,6 +687,7 @@ | |
<menuitem action="help-context-help" /> | |
<menuitem action="dialogs-tips" /> | |
<menuitem action="dialogs-about" /> | |
+ <menuitem action="dialogs-tito" /> | |
<separator /> | |
<placeholder name="Programming" /> | |
<separator /> | |
diff --git a/plug-ins/common/file-cel.c b/plug-ins/common/file-cel.c | |
index 6292d7a..f1aed6f 100644 | |
--- a/plug-ins/common/file-cel.c | |
+++ b/plug-ins/common/file-cel.c | |
@@ -186,7 +186,10 @@ run (const gchar *name, | |
if (run_mode == GIMP_RUN_NONINTERACTIVE) | |
{ | |
palette_file = param[3].data.d_string; | |
- data_length = strlen (palette_file) + 1; | |
+ if (palette_file) | |
+ data_length = strlen (palette_file) + 1; | |
+ else | |
+ data_length = 0; | |
} | |
else if (run_mode == GIMP_RUN_INTERACTIVE) | |
{ | |
diff --git a/plug-ins/common/file-pdf-save.c b/plug-ins/common/file-pdf-save.c | |
index 6296845..a78ea79 100644 | |
--- a/plug-ins/common/file-pdf-save.c | |
+++ b/plug-ins/common/file-pdf-save.c | |
@@ -1257,15 +1257,6 @@ get_drawable_image (GimpDrawable *drawable) | |
switch (bpp) | |
{ | |
case 1: /* GRAY or INDEXED */ | |
- if (! indexed) | |
- { | |
- format = CAIRO_FORMAT_RGB24; | |
- } | |
- else | |
- { | |
- format = CAIRO_FORMAT_RGB24; | |
- } | |
- break; | |
case 3: /* RGB */ | |
format = CAIRO_FORMAT_RGB24; | |
break; | |
diff --git a/plug-ins/common/value-propagate.c b/plug-ins/common/value-propagate.c | |
index 7a823a4..71b421e 100644 | |
--- a/plug-ins/common/value-propagate.c | |
+++ b/plug-ins/common/value-propagate.c | |
@@ -392,8 +392,8 @@ value_propagate (GimpDrawable *drawable) | |
/* gimp_message ("No direction selected."); */ | |
return GIMP_PDB_EXECUTION_ERROR; | |
} | |
- if ((vpvals.lower_limit < 0) || (255 < vpvals.lower_limit) || | |
- (vpvals.upper_limit < 0) || (255 < vpvals.lower_limit) || | |
+ if ((vpvals.lower_limit < 0) || (vpvals.lower_limit > 255) || | |
+ (vpvals.upper_limit < 0) || (vpvals.upper_limit > 255) || | |
(vpvals.upper_limit < vpvals.lower_limit)) | |
{ | |
/* gimp_message ("Limit values are not valid."); */ | |
diff --git a/plug-ins/gfig/gfig-preview.c b/plug-ins/gfig/gfig-preview.c | |
index 5b349d1..68cc2f6 100644 | |
--- a/plug-ins/gfig/gfig-preview.c | |
+++ b/plug-ins/gfig/gfig-preview.c | |
@@ -227,16 +227,7 @@ gfig_preview_events (GtkWidget *widget, | |
else | |
{ | |
if (selvals.opts.snap2grid) | |
- { | |
- if (bevent->button == 3) | |
- { | |
- find_grid_pos (&point, &point, FALSE); | |
- } | |
- else | |
- { | |
- find_grid_pos (&point, &point, FALSE); | |
- } | |
- } | |
+ find_grid_pos (&point, &point, FALSE); | |
object_start (&point, bevent->state & GDK_SHIFT_MASK); | |
gtk_widget_queue_draw (widget); | |
diff --git a/plug-ins/metadata/xmp-encode.c b/plug-ins/metadata/xmp-encode.c | |
index 184b2e7..fc6464d 100644 | |
--- a/plug-ins/metadata/xmp-encode.c | |
+++ b/plug-ins/metadata/xmp-encode.c | |
@@ -174,9 +174,14 @@ gen_property (GString *buffer, | |
NULL); | |
break; | |
+ case XMP_TYPE_GPS_COORDINATE: | |
+ gen_element (buffer, 2, | |
+ schema->prefix, property->name, value_array[0], | |
+ NULL); | |
+ break; | |
+ | |
case XMP_TYPE_RESOURCE_REF: | |
case XMP_TYPE_DIMENSIONS: | |
- case XMP_TYPE_GPS_COORDINATE: | |
case XMP_TYPE_FLASH: | |
case XMP_TYPE_OECF_SFR: | |
case XMP_TYPE_CFA_PATTERN: | |
diff --git a/plug-ins/pygimp/ChangeLog.old b/plug-ins/pygimp/ChangeLog.old | |
deleted file mode 100644 | |
index 7a4893b..0000000 | |
--- a/plug-ins/pygimp/ChangeLog.old | |
+++ /dev/null | |
@@ -1,297 +0,0 @@ | |
-2006-04-28 Sven Neumann <[email protected]> | |
- | |
- * doc/pygimp.sgml: applied documentation patch contributed by | |
- Sylvain Fourmanoit (bug #339886). | |
- | |
-2005-10-04 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/benchmark-foreground-extract.py (benchmark): removed | |
- run-mode parameters again. Seems to have been fixed in pygimp. | |
- | |
-2005-09-27 Sven Neumann <[email protected]> | |
- | |
- * gimpmodule.c (pygimp_progress_install): undeprecated. | |
- | |
-2005-08-19 Sven Neumann <[email protected]> | |
- | |
- * gimpmodule.c | |
- * gimp-drawable.c: use canonical procedure names with | |
- gimp_run_procedure(). | |
- | |
-2005-08-06 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/benchmark-foreground-extract.py: pass run-mode to PDB | |
- calls. | |
- | |
-2005-08-03 Sven Neumann <[email protected]> | |
- | |
- * pygimp-rgb.c: added wrapper for gimp_rgb_luminance(). | |
- | |
-2005-07-29 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/benchmark-foreground-extract.py: follow PDB API change. | |
- | |
-2005-07-18 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/benchmark-foreground-extract.py: allow to have the | |
- output images saved, made the code more robust, corrected some | |
- mistakes. | |
- | |
-2005-07-16 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/benchmark-foreground-extract.py: show elapsed time. | |
- | |
-2005-07-16 Sven Neumann <[email protected]> | |
- | |
- * Makefile.am | |
- * plug-ins/benchmark-foreground-extract.py: added a rough | |
- implementation of the foreground extraxtion benchmark as proposed | |
- in the GrabCut paper. See comments in the file for details. | |
- | |
-2005-06-22 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/foggify.py: fixed capitalization of menu label. | |
- | |
-2004-12-19 Sven Neumann <[email protected]> | |
- | |
- * Makefile.am: added $(pygimp_DATA) to EXTRA_DIST. | |
- | |
-2003-02-08 Manish Singh <[email protected]> | |
- | |
- * gimpui.py: use dialog.run() for sub dialogs, since the main dialog | |
- is also doing that. This does break consistency with the rest of | |
- gimp, but will do for now. I wish there was a similar API that didn't | |
- set the dialog modal. Fixed brush and pattern list to use the new | |
- PDB names. Also make the filesel really have a title of "Files" | |
- | |
- * gimpshelf.py: minor clean up, use cStringIO if available | |
- | |
- * gimpfu.py: add support for Load/Save plug-ins. Use GtkImage | |
- instead of deprecated GtkPixmap. | |
- | |
- * gimpenums.py: regenerated | |
- | |
- * plug-ins/Makefile.am | |
- * plug-ins/colorhtml.py: the return of colorhtml to 1.3 | |
- | |
-2003-01-08 Manish Singh <[email protected]> | |
- | |
- * plug-ins/gimpcons.py: import gtkcons only when we're about to use | |
- it. This and below allows plug-in query to work even without an | |
- interface. | |
- | |
- * plug-ins/pdbbrowse.py: define BrowseWin (which needs gtk) only | |
- when we need it and are guaranteed a gui setup. | |
- | |
-2002-11-08 Sven Neumann <[email protected]> | |
- | |
- * plug-ins/Makefile.am (EXTRA_DIST): added missing file (#98034). | |
- | |
-2002-08-31 James Henstridge <[email protected]> | |
- | |
- * gimpfu.py (RadioEntry): add PF_RADIO support to gimpfu based on | |
- Yosh's patch. | |
- (_interact): swap order of buttons to match other dialogs. | |
- | |
-2002-08-30 James Henstridge <[email protected]> | |
- | |
- * pygimp-*.c: update to list all methods. Convert no arg | |
- functions to METH_NOARG (slight code size reduction). | |
- | |
- * pygimp-drawable.c (PyGimpDrawable_Type): add getsets for common | |
- drawable attributes. | |
- (PyGimpLayer_Type): convert getattr and setattr to getsets. | |
- (PyGimpChannel_Type): convert to getsets. | |
- | |
- * gimpmodule.c (new_parasite): remove. Superceded by | |
- gimp.Parasite constructor. | |
- (pygimp_image_list): rename to match actual API. | |
- | |
- * pygimp-parasite.c (PyGimpParasite_Type): switch to getsets. | |
- (para_init): add constructor. | |
- | |
- * pygimp-tile.c (PyGimpPixelRgn_Type): convert to use getsets. | |
- (PyGimpTile_Type): convert to use getsets. | |
- | |
- * pygimp-image.c (PyGimpImage_Type): convert getattr and setattr | |
- routines into getsets. | |
- | |
-2002-08-29 James Henstridge <[email protected]> | |
- | |
- * pygimp-image.c (img_repr): check if gimp_image_get_filename() | |
- returns NULL. | |
- | |
- * plug-ins/gimpcons.py: fix up plugin, so that I can test the rest | |
- of pygimp. | |
- | |
- * *.py, plug-ins/*.py: many updates to Python code to work with | |
- new PyGTK. I can start a plug in now. | |
- | |
-2002-08-28 James Henstridge <[email protected]> | |
- | |
- * *.c, pygimp.h: split module into multiple files, and convert | |
- types to Python 2.2 style types. Still need to fix some of the | |
- getattr routines. | |
- | |
- * gimpmodule.c: various updates to get it to compile with latest | |
- gimp. Still need to merge in changes to toplevel configure.in. | |
- | |
-2000-09-23 Kevin Turner <[email protected]> | |
- | |
- * gimpmodule.c (newpfobject): use correct type for enums | |
- | |
- * plug-ins/gtkcons.py (Console.run): set _ after evaluating a | |
- statement, so _ may be used as it is in the python interpreter. | |
- | |
-2000-09-20 Kevin Turner <[email protected]> | |
- | |
- * plug-ins/pdbbrowse.py (pars): Oops. When we did | |
- s/PARAM_/PDB_/, we forgot to do s/6/4/ (the length | |
- of the prefix changed). | |
- | |
- * gimpmodule.c: Filter this through remove_cruft, | |
- finishing the libgimp renaming (and further ensuring | |
- that it won't work with older libgimps). | |
- | |
-2000-08-10 Kevin Turner <[email protected]> | |
- | |
- * gimpenums.py: This file now autogenerated by | |
- tools/pdbgen/enumcode-py.pl | |
- | |
- * gimpfu.py: | |
- * gimpmodule.c: renaming fixes for libgimp 1.2 | |
- | |
- * plug-ins/pdbbrowse.py (pars): s/PARAM_/PDB_/ | |
- | |
-2000-08-09 Kevin Turner <[email protected]> | |
- | |
- * gimpmodule.c (chn_getattr): under "layer", remove the call to | |
- gimp_channel_get_layer_id() as this function does not exist. It | |
- would be well for someone who knows pygimp better than I to review | |
- this change, but it keeps pygimp from being *completely* broken. | |
- | |
-1999-11-11 James Henstridge <[email protected]> | |
- | |
- * doc/pygimp.sgml: updated documentation. | |
- | |
- * gimpmodule.c: applied patches from Hans Breuer to fix portability | |
- problems and also win32 compatibility. | |
- | |
- (lay_getattr): take is_rgb as a synonym for is_color/is_colour. | |
- (drw_parasite_attach): | |
- (drw_parasite_detach): change to new naming scheme. | |
- (img_parasite_attach): | |
- (img_parasite_detach): same here. | |
- (gimp_Parasite_find): | |
- (gimp_Parasite_attach): | |
- (gimp_Parasite_detach): same here. | |
- (chn_getattr): added is_rgb as a synonym for is_colour, and | |
- is_layer_mask as a synonym for layer_mask. | |
- | |
-1999-07-08 James Henstridge <[email protected]> | |
- | |
- * plug-ins/shadow_bevel.py: added {disable,enable}_undo() calls. Also | |
- made it possible to turn off the creation of a shadow. | |
- | |
- * plug-ins/foggify.py: added disable_undo() and enable_undo() calls | |
- round the plugin code. | |
- | |
- * plug-ins/Makefile.am: forgot to add foggify and shadow_bevel to | |
- the EXTRA_DIST list. | |
- | |
- * gimpui.py: fixed some small bugs that caused an exception when | |
- loading on some versions of python. Weird thing is, it did not | |
- cause problems on my computer (using 1.5.1) | |
- | |
-1999-07-05 James Henstridge <[email protected]> | |
- | |
- * plug-ins/foggify.py, plug-ins/shadow_bevel.py: two new example | |
- scripts. | |
- | |
-1999-07-04 James Henstridge <[email protected]> | |
- | |
- * gimpmodule.c: added support for parasites. This new code is | |
- conditionally compiled if GIMP_HAVE_PARASITES is defined. | |
- Added other gimp 1.1 features to gimpmodule. | |
- | |
-1999-07-03 James Henstridge <[email protected]> | |
- | |
- * gimpmodule.c (initgimp): added {major,minor,micro}_version constants | |
- to gimpmodule. | |
- (*) removed all the empty __doc__ strings -- they were just wasting | |
- space, and I have other docs in there now. | |
- | |
- * plug-ins/clothify.py (python_clothify): same here. | |
- | |
- * plug-ins/sphere.py (python_sphere): some small hacks to get the | |
- plugin to work with both gimp 1.0 and 1.1 -- using the pattern | |
- "if pdb.gimp_whatever.nparams == n" to check if the img parameter | |
- should be removed. | |
- | |
- * plug-ins/pdbbrowse.py (BrowseWin.extension_pdb_browse): fixed | |
- small bug. | |
- | |
-1999-07-02 James Henstridge <[email protected]> | |
- | |
- * plug-ins/whirlpinch.py (python_whirl_pinch): adjusted plug in to | |
- work with drawable changes. | |
- | |
- * gimpmodule.c: removed the drawable type -- now only layer or channel | |
- types are used. Also moved the drawable type's methods to both the | |
- layer and channel object types. Also added some of the attributes of | |
- the drawable object to layer and channel objects (some aren't needed | |
- anymore, since layers are clearly defined as layers, and channels | |
- as channels). | |
- Make tile and pixel region objects keep a reference to their | |
- associated drawable. | |
- Added attributes has_alpha, is_colour, is_grey and is_indexed to | |
- layer and channel objects. | |
- | |
-1999-06-22 James Henstridge <[email protected]> | |
- | |
- * gimpplugin.py: renamed from plugin.py. This is mainly to reduce | |
- namespace polution. | |
- | |
- * getvals.py: removed file. It has been replaced by the much more | |
- functional gimpfu module. | |
- | |
- * plug-ins/gimpcons.py: added a browse button that will display the | |
- pdbbrowse window, which can then be used to choose a pdb function. | |
- The selected pdb function gets its prototype inserted on the | |
- command line. | |
- | |
- * plug-ins/pdbbrowse.py: converted to use GTK+ widgets and gimpfu. | |
- | |
- * plug-ins/gimpcons.py: converted to use gimpfu and gtkcons.py. | |
- | |
- * plug-ings/gtkcons.py: a GTK replacement for tkcons.py. | |
- | |
- * plug-ins/whirlpinch.py, plug-ins/sphere.py: converted these two | |
- to use gimpfu. | |
- | |
- * gimpshelf.py (shelf): some changes so that the gimp internal types | |
- will pickle correctly. | |
- | |
- * gimpmodule.c (initgimp): export the type objects for gimpmodule's | |
- internal types. This is mainly to help get pickling to work | |
- correctly. | |
- (_id2*): new functions to help convert id's to the builtin types. | |
- | |
- * plug-ins/clothify.py: converted to use gimpfu module. | |
- | |
-1999-06-21 James Henstridge <[email protected]> | |
- | |
- * gimpfu.py: a simplified interface to writing GIMP plugins. It | |
- handles all the user interaction stuff and saving the last used | |
- values. It uses pygtk, so should match the interface of the rest | |
- of gimp. | |
- | |
- * gimpui.py: new file that implements a number of useful widgets | |
- for use with the interfaces of plugins. It requires pygtk. | |
- | |
- * gimpmodule.c (tuple_to_GParam): accept None for layer, channel | |
- or drawable arguments to PDB functions. This value gets treated | |
- like an ID of -1. | |
- (img_cmp, lay_cmp, chn_cmp, drw_cmp): added compare functions so | |
- that the == operator works as expected with those object types. | |
- | |
diff --git a/po/ko.po b/po/ko.po | |
index dd07030..ddfb42b 100644 | |
--- a/po/ko.po | |
+++ b/po/ko.po | |
@@ -11,8 +11,8 @@ msgstr "" | |
"Project-Id-Version: GIMP 2.8\n" | |
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | |
"product=gimp&keywords=I18N+L10N&component=general\n" | |
-"POT-Creation-Date: 2012-07-26 16:42+0000\n" | |
-"PO-Revision-Date: 2012-05-18 16:20+0900\n" | |
+"POT-Creation-Date: 2012-09-08 10:59+0000\n" | |
+"PO-Revision-Date: 2012-09-03 02:34+0900\n" | |
"Last-Translator: Seong-ho Cho <[email protected]>\n" | |
"Language-Team: \n" | |
"Language: ko\n" | |
@@ -94,11 +94,11 @@ msgstr "일괄처리 해석기 '%s'을(를) 사용할 수 없음. 일괄처리 | |
#: ../app/main.c:148 | |
msgid "Show version information and exit" | |
-msgstr "버전 정보 보여준 뒤 끝냅니다." | |
+msgstr "버전 정보 보여준 뒤 끝냅니다" | |
#: ../app/main.c:153 | |
msgid "Show license information and exit" | |
-msgstr "사용 허가서 정보를 보여준 뒤 끝냅니다." | |
+msgstr "사용 허가서 정보를 보여준 뒤 끝냅니다" | |
#: ../app/main.c:158 | |
msgid "Be more verbose" | |
@@ -106,7 +106,7 @@ msgstr "더 자세하게" | |
#: ../app/main.c:163 | |
msgid "Start a new GIMP instance" | |
-msgstr "새 인스턴스로 김프를 시작합니다." | |
+msgstr "새 인스턴스로 김프를 시작합니다" | |
#: ../app/main.c:168 | |
msgid "Open images as new" | |
@@ -114,15 +114,15 @@ msgstr "새 이미지를 엽니다." | |
#: ../app/main.c:173 | |
msgid "Run without a user interface" | |
-msgstr "사용자 인터페이스 없이 실행합니다." | |
+msgstr "사용자 인터페이스 없이 실행합니다" | |
#: ../app/main.c:178 | |
msgid "Do not load brushes, gradients, patterns, ..." | |
-msgstr "무늬, 그라디언트, 색상표, 붓 등을 읽어 들이지 않습니다." | |
+msgstr "무늬, 그라디언트, 색상표, 붓 등을 불러오지 않습니다..." | |
#: ../app/main.c:183 | |
msgid "Do not load any fonts" | |
-msgstr "글꼴을 읽어오지 않습니다." | |
+msgstr "글꼴을 불러오지 않음" | |
#: ../app/main.c:188 | |
msgid "Do not show a splash screen" | |
@@ -130,23 +130,23 @@ msgstr "시작 화면 보이지 않기" | |
#: ../app/main.c:193 | |
msgid "Do not use shared memory between GIMP and plugins" | |
-msgstr "김프와 플러그인 사이의 공유 메모리를 사용하지 않습니다." | |
+msgstr "김프와 플러그인 사이의 공유 메모리를 사용하지 않습니다" | |
#: ../app/main.c:198 | |
msgid "Do not use special CPU acceleration functions" | |
-msgstr "특수한 CPU 가속 기능을 사용하지 않습니다." | |
+msgstr "특수한 CPU 가속 기능을 사용하지 않습니다" | |
#: ../app/main.c:203 | |
msgid "Use an alternate sessionrc file" | |
-msgstr "다른 sessionrc 파일을 사용합니다." | |
+msgstr "다른 sessionrc 파일을 사용합니다" | |
#: ../app/main.c:208 | |
msgid "Use an alternate user gimprc file" | |
-msgstr "다른 사용자 gimprc 파일을 사용합니다." | |
+msgstr "다른 사용자 gimprc 파일을 사용합니다" | |
#: ../app/main.c:213 | |
msgid "Use an alternate system gimprc file" | |
-msgstr "다른 시스템 gimprc 파일을 사용합니다." | |
+msgstr "다른 시스템 gimprc 파일을 사용합니다" | |
#: ../app/main.c:218 | |
msgid "Batch command to run (can be used multiple times)" | |
@@ -158,7 +158,7 @@ msgstr "일괄처리 명령을 수행하기 위한 프로시저" | |
#: ../app/main.c:228 | |
msgid "Send messages to console instead of using a dialog" | |
-msgstr "대화상자 대신에 콘솔로 메시지를 출력합니다." | |
+msgstr "대화상자 대신에 콘솔로 메시지를 출력합니다" | |
# 모드 이름은 번역하지 말 것 (off|on|warn) | |
#. don't translate the mode names (off|on|warn) | |
@@ -178,11 +178,11 @@ msgstr "치명적이지 않은 디버깅 시그널 처리기를 사용합니다. | |
#: ../app/main.c:250 | |
msgid "Make all warnings fatal" | |
-msgstr "모든 치명적 경고를 보입니다." | |
+msgstr "모든 치명적 경고를 보입니다" | |
#: ../app/main.c:255 | |
msgid "Output a gimprc file with default settings" | |
-msgstr "기본 설정으로 gimprc 파일을 출력합니다." | |
+msgstr "기본 설정으로 gimprc 파일을 출력합니다" | |
#: ../app/main.c:271 | |
msgid "Output a sorted list of deprecated procedures in the PDB" | |
@@ -211,7 +211,7 @@ msgstr "김프 출력. 이 창을 닫으려면 아무 글자나 입력하십시 | |
#: ../app/main.c:497 | |
#, c-format | |
msgid "(Type any character to close this window)\n" | |
-msgstr "(이 창을 닫으려면 아무 글자나 입력하십시오.)\n" | |
+msgstr "(이 창을 닫으려면 아무 글자나 입력하십시오)\n" | |
#: ../app/main.c:514 | |
msgid "GIMP output. You can minimize this window, but don't close it." | |
@@ -248,7 +248,7 @@ msgstr "" | |
#: ../app/version.c:63 ../app/version.c:130 | |
#, c-format | |
msgid "using %s version %s (compiled against version %s)" | |
-msgstr "%s 사용, %s 버전(%s 버전 컴파일)" | |
+msgstr "%s 버전 %s 사용중(%s 버전 컴파일)" | |
#: ../app/version.c:138 | |
#, c-format | |
@@ -769,7 +769,7 @@ msgid "New Channel Color" | |
msgstr "새 채널 색상" | |
#: ../app/actions/channels-commands.c:244 ../app/core/gimpimage-new.c:257 | |
-#: ../app/display/gimpdisplayshell-dnd.c:632 | |
+#: ../app/display/gimpdisplayshell-dnd.c:646 | |
#: ../app/widgets/gimpchanneltreeview.c:258 | |
#: ../app/widgets/gimplayertreeview.c:776 | |
#, c-format | |
@@ -970,7 +970,7 @@ msgstr "모든 보이는 레이어의 합성색을 사용합니다" | |
#: ../app/dialogs/file-open-dialog.c:277 | |
#: ../app/dialogs/file-open-location-dialog.c:213 | |
#: ../app/dialogs/file-open-location-dialog.c:225 | |
-#: ../app/display/gimpdisplayshell-dnd.c:578 | |
+#: ../app/display/gimpdisplayshell-dnd.c:592 | |
#: ../app/widgets/gimplayertreeview.c:736 ../app/widgets/gimptoolbox-dnd.c:170 | |
#: ../app/widgets/gimptoolbox.c:833 | |
#, c-format | |
@@ -1602,12 +1602,12 @@ msgstr "미리보기 다시 만들기" | |
#: ../app/actions/documents-actions.c:87 | |
msgctxt "documents-action" | |
msgid "Reload _all Previews" | |
-msgstr "모든 미리보기 다시 읽기(_A)" | |
+msgstr "모든 미리보기 다시 불러오기(_A)" | |
#: ../app/actions/documents-actions.c:88 | |
msgctxt "documents-action" | |
msgid "Reload all previews" | |
-msgstr "모든 미리보기 다시읽기" | |
+msgstr "모든 미리보기 다시 불러오기" | |
#: ../app/actions/documents-actions.c:93 | |
msgctxt "documents-action" | |
@@ -1617,7 +1617,7 @@ msgstr "원본 없는 항목 제거(_N)" | |
#: ../app/actions/documents-actions.c:95 | |
msgctxt "documents-action" | |
msgid "Remove entries for which the corresponding file is not available" | |
-msgstr "대응하는 파일이 없는 항목을 제거합니다." | |
+msgstr "대응하는 파일이 없는 항목을 제거합니다" | |
#: ../app/actions/documents-commands.c:192 | |
msgid "Clear Document History" | |
@@ -2140,7 +2140,7 @@ msgstr "클립보드" | |
#: ../app/actions/edit-commands.c:374 | |
msgid "Cut Named" | |
-msgstr "이름붙여 잘라넣기" | |
+msgstr "이름붙여 잘라내기" | |
#: ../app/actions/edit-commands.c:377 ../app/actions/edit-commands.c:418 | |
#: ../app/actions/edit-commands.c:438 | |
@@ -2181,7 +2181,7 @@ msgstr "지우기(_C)" | |
#: ../app/actions/error-console-actions.c:44 | |
msgctxt "error-console-action" | |
msgid "Clear error console" | |
-msgstr "오류 콘솔 지우기" | |
+msgstr "오류 콘솔을 지웁니다" | |
#: ../app/actions/error-console-actions.c:49 | |
msgctxt "error-console-action" | |
@@ -2191,7 +2191,7 @@ msgstr "전체 선택(_A)" | |
#: ../app/actions/error-console-actions.c:50 | |
msgctxt "error-console-action" | |
msgid "Select all error messages" | |
-msgstr "모든 오류 메시지 선택" | |
+msgstr "모든 오류 메시지를 선택합니다" | |
#: ../app/actions/error-console-actions.c:58 | |
msgctxt "error-console-action" | |
@@ -2201,7 +2201,7 @@ msgstr "오류 기록을 파일로 저장(_S)..." | |
#: ../app/actions/error-console-actions.c:59 | |
msgctxt "error-console-action" | |
msgid "Write all error messages to a file" | |
-msgstr "모든 오류 메시지를 파일로 저장" | |
+msgstr "모든 오류 메시지를 파일에 기록합니다" | |
#: ../app/actions/error-console-actions.c:64 | |
msgctxt "error-console-action" | |
@@ -2211,7 +2211,7 @@ msgstr "선택을 파일로 저장(_E)..." | |
#: ../app/actions/error-console-actions.c:65 | |
msgctxt "error-console-action" | |
msgid "Write the selected error messages to a file" | |
-msgstr "선택한 오류메시지를 파일로 내보내기" | |
+msgstr "선택한 오류 메시지를 파일에 기록합니다" | |
#: ../app/actions/error-console-commands.c:84 | |
msgid "Cannot save. Nothing is selected." | |
@@ -2253,7 +2253,7 @@ msgstr "열기(_O)..." | |
#: ../app/actions/file-actions.c:77 | |
msgctxt "file-action" | |
msgid "Open an image file" | |
-msgstr "이미지 파일 열기" | |
+msgstr "이미지 파일을 엽니다" | |
#: ../app/actions/file-actions.c:82 | |
msgctxt "file-action" | |
@@ -2263,7 +2263,7 @@ msgstr "레이어로 열기(_E)..." | |
#: ../app/actions/file-actions.c:83 | |
msgctxt "file-action" | |
msgid "Open an image file as layers" | |
-msgstr "이미지 파일을 레이어로 열기" | |
+msgstr "이미지 파일을 레이어로 엽니다" | |
#: ../app/actions/file-actions.c:88 | |
msgctxt "file-action" | |
@@ -2283,7 +2283,7 @@ msgstr "새 양식 만들기..." | |
#: ../app/actions/file-actions.c:95 | |
msgctxt "file-action" | |
msgid "Create a new template from this image" | |
-msgstr "이 이미지에서 새 양식 만들기" | |
+msgstr "이 이미지에서 새 양식을 만듭니다" | |
#: ../app/actions/file-actions.c:100 | |
msgctxt "file-action" | |
@@ -2293,7 +2293,7 @@ msgstr "원래대로(_V)" | |
#: ../app/actions/file-actions.c:101 | |
msgctxt "file-action" | |
msgid "Reload the image file from disk" | |
-msgstr "디스크에서 이미지 파일 다시 읽어오기" | |
+msgstr "디스크에서 이미지 파일을 다시 불러옵니다" | |
#: ../app/actions/file-actions.c:106 | |
msgctxt "file-action" | |
@@ -2308,7 +2308,7 @@ msgstr "모든 열린 이미지 닫기" | |
#: ../app/actions/file-actions.c:112 | |
msgctxt "file-action" | |
msgid "_Quit" | |
-msgstr "끝(_Q)" | |
+msgstr "끝내기(_Q)" | |
#: ../app/actions/file-actions.c:113 | |
msgctxt "file-action" | |
@@ -2323,7 +2323,7 @@ msgstr "저장(_S)" | |
#: ../app/actions/file-actions.c:122 | |
msgctxt "file-action" | |
msgid "Save this image" | |
-msgstr "이미지 저장" | |
+msgstr "이미지를 저장합니다" | |
#: ../app/actions/file-actions.c:127 | |
msgctxt "file-action" | |
@@ -2333,7 +2333,7 @@ msgstr "다른 이름으로 저장(_A)..." | |
#: ../app/actions/file-actions.c:128 | |
msgctxt "file-action" | |
msgid "Save this image with a different name" | |
-msgstr "이미지를 다른 이름으로 저장하기" | |
+msgstr "이미지를 다른 이름으로 저장합니다" | |
#: ../app/actions/file-actions.c:133 | |
msgctxt "file-action" | |
@@ -2367,7 +2367,7 @@ msgstr "내보내기" | |
#: ../app/actions/file-actions.c:147 | |
msgctxt "file-action" | |
msgid "Export the image again" | |
-msgstr "이미 경로 다시 내보내기" | |
+msgstr "이미지를 다시 내보내기" | |
#: ../app/actions/file-actions.c:152 | |
msgctxt "file-action" | |
@@ -2377,7 +2377,7 @@ msgstr "겹쳐쓰기(_W)" | |
#: ../app/actions/file-actions.c:153 | |
msgctxt "file-action" | |
msgid "Export the image back to the imported file in the import format" | |
-msgstr "이미지를 불러온 파일 형식을 이용하여 해당 파일로 다시 내보내기" | |
+msgstr "이미지를 불러온 파일 형식을 이용하여 해당 파일로 다시 내보냅니다" | |
#: ../app/actions/file-actions.c:158 | |
msgctxt "file-action" | |
@@ -2387,7 +2387,7 @@ msgstr "내보내기(_X)..." | |
#: ../app/actions/file-actions.c:159 | |
msgctxt "file-action" | |
msgid "Export the image to various file formats such as PNG or JPEG" | |
-msgstr "이미지를 PNG나 JPEG 등 다양한 파일 형식으로 내보내기" | |
+msgstr "이미지를 PNG나 JPEG 등 다양한 파일 형식으로 내보냅니다" | |
#: ../app/actions/file-actions.c:292 | |
#, c-format | |
@@ -2414,7 +2414,7 @@ msgstr "이미지를 레이어로 열기" | |
#: ../app/actions/file-commands.c:265 | |
msgid "No changes need to be saved" | |
-msgstr "저장할만한 변화가 없음." | |
+msgstr "저장할 변화가 없음." | |
#: ../app/actions/file-commands.c:272 ../app/dialogs/file-save-dialog.c:95 | |
msgid "Save Image" | |
@@ -2481,12 +2481,12 @@ msgstr "글꼴 목록 새로고침(_R)" | |
#: ../app/actions/fonts-actions.c:48 | |
msgctxt "fonts-action" | |
msgid "Rescan the installed fonts" | |
-msgstr "설치된 글꼴 다시 읽기" | |
+msgstr "설치된 글꼴을 다시 읽습니다" | |
#: ../app/actions/gradient-editor-actions.c:45 | |
msgctxt "gradient-editor-action" | |
msgid "Gradient Editor Menu" | |
-msgstr "그라디언트편집기 메뉴" | |
+msgstr "그라디언트 편집기 메뉴" | |
#: ../app/actions/gradient-editor-actions.c:49 | |
msgctxt "gradient-editor-action" | |
@@ -2855,7 +2855,7 @@ msgstr "새 그라디언트(_N)" | |
#: ../app/actions/gradients-actions.c:48 | |
msgctxt "gradients-action" | |
msgid "Create a new gradient" | |
-msgstr "새 그라디언트 만들기" | |
+msgstr "새 그라디언트를 만듭니다" | |
#: ../app/actions/gradients-actions.c:53 | |
msgctxt "gradients-action" | |
@@ -2865,7 +2865,7 @@ msgstr "그라디언트 복제(_U)" | |
#: ../app/actions/gradients-actions.c:54 | |
msgctxt "gradients-action" | |
msgid "Duplicate this gradient" | |
-msgstr "그라디언트 복제하기" | |
+msgstr "그라디언트 복제합니다" | |
#: ../app/actions/gradients-actions.c:59 | |
msgctxt "gradients-action" | |
@@ -2875,7 +2875,7 @@ msgstr "그라데이션 위치 복사(_L)" | |
#: ../app/actions/gradients-actions.c:60 | |
msgctxt "gradients-action" | |
msgid "Copy gradient file location to clipboard" | |
-msgstr "그라디언트 파일 위치를 클립보드에 복사" | |
+msgstr "그라디언트 파일 위치를 클립보드에 복사합니다" | |
#: ../app/actions/gradients-actions.c:65 | |
msgctxt "gradients-action" | |
@@ -2885,7 +2885,7 @@ msgstr "_POV-Ray로 저장..." | |
#: ../app/actions/gradients-actions.c:66 | |
msgctxt "gradients-action" | |
msgid "Save gradient as POV-Ray" | |
-msgstr "그라디언트를 POV-Ray로 저장" | |
+msgstr "그라디언트를 POV-Ray로 저장합니다" | |
#: ../app/actions/gradients-actions.c:71 | |
msgctxt "gradients-action" | |
@@ -2895,7 +2895,7 @@ msgstr "그라디언트 삭제(_D)" | |
#: ../app/actions/gradients-actions.c:72 | |
msgctxt "gradients-action" | |
msgid "Delete this gradient" | |
-msgstr "그라디언트 삭제" | |
+msgstr "그라디언트를 삭제합니다" | |
#: ../app/actions/gradients-actions.c:77 | |
msgctxt "gradients-action" | |
@@ -2905,7 +2905,7 @@ msgstr "그라디언트 새로고침(_R)" | |
#: ../app/actions/gradients-actions.c:78 | |
msgctxt "gradients-action" | |
msgid "Refresh gradients" | |
-msgstr "그라디언트 새로고침" | |
+msgstr "그라디언트를 새로고칩니다" | |
#: ../app/actions/gradients-actions.c:86 | |
msgctxt "gradients-action" | |
@@ -2915,7 +2915,7 @@ msgstr "그라디언트 편집(_E)..." | |
#: ../app/actions/gradients-actions.c:87 | |
msgctxt "gradients-action" | |
msgid "Edit gradient" | |
-msgstr "그라디언트 편집" | |
+msgstr "그라디언트를 편집합니다" | |
#: ../app/actions/gradients-commands.c:65 | |
#, c-format | |
@@ -2925,12 +2925,12 @@ msgstr "'%s'을(를) POV-Ray로 저장" | |
#: ../app/actions/help-actions.c:37 ../app/actions/help-actions.c:40 | |
msgctxt "help-action" | |
msgid "_Help" | |
-msgstr "도움(_H)" | |
+msgstr "도움말(_H)" | |
#: ../app/actions/help-actions.c:41 | |
msgctxt "help-action" | |
msgid "Open the GIMP user manual" | |
-msgstr "김프 사용자 설명서 열기" | |
+msgstr "김프 사용자 설명서를 엽니다" | |
#: ../app/actions/help-actions.c:46 | |
msgctxt "help-action" | |
@@ -2940,7 +2940,7 @@ msgstr "문맥 도움말(_C)" | |
#: ../app/actions/help-actions.c:47 | |
msgctxt "help-action" | |
msgid "Show the help for a specific user interface item" | |
-msgstr "특정 사용자 인터페이스 항목에 대한 도움말 표시" | |
+msgstr "특정 사용자 인터페이스 항목에 대한 도움말을 표시합니다" | |
#: ../app/actions/image-actions.c:48 ../app/actions/image-actions.c:52 | |
msgctxt "image-action" | |
@@ -3000,7 +3000,7 @@ msgstr "새 이미지(_N)..." | |
#: ../app/actions/image-actions.c:68 | |
msgctxt "image-action" | |
msgid "Create a new image" | |
-msgstr "새 이미지 만들기" | |
+msgstr "새 이미지를 만듭니다" | |
#: ../app/actions/image-actions.c:73 | |
msgctxt "image-action" | |
@@ -3010,17 +3010,17 @@ msgstr "캔버스 크기(_V)..." | |
#: ../app/actions/image-actions.c:74 | |
msgctxt "image-action" | |
msgid "Adjust the image dimensions" | |
-msgstr "이미지 차원 조정" | |
+msgstr "이미지 차원을 조정합니다" | |
#: ../app/actions/image-actions.c:79 | |
msgctxt "image-action" | |
msgid "Fit Canvas to L_ayers" | |
-msgstr "캔버스를 레이어에 맞추기(_A)" | |
+msgstr "캔버스를 레이어에 맞춥니다(_A)" | |
#: ../app/actions/image-actions.c:80 | |
msgctxt "image-action" | |
msgid "Resize the image to enclose all layers" | |
-msgstr "이미지를 모든 레이어를 포함하는 크기로 바꾸기" | |
+msgstr "이미지를 모든 레이어를 포함하는 크기로 바꿉니다" | |
#: ../app/actions/image-actions.c:85 | |
msgctxt "image-action" | |
@@ -3030,7 +3030,7 @@ msgstr "선택영역에 캔버스 크기 맞추기(_I)" | |
#: ../app/actions/image-actions.c:86 | |
msgctxt "image-action" | |
msgid "Resize the image to the extents of the selection" | |
-msgstr "이미지 크기를 선택영역 너비에 맞추기" | |
+msgstr "이미지 크기를 선택영역 너비에 맞춥니다" | |
#: ../app/actions/image-actions.c:91 | |
msgctxt "image-action" | |
@@ -3040,7 +3040,7 @@ msgstr "인쇄 크기(_P)..." | |
#: ../app/actions/image-actions.c:92 | |
msgctxt "image-action" | |
msgid "Adjust the print resolution" | |
-msgstr "프린트 해상도 조정" | |
+msgstr "인쇄 해상도를 조정합니다" | |
#: ../app/actions/image-actions.c:97 | |
msgctxt "image-action" | |
@@ -3050,7 +3050,7 @@ msgstr "이미지 크기조정(_S)..." | |
#: ../app/actions/image-actions.c:98 | |
msgctxt "image-action" | |
msgid "Change the size of the image content" | |
-msgstr "이미지 내용의 크기 바꾸기" | |
+msgstr "이미지 내용의 크기를 바꿉니다" | |
#: ../app/actions/image-actions.c:103 | |
msgctxt "image-action" | |
@@ -3060,7 +3060,7 @@ msgstr "선택영역 잘라내기(_C)" | |
#: ../app/actions/image-actions.c:104 | |
msgctxt "image-action" | |
msgid "Crop the image to the extents of the selection" | |
-msgstr "선택영역의 크기대로 이미지 잘라내기" | |
+msgstr "선택영역의 크기대로 이미지 잘라냅니다" | |
#: ../app/actions/image-actions.c:109 | |
msgctxt "image-action" | |
@@ -3070,7 +3070,7 @@ msgstr "복제(_D)" | |
#: ../app/actions/image-actions.c:110 | |
msgctxt "image-action" | |
msgid "Create a duplicate of this image" | |
-msgstr "이미지 복제 만들기" | |
+msgstr "이미지 복제본을 만듭니다" | |
#: ../app/actions/image-actions.c:115 | |
msgctxt "image-action" | |
@@ -3080,7 +3080,7 @@ msgstr "보이는 레이어 합치기(_L)..." | |
#: ../app/actions/image-actions.c:116 | |
msgctxt "image-action" | |
msgid "Merge all visible layers into one layer" | |
-msgstr "보이는 모든 레이어 하나로 합치기" | |
+msgstr "보이는 모든 레이어를 하나로 합칩니다" | |
#: ../app/actions/image-actions.c:121 | |
msgctxt "image-action" | |
@@ -3090,7 +3090,7 @@ msgstr "이미지 평탄화(_F)" | |
#: ../app/actions/image-actions.c:122 | |
msgctxt "image-action" | |
msgid "Merge all layers into one and remove transparency" | |
-msgstr "모든 레이어를 하나로 합치고 투명도 제거" | |
+msgstr "모든 레이어를 하나로 합치고 투명도를 제거합니다" | |
#: ../app/actions/image-actions.c:127 | |
msgctxt "image-action" | |
@@ -3110,7 +3110,7 @@ msgstr "이미지 성질(_O)" | |
#: ../app/actions/image-actions.c:134 | |
msgctxt "image-action" | |
msgid "Display information about this image" | |
-msgstr "이미지에 대한 정보 보기" | |
+msgstr "이미지에 대한 정보를 봅니다" | |
#: ../app/actions/image-actions.c:142 | |
msgctxt "image-convert-action" | |
@@ -3120,7 +3120,7 @@ msgstr "_RGB" | |
#: ../app/actions/image-actions.c:143 | |
msgctxt "image-convert-action" | |
msgid "Convert the image to the RGB colorspace" | |
-msgstr "이미지를 RGB 색공간으로 변환" | |
+msgstr "이미지를 RGB 색공간으로 변환합니다" | |
#: ../app/actions/image-actions.c:147 | |
msgctxt "image-convert-action" | |
@@ -3130,7 +3130,7 @@ msgstr "그레이스케일(_G)" | |
#: ../app/actions/image-actions.c:148 | |
msgctxt "image-convert-action" | |
msgid "Convert the image to grayscale" | |
-msgstr "이미지를 그레이스케일로 변환" | |
+msgstr "이미지를 그레이스케일로 변환합니다" | |
#: ../app/actions/image-actions.c:152 | |
msgctxt "image-convert-action" | |
@@ -3140,7 +3140,7 @@ msgstr "인덱스(_I)..." | |
#: ../app/actions/image-actions.c:153 | |
msgctxt "image-convert-action" | |
msgid "Convert the image to indexed colors" | |
-msgstr "이미지를 인덱스된 색으로 변환" | |
+msgstr "이미지를 색인한 색으로 변환합니다" | |
#: ../app/actions/image-actions.c:160 | |
msgctxt "image-action" | |
@@ -3150,7 +3150,7 @@ msgstr "수평 뒤집기(_H):" | |
#: ../app/actions/image-actions.c:161 | |
msgctxt "image-action" | |
msgid "Flip image horizontally" | |
-msgstr "수직 뒤집기" | |
+msgstr "수평으로 뒤집습니다" | |
#: ../app/actions/image-actions.c:166 | |
msgctxt "image-action" | |
@@ -3160,7 +3160,7 @@ msgstr "수직 뒤집기(_V)" | |
#: ../app/actions/image-actions.c:167 | |
msgctxt "image-action" | |
msgid "Flip image vertically" | |
-msgstr "수직 뒤집기" | |
+msgstr "수직으로 뒤집습니다" | |
#: ../app/actions/image-actions.c:175 | |
msgctxt "image-action" | |
@@ -3170,7 +3170,7 @@ msgstr "시계방향으로 90도 회전(_C)" | |
#: ../app/actions/image-actions.c:176 | |
msgctxt "image-action" | |
msgid "Rotate the image 90 degrees to the right" | |
-msgstr "이미지를 오른쪽으로 90도 회전" | |
+msgstr "이미지를 오른쪽으로 90도 회전합니다" | |
#: ../app/actions/image-actions.c:181 | |
msgctxt "image-action" | |
@@ -3180,7 +3180,7 @@ msgstr "_180도 회전" | |
#: ../app/actions/image-actions.c:182 | |
msgctxt "image-action" | |
msgid "Turn the image upside-down" | |
-msgstr "이미지를 위아래 뒤집기" | |
+msgstr "이미지를 위아래로 뒤집습니다" | |
#: ../app/actions/image-actions.c:187 | |
msgctxt "image-action" | |
@@ -3190,7 +3190,7 @@ msgstr "시계 반대방향으로 90도 회전(_W)" | |
#: ../app/actions/image-actions.c:188 | |
msgctxt "image-action" | |
msgid "Rotate the image 90 degrees to the left" | |
-msgstr "이미지를 왼쪽으로 90도 회전" | |
+msgstr "이미지를 왼쪽으로 90도 회전합니다" | |
#: ../app/actions/image-commands.c:237 | |
msgid "Set Image Canvas Size" | |
@@ -3222,7 +3222,7 @@ msgstr "회전" | |
#: ../app/actions/image-commands.c:429 ../app/actions/layers-commands.c:691 | |
msgid "Cannot crop because the current selection is empty." | |
-msgstr "선택이 비어있으므로, 잘라낼 수 없습니다." | |
+msgstr "선택이 비어 있으므로, 잘라낼 수 없습니다." | |
#: ../app/actions/image-commands.c:630 | |
msgid "Change Print Size" | |
@@ -3256,17 +3256,17 @@ msgstr "보기 올리기(_R)" | |
#: ../app/actions/images-actions.c:48 | |
msgctxt "images-action" | |
msgid "Raise this image's displays" | |
-msgstr "이 이미지 디스플레이 올리기" | |
+msgstr "이 이미지 표시를 위로 올립니다" | |
#: ../app/actions/images-actions.c:53 | |
msgctxt "images-action" | |
msgid "_New View" | |
-msgstr "새창으로 보기(_N)" | |
+msgstr "새 창으로 보기(_N)" | |
#: ../app/actions/images-actions.c:54 | |
msgctxt "images-action" | |
msgid "Create a new display for this image" | |
-msgstr "이 이미지를 새 창으로 보이기" | |
+msgstr "이 이미지를 새 창으로 보입니다" | |
#: ../app/actions/images-actions.c:59 | |
msgctxt "images-action" | |
@@ -3331,17 +3331,17 @@ msgstr "텍스트 도구(_X)" | |
#: ../app/actions/layers-actions.c:71 | |
msgctxt "layers-action" | |
msgid "Activate the text tool on this text layer" | |
-msgstr "이 텍스트 레이어에서 텍스트도구 활성화" | |
+msgstr "이 텍스트 레이어에서 텍스트 도구를 활성화합니다" | |
#: ../app/actions/layers-actions.c:76 | |
msgctxt "layers-action" | |
msgid "_Edit Layer Attributes..." | |
-msgstr "레이어속성 편집(_E)..." | |
+msgstr "레이어 속성 편집(_E)..." | |
#: ../app/actions/layers-actions.c:77 | |
msgctxt "layers-action" | |
msgid "Edit the layer's name" | |
-msgstr "레이어이름 편집..." | |
+msgstr "레이어 이름 편집" | |
#: ../app/actions/layers-actions.c:82 ../app/actions/layers-actions.c:610 | |
msgctxt "layers-action" | |
@@ -3351,7 +3351,7 @@ msgstr "새 레이어(_N)..." | |
#: ../app/actions/layers-actions.c:83 | |
msgctxt "layers-action" | |
msgid "Create a new layer and add it to the image" | |
-msgstr "새 레이어를 만들어서 이미지에 추가" | |
+msgstr "새 레이어를 만들어서 이미지에 추가합니다" | |
#: ../app/actions/layers-actions.c:88 ../app/actions/layers-actions.c:611 | |
msgctxt "layers-action" | |
@@ -3361,7 +3361,7 @@ msgstr "새 레이어(_N)" | |
#: ../app/actions/layers-actions.c:89 | |
msgctxt "layers-action" | |
msgid "Create a new layer with last used values" | |
-msgstr "마지막 사용값으로 새 레이어 만들기" | |
+msgstr "마지막에 사용한 값으로 새 레이어를 만듭니다" | |
#: ../app/actions/layers-actions.c:94 | |
msgctxt "layers-action" | |
@@ -3371,7 +3371,7 @@ msgstr "보이는 영역에서 새로 만들기(_V)" | |
#: ../app/actions/layers-actions.c:96 | |
msgctxt "layers-action" | |
msgid "Create a new layer from what is visible in this image" | |
-msgstr "이미지의 보이는 부분을 새 레이어로 만들기" | |
+msgstr "이미지의 보이는 부분을 새 레이어로 만듭니다" | |
#: ../app/actions/layers-actions.c:101 | |
msgctxt "layers-action" | |
@@ -3381,7 +3381,7 @@ msgstr "새 레이어 그룹(_G)..." | |
#: ../app/actions/layers-actions.c:102 | |
msgctxt "layers-action" | |
msgid "Create a new layer group and add it to the image" | |
-msgstr "새 레이어그룹을 만들어서 이미지에 추가하기" | |
+msgstr "새 레이어그룹을 만들어서 이미지에 추가합니다" | |
#: ../app/actions/layers-actions.c:107 | |
msgctxt "layers-action" | |
@@ -3391,7 +3391,7 @@ msgstr "레이어 복제(_U)" | |
#: ../app/actions/layers-actions.c:109 | |
msgctxt "layers-action" | |
msgid "Create a duplicate of the layer and add it to the image" | |
-msgstr "레이어의 복사본 만들고, 이미지에 추가하기" | |
+msgstr "레이어의 복사본 만들고, 이미지에 추가합니다" | |
#: ../app/actions/layers-actions.c:114 | |
msgctxt "layers-action" | |
@@ -3401,7 +3401,7 @@ msgstr "레이어 삭제(_D)" | |
#: ../app/actions/layers-actions.c:115 | |
msgctxt "layers-action" | |
msgid "Delete this layer" | |
-msgstr "레이어 삭제" | |
+msgstr "레이어를 삭제합니다" | |
#: ../app/actions/layers-actions.c:120 | |
msgctxt "layers-action" | |
@@ -3411,7 +3411,7 @@ msgstr "레이어 올리기(_R)" | |
#: ../app/actions/layers-actions.c:121 | |
msgctxt "layers-action" | |
msgid "Raise this layer one step in the layer stack" | |
-msgstr "레이어 스택에서 이 레이어를 한 단계 올리기" | |
+msgstr "레이어 스택에서 이 레이어를 한 단계 올립니다" | |
#: ../app/actions/layers-actions.c:126 | |
msgctxt "layers-action" | |
@@ -3421,7 +3421,7 @@ msgstr "레이어를 꼭대기로(_T)" | |
#: ../app/actions/layers-actions.c:127 | |
msgctxt "layers-action" | |
msgid "Move this layer to the top of the layer stack" | |
-msgstr "레이어 스택에서 이 레이어를 최상위로 이동하기" | |
+msgstr "레이어 스택에서 이 레이어를 최상위로 이동합니다" | |
#: ../app/actions/layers-actions.c:132 | |
msgctxt "layers-action" | |
@@ -3431,7 +3431,7 @@ msgstr "레이어 내리기(_L)" | |
#: ../app/actions/layers-actions.c:133 | |
msgctxt "layers-action" | |
msgid "Lower this layer one step in the layer stack" | |
-msgstr "레이어 스택에서 이 레이어를 한 단계 내리기" | |
+msgstr "레이어 스택에서 이 레이어를 한 단계 내립니다" | |
#: ../app/actions/layers-actions.c:138 | |
msgctxt "layers-action" | |
@@ -3441,7 +3441,7 @@ msgstr "레이어를 바닥으로(_B)" | |
#: ../app/actions/layers-actions.c:139 | |
msgctxt "layers-action" | |
msgid "Move this layer to the bottom of the layer stack" | |
-msgstr "레이어 대화상자에서 이 레이어를 바닥으로 내리기" | |
+msgstr "레이어 대화상자에서 이 레이어를 바닥으로 내립니다" | |
#: ../app/actions/layers-actions.c:144 | |
msgctxt "layers-action" | |
@@ -3451,7 +3451,7 @@ msgstr "레이어 고정(_A)" | |
#: ../app/actions/layers-actions.c:145 | |
msgctxt "layers-action" | |
msgid "Anchor the floating layer" | |
-msgstr "떠있는 레이어 고정" | |
+msgstr "떠있는 레이어를 고정합니다" | |
#: ../app/actions/layers-actions.c:150 | |
msgctxt "layers-action" | |
@@ -3461,7 +3461,7 @@ msgstr "아래로 합치기(_W)" | |
#: ../app/actions/layers-actions.c:151 | |
msgctxt "layers-action" | |
msgid "Merge this layer with the first visible layer below it" | |
-msgstr "이 레이어를 그 아래에서 처음보이는 레이어로 합치기" | |
+msgstr "이 레이어를 그 아래에서 처음보이는 레이어로 합칩니다" | |
#: ../app/actions/layers-actions.c:156 | |
msgctxt "layers-action" | |
@@ -3471,7 +3471,7 @@ msgstr "레이어 그룹 합치기" | |
#: ../app/actions/layers-actions.c:157 | |
msgctxt "layers-action" | |
msgid "Merge the layer group's layers into one normal layer" | |
-msgstr "레이어 그룹의 레이어를 보통 레이어 하나로 합치기" | |
+msgstr "레이어 그룹의 레이어를 보통 레이어 하나로 합칩니다" | |
#: ../app/actions/layers-actions.c:162 | |
msgctxt "layers-action" | |
@@ -3481,7 +3481,7 @@ msgstr "보이는 레이어 합치기(_V)..." | |
#: ../app/actions/layers-actions.c:163 | |
msgctxt "layers-action" | |
msgid "Merge all visible layers into one layer" | |
-msgstr "보이는 모든 레이어를 한 레이어로 합치기" | |
+msgstr "보이는 모든 레이어를 한 레이어로 합칩니다" | |
#: ../app/actions/layers-actions.c:168 | |
msgctxt "layers-action" | |
@@ -3491,7 +3491,7 @@ msgstr "이미지 평탄화(_F)" | |
#: ../app/actions/layers-actions.c:169 | |
msgctxt "layers-action" | |
msgid "Merge all layers into one and remove transparency" | |
-msgstr "모든 레이어를 하나로 합치고, 투명도 없애기" | |
+msgstr "모든 레이어를 하나로 합치고, 투명도 정보를 없앱니다" | |
#: ../app/actions/layers-actions.c:174 | |
msgctxt "layers-action" | |
@@ -3501,7 +3501,7 @@ msgstr "텍스트 정보 버리기(_D)" | |
#: ../app/actions/layers-actions.c:175 | |
msgctxt "layers-action" | |
msgid "Turn this text layer into a normal layer" | |
-msgstr "이 텍스트레이어를 일반 레이어로 전환" | |
+msgstr "이 텍스트 레이어를 일반 레이어로 전환합니다" | |
#: ../app/actions/layers-actions.c:180 | |
msgctxt "layers-action" | |
@@ -3511,7 +3511,7 @@ msgstr "텍스트를 경로로(_P)" | |
#: ../app/actions/layers-actions.c:181 | |
msgctxt "layers-action" | |
msgid "Create a path from this text layer" | |
-msgstr "텍스트 레이어에서 경로 만들기" | |
+msgstr "텍스트 레이어에서 경로를 만듭니다" | |
#: ../app/actions/layers-actions.c:186 | |
msgctxt "layers-action" | |
@@ -3521,7 +3521,7 @@ msgstr "경로따라 텍스트(_G)" | |
#: ../app/actions/layers-actions.c:187 | |
msgctxt "layers-action" | |
msgid "Warp this layer's text along the current path" | |
-msgstr "이 레이어의 텍스트를 현재 경로 따라 배열하기" | |
+msgstr "이 레이어의 텍스트를 현재 경로를 따라 나열합니다" | |
#: ../app/actions/layers-actions.c:192 | |
msgctxt "layers-action" | |
@@ -3531,7 +3531,7 @@ msgstr "레이어경계 크기(_O)..." | |
#: ../app/actions/layers-actions.c:193 | |
msgctxt "layers-action" | |
msgid "Adjust the layer dimensions" | |
-msgstr "레이어 차원 조정" | |
+msgstr "레이어 차원을 조정합니다" | |
#: ../app/actions/layers-actions.c:198 | |
msgctxt "layers-action" | |
@@ -3541,7 +3541,7 @@ msgstr "레이어를 이미지 크기로(_I)" | |
#: ../app/actions/layers-actions.c:199 | |
msgctxt "layers-action" | |
msgid "Resize the layer to the size of the image" | |
-msgstr "이미지의 크기로 레이어 크기 변경" | |
+msgstr "이미지의 크기로 레이어 크기를 바꿉니다" | |
#: ../app/actions/layers-actions.c:204 | |
msgctxt "layers-action" | |
@@ -3551,7 +3551,7 @@ msgstr "레이어 크기조정(_S)..." | |
#: ../app/actions/layers-actions.c:205 | |
msgctxt "layers-action" | |
msgid "Change the size of the layer content" | |
-msgstr "레이어 내용의 크기 바꾸기" | |
+msgstr "레이어 내용의 크기를 바꿉니다" | |
#: ../app/actions/layers-actions.c:210 | |
msgctxt "layers-action" | |
@@ -3561,7 +3561,7 @@ msgstr "선택영역 잘라내기(_C)" | |
#: ../app/actions/layers-actions.c:211 | |
msgctxt "layers-action" | |
msgid "Crop the layer to the extents of the selection" | |
-msgstr "선택한 확장으로 레이어 잘라내기" | |
+msgstr "선택한 확장으로 레이어를 잘라냅니다" | |
#: ../app/actions/layers-actions.c:216 | |
msgctxt "layers-action" | |
@@ -3571,7 +3571,7 @@ msgstr "레이어 마스크 추가(_Y)..." | |
#: ../app/actions/layers-actions.c:218 | |
msgctxt "layers-action" | |
msgid "Add a mask that allows non-destructive editing of transparency" | |
-msgstr "투명도 편집에 영향을 주지 않는 마스크 추가" | |
+msgstr "투명도 편집에 영향을 주지 않는 마스크를 추가합니다" | |
#: ../app/actions/layers-actions.c:223 | |
msgctxt "layers-action" | |
@@ -3581,7 +3581,7 @@ msgstr "알파 채널 추가(_H)" | |
#: ../app/actions/layers-actions.c:224 | |
msgctxt "layers-action" | |
msgid "Add transparency information to the layer" | |
-msgstr "레이어에 투명 정보 추가" | |
+msgstr "레이어에 투명 정보를 추가합니다" | |
#: ../app/actions/layers-actions.c:229 | |
msgctxt "layers-action" | |
@@ -3591,7 +3591,7 @@ msgstr "알파 채널 제거(_R)" | |
#: ../app/actions/layers-actions.c:230 | |
msgctxt "layers-action" | |
msgid "Remove transparency information from the layer" | |
-msgstr "레이어에서 투명 정보 제거" | |
+msgstr "레이어에서 투명 정보를 제거합니다" | |
#: ../app/actions/layers-actions.c:238 | |
msgctxt "layers-action" | |
@@ -3601,7 +3601,7 @@ msgstr "알파 채널 잠그기(_A)" | |
#: ../app/actions/layers-actions.c:240 | |
msgctxt "layers-action" | |
msgid "Keep transparency information on this layer from being modified" | |
-msgstr "변경시 레이어의 투명 정보 보호" | |
+msgstr "변경시 레이어의 투명 정보를 보호합니다" | |
#: ../app/actions/layers-actions.c:246 | |
msgctxt "layers-action" | |
@@ -3611,7 +3611,7 @@ msgstr "레이어 마스크 편집(_E)" | |
#: ../app/actions/layers-actions.c:247 | |
msgctxt "layers-action" | |
msgid "Work on the layer mask" | |
-msgstr "레이어마스크에서 작업" | |
+msgstr "레이어 마스크에서 작업합니다" | |
#: ../app/actions/layers-actions.c:253 | |
msgctxt "layers-action" | |
@@ -3621,12 +3621,12 @@ msgstr "레이어 마스크 보이기(_H)" | |
#: ../app/actions/layers-actions.c:259 | |
msgctxt "layers-action" | |
msgid "_Disable Layer Mask" | |
-msgstr "레이어 마스크 사용불가하게(_D)" | |
+msgstr "레이어 마스크 비활성화(_D)" | |
#: ../app/actions/layers-actions.c:260 | |
msgctxt "layers-action" | |
msgid "Dismiss the effect of the layer mask" | |
-msgstr "레이어 마스크의 효과 버리기" | |
+msgstr "레이어 마스크의 효과를 버립니다" | |
#: ../app/actions/layers-actions.c:269 | |
msgctxt "layers-action" | |
@@ -3636,7 +3636,7 @@ msgstr "레이어마스크 적용(_M)" | |
#: ../app/actions/layers-actions.c:270 | |
msgctxt "layers-action" | |
msgid "Apply the effect of the layer mask and remove it" | |
-msgstr "레이어 마스크 효과 적용하고 없애기" | |
+msgstr "레이어 마스크 효과 적용하고 없앱니다" | |
#: ../app/actions/layers-actions.c:275 | |
msgctxt "layers-action" | |
@@ -3646,7 +3646,7 @@ msgstr "레이어 마스크 삭제(_K)" | |
#: ../app/actions/layers-actions.c:276 | |
msgctxt "layers-action" | |
msgid "Remove the layer mask and its effect" | |
-msgstr "레이어 마스크와 효과 없애기" | |
+msgstr "레이어 마스크와 효과 없앱니다" | |
#: ../app/actions/layers-actions.c:284 | |
msgctxt "layers-action" | |
@@ -3656,7 +3656,7 @@ msgstr "마스크를 선택영역으로(_M)" | |
#: ../app/actions/layers-actions.c:285 | |
msgctxt "layers-action" | |
msgid "Replace the selection with the layer mask" | |
-msgstr "선택을 레이어 마스크로 교체" | |
+msgstr "선택을 레이어 마스크로 교체합니다" | |
#: ../app/actions/layers-actions.c:290 | |
msgctxt "layers-action" | |
@@ -3666,7 +3666,7 @@ msgstr "선택영역에 추가(_A)" | |
#: ../app/actions/layers-actions.c:291 | |
msgctxt "layers-action" | |
msgid "Add the layer mask to the current selection" | |
-msgstr "레이어 마스크를 현재선택에 추가" | |
+msgstr "레이어 마스크를 현재선택에 추가합니다" | |
#: ../app/actions/layers-actions.c:296 ../app/actions/layers-actions.c:325 | |
msgctxt "layers-action" | |
@@ -3676,7 +3676,7 @@ msgstr "선택영역에서 빼기(_S)" | |
#: ../app/actions/layers-actions.c:297 | |
msgctxt "layers-action" | |
msgid "Subtract the layer mask from the current selection" | |
-msgstr "현재 선택에서 레이어 마스크 빼기" | |
+msgstr "현재 선택에서 레이어 마스크를 뺍니다" | |
#: ../app/actions/layers-actions.c:302 ../app/actions/layers-actions.c:332 | |
msgctxt "layers-action" | |
@@ -3686,7 +3686,7 @@ msgstr "선택영역과 겹치기(_I)" | |
#: ../app/actions/layers-actions.c:303 | |
msgctxt "layers-action" | |
msgid "Intersect the layer mask with the current selection" | |
-msgstr "현재 선택영역과 레이어 마스크의 교집합" | |
+msgstr "현재 선택영역과 레이어 마스크를 겹칩니다" | |
#: ../app/actions/layers-actions.c:311 | |
msgctxt "layers-action" | |
@@ -3696,7 +3696,7 @@ msgstr "알파를 선택영역으로(_P)" | |
#: ../app/actions/layers-actions.c:313 | |
msgctxt "layers-action" | |
msgid "Replace the selection with the layer's alpha channel" | |
-msgstr "선택을 레이어 알파 채널로 교체" | |
+msgstr "선택을 레이어 알파 채널로 교체합니다" | |
#: ../app/actions/layers-actions.c:318 | |
msgctxt "layers-action" | |
@@ -3726,7 +3726,7 @@ msgstr "맨 위 레이어 선택(_T)" | |
#: ../app/actions/layers-actions.c:343 | |
msgctxt "layers-action" | |
msgid "Select the topmost layer" | |
-msgstr "맨 위 레이어 선택" | |
+msgstr "맨 위 레이어를 선택합니다" | |
#: ../app/actions/layers-actions.c:348 | |
msgctxt "layers-action" | |
@@ -3736,7 +3736,7 @@ msgstr "바닥 레이어 선택(_B)" | |
#: ../app/actions/layers-actions.c:349 | |
msgctxt "layers-action" | |
msgid "Select the bottommost layer" | |
-msgstr "최하위 레이어 선택" | |
+msgstr "최하위 레이어를 선택합니다" | |
#: ../app/actions/layers-actions.c:354 | |
msgctxt "layers-action" | |
@@ -3746,7 +3746,7 @@ msgstr "이전 레이어 선택(_P)" | |
#: ../app/actions/layers-actions.c:355 | |
msgctxt "layers-action" | |
msgid "Select the layer above the current layer" | |
-msgstr "현재 레이어 위 레이어 선택" | |
+msgstr "현재 레이어 위 레이어를 선택합니다" | |
#: ../app/actions/layers-actions.c:360 | |
msgctxt "layers-action" | |
@@ -3756,7 +3756,7 @@ msgstr "다음 레이어 선택(_N)" | |
#: ../app/actions/layers-actions.c:361 | |
msgctxt "layers-action" | |
msgid "Select the layer below the current layer" | |
-msgstr "현재 레이어 아래 레이어 선택" | |
+msgstr "현재 레이어 아래 레이어를 선택합니다" | |
#. Will be followed with e.g. "Shift-Click | |
#. on thumbnail" | |
@@ -3837,7 +3837,7 @@ msgstr "색 편집(_E)..." | |
#: ../app/actions/palette-editor-actions.c:48 | |
msgctxt "palette-editor-action" | |
msgid "Edit this entry" | |
-msgstr "이 성분 편집" | |
+msgstr "이 항목을 편집합니다" | |
#: ../app/actions/palette-editor-actions.c:53 | |
msgctxt "palette-editor-action" | |
@@ -3847,7 +3847,7 @@ msgstr "색 삭제(_D)" | |
#: ../app/actions/palette-editor-actions.c:54 | |
msgctxt "palette-editor-action" | |
msgid "Delete this entry" | |
-msgstr "이 성분 삭제" | |
+msgstr "이 항목을 삭제합니다" | |
#: ../app/actions/palette-editor-actions.c:62 | |
msgctxt "palette-editor-action" | |
@@ -3862,7 +3862,7 @@ msgstr "전경에서 새 색상(_F)" | |
#: ../app/actions/palette-editor-actions.c:73 | |
msgctxt "palette-editor-action" | |
msgid "Create a new entry from the foreground color" | |
-msgstr "전경색에서 색 가져오기" | |
+msgstr "전경색에서 새 항목을 가져옵니다" | |
#: ../app/actions/palette-editor-actions.c:78 | |
msgctxt "palette-editor-action" | |
@@ -3872,7 +3872,7 @@ msgstr "배경에서 새 색상(_B)" | |
#: ../app/actions/palette-editor-actions.c:80 | |
msgctxt "palette-editor-action" | |
msgid "Create a new entry from the background color" | |
-msgstr "배경색에서 새 성분 가져오기" | |
+msgstr "배경색에서 새 항목을 가져옵니다" | |
#: ../app/actions/palette-editor-actions.c:88 | |
msgid "Zoom _In" | |
@@ -3907,7 +3907,7 @@ msgstr "새 팔레트(_N)" | |
#: ../app/actions/palettes-actions.c:48 | |
msgctxt "palettes-action" | |
msgid "Create a new palette" | |
-msgstr "새 팔레트 만들기" | |
+msgstr "새 팔레트를 만듭니다" | |
#: ../app/actions/palettes-actions.c:53 | |
msgctxt "palettes-action" | |
@@ -3917,7 +3917,7 @@ msgstr "팔레트 가져오기(_I)..." | |
#: ../app/actions/palettes-actions.c:54 | |
msgctxt "palettes-action" | |
msgid "Import palette" | |
-msgstr "팔레트 가져오기" | |
+msgstr "팔레트를 가져옵니다" | |
#: ../app/actions/palettes-actions.c:59 | |
msgctxt "palettes-action" | |
@@ -3927,7 +3927,7 @@ msgstr "팔레트 복제(_U)" | |
#: ../app/actions/palettes-actions.c:60 | |
msgctxt "palettes-action" | |
msgid "Duplicate this palette" | |
-msgstr "팔레트 복제" | |
+msgstr "팔레트를 복제합니다" | |
#: ../app/actions/palettes-actions.c:65 | |
msgctxt "palettes-action" | |
@@ -3937,7 +3937,7 @@ msgstr "팔레트 합치기(_M)..." | |
#: ../app/actions/palettes-actions.c:66 | |
msgctxt "palettes-action" | |
msgid "Merge palettes" | |
-msgstr "팔레트 합치기" | |
+msgstr "팔레트를 합칩니다" | |
#: ../app/actions/palettes-actions.c:71 | |
msgctxt "palettes-action" | |
@@ -3947,7 +3947,7 @@ msgstr "팔레트 위치 복사(_L)" | |
#: ../app/actions/palettes-actions.c:72 | |
msgctxt "palettes-action" | |
msgid "Copy palette file location to clipboard" | |
-msgstr "팔레트 파일 위치를 클립보드를 복사" | |
+msgstr "팔레트 파일 위치를 클립보드를 복사합니다" | |
#: ../app/actions/palettes-actions.c:77 | |
msgctxt "palettes-action" | |
@@ -3957,7 +3957,7 @@ msgstr "팔레트 삭제(_D)" | |
#: ../app/actions/palettes-actions.c:78 | |
msgctxt "palettes-action" | |
msgid "Delete this palette" | |
-msgstr "팔레트 삭제" | |
+msgstr "팔레트를 삭제합니다" | |
#: ../app/actions/palettes-actions.c:83 | |
msgctxt "palettes-action" | |
@@ -3967,7 +3967,7 @@ msgstr "팔레트 새로 고침(_R)" | |
#: ../app/actions/palettes-actions.c:84 | |
msgctxt "palettes-action" | |
msgid "Refresh palettes" | |
-msgstr "팔레트 새로 고침" | |
+msgstr "팔레트를 새로 고칩니다" | |
#: ../app/actions/palettes-actions.c:92 | |
msgctxt "palettes-action" | |
@@ -3977,7 +3977,7 @@ msgstr "팔레트 편집(_E)..." | |
#: ../app/actions/palettes-actions.c:93 | |
msgctxt "palettes-action" | |
msgid "Edit palette" | |
-msgstr "팔레트 편집" | |
+msgstr "팔레트를 편집합니다" | |
#: ../app/actions/palettes-commands.c:72 | |
msgid "Merge Palette" | |
@@ -3985,7 +3985,7 @@ msgstr "팔레트 합치기" | |
#: ../app/actions/palettes-commands.c:76 | |
msgid "Enter a name for the merged palette" | |
-msgstr "합친 팔레트의 이름을 입력하십시오." | |
+msgstr "합친 팔레트의 이름을 입력하십시오" | |
#: ../app/actions/patterns-actions.c:42 | |
msgctxt "patterns-action" | |
@@ -4000,7 +4000,7 @@ msgstr "무늬를 이미지로 열기(_O)" | |
#: ../app/actions/patterns-actions.c:47 | |
msgctxt "patterns-action" | |
msgid "Open this pattern as an image" | |
-msgstr "이 무늬를 이미지로 열기" | |
+msgstr "이 무늬를 이미지로 엽니다" | |
#: ../app/actions/patterns-actions.c:52 | |
msgctxt "patterns-action" | |
@@ -4010,7 +4010,7 @@ msgstr "새 무늬(_N)" | |
#: ../app/actions/patterns-actions.c:53 | |
msgctxt "patterns-action" | |
msgid "Create a new pattern" | |
-msgstr "새 무늬 만들기" | |
+msgstr "새 무늬를 만듭니다" | |
#: ../app/actions/patterns-actions.c:58 | |
msgctxt "patterns-action" | |
@@ -4020,7 +4020,7 @@ msgstr "무늬 복제(_U)" | |
#: ../app/actions/patterns-actions.c:59 | |
msgctxt "patterns-action" | |
msgid "Duplicate this pattern" | |
-msgstr "무늬 복제" | |
+msgstr "무늬를 복제합니다" | |
#: ../app/actions/patterns-actions.c:64 | |
msgctxt "patterns-action" | |
@@ -4030,7 +4030,7 @@ msgstr "무늬 위치 복사(_L)" | |
#: ../app/actions/patterns-actions.c:65 | |
msgctxt "patterns-action" | |
msgid "Copy pattern file location to clipboard" | |
-msgstr "무늬 파일 위치를 클립보드로 복사" | |
+msgstr "무늬 파일 위치를 클립보드로 복사합니다" | |
#: ../app/actions/patterns-actions.c:70 | |
msgctxt "patterns-action" | |
@@ -4040,7 +4040,7 @@ msgstr "무늬 삭제(_D)" | |
#: ../app/actions/patterns-actions.c:71 | |
msgctxt "patterns-action" | |
msgid "Delete this pattern" | |
-msgstr "무늬 삭제" | |
+msgstr "무늬를 삭제합니다" | |
#: ../app/actions/patterns-actions.c:76 | |
msgctxt "patterns-action" | |
@@ -4050,7 +4050,7 @@ msgstr "무늬 새로 고침(_R)" | |
#: ../app/actions/patterns-actions.c:77 | |
msgctxt "patterns-action" | |
msgid "Refresh patterns" | |
-msgstr "무늬 새로 고침" | |
+msgstr "무늬를 새로 고칩니다" | |
#: ../app/actions/patterns-actions.c:85 | |
msgctxt "patterns-action" | |
@@ -4060,12 +4060,12 @@ msgstr "무늬 편집(_E)..." | |
#: ../app/actions/patterns-actions.c:86 | |
msgctxt "patterns-action" | |
msgid "Edit pattern" | |
-msgstr "무늬 편집" | |
+msgstr "무늬를 편집합니다" | |
#: ../app/actions/plug-in-actions.c:85 | |
msgctxt "plug-in-action" | |
msgid "Filte_rs" | |
-msgstr "Filte_rs" | |
+msgstr "필터(_R)" | |
#: ../app/actions/plug-in-actions.c:87 | |
msgctxt "plug-in-action" | |
@@ -4546,7 +4546,7 @@ msgstr "열기" | |
#: ../app/actions/text-editor-actions.c:44 | |
msgctxt "text-editor-action" | |
msgid "Load text from file" | |
-msgstr "파일에서 텍스트 가져오기" | |
+msgstr "파일에서 텍스트 불러오기" | |
#: ../app/actions/text-editor-actions.c:49 | |
msgctxt "text-editor-action" | |
@@ -4585,7 +4585,7 @@ msgstr "텍스트 파일 열기(UTF-8)" | |
#: ../app/actions/text-editor-commands.c:143 | |
#: ../app/actions/text-tool-commands.c:226 ../app/config/gimpconfig-file.c:58 | |
-#: ../app/core/gimpbrush-load.c:140 ../app/core/gimpbrush-load.c:424 | |
+#: ../app/core/gimpbrush-load.c:142 ../app/core/gimpbrush-load.c:426 | |
#: ../app/core/gimpbrushgenerated-load.c:73 | |
#: ../app/core/gimpbrushpipe-load.c:81 ../app/core/gimpcurve-load.c:54 | |
#: ../app/core/gimpgradient-load.c:63 ../app/core/gimppalette-load.c:77 | |
@@ -4824,22 +4824,22 @@ msgstr "칠하기 도구(_P)" | |
#: ../app/actions/tools-actions.c:48 | |
msgctxt "tools-action" | |
msgid "_Transform Tools" | |
-msgstr "변형도구(_T)" | |
+msgstr "변형 도구(_T)" | |
#: ../app/actions/tools-actions.c:49 | |
msgctxt "tools-action" | |
msgid "_Color Tools" | |
-msgstr "색 도구(_C)" | |
+msgstr "색상 도구(_C)" | |
#: ../app/actions/tools-actions.c:55 | |
msgctxt "tools-action" | |
msgid "_By Color" | |
-msgstr "색으로(_B)" | |
+msgstr "색상 선택(_B)" | |
#: ../app/actions/tools-actions.c:56 | |
msgctxt "tools-action" | |
msgid "Select regions with similar colors" | |
-msgstr "비슷한 색 영역 선택" | |
+msgstr "비슷한 색상 영역을 선택합니다" | |
#: ../app/actions/tools-actions.c:61 | |
msgctxt "tools-action" | |
@@ -6463,7 +6463,7 @@ msgstr "실행 취소 이력의 미리보기 크기를 지정하십시오." | |
msgid "When enabled, pressing F1 will open the help browser." | |
msgstr "F1을 눌러서 도움말을 볼 수 있습니다." | |
-#: ../app/config/gimprc-deserialize.c:135 ../app/core/gimp-modules.c:133 | |
+#: ../app/config/gimprc-deserialize.c:135 ../app/core/gimp-modules.c:136 | |
#: ../app/core/gimp-units.c:167 ../app/gui/session.c:286 | |
#: ../app/plug-in/plug-in-rc.c:212 | |
msgid "fatal parse error" | |
@@ -6950,12 +6950,12 @@ msgctxt "undo-type" | |
msgid "Anchor floating selection" | |
msgstr "뜬 선택영역 고정" | |
-#: ../app/core/core-enums.c:862 ../app/core/gimp-edit.c:261 | |
+#: ../app/core/core-enums.c:862 ../app/core/gimp-edit.c:293 | |
msgctxt "undo-type" | |
msgid "Paste" | |
msgstr "붙여넣기" | |
-#: ../app/core/core-enums.c:863 ../app/core/gimp-edit.c:502 | |
+#: ../app/core/core-enums.c:863 ../app/core/gimp-edit.c:534 | |
msgctxt "undo-type" | |
msgid "Cut" | |
msgstr "잘라내기" | |
@@ -7131,122 +7131,122 @@ msgctxt "undo-type" | |
msgid "Not undoable" | |
msgstr "실행 취소 불가" | |
-#: ../app/core/core-enums.c:1185 | |
+#: ../app/core/core-enums.c:1187 | |
msgctxt "select-criterion" | |
msgid "Composite" | |
msgstr "합성하기" | |
-#: ../app/core/core-enums.c:1186 | |
+#: ../app/core/core-enums.c:1188 | |
msgctxt "select-criterion" | |
msgid "Red" | |
msgstr "빨강" | |
-#: ../app/core/core-enums.c:1187 | |
+#: ../app/core/core-enums.c:1189 | |
msgctxt "select-criterion" | |
msgid "Green" | |
msgstr "초록" | |
-#: ../app/core/core-enums.c:1188 | |
+#: ../app/core/core-enums.c:1190 | |
msgctxt "select-criterion" | |
msgid "Blue" | |
msgstr "파랑" | |
-#: ../app/core/core-enums.c:1189 | |
+#: ../app/core/core-enums.c:1191 | |
msgctxt "select-criterion" | |
msgid "Hue" | |
msgstr "색조" | |
-#: ../app/core/core-enums.c:1190 | |
+#: ../app/core/core-enums.c:1192 | |
msgctxt "select-criterion" | |
msgid "Saturation" | |
msgstr "채도" | |
-#: ../app/core/core-enums.c:1191 | |
+#: ../app/core/core-enums.c:1193 | |
msgctxt "select-criterion" | |
msgid "Value" | |
msgstr "명도" | |
-#: ../app/core/core-enums.c:1220 | |
+#: ../app/core/core-enums.c:1222 | |
msgctxt "message-severity" | |
msgid "Message" | |
msgstr "메시지" | |
-#: ../app/core/core-enums.c:1221 | |
+#: ../app/core/core-enums.c:1223 | |
msgctxt "message-severity" | |
msgid "Warning" | |
msgstr "경고" | |
-#: ../app/core/core-enums.c:1222 | |
+#: ../app/core/core-enums.c:1224 | |
msgctxt "message-severity" | |
msgid "Error" | |
msgstr "에러" | |
-#: ../app/core/core-enums.c:1251 | |
+#: ../app/core/core-enums.c:1253 | |
msgctxt "color-profile-policy" | |
msgid "Ask what to do" | |
msgstr "작업 내용 확인하기" | |
-#: ../app/core/core-enums.c:1252 | |
+#: ../app/core/core-enums.c:1254 | |
msgctxt "color-profile-policy" | |
msgid "Keep embedded profile" | |
msgstr "끼어든 프로필 유지" | |
-#: ../app/core/core-enums.c:1253 | |
+#: ../app/core/core-enums.c:1255 | |
msgctxt "color-profile-policy" | |
msgid "Convert to RGB workspace" | |
msgstr "RGB 작업공간으로 변환" | |
-#: ../app/core/core-enums.c:1290 | |
+#: ../app/core/core-enums.c:1292 | |
msgctxt "dynamics-output-type" | |
msgid "Opacity" | |
msgstr "불투명도" | |
-#: ../app/core/core-enums.c:1291 | |
+#: ../app/core/core-enums.c:1293 | |
msgctxt "dynamics-output-type" | |
msgid "Size" | |
msgstr "크기" | |
-#: ../app/core/core-enums.c:1292 | |
+#: ../app/core/core-enums.c:1294 | |
msgctxt "dynamics-output-type" | |
msgid "Angle" | |
msgstr "각도" | |
-#: ../app/core/core-enums.c:1293 | |
+#: ../app/core/core-enums.c:1295 | |
msgctxt "dynamics-output-type" | |
msgid "Color" | |
msgstr "색" | |
-#: ../app/core/core-enums.c:1294 | |
+#: ../app/core/core-enums.c:1296 | |
msgctxt "dynamics-output-type" | |
msgid "Hardness" | |
msgstr "경도" | |
-#: ../app/core/core-enums.c:1295 | |
+#: ../app/core/core-enums.c:1297 | |
msgctxt "dynamics-output-type" | |
msgid "Force" | |
msgstr "강제" | |
-#: ../app/core/core-enums.c:1296 | |
+#: ../app/core/core-enums.c:1298 | |
msgctxt "dynamics-output-type" | |
msgid "Aspect ratio" | |
msgstr "종횡비" | |
-#: ../app/core/core-enums.c:1297 | |
+#: ../app/core/core-enums.c:1299 | |
msgctxt "dynamics-output-type" | |
msgid "Spacing" | |
msgstr "간격" | |
-#: ../app/core/core-enums.c:1298 | |
+#: ../app/core/core-enums.c:1300 | |
msgctxt "dynamics-output-type" | |
msgid "Rate" | |
msgstr "비율" | |
-#: ../app/core/core-enums.c:1299 | |
+#: ../app/core/core-enums.c:1301 | |
msgctxt "dynamics-output-type" | |
msgid "Flow" | |
msgstr "흐름" | |
-#: ../app/core/core-enums.c:1300 | |
+#: ../app/core/core-enums.c:1302 | |
msgctxt "dynamics-output-type" | |
msgid "Jitter" | |
msgstr "지터(Jitter)" | |
@@ -7258,41 +7258,41 @@ msgstr "지터(Jitter)" | |
msgid "Deleting \"%s\" failed: %s" | |
msgstr "\"%s\" 삭제 실패: %s" | |
-#: ../app/core/gimp-edit.c:189 ../app/core/gimpimage-new.c:309 | |
+#: ../app/core/gimp-edit.c:190 ../app/core/gimpimage-new.c:309 | |
msgid "Pasted Layer" | |
msgstr "붙여 넣은 레이어" | |
-#: ../app/core/gimp-edit.c:388 | |
+#: ../app/core/gimp-edit.c:420 | |
msgctxt "undo-type" | |
msgid "Clear" | |
msgstr "지우기" | |
-#: ../app/core/gimp-edit.c:407 | |
+#: ../app/core/gimp-edit.c:439 | |
msgctxt "undo-type" | |
msgid "Fill with Foreground Color" | |
msgstr "전경색으로 채우기" | |
-#: ../app/core/gimp-edit.c:411 | |
+#: ../app/core/gimp-edit.c:443 | |
msgctxt "undo-type" | |
msgid "Fill with Background Color" | |
msgstr "배경색으로 채우기" | |
-#: ../app/core/gimp-edit.c:415 | |
+#: ../app/core/gimp-edit.c:447 | |
msgctxt "undo-type" | |
msgid "Fill with White" | |
msgstr "흰색으로 채우기" | |
-#: ../app/core/gimp-edit.c:419 | |
+#: ../app/core/gimp-edit.c:451 | |
msgctxt "undo-type" | |
msgid "Fill with Transparency" | |
msgstr "투명하게 채우기" | |
-#: ../app/core/gimp-edit.c:423 | |
+#: ../app/core/gimp-edit.c:455 | |
msgctxt "undo-type" | |
msgid "Fill with Pattern" | |
msgstr "무늬로 채우기" | |
-#: ../app/core/gimp-edit.c:515 | |
+#: ../app/core/gimp-edit.c:547 | |
msgid "Global Buffer" | |
msgstr "전역 버퍼" | |
@@ -7398,56 +7398,56 @@ msgstr "모듈" | |
msgid "Updating tag cache" | |
msgstr "태그 캐쉬 업데이트 중" | |
-#: ../app/core/gimpbrush-load.c:178 | |
+#: ../app/core/gimpbrush-load.c:180 | |
#, c-format | |
msgid "Could not read %d byte from '%s': %s" | |
msgid_plural "Could not read %d bytes from '%s': %s" | |
msgstr[0] "\t\t%d바이트를 '%s'에서 읽을 수 없습니다: %s" | |
-#: ../app/core/gimpbrush-load.c:200 | |
+#: ../app/core/gimpbrush-load.c:202 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': Width = 0." | |
msgstr "붓 파일 '%s'에 치명적인 해석 오류: Width = 0." | |
-#: ../app/core/gimpbrush-load.c:209 | |
+#: ../app/core/gimpbrush-load.c:211 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': Height = 0." | |
msgstr "붓 파일 '%s'에 치명적인 해석 오류: Height = 0." | |
-#: ../app/core/gimpbrush-load.c:218 | |
+#: ../app/core/gimpbrush-load.c:220 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': Bytes = 0." | |
msgstr "붓 파일 '%s'에 치명적인 해석 오류: Bytes = 0." | |
-#: ../app/core/gimpbrush-load.c:242 | |
+#: ../app/core/gimpbrush-load.c:244 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': Unknown depth %d." | |
msgstr "붓 파일 '%s'에 치명적인 해석 오류: 알 수 없는 깊이 %d." | |
-#: ../app/core/gimpbrush-load.c:255 | |
+#: ../app/core/gimpbrush-load.c:257 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': Unknown version %d." | |
msgstr "붓 파일 '%s'에 쳐명적인 해석 오류: 알 수 없는 버전 %d." | |
-#: ../app/core/gimpbrush-load.c:271 ../app/core/gimpbrush-load.c:391 | |
-#: ../app/core/gimpbrush-load.c:725 | |
+#: ../app/core/gimpbrush-load.c:273 ../app/core/gimpbrush-load.c:393 | |
+#: ../app/core/gimpbrush-load.c:727 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': File appears truncated." | |
msgstr "붓 파일 '%s'에 치명적인 해석 오류: 파일이 잘린 것 같습니다." | |
-#: ../app/core/gimpbrush-load.c:279 ../app/core/gimpbrushgenerated-load.c:128 | |
+#: ../app/core/gimpbrush-load.c:281 ../app/core/gimpbrushgenerated-load.c:128 | |
#: ../app/core/gimpbrushpipe-load.c:97 | |
#, c-format | |
msgid "Invalid UTF-8 string in brush file '%s'." | |
msgstr "붓 파일 '%s'에 잘못된 UTF-8 문자열이 있습니다." | |
-#: ../app/core/gimpbrush-load.c:286 ../app/core/gimppattern-load.c:146 | |
+#: ../app/core/gimpbrush-load.c:288 ../app/core/gimppattern-load.c:146 | |
#: ../app/dialogs/template-options-dialog.c:83 | |
#: ../app/tools/gimpvectortool.c:317 | |
msgid "Unnamed" | |
msgstr "이름없음" | |
-#: ../app/core/gimpbrush-load.c:380 | |
+#: ../app/core/gimpbrush-load.c:382 | |
#, c-format | |
msgid "" | |
"Fatal parse error in brush file '%s': Unsupported brush depth %d\n" | |
@@ -7456,13 +7456,13 @@ msgstr "" | |
"붓 파일 '%s'에 치명적인 해석 오류: 지원되지 않는 심도 %d\n" | |
"김프 붓은 GRAY나 RGBA여야 합니다." | |
-#: ../app/core/gimpbrush-load.c:452 | |
+#: ../app/core/gimpbrush-load.c:454 ../app/core/gimpbrush-load.c:854 | |
#, c-format | |
msgid "" | |
"Fatal parse error in brush file '%s': unable to decode abr format version %d." | |
msgstr "붓 파일 '%s'에 치명적인 해석 오류: 알 수 없는 버전 %d." | |
-#: ../app/core/gimpbrush-load.c:619 | |
+#: ../app/core/gimpbrush-load.c:621 | |
#, c-format | |
msgid "Fatal parse error in brush file '%s': Wide brushes are not supported." | |
msgstr "" | |
@@ -7778,7 +7778,7 @@ msgid "" | |
"\n" | |
"%s" | |
msgstr "" | |
-"데이터 읽기 실패:\n" | |
+"데이터를 불러오는데 실패했습니다:\n" | |
"\n" | |
"%s" | |
@@ -8295,7 +8295,7 @@ msgstr "미리보기를 만들려면 클릭하십시오." | |
#: ../app/core/gimpimagefile.c:743 | |
msgid "Loading preview..." | |
-msgstr "미리보기 읽는 중..." | |
+msgstr "미리보기 불러오는 중..." | |
#: ../app/core/gimpimagefile.c:749 | |
msgid "Preview is out of date" | |
@@ -8348,10 +8348,8 @@ msgid "Set Item Exclusive Visible" | |
msgstr "항목을 배타적으로 표시" | |
#: ../app/core/gimpitem-exclusive.c:172 | |
-#, fuzzy | |
-#| msgid "Set Item Exclusive Visible" | |
msgid "Set Item Exclusive Linked" | |
-msgstr "항목을 배타적으로 표시" | |
+msgstr "항목을 배타적으로 연결한 것으로 설정" | |
#: ../app/core/gimplayer-floating-sel.c:95 | |
msgctxt "undo-type" | |
@@ -8678,7 +8676,7 @@ msgstr "따라 그리기할 선택이 없습니다." | |
#: ../app/core/gimpselection.c:670 | |
msgid "Unable to cut or copy because the selected region is empty." | |
-msgstr "선택한 영역이 비어있으므로, 잘라넣기나 복사를 할 수 없습니다." | |
+msgstr "선택한 영역이 비어있으므로, 잘라내기나 복사를 할 수 없습니다." | |
#: ../app/core/gimpselection.c:847 | |
msgid "Cannot float selection because the selected region is empty." | |
@@ -10546,37 +10544,37 @@ msgstr[0] "이미지를 저장하지 않을 경우, %d 분 이전에 바뀐 내 | |
msgid "The image has been exported to '%s'." | |
msgstr "이미지가 '%s'(으)로 내보내졌습니다." | |
-#: ../app/display/gimpdisplayshell-dnd.c:232 | |
-#: ../app/display/gimpdisplayshell-dnd.c:635 | |
-#: ../app/display/gimpdisplayshell-dnd.c:693 | |
+#: ../app/display/gimpdisplayshell-dnd.c:246 | |
+#: ../app/display/gimpdisplayshell-dnd.c:649 | |
+#: ../app/display/gimpdisplayshell-dnd.c:707 | |
msgid "Drop New Layer" | |
msgstr "새 레이어 끌어서-놓기" | |
-#: ../app/display/gimpdisplayshell-dnd.c:275 | |
+#: ../app/display/gimpdisplayshell-dnd.c:289 | |
msgid "Drop New Path" | |
msgstr "새 경로 끌어서-놓기" | |
-#: ../app/display/gimpdisplayshell-dnd.c:347 | |
-#: ../app/display/gimpdisplayshell-dnd.c:449 ../app/tools/gimpblendtool.c:173 | |
-#: ../app/tools/gimpbucketfilltool.c:136 ../app/tools/gimpimagemaptool.c:279 | |
+#: ../app/display/gimpdisplayshell-dnd.c:361 | |
+#: ../app/display/gimpdisplayshell-dnd.c:463 ../app/tools/gimpblendtool.c:173 | |
+#: ../app/tools/gimpbucketfilltool.c:136 ../app/tools/gimpimagemaptool.c:280 | |
msgid "Cannot modify the pixels of layer groups." | |
msgstr "레이어 그룹의 픽셀을 바꿀 수 없습니다." | |
-#: ../app/display/gimpdisplayshell-dnd.c:355 | |
-#: ../app/display/gimpdisplayshell-dnd.c:457 ../app/tools/gimpblendtool.c:180 | |
+#: ../app/display/gimpdisplayshell-dnd.c:369 | |
+#: ../app/display/gimpdisplayshell-dnd.c:471 ../app/tools/gimpblendtool.c:180 | |
#: ../app/tools/gimpbucketfilltool.c:143 ../app/tools/gimpcroptool.c:325 | |
-#: ../app/tools/gimpimagemaptool.c:286 ../app/tools/gimppainttool.c:266 | |
-#: ../app/tools/gimptransformtool.c:246 ../app/tools/gimptransformtool.c:1066 | |
+#: ../app/tools/gimpimagemaptool.c:287 ../app/tools/gimppainttool.c:266 | |
+#: ../app/tools/gimptransformtool.c:247 ../app/tools/gimptransformtool.c:1067 | |
msgid "The active layer's pixels are locked." | |
msgstr "활성 레이어의 픽셀이 잠겼습니다." | |
-#: ../app/display/gimpdisplayshell-dnd.c:535 | |
+#: ../app/display/gimpdisplayshell-dnd.c:549 | |
#: ../app/widgets/gimplayertreeview.c:725 | |
msgid "Drop layers" | |
msgstr "레이어 삭제" | |
-#: ../app/display/gimpdisplayshell-dnd.c:668 | |
-#: ../app/display/gimpdisplayshell-dnd.c:685 | |
+#: ../app/display/gimpdisplayshell-dnd.c:682 | |
+#: ../app/display/gimpdisplayshell-dnd.c:699 | |
#: ../app/widgets/gimplayertreeview.c:802 ../app/widgets/gimptoolbox-dnd.c:266 | |
msgid "Dropped Buffer" | |
msgstr "버퍼 삭제" | |
@@ -11863,7 +11861,7 @@ msgctxt "command" | |
msgid "Select by Color" | |
msgstr "색상으로 선택" | |
-#: ../app/tools/gimpcagetool.c:152 ../app/tools/gimpcagetool.c:1154 | |
+#: ../app/tools/gimpcagetool.c:152 ../app/tools/gimpcagetool.c:1155 | |
msgid "Cage Transform" | |
msgstr "Cage 변형" | |
@@ -11875,15 +11873,15 @@ msgstr "골조 변형: 골조로 선택영역 변형" | |
msgid "_Cage Transform" | |
msgstr "_Cage 변형" | |
-#: ../app/tools/gimpcagetool.c:351 | |
+#: ../app/tools/gimpcagetool.c:352 | |
msgid "Press ENTER to commit the transform" | |
msgstr "변형을 승인하려면 엔터를 누르십시오." | |
-#: ../app/tools/gimpcagetool.c:1095 | |
+#: ../app/tools/gimpcagetool.c:1096 | |
msgid "Computing Cage Coefficients" | |
msgstr "Cage 계수 계산" | |
-#: ../app/tools/gimpcagetool.c:1272 | |
+#: ../app/tools/gimpcagetool.c:1273 | |
msgid "Cage transform" | |
msgstr "Cage 변형" | |
@@ -12540,19 +12538,19 @@ msgstr "물체 선택영역 도구: 물체를 포함한 영역을 선택합니 | |
msgid "F_oreground Select" | |
msgstr "전경 선택(_O)" | |
-#: ../app/tools/gimpforegroundselecttool.c:302 | |
+#: ../app/tools/gimpforegroundselecttool.c:304 | |
msgid "Add more strokes or press Enter to accept the selection" | |
msgstr "스트로크를 추가하거나 엔터를 눌러 선택을 만드십시오." | |
-#: ../app/tools/gimpforegroundselecttool.c:304 | |
+#: ../app/tools/gimpforegroundselecttool.c:306 | |
msgid "Mark foreground by painting on the object to extract" | |
msgstr "추출할 물체를 칠해서 선택합니다." | |
-#: ../app/tools/gimpforegroundselecttool.c:309 | |
+#: ../app/tools/gimpforegroundselecttool.c:311 | |
msgid "Roughly outline the object to extract" | |
msgstr "추출할 물체 주변을 따라 선을 대강 긋습니다." | |
-#: ../app/tools/gimpforegroundselecttool.c:751 | |
+#: ../app/tools/gimpforegroundselecttool.c:753 | |
msgctxt "command" | |
msgid "Foreground Select" | |
msgstr "물체 선택" | |
@@ -12742,7 +12740,7 @@ msgstr "프리셋(_S):" | |
msgid "Settings saved to '%s'" | |
msgstr "'%s'(으)로 설정이 저장되었습니다." | |
-#: ../app/tools/gimpimagemaptool.c:362 | |
+#: ../app/tools/gimpimagemaptool.c:363 | |
msgid "_Preview" | |
msgstr "미리보기(_P)" | |
@@ -12811,32 +12809,32 @@ msgstr "" | |
msgid "Intelligent _Scissors" | |
msgstr "똑똑한 가위(_S)" | |
-#: ../app/tools/gimpiscissorstool.c:900 ../app/tools/gimpmeasuretool.c:605 | |
+#: ../app/tools/gimpiscissorstool.c:902 ../app/tools/gimpmeasuretool.c:605 | |
msgid "Click-Drag to move this point" | |
msgstr "이 점을 이동시키려면 클릭 후 드래그하십시오." | |
-#: ../app/tools/gimpiscissorstool.c:902 ../app/tools/gimpiscissorstool.c:967 | |
+#: ../app/tools/gimpiscissorstool.c:904 ../app/tools/gimpiscissorstool.c:969 | |
#, c-format | |
msgid "%s: disable auto-snap" | |
msgstr "%s: 자동으로 당겨맞추기 사용안함" | |
-#: ../app/tools/gimpiscissorstool.c:919 | |
+#: ../app/tools/gimpiscissorstool.c:921 | |
msgid "Click to close the curve" | |
msgstr "곡선을 닫으려면 클릭하십시오." | |
-#: ../app/tools/gimpiscissorstool.c:925 | |
+#: ../app/tools/gimpiscissorstool.c:927 | |
msgid "Click to add a point on this segment" | |
msgstr "이 구역에 점을 추가하려면 클릭하십시오." | |
-#: ../app/tools/gimpiscissorstool.c:939 | |
+#: ../app/tools/gimpiscissorstool.c:941 | |
msgid "Click or press Enter to convert to a selection" | |
msgstr "선택으로 변환하려면 클릭하거나 엔터를 누르십시오." | |
-#: ../app/tools/gimpiscissorstool.c:949 | |
+#: ../app/tools/gimpiscissorstool.c:951 | |
msgid "Press Enter to convert to a selection" | |
msgstr "선택으로 변환하려면 엔터를 누르십시오." | |
-#: ../app/tools/gimpiscissorstool.c:964 | |
+#: ../app/tools/gimpiscissorstool.c:966 | |
msgid "Click or Click-Drag to add a point" | |
msgstr "지점을 추가하려면 클릭하거나 클릭 후 드래그하십시오." | |
@@ -13755,19 +13753,19 @@ msgstr "종횡비 유지 (%s)" | |
msgid "Keep the original aspect ratio" | |
msgstr "원본 종횡비 유지" | |
-#: ../app/tools/gimptransformtool.c:212 | |
+#: ../app/tools/gimptransformtool.c:213 | |
msgid "Transforming" | |
msgstr "변형 중" | |
-#: ../app/tools/gimptransformtool.c:1065 | |
+#: ../app/tools/gimptransformtool.c:1066 | |
msgid "There is no layer to transform." | |
msgstr "변형할 레이어가 없습니다." | |
-#: ../app/tools/gimptransformtool.c:1078 | |
+#: ../app/tools/gimptransformtool.c:1079 | |
msgid "There is no path to transform." | |
msgstr "변형할 경로가 없습니다." | |
-#: ../app/tools/gimptransformtool.c:1079 | |
+#: ../app/tools/gimptransformtool.c:1080 | |
msgid "The active path's strokes are locked." | |
msgstr "활성 레이어의 스트로크가 잠겨 있습니다." | |
@@ -14835,23 +14833,35 @@ msgstr "메시지는 stderr로 보내집니다." | |
msgid "%s Message" | |
msgstr "%s 메시지" | |
-#: ../app/widgets/gimpfiledialog.c:327 | |
+#: ../app/widgets/gimpfiledialog.c:330 | |
msgid "Automatically Detected" | |
msgstr "자동 검출" | |
-#: ../app/widgets/gimpfiledialog.c:344 | |
+#: ../app/widgets/gimpfiledialog.c:347 | |
msgid "By Extension" | |
msgstr "확장자로" | |
-#: ../app/widgets/gimpfiledialog.c:793 | |
+#: ../app/widgets/gimpfiledialog.c:798 | |
msgid "All files" | |
msgstr "모든 파일" | |
-#: ../app/widgets/gimpfiledialog.c:798 | |
+#: ../app/widgets/gimpfiledialog.c:803 | |
msgid "All images" | |
msgstr "모든 이미지" | |
-#: ../app/widgets/gimpfiledialog.c:974 | |
+#: ../app/widgets/gimpfiledialog.c:810 | |
+#, fuzzy | |
+#| msgid "All images" | |
+msgid "All XCF images" | |
+msgstr "모든 이미지" | |
+ | |
+#: ../app/widgets/gimpfiledialog.c:812 | |
+#, fuzzy | |
+#| msgid "All images" | |
+msgid "All export images" | |
+msgstr "모든 이미지" | |
+ | |
+#: ../app/widgets/gimpfiledialog.c:996 | |
#, c-format | |
msgid "Select File _Type (%s)" | |
msgstr "파일 유형 선택(_T) (%s)" | |
diff --git "a/q\033\033\033:q" "b/q\033\033\033:q" | |
new file mode 100644 | |
index 0000000..9b18cc4 | |
--- /dev/null | |
+++ "b/q\033\033\033:q" | |
@@ -0,0 +1,47 @@ | |
+[1mdiff --git a/app/dialogs/Makefile.am b/app/dialogs/Makefile.am[m | |
+[1mindex a76dc7e..3c2f649 100644[m | |
+[1m--- a/app/dialogs/Makefile.am[m | |
+[1m+++ b/app/dialogs/Makefile.am[m | |
+[36m@@ -20,11 +20,8 @@[m [mlibappdialogs_a_sources = \[m | |
+ dialogs.h \[m | |
+ dialogs-constructors.c \[m | |
+ dialogs-constructors.h \[m | |
+[31m- \[m | |
+ about-dialog.c \[m | |
+ about-dialog.h \[m | |
+[31m- tito-dialog.c \[m | |
+[31m- tito-dialog.h \[m | |
+ channel-options-dialog.c \[m | |
+ channel-options-dialog.h \[m | |
+ convert-type-dialog.c \[m | |
+[36m@@ -84,6 +81,8 @@[m [mlibappdialogs_a_sources = \[m | |
+ tips-dialog.h \[m | |
+ tips-parser.c \[m | |
+ tips-parser.h \[m | |
+[32m+[m [32mtito-dialog.c \[m | |
+[32m+[m [32mtito-dialog.h \[m | |
+ user-install-dialog.c \[m | |
+ user-install-dialog.h \[m | |
+ vectors-export-dialog.c \[m | |
+[1mdiff --git a/app/dialogs/tito-dialog.c b/app/dialogs/tito-dialog.c[m | |
+[1mindex e16bd1f..8cc9b50 100644[m | |
+[1m--- a/app/dialogs/tito-dialog.c[m | |
+[1m+++ b/app/dialogs/tito-dialog.c[m | |
+[36m@@ -566,7 +566,8 @@[m [mfuzzy_search ( gchar *string,[m | |
+ [m | |
+ if ( (remaining_string = strchr(string, key[0])) != NULL )[m | |
+ fuzzy_search( key+1, remaining_string+1 );[m | |
+[31m- return FALSE;[m | |
+[32m+[m[32m else[m | |
+[32m+[m[32m return FALSE;[m | |
+ }[m | |
+ [m | |
+ static gboolean[m | |
+[36m@@ -600,6 +601,7 @@[m [mtito_is_action_match ( GtkAction *action,[m | |
+ [m | |
+ if(strstr(label,key))[m | |
+ return TRUE;[m | |
+[32m+[m | |
+ if(fuzzy_search(label,key))[m | |
+ return TRUE;[m | |
+ [m |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment