![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/darktable.h"#include "gui/gdkkeys.h"#include "common/datetime.h"#include "common/debug.h"#include "common/image.h"#include "common/image_cache.h"#include "common/variables.h"#include "control/control.h"#include "control/jobs.h"#include "control/signal.h"#include "gui/gtk.h"#include "gui/gtkentry.h"#include "libs/lib.h"#include "views/view.h"#include <glib.h>#include <glib/gstdio.h>#include <limits.h>#include <stdlib.h>#include <string.h>
Include dependency graph for textnotes.c:Go to the source code of this file.
Data Structures | |
| struct | dt_lib_textnotes_t |
| struct | dt_textnotes_load_job_t |
| struct | dt_textnotes_load_result_t |
Typedefs | |
| typedef struct dt_lib_textnotes_t | dt_lib_textnotes_t |
| typedef struct dt_textnotes_load_job_t | dt_textnotes_load_job_t |
| typedef struct dt_textnotes_load_result_t | dt_textnotes_load_result_t |
Functions | |
| const char * | name (dt_lib_module_t *self) |
| const char ** | views (dt_lib_module_t *self) |
| uint32_t | container (dt_lib_module_t *self) |
| int | position () |
| static void | _save_now (dt_lib_module_t *self) |
| static void | _render_preview (dt_lib_textnotes_t *d, const char *text) |
| static void | _update_for_current_image (dt_lib_module_t *self) |
| static gboolean | _image_has_txt_flag (const int32_t imgid) |
| static gboolean | _set_image_paths (dt_lib_textnotes_t *d, const int32_t imgid) |
| static void | _clear_variables_cache (dt_lib_textnotes_t *d) |
| static gboolean | _textnotes_load_finish_idle (gpointer user_data) |
| static int32_t | _textnotes_load_job_run (dt_job_t *job) |
| static void | _textnotes_load_job_state (dt_job_t *job, dt_job_state_t state) |
| static void | _textnotes_load_job_cleanup (void *data) |
| static gchar * | _get_buffer_text (GtkTextBuffer *buffer) |
| static gchar * | _get_edit_text (dt_lib_textnotes_t *d) |
| static void | _set_edit_text (dt_lib_textnotes_t *d, const char *text) |
| void * | get_params (dt_lib_module_t *self, int *size) |
| int | set_params (dt_lib_module_t *self, const void *params, int size) |
| void | init_presets (dt_lib_module_t *self) |
| static int | _preview_text_window_width_px (dt_lib_textnotes_t *d) |
| static void | _render_preview_from_edit (dt_lib_textnotes_t *d) |
| static void | _preview_width_changed (GtkWidget *widget, GdkRectangle *allocation, gpointer user_data) |
| Re-render the preview when the panel-given width changes, so embedded images rescale to fit the available width instead of forcing their parents to grow. | |
| static void | _completion_hide (dt_lib_textnotes_t *d) |
| static gboolean | _completion_match (const char *item, const char *prefix) |
| static void | _completion_fill (dt_lib_textnotes_t *d, const char *prefix) |
| static gboolean | _completion_find_prefix (dt_lib_textnotes_t *d, GtkTextIter *cursor, GtkTextIter *start_iter, gchar **prefix_out) |
| static gboolean | _completion_apply_selected (dt_lib_module_t *self) |
| static void | _completion_update (dt_lib_module_t *self) |
| static gboolean | _completion_focus_out_idle (gpointer user_data) |
| static gboolean | _edit_key_press (GtkWidget *widget, GdkEventKey *event, dt_lib_module_t *self) |
| static gboolean | _edit_key_release (GtkWidget *widget, GdkEventKey *event, dt_lib_module_t *self) |
| static gboolean | _edit_button_release (GtkWidget *widget, GdkEventButton *event, dt_lib_module_t *self) |
| static void | _completion_row_activated (GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, dt_lib_module_t *self) |
| static void | _setup_completion (dt_lib_module_t *self, GtkWidget *textview) |
| static gboolean | _alloc_row_buffers (const int width, guchar **row_in, guchar **row_out) |
| static void | _free_row_buffers (guchar *row_in, guchar *row_out) |
| static void | _colorcorrect_row (cmsHTRANSFORM transform, guchar *src, const int width, const int n_channels, const gboolean has_alpha, guchar *row_in, guchar *row_out) |
| static void | _colorcorrect_pixbuf (GdkPixbuf *pixbuf) |
| static void | _toggle_mode (GtkToggleButton *button, dt_lib_module_t *self) |
| static void | _load_for_image (dt_lib_module_t *self, const int32_t imgid) |
| static gboolean | _refresh_preview_idle (gpointer user_data) |
| static void | _open_uri (const char *uri) |
| static gchar * | _expand_text_for_preview (dt_lib_textnotes_t *d, const char *source_text) |
| static void | _clear_mtime_label (dt_lib_textnotes_t *d) |
| static void | _update_mtime_label (dt_lib_module_t *self) |
| static void | _toggle_checklist_at_line (dt_lib_module_t *self, const int line_no) |
| static gboolean | _preview_button_press (GtkWidget *widget, GdkEventButton *event, dt_lib_module_t *self) |
| static void | _preview_map (GtkWidget *widget, dt_lib_module_t *self) |
| static void | _edit_map (GtkWidget *widget, dt_lib_module_t *self) |
| static gboolean | _initial_load_idle (gpointer user_data) |
| static void | _ensure_has_txt_flag (const int32_t imgid) |
| static char * | _text_sidecar_save_path (dt_lib_textnotes_t *d, const int32_t imgid) |
| static void | _save_and_render (dt_lib_module_t *self) |
| static gboolean | _save_timeout_cb (gpointer user_data) |
| static void | _textbuffer_changed (GtkTextBuffer *buffer, dt_lib_module_t *self) |
| static gboolean | _textview_focus_out (GtkWidget *widget, GdkEventFocus *event, dt_lib_module_t *self) |
| static void | _image_changed_callback (gpointer instance, gpointer user_data) |
| static void | _mouse_over_image_callback (gpointer instance, gpointer user_data) |
| void | gui_init (dt_lib_module_t *self) |
| void | gui_cleanup (dt_lib_module_t *self) |
| typedef struct dt_lib_textnotes_t dt_lib_textnotes_t |
| typedef struct dt_textnotes_load_job_t dt_textnotes_load_job_t |
| typedef struct dt_textnotes_load_result_t dt_textnotes_load_result_t |
|
static |
Definition at line 539 of file textnotes.c.
References dt_free, FALSE, TRUE, and width.
Referenced by _colorcorrect_pixbuf().
|
static |
Definition at line 1640 of file textnotes.c.
References d, FALSE, and IS_NULL_PTR.
Referenced by _load_for_image(), _textnotes_load_finish_idle(), and _update_mtime_label().
|
static |
Definition at line 1872 of file textnotes.c.
References d, dt_variables_params_destroy(), and IS_NULL_PTR.
Referenced by _load_for_image(), and gui_cleanup().
|
static |
Definition at line 588 of file textnotes.c.
References _alloc_row_buffers(), _colorcorrect_row(), _free_row_buffers(), darktable_t::color_profiles, darktable, dt_free, FALSE, height, i, IS_NULL_PTR, omp_get_max_threads, omp_get_thread_num, transform(), dt_colorspaces_t::transform_srgb_to_display, TRUE, width, and dt_colorspaces_t::xprofile_lock.
|
static |
Definition at line 560 of file textnotes.c.
References d, transform(), width, and x.
Referenced by _colorcorrect_pixbuf().
|
static |
Definition at line 350 of file textnotes.c.
References _completion_hide(), COMPL_VARNAME, d, dt_lib_module_t::data, dt_free, FALSE, IS_NULL_PTR, model, and TRUE.
Referenced by _completion_row_activated(), and _edit_key_press().
|
static |
Definition at line 289 of file textnotes.c.
References _completion_match(), COMPL_DESCRIPTION, COMPL_VARNAME, d, dt_gtkentry_get_default_path_compl_list(), IS_NULL_PTR, and completion_spec::varname.
Referenced by _completion_update().
|
static |
Definition at line 305 of file textnotes.c.
References d, dt_free, FALSE, IS_NULL_PTR, p, and TRUE.
Referenced by _completion_update().
|
static |
Definition at line 440 of file textnotes.c.
References _completion_hide(), _save_now(), d, dt_lib_module_t::data, and IS_NULL_PTR.
Referenced by _textview_focus_out().
|
static |
Definition at line 252 of file textnotes.c.
References d, and IS_NULL_PTR.
Referenced by _completion_apply_selected(), _completion_focus_out_idle(), _completion_update(), _edit_key_press(), and _toggle_mode().
|
static |
Definition at line 265 of file textnotes.c.
References dt_free, FALSE, IS_NULL_PTR, and TRUE.
Referenced by _completion_fill().
|
static |
Definition at line 501 of file textnotes.c.
References _completion_apply_selected(), and void().
Referenced by _setup_completion().
|
static |
Definition at line 379 of file textnotes.c.
References _completion_fill(), _completion_find_prefix(), _completion_hide(), d, dt_lib_module_t::data, dt_free, dt_gui_get_popup_relative_widget(), IS_NULL_PTR, model, TRUE, rect::width, rect::x, and rect::y.
Referenced by _edit_button_release(), _edit_key_release(), and _textbuffer_changed().
|
static |
Definition at line 493 of file textnotes.c.
References _completion_update(), FALSE, and void().
Referenced by gui_init().
|
static |
Definition at line 462 of file textnotes.c.
References _completion_apply_selected(), _completion_hide(), d, dt_lib_module_t::data, dt_keys_mainpad_alternatives(), FALSE, IS_NULL_PTR, key, TRUE, and void().
Referenced by gui_init().
|
static |
Definition at line 485 of file textnotes.c.
References _completion_update(), FALSE, and void().
Referenced by gui_init().
|
static |
Definition at line 1833 of file textnotes.c.
References _update_for_current_image().
Referenced by gui_init().
|
static |
Definition at line 1848 of file textnotes.c.
References darktable, dt_image_cache_get(), DT_IMAGE_CACHE_SAFE, dt_image_cache_write_release(), DT_IMAGE_HAS_TXT, dt_image_t::flags, darktable_t::image_cache, and IS_NULL_PTR.
Referenced by _save_and_render(), and _textnotes_load_finish_idle().
|
static |
Definition at line 703 of file textnotes.c.
References _set_image_paths(), d, dt_free, dt_variables_expand(), dt_variables_params_init(), dt_variables_params_t::escape_markup, FALSE, dt_variables_params_t::filename, dt_variables_params_t::imgid, IS_NULL_PTR, dt_variables_params_t::jobcode, dt_variables_params_t::sequence, and TRUE.
Referenced by _render_preview().
|
static |
Definition at line 554 of file textnotes.c.
References dt_free.
Referenced by _colorcorrect_pixbuf().
|
static |
Definition at line 133 of file textnotes.c.
References TRUE.
Referenced by _get_edit_text(), and _toggle_checklist_at_line().
|
static |
Definition at line 140 of file textnotes.c.
References _get_buffer_text(), d, and IS_NULL_PTR.
Referenced by _render_preview_from_edit(), _save_and_render(), _toggle_mode(), and get_params().
|
static |
Definition at line 2134 of file textnotes.c.
References _update_for_current_image().
Referenced by gui_cleanup(), and gui_init().
|
static |
Definition at line 1861 of file textnotes.c.
References darktable, dt_image_cache_get(), dt_image_cache_read_release(), DT_IMAGE_HAS_TXT, FALSE, dt_image_t::flags, darktable_t::image_cache, and IS_NULL_PTR.
Referenced by _load_for_image(), and _update_mtime_label().
|
static |
Definition at line 1838 of file textnotes.c.
References _update_for_current_image(), d, dt_lib_module_t::data, and IS_NULL_PTR.
Referenced by gui_init().
|
static |
Definition at line 2073 of file textnotes.c.
References _clear_mtime_label(), _clear_variables_cache(), _image_has_txt_flag(), _set_edit_text(), _text_sidecar_save_path(), _textnotes_load_job_cleanup(), _textnotes_load_job_run(), _textnotes_load_job_state(), darktable_t::control, d, darktable, dt_lib_module_t::data, dt_control_add_job(), dt_control_job_create(), dt_control_job_set_params(), dt_control_job_set_state_callback(), dt_free, DT_JOB_QUEUE_USER_BG, FALSE, IS_NULL_PTR, and TRUE.
Referenced by _update_for_current_image().
|
static |
Definition at line 2140 of file textnotes.c.
References _update_for_current_image().
Referenced by gui_cleanup(), and gui_init().
|
static |
Definition at line 686 of file textnotes.c.
References darktable, dt_control_log(), dt_ui_main_window(), error(), darktable_t::gui, IS_NULL_PTR, and dt_gui_gtk_t::ui.
Referenced by _preview_button_press().
|
static |
Definition at line 1739 of file textnotes.c.
References _open_uri(), _toggle_checklist_at_line(), FALSE, t, TRUE, and view().
Referenced by gui_init().
|
static |
Definition at line 1823 of file textnotes.c.
References _render_preview_from_edit(), d, dt_lib_module_t::data, IS_NULL_PTR, and void().
Referenced by gui_init().
|
static |
Definition at line 212 of file textnotes.c.
References d, and IS_NULL_PTR.
|
static |
Re-render the preview when the panel-given width changes, so embedded images rescale to fit the available width instead of forcing their parents to grow.
The handler is connected to the preview scrolled window, whose width is driven top-down by the panel (not by the rendered content), so it is a stable reference. We only re-render on a meaningful width change and never while a render is already running, which keeps this from looping (a re-render at an unchanged width produces the same layout, hence no further width change).
Definition at line 240 of file textnotes.c.
References _render_preview_from_edit(), ABS, d, dt_lib_module_t::data, DT_PIXEL_APPLY_DPI, and IS_NULL_PTR.
Referenced by gui_init().
|
static |
Definition at line 1810 of file textnotes.c.
References _render_preview_from_edit(), d, dt_lib_module_t::data, and IS_NULL_PTR.
|
static |
Definition at line 1453 of file textnotes.c.
References _expand_text_for_preview(), d, dt_free, dt_lib_gui_get_expanded(), FALSE, IS_NULL_PTR, t, and TRUE.
Referenced by _render_preview_from_edit(), _save_and_render(), _textnotes_load_finish_idle(), _toggle_checklist_at_line(), and _toggle_mode().
|
static |
Definition at line 223 of file textnotes.c.
References _get_edit_text(), _render_preview(), d, dt_free, and IS_NULL_PTR.
Referenced by _preview_map(), _preview_width_changed(), and _refresh_preview_idle().
|
static |
Definition at line 1952 of file textnotes.c.
References _ensure_has_txt_flag(), _get_edit_text(), _render_preview(), _update_mtime_label(), d, dt_lib_module_t::data, dt_control_log(), dt_free, error(), FALSE, and IS_NULL_PTR.
Referenced by _save_now(), and _save_timeout_cb().
|
static |
Definition at line 1987 of file textnotes.c.
References _save_and_render(), d, and dt_lib_module_t::data.
Referenced by _completion_focus_out_idle(), _update_for_current_image(), and set_params().
|
static |
Definition at line 1978 of file textnotes.c.
References _save_and_render(), d, and dt_lib_module_t::data.
Referenced by _textbuffer_changed().
|
static |
Definition at line 147 of file textnotes.c.
References d, FALSE, IS_NULL_PTR, and TRUE.
Referenced by _load_for_image(), _textnotes_load_finish_idle(), and set_params().
|
static |
Definition at line 1879 of file textnotes.c.
References d, dt_free, dt_image_full_path(), FALSE, IS_NULL_PTR, PATH_MAX, and TRUE.
Referenced by _expand_text_for_preview(), and _text_sidecar_save_path().
|
static |
Definition at line 510 of file textnotes.c.
References _completion_row_activated(), COMPL_DESCRIPTION, d, dt_lib_module_t::data, dt_gui_get_popup_relative_widget(), FALSE, and IS_NULL_PTR.
Referenced by gui_init().
|
static |
Definition at line 1907 of file textnotes.c.
References _set_image_paths(), d, dt_image_build_text_path_from_path(), and IS_NULL_PTR.
Referenced by _load_for_image().
|
static |
Definition at line 1998 of file textnotes.c.
References _completion_update(), _save_timeout_cb(), d, dt_lib_module_t::data, and TRUE.
Referenced by gui_init().
|
static |
Definition at line 2039 of file textnotes.c.
References _clear_mtime_label(), _ensure_has_txt_flag(), _render_preview(), _set_edit_text(), _toggle_mode(), _update_mtime_label(), cleanup(), d, dt_lib_module_t::data, dt_free, FALSE, IS_NULL_PTR, dt_textnotes_load_result_t::loaded, dt_textnotes_load_result_t::self, dt_textnotes_load_result_t::text, dt_textnotes_load_result_t::token, and TRUE.
Referenced by _textnotes_load_job_state().
Definition at line 1927 of file textnotes.c.
References dt_free, and IS_NULL_PTR.
Referenced by _load_for_image().
|
static |
Definition at line 1915 of file textnotes.c.
References dt_control_job_get_params(), IS_NULL_PTR, and TRUE.
Referenced by _load_for_image().
|
static |
Definition at line 1936 of file textnotes.c.
References _textnotes_load_finish_idle(), dt_control_job_get_params(), DT_JOB_STATE_FINISHED, IS_NULL_PTR, dt_textnotes_load_result_t::loaded, dt_textnotes_load_result_t::self, state, dt_textnotes_load_result_t::text, and dt_textnotes_load_result_t::token.
Referenced by _load_for_image().
|
static |
Definition at line 2015 of file textnotes.c.
References _completion_focus_out_idle(), d, dt_lib_module_t::data, FALSE, and void().
Referenced by gui_init().
|
static |
Definition at line 1684 of file textnotes.c.
References _get_buffer_text(), _render_preview(), _toggle_mode(), d, dt_lib_module_t::data, dt_free, FALSE, and TRUE.
Referenced by _preview_button_press().
|
static |
Definition at line 2023 of file textnotes.c.
References _completion_hide(), _get_edit_text(), _render_preview(), d, dt_lib_module_t::data, and dt_free.
Referenced by _textnotes_load_finish_idle(), _toggle_checklist_at_line(), and gui_init().
|
static |
Definition at line 2146 of file textnotes.c.
References _load_for_image(), _save_now(), d, dt_lib_module_t::data, dt_act_on_get_first_image(), dt_control_get_mouse_over_id(), dt_lib_gui_get_expanded(), and IS_NULL_PTR.
Referenced by _edit_map(), _image_changed_callback(), _initial_load_idle(), _mouse_over_image_callback(), and gui_init().
|
static |
Definition at line 1647 of file textnotes.c.
References _clear_mtime_label(), _image_has_txt_flag(), d, dt_lib_module_t::data, dt_datetime_gdatetime_to_local(), dt_free, dt_lib_gui_get_expanded(), FALSE, IS_NULL_PTR, and TRUE.
Referenced by _save_and_render(), and _textnotes_load_finish_idle().
| uint32_t container | ( | dt_lib_module_t * | self | ) |
Definition at line 95 of file textnotes.c.
References DT_UI_CONTAINER_PANEL_LEFT_CENTER.
| void * get_params | ( | dt_lib_module_t * | self, |
| int * | size | ||
| ) |
Definition at line 156 of file textnotes.c.
References _get_edit_text(), d, dt_lib_module_t::data, IS_NULL_PTR, and size.
| void gui_cleanup | ( | dt_lib_module_t * | self | ) |
Definition at line 2262 of file textnotes.c.
References _clear_variables_cache(), _image_changed_callback(), _mouse_over_image_callback(), d, darktable, dt_lib_module_t::data, DT_DEBUG_CONTROL_SIGNAL_DISCONNECT, dt_free, IS_NULL_PTR, and darktable_t::signals.
| void gui_init | ( | dt_lib_module_t * | self | ) |
Definition at line 2164 of file textnotes.c.
References _edit_button_release(), _edit_key_press(), _edit_key_release(), _edit_map(), _image_changed_callback(), _initial_load_idle(), _mouse_over_image_callback(), _preview_button_press(), _preview_map(), _preview_width_changed(), _setup_completion(), _textbuffer_changed(), _textview_focus_out(), _toggle_mode(), _update_for_current_image(), d, darktable, dt_lib_module_t::data, dt_accels_disconnect_on_text_input(), DT_DEBUG_CONTROL_SIGNAL_CONNECT, DT_GUI_BOX_SPACING, dt_gui_textview_set_padding(), DT_SIGNAL_DEVELOP_IMAGE_CHANGED, DT_SIGNAL_DEVELOP_INITIALIZE, DT_SIGNAL_MOUSE_OVER_IMAGE_CHANGE, DT_UI_RESIZE_STATIC, dt_ui_scroll_wrap(), dt_ui_scroll_wrap_get_scrolled_window(), FALSE, darktable_t::signals, TRUE, and dt_lib_module_t::widget.
| void init_presets | ( | dt_lib_module_t * | self | ) |
Definition at line 185 of file textnotes.c.
References dt_lib_presets_add(), dt_lib_module_t::plugin_name, and TRUE.
| const char * name | ( | dt_lib_module_t * | self | ) |
Definition at line 84 of file textnotes.c.
| int position | ( | ) |
Definition at line 100 of file textnotes.c.
| int set_params | ( | dt_lib_module_t * | self, |
| const void * | params, | ||
| int | size | ||
| ) |
Definition at line 169 of file textnotes.c.
References _save_now(), _set_edit_text(), d, dt_lib_module_t::data, dt_free, IS_NULL_PTR, size, and TRUE.
| const char ** views | ( | dt_lib_module_t * | self | ) |
Definition at line 89 of file textnotes.c.
References v.