commit 8aa5c43ade178e04f68a7aa1fe09de63cfb2225f from: Oliver Lowe date: Sun Aug 17 03:00:58 2025 UTC Remove more leftover filtering preferences And delete ruler... 1200 lines for a ruler commit - ae27debd60f27b29810b6fe92373bb4064c8ee0d commit + 8aa5c43ade178e04f68a7aa1fe09de63cfb2225f blob - e6c459b3a4eb0dbe3a9a660120d0f2ac9f248741 blob + adfcd26b87034443b83b0844479e66942ac82a18 --- src/compose.c +++ src/compose.c @@ -82,7 +82,6 @@ #include "codeconv.h" #include "utils.h" #include "gtkutils.h" -#include "gtkshruler.h" #include "socket.h" #include "alertpanel.h" #include "manage_window.h" @@ -370,9 +369,6 @@ static void compose_add_field_list ( Compose *compose, static void compose_notebook_size_alloc (GtkNotebook *notebook, GtkAllocation *allocation, GtkPaned *paned); -static gboolean compose_edit_size_alloc (GtkEditable *widget, - GtkAllocation *allocation, - GtkSHRuler *shruler); static void account_activated (GtkComboBox *optmenu, gpointer data); static void attach_selected (GtkTreeView *tree_view, @@ -458,8 +454,6 @@ static void compose_toggle_autowrap_cb (GtkToggleActio static void compose_toggle_autoindent_cb(GtkToggleAction *action, gpointer data); -static void compose_toggle_ruler_cb (GtkToggleAction *action, - gpointer data); static void compose_toggle_sign_cb (GtkToggleAction *action, gpointer data); static void compose_toggle_encrypt_cb (GtkToggleAction *action, @@ -685,7 +679,6 @@ static GtkToggleActionEntry compose_toggle_entries[] = {"Options/Sign", NULL, N_("Si_gn"), NULL, NULL, G_CALLBACK(compose_toggle_sign_cb), FALSE }, /* Toggle */ {"Options/Encrypt", NULL, N_("_Encrypt"), NULL, NULL, G_CALLBACK(compose_toggle_encrypt_cb), FALSE }, /* Toggle */ {"Options/RemoveReferences", NULL, N_("Remo_ve references"), NULL, NULL, G_CALLBACK(compose_toggle_remove_refs_cb), FALSE }, /* Toggle */ - {"Tools/ShowRuler", NULL, N_("Show _ruler"), NULL, NULL, G_CALLBACK(compose_toggle_ruler_cb), FALSE }, /* Toggle */ }; static GtkRadioActionEntry compose_radio_rm_entries[] = @@ -2494,7 +2487,6 @@ Compose *compose_redirect(PrefsAccount *account, MsgIn cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Message/ReplaceSig", FALSE); cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Edit", FALSE); cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Options", FALSE); - cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Tools/ShowRuler", FALSE); cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Tools/Actions", FALSE); if (compose->toolbar->sendl_btn) @@ -7526,8 +7518,6 @@ static Compose *compose_create(PrefsAccount *account, GtkWidget *paned; GtkWidget *edit_vbox; - GtkWidget *ruler_hbox; - GtkWidget *ruler; GtkWidget *scrolledwin; GtkWidget *text; GtkTextBuffer *buffer; @@ -7763,7 +7753,6 @@ static Compose *compose_create(PrefsAccount *account, /* phew. */ /* Tools menu */ - MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Tools", "ShowRuler", "Tools/ShowRuler", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Tools", "AddressBook", "Tools/AddressBook", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Tools", "Template", "Tools/Template", GTK_UI_MANAGER_MENU) MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Tools/Template", "PlaceHolder", "Tools/Template/PlaceHolder", GTK_UI_MANAGER_MENUITEM) @@ -7849,15 +7838,6 @@ static Compose *compose_create(PrefsAccount *account, gtk_box_pack_start(GTK_BOX(edit_vbox), subject_hbox, FALSE, FALSE, 0); - /* ruler */ - ruler_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); - gtk_box_pack_start(GTK_BOX(edit_vbox), ruler_hbox, FALSE, FALSE, 0); - - ruler = gtk_shruler_new(GTK_ORIENTATION_HORIZONTAL); - gtk_shruler_set_range(GTK_SHRULER(ruler), 0.0, 100.0, 1.0); - gtk_box_pack_start(GTK_BOX(ruler_hbox), ruler, TRUE, TRUE, - BORDER_WIDTH); - /* text widget */ scrolledwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin), @@ -7879,9 +7859,6 @@ static Compose *compose_create(PrefsAccount *account, gtk_text_buffer_add_selection_clipboard(buffer, clipboard); gtk_container_add(GTK_CONTAINER(scrolledwin), text); - g_signal_connect_after(G_OBJECT(text), "size_allocate", - G_CALLBACK(compose_edit_size_alloc), - ruler); g_signal_connect(G_OBJECT(buffer), "changed", G_CALLBACK(compose_changed_cb), compose); g_signal_connect(G_OBJECT(text), "grab_focus", @@ -7971,8 +7948,6 @@ static Compose *compose_create(PrefsAccount *account, compose->notebook = notebook; compose->edit_vbox = edit_vbox; - compose->ruler_hbox = ruler_hbox; - compose->ruler = ruler; compose->scrolledwin = scrolledwin; compose->text = text; @@ -8097,11 +8072,6 @@ static Compose *compose_create(PrefsAccount *account, compose_list = g_list_append(compose_list, compose); - if (!prefs_common.show_ruler) - gtk_widget_hide(ruler_hbox); - - cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Tools/ShowRuler", prefs_common.show_ruler); - compose_set_out_encoding(compose); /* Actions menu */ @@ -9521,7 +9491,6 @@ static char *ext_editor_menu_entries[] = { #if USE_ENCHANT "Menu/Spelling", #endif - "Menu/Tools/ShowRuler", "Menu/Tools/Actions", NULL }; @@ -9542,8 +9511,6 @@ static void compose_set_ext_editor_sensitive(Compose * if (compose->exteditor_socket) gtk_widget_hide(compose->exteditor_socket); gtk_widget_show(compose->scrolledwin); - if (prefs_common.show_ruler) - gtk_widget_show(compose->ruler_hbox); /* Fix the focus, as it doesn't go anywhere when the * socket is hidden or destroyed */ gtk_widget_child_focus(compose->window, GTK_DIR_TAB_BACKWARD); @@ -9554,7 +9521,6 @@ static void compose_set_ext_editor_sensitive(Compose * if (gtk_widget_is_focus(compose->text)) gtk_widget_child_focus(compose->window, GTK_DIR_TAB_BACKWARD); gtk_widget_hide(compose->scrolledwin); - gtk_widget_hide(compose->ruler_hbox); gtk_widget_show(compose->exteditor_socket); } } else { @@ -9662,31 +9628,6 @@ static void compose_notebook_size_alloc(GtkNotebook *n prefs_common.compose_notebook_height = gtk_paned_get_position(paned); } -/* compose_edit_size_alloc() - called when resized. don't know whether Gtk - * includes "non-client" (windows-izm) in calculation, so this calculation - * may not be accurate. - */ -static gboolean compose_edit_size_alloc(GtkEditable *widget, - GtkAllocation *allocation, - GtkSHRuler *shruler) -{ - if (prefs_common.show_ruler) { - gint char_width = 0, char_height = 0; - gint line_width_in_chars; - - gtkut_get_font_size(GTK_WIDGET(widget), - &char_width, &char_height); - line_width_in_chars = - (allocation->width - allocation->x) / char_width; - - /* got the maximum */ - gtk_shruler_set_range(GTK_SHRULER(shruler), - 0.0, line_width_in_chars, 0); - } - - return TRUE; -} - typedef struct { gchar *header; gchar *entry; @@ -11253,20 +11194,6 @@ static void compose_apply_folder_privacy_settings(Comp } } -static void compose_toggle_ruler_cb(GtkToggleAction *action, gpointer data) -{ - Compose *compose = (Compose *)data; - - if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) { - gtk_widget_show(compose->ruler_hbox); - prefs_common.show_ruler = TRUE; - } else { - gtk_widget_hide(compose->ruler_hbox); - gtk_widget_queue_resize(compose->edit_vbox); - prefs_common.show_ruler = FALSE; - } -} - static void compose_attach_drag_received_cb (GtkWidget *widget, GdkDragContext *context, gint x, blob - 367e40fbdafcc092ee44adc9d152bb156081d216 blob + 565d444ccbf4b1374714b0be94d815509543d97d --- src/compose.h +++ src/compose.h @@ -143,8 +143,6 @@ struct _Compose /* Textedit */ GtkWidget *edit_vbox; - GtkWidget *ruler_hbox; - GtkWidget *ruler; GtkWidget *scrolledwin; GtkWidget *text; GtkWidget *from_name; blob - b77e0e45ce6a726d0a93cc581d8f912875d2feae blob + d15f62336d67bfc15c132b150edf423e80be335d --- src/folderutils.c +++ src/folderutils.c @@ -22,7 +22,6 @@ #include #include "utils.h" -#include "prefs_common.h" #include "folderutils.h" #include "prefs_account.h" #include "account.h" @@ -178,8 +177,6 @@ static gboolean folderutils_mark_all_read_node_func(GN { if (node) { FolderItem *sub_item = (FolderItem *) node->data; - if (prefs_common.run_processingrules_before_mark_all) - folderview_run_processing(sub_item); folderutils_mark_all_read(sub_item, (gboolean) GPOINTER_TO_INT(data)); } return(FALSE); blob - 31b72c81a9118984569e47377f8b1e9c7451a45c blob + 1c7af9df07afe91991da94997d3c9c20864bc675 --- src/folderview.c +++ src/folderview.c @@ -184,8 +184,6 @@ static void folderview_send_queue_cb (GtkAction *acti static void folderview_search_cb (GtkAction *action, gpointer data); -static void folderview_run_processing_cb(GtkAction *action, - gpointer data); static void folderview_startup_folder_cb(GtkAction *action, gpointer data); @@ -228,7 +226,6 @@ static gboolean folderview_update_folder (gpointer gpointer userdata); static gboolean folderview_update_item_claws (gpointer source, gpointer data); -static void folderview_processing_cb(GtkAction *action, gpointer data); static void folderview_set_sens_and_popup_menu(FolderView *folderview, gint row, GdkEventButton *event); static void folderview_header_set_displayed_columns_cb(GtkAction *gaction, @@ -247,11 +244,9 @@ static GtkActionEntry folderview_common_popup_entries[ {"FolderViewPopup/MarkAllReadRec", NULL, N_("Mark all read recursi_vely"), NULL, NULL, G_CALLBACK(mark_all_read_recursive_cb) }, {"FolderViewPopup/MarkAllUnreadRec", NULL, N_("Mark all unread recursi_vely"), NULL, NULL, G_CALLBACK(mark_all_unread_recursive_cb) }, {"FolderViewPopup/---", NULL, "---", NULL, NULL , NULL}, - {"FolderViewPopup/RunProcessing", NULL, N_("R_un processing rules"), NULL, NULL, G_CALLBACK(folderview_run_processing_cb) }, {"FolderViewPopup/SearchFolder", NULL, N_("_Search folder..."), NULL, NULL, G_CALLBACK(folderview_search_cb) }, {"FolderViewPopup/OpenFolder", NULL, N_("Open on start-up"), NULL, NULL, G_CALLBACK(folderview_startup_folder_cb) }, {"FolderViewPopup/Properties", NULL, N_("_Properties..."), NULL, NULL, G_CALLBACK(folderview_property_cb) }, - {"FolderViewPopup/Processing", NULL, N_("Process_ing..."), NULL, NULL, G_CALLBACK(folderview_processing_cb) }, {"FolderViewPopup/EmptyTrash", NULL, N_("Empty _trash..."), NULL, NULL, G_CALLBACK(folderview_empty_trash_cb) }, {"FolderViewPopup/SendQueue", NULL, N_("Send _queue..."), NULL, NULL, G_CALLBACK(folderview_send_queue_cb) }, @@ -884,8 +879,6 @@ static void mark_all_read_unread_handler(GtkAction *ac if (recursive) folderutils_mark_all_read_recursive(item, TRUE); else { - if (prefs_common.run_processingrules_before_mark_all) - folderview_run_processing(item); folderutils_mark_all_read(item, TRUE); } } else { @@ -893,8 +886,6 @@ static void mark_all_read_unread_handler(GtkAction *ac folderutils_mark_all_read_recursive(item, FALSE); else { folderutils_mark_all_read(item, FALSE); - if (prefs_common.run_processingrules_before_mark_all) - folderview_run_processing(item); } } if (folderview->summaryview->folder_item != item && !recursive) @@ -1162,11 +1153,6 @@ gint folderview_check_new(Folder *folder) if (folder && folder != item->folder) continue; if (!folder && !FOLDER_IS_LOCAL(item->folder)) continue; if (!item->prefs->newmailcheck) continue; - if (item->processing_pending == TRUE) { - debug_print("skipping %s, processing pending\n", - item->path ? item->path : item->name); - continue; - } if (item->scanning != ITEM_NOT_SCANNING) { debug_print("skipping %s, scanning\n", item->path ? item->path : item->name); @@ -1187,8 +1173,7 @@ gint folderview_check_new(Folder *folder) if (item->folder->klass->scan_required && (item->folder->klass->scan_required(item->folder, item) || item->folder->inbox == item || - item->opened == TRUE || - item->processing_pending == TRUE)) { + item->opened == TRUE )) { if (folder_item_scan(item) < 0) { if (folder) { if (FOLDER_TYPE(item->folder) == F_NEWS || FOLDER_IS_LOCAL(folder)) { @@ -1938,11 +1923,9 @@ static void folderview_set_sens_and_popup_menu(FolderV MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "MarkAllReadRec", "FolderViewPopup/MarkAllReadRec", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "MarkAllUnreadRec", "FolderViewPopup/MarkAllUnreadRec", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Separator1", "FolderViewPopup/---", GTK_UI_MANAGER_SEPARATOR) - MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "RunProcessing", "FolderViewPopup/RunProcessing", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "SearchFolder", "FolderViewPopup/SearchFolder", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "OpenFolder", "FolderViewPopup/OpenFolder", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Properties", "FolderViewPopup/Properties", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Processing", "FolderViewPopup/Processing", GTK_UI_MANAGER_MENUITEM) if (fpopup->set_sensitivity != NULL) fpopup->set_sensitivity(ui_manager, item); @@ -1976,11 +1959,6 @@ static void folderview_set_sens_and_popup_menu(FolderV folderview->selected == folderview->opened); SET_SENS("FolderViewPopup/Properties", TRUE); - SET_SENS("FolderViewPopup/RunProcessing", item->prefs->processing && - item->total_msgs >= 1 && !item->processing_pending); - SET_SENS("FolderViewPopup/Processing", item->node->parent != NULL && - !item->no_select && !item->processing_pending); - if (item->node->parent != NULL) { gchar *id = folder_item_get_identifier(item); SET_SENS("FolderViewPopup/OpenFolder", !prefs_common.goto_folder_on_startup @@ -2561,25 +2539,6 @@ static void folderview_startup_folder_cb(GtkAction *ac prefs_common.goto_folder_on_startup = prefs_common.startup_folder? TRUE : FALSE; } -static void folderview_run_processing_cb(GtkAction *action, gpointer data) -{ - FolderView *folderview = (FolderView *)data; - FolderItem *item; - - if (!folderview->selected) return; - - item = folderview_get_selected_item(folderview); - - folderview_run_processing(item); -} - -void folderview_run_processing(FolderItem *item) -{ - cm_return_if_fail(item != NULL); - cm_return_if_fail(item->folder != NULL); - item->processing_pending = FALSE; -} - static void folderview_property_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; @@ -2721,12 +2680,6 @@ static gint folderview_clist_compare(GtkCMCList *clist return g_utf8_collate(item1->name, item2->name); } -static void folderview_processing_cb(GtkAction *action, gpointer data) -{ - fprintf(stderr, "delete folderview_processing_cb\n"); - return; -} - void folderview_set_target_folder_color(GdkRGBA color_op) { GList *list; blob - 96b2f5a6be410813c4049267a96b5b7f144fd619 blob + dc7ec56b1814f5895be45dac69f06be45b5b2c42 --- src/gtk/Makefile.am +++ src/gtk/Makefile.am @@ -21,7 +21,6 @@ libclawsgtk_la_SOURCES = \ gtkcmclist.c \ gtksctree.c \ gtkunit.c \ - gtkshruler.c \ gtkutils.c \ gtkvscrollbutton.c \ icon_legend.c \ @@ -62,8 +61,7 @@ clawsgtkinclude_HEADERS = \ claws-marshal.h \ gtkcmctree.h \ gtkcmclist.h \ - gtksctree.h \ - gtkshruler.h + gtksctree.h AM_CPPFLAGS = \ -I$(srcdir)/../common \ blob - c1866a1a56d9cb76dc76e24c5b01b84d9e88efb1 (mode 644) blob + /dev/null --- src/gtk/gtkshruler.c +++ /dev/null @@ -1,1048 +0,0 @@ -/* LIBGTK - The GTK Library - * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball - * - * This library is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see - * . - */ - -#include "config.h" -#include "claws-features.h" - -#include -#include - -#include - -#include "gtkutils.h" -#include "gtkshruler.h" -#include "gtkunit.h" - -#define ROUND(x) ((int) ((x) + 0.5)) - -/** - * SECTION: gimpparam - * @title: gimpparam - * @short_description: Definitions of useful #GParamFlags. - * - * Definitions of useful #GParamFlags. - **/ - - -/** - * GTK_PARAM_STATIC_STRINGS: - * - * Since: GTK 2.4 - **/ -#define GTK_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | \ - G_PARAM_STATIC_NICK | \ - G_PARAM_STATIC_BLURB) - -/** - * GTK_PARAM_READABLE: - * - * Since: GTK 2.4 - **/ -#define GTK_PARAM_READABLE (G_PARAM_READABLE | \ - GTK_PARAM_STATIC_STRINGS) - -/** - * GTK_PARAM_WRITABLE: - * - * Since: GTK 2.4 - **/ -#define GTK_PARAM_WRITABLE (G_PARAM_WRITABLE | \ - GTK_PARAM_STATIC_STRINGS) - -/** - * GTK_PARAM_READWRITE: - * - * Since: GTK 2.4 - **/ -#define GTK_PARAM_READWRITE (G_PARAM_READWRITE | \ - GTK_PARAM_STATIC_STRINGS) - - -/** - * SECTION: gimpruler - * @title: GtkSHRuler - * @short_description: A ruler widget with configurable unit and orientation. - * - * A ruler widget with configurable unit and orientation. - **/ - - -#define DEFAULT_RULER_FONT_SCALE PANGO_SCALE_SMALL -#define MINIMUM_INCR 5 - - -enum -{ - PROP_0, - PROP_ORIENTATION, - PROP_UNIT, - PROP_LOWER, - PROP_UPPER, - PROP_POSITION, - PROP_MAX_SIZE -}; - - -/* All distances below are in 1/72nd's of an inch. (According to - * Adobe that's a point, but points are really 1/72.27 in.) - */ -typedef struct -{ - GtkOrientation orientation; - GtkCMUnit unit; - gdouble lower; - gdouble upper; - gdouble position; - gdouble max_size; - - GdkWindow *input_window; - cairo_surface_t *backing_store; - PangoLayout *layout; - gdouble font_scale; - - gint xsrc; - gint ysrc; -} GtkSHRulerPrivate; - -#define GTK_SHRULER_GET_PRIVATE(ruler) \ - gtk_shruler_get_instance_private((GtkSHRuler *) ruler) - - -static const struct -{ - const gdouble ruler_scale[16]; - const gint subdivide[3]; -} ruler_metric = -{ - { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000, 100000 }, - { 1, 5, 10 } -}; - - -static void gtk_shruler_dispose (GObject *object); -static void gtk_shruler_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_shruler_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); - -static void gtk_shruler_realize (GtkWidget *widget); -static void gtk_shruler_unrealize (GtkWidget *widget); -static void gtk_shruler_map (GtkWidget *widget); -static void gtk_shruler_unmap (GtkWidget *widget); -static void gtk_shruler_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_shruler_get_preferred_height (GtkWidget *widget, - gint *minimal_height, - gint *natural_height); -static void gtk_shruler_get_preferred_width (GtkWidget *widget, - gint *minimal_width, - gint *natural_width); -static void gtk_shruler_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_shruler_style_set (GtkWidget *widget, - GtkStyle *prev_style); -static gboolean gtk_shruler_motion_notify (GtkWidget *widget, - GdkEventMotion *event); -static gboolean gtk_shruler_expose (GtkWidget *widget, - cairo_t *cr); - -static void gtk_shruler_draw_ticks (GtkSHRuler *ruler); -static void gtk_shruler_make_pixmap (GtkSHRuler *ruler); - -static PangoLayout * gtk_shruler_get_layout (GtkWidget *widget, - const gchar *text); - -G_DEFINE_TYPE_WITH_CODE (GtkSHRuler, gtk_shruler, GTK_TYPE_WIDGET, - G_ADD_PRIVATE(GtkSHRuler)) - -#define parent_class gtk_shruler_parent_class - - -static void -gtk_shruler_class_init (GtkSHRulerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - - object_class->dispose = gtk_shruler_dispose; - object_class->set_property = gtk_shruler_set_property; - object_class->get_property = gtk_shruler_get_property; - - widget_class->realize = gtk_shruler_realize; - widget_class->unrealize = gtk_shruler_unrealize; - widget_class->map = gtk_shruler_map; - widget_class->unmap = gtk_shruler_unmap; - widget_class->size_allocate = gtk_shruler_size_allocate; - widget_class->get_preferred_width = gtk_shruler_get_preferred_width; - widget_class->get_preferred_height = gtk_shruler_get_preferred_height; - widget_class->style_set = gtk_shruler_style_set; - widget_class->motion_notify_event = gtk_shruler_motion_notify; - widget_class->draw = gtk_shruler_expose; - - g_object_class_install_property (object_class, - PROP_ORIENTATION, - g_param_spec_enum ("orientation", - "Orientation", - "The orientation of the ruler", - GTK_TYPE_ORIENTATION, - GTK_ORIENTATION_HORIZONTAL, - GTK_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_LOWER, - gtk_param_spec_unit ("unit", - "Unit", - "Unit of ruler", - TRUE, TRUE, - CM_UNIT_PIXEL, - GTK_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_LOWER, - g_param_spec_double ("lower", - "Lower", - "Lower limit of ruler", - -G_MAXDOUBLE, - G_MAXDOUBLE, - 0.0, - GTK_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_UPPER, - g_param_spec_double ("upper", - "Upper", - "Upper limit of ruler", - -G_MAXDOUBLE, - G_MAXDOUBLE, - 0.0, - GTK_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_POSITION, - g_param_spec_double ("position", - "Position", - "Position of mark on the ruler", - -G_MAXDOUBLE, - G_MAXDOUBLE, - 0.0, - GTK_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_MAX_SIZE, - g_param_spec_double ("max-size", - "Max Size", - "Maximum size of the ruler", - -G_MAXDOUBLE, - G_MAXDOUBLE, - 0.0, - GTK_PARAM_READWRITE)); - - gtk_widget_class_install_style_property (widget_class, - g_param_spec_double ("font-scale", - NULL, NULL, - 0.0, - G_MAXDOUBLE, - DEFAULT_RULER_FONT_SCALE, - GTK_PARAM_READABLE)); -} - -static void -gtk_shruler_init (GtkSHRuler *ruler) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - - gtk_widget_set_has_window (GTK_WIDGET (ruler), FALSE); - - priv->orientation = GTK_ORIENTATION_HORIZONTAL; - priv->unit = 0; - priv->lower = 0; - priv->upper = 0; - priv->position = 0; - priv->max_size = 0; - priv->backing_store = NULL; - priv->font_scale = DEFAULT_RULER_FONT_SCALE; -} - -static void -gtk_shruler_dispose (GObject *object) -{ - G_OBJECT_CLASS (parent_class)->dispose (object); -} - -static void -gtk_shruler_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GtkSHRuler *ruler = GTK_SHRULER (object); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - - switch (prop_id) - { - case PROP_ORIENTATION: - priv->orientation = g_value_get_enum (value); - gtk_widget_queue_resize (GTK_WIDGET (ruler)); - break; - - case PROP_UNIT: - gtk_shruler_set_unit (ruler, g_value_get_int (value)); - break; - - case PROP_LOWER: - gtk_shruler_set_range (ruler, - g_value_get_double (value), - priv->upper, - priv->max_size); - break; - case PROP_UPPER: - gtk_shruler_set_range (ruler, - priv->lower, - g_value_get_double (value), - priv->max_size); - break; - - case PROP_POSITION: - gtk_shruler_set_position (ruler, g_value_get_double (value)); - break; - - case PROP_MAX_SIZE: - gtk_shruler_set_range (ruler, - priv->lower, - priv->upper, - g_value_get_double (value)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_shruler_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GtkSHRuler *ruler = GTK_SHRULER (object); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - - switch (prop_id) - { - case PROP_ORIENTATION: - g_value_set_enum (value, priv->orientation); - break; - - case PROP_UNIT: - g_value_set_int (value, priv->unit); - break; - - case PROP_LOWER: - g_value_set_double (value, priv->lower); - break; - - case PROP_UPPER: - g_value_set_double (value, priv->upper); - break; - - case PROP_POSITION: - g_value_set_double (value, priv->position); - break; - - case PROP_MAX_SIZE: - g_value_set_double (value, priv->max_size); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -/** - * gtk_shruler_new: - * @orientation: the ruler's orientation. - * - * Creates a new ruler. - * - * Return value: a new #GtkSHRuler widget. - * - * Since: GTK 2.8 - **/ -GtkWidget * -gtk_shruler_new (GtkOrientation orientation) -{ - return g_object_new (GTK_TYPE_SHRULER, - "orientation", orientation, - NULL); -} - -static void -gtk_shruler_update_position (GtkSHRuler *ruler, - gdouble x, - gdouble y) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - GtkAllocation allocation; - gdouble lower; - gdouble upper; - - gtk_widget_get_allocation (GTK_WIDGET (ruler), &allocation); - gtk_shruler_get_range (ruler, &lower, &upper, NULL); - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - { - gtk_shruler_set_position (ruler, - lower + - (upper - lower) * x / allocation.width); - } - else - { - gtk_shruler_set_position (ruler, - lower + - (upper - lower) * y / allocation.height); - } -} - -/** - * gtk_shruler_set_unit: - * @ruler: a #GtkSHRuler - * @unit: the #GtkCMUnit to set the ruler to - * - * This sets the unit of the ruler. - * - * Since: GTK 2.8 - */ -void -gtk_shruler_set_unit (GtkSHRuler *ruler, - GtkCMUnit unit) -{ - GtkSHRulerPrivate *priv; - - g_return_if_fail (GTK_IS_SHRULER (ruler)); - - priv = GTK_SHRULER_GET_PRIVATE (ruler); - - if (priv->unit != unit) - { - priv->unit = unit; - g_object_notify (G_OBJECT (ruler), "unit"); - - gtk_widget_queue_draw (GTK_WIDGET (ruler)); - } -} - -/** - * gtk_shruler_get_unit: - * @ruler: a #GtkSHRuler - * - * Return value: the unit currently used in the @ruler widget. - * - * Since: GTK 2.8 - **/ -GtkCMUnit -gtk_shruler_get_unit (GtkSHRuler *ruler) -{ - GtkSHRulerPrivate *priv; - - g_return_val_if_fail (GTK_IS_SHRULER (ruler), 0); - - priv = GTK_SHRULER_GET_PRIVATE (ruler); - - return priv->unit; -} - -/** - * gtk_shruler_set_position: - * @ruler: a #GtkSHRuler - * @position: the position to set the ruler to - * - * This sets the position of the ruler. - * - * Since: GTK 2.8 - */ -void -gtk_shruler_set_position (GtkSHRuler *ruler, - gdouble position) -{ - GtkSHRulerPrivate *priv; - - g_return_if_fail (GTK_IS_SHRULER (ruler)); - - priv = GTK_SHRULER_GET_PRIVATE (ruler); - - if (priv->position != position) - { - priv->position = position; - g_object_notify (G_OBJECT (ruler), "position"); - } -} - -/** - * gtk_shruler_get_position: - * @ruler: a #GtkSHRuler - * - * Return value: the current position of the @ruler widget. - * - * Since: GTK 2.8 - **/ -gdouble -gtk_shruler_get_position (GtkSHRuler *ruler) -{ - GtkSHRulerPrivate *priv; - - g_return_val_if_fail (GTK_IS_SHRULER (ruler), 0.0); - - priv = GTK_SHRULER_GET_PRIVATE (ruler); - - return priv->position; -} - -/** - * gtk_shruler_set_range: - * @ruler: a #GtkSHRuler - * @lower: the lower limit of the ruler - * @upper: the upper limit of the ruler - * @max_size: the maximum size of the ruler used when calculating the space to - * leave for the text - * - * This sets the range of the ruler. - * - * Since: GTK 2.8 - */ -void -gtk_shruler_set_range (GtkSHRuler *ruler, - gdouble lower, - gdouble upper, - gdouble max_size) -{ - GtkSHRulerPrivate *priv; - - g_return_if_fail (GTK_IS_SHRULER (ruler)); - - priv = GTK_SHRULER_GET_PRIVATE (ruler); - - g_object_freeze_notify (G_OBJECT (ruler)); - if (priv->lower != lower) - { - priv->lower = lower; - g_object_notify (G_OBJECT (ruler), "lower"); - } - if (priv->upper != upper) - { - priv->upper = upper; - g_object_notify (G_OBJECT (ruler), "upper"); - } - if (priv->max_size != max_size) - { - priv->max_size = max_size; - g_object_notify (G_OBJECT (ruler), "max-size"); - } - g_object_thaw_notify (G_OBJECT (ruler)); - - gtk_widget_queue_draw (GTK_WIDGET (ruler)); -} - -/** - * gtk_shruler_get_range: - * @ruler: a #GtkSHRuler - * @lower: location to store lower limit of the ruler, or %NULL - * @upper: location to store upper limit of the ruler, or %NULL - * @max_size: location to store the maximum size of the ruler used when - * calculating the space to leave for the text, or %NULL. - * - * Retrieves values indicating the range and current position of a #GtkSHRuler. - * See gtk_shruler_set_range(). - * - * Since: GTK 2.8 - **/ -void -gtk_shruler_get_range (GtkSHRuler *ruler, - gdouble *lower, - gdouble *upper, - gdouble *max_size) -{ - GtkSHRulerPrivate *priv; - - g_return_if_fail (GTK_IS_SHRULER (ruler)); - - priv = GTK_SHRULER_GET_PRIVATE (ruler); - - if (lower) - *lower = priv->lower; - if (upper) - *upper = priv->upper; - if (max_size) - *max_size = priv->max_size; -} - -static void -gtk_shruler_realize (GtkWidget *widget) -{ - GtkSHRuler *ruler = GTK_SHRULER (widget); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - GtkAllocation allocation; - GdkWindowAttr attributes; - gint attributes_mask; - - GTK_WIDGET_CLASS (gtk_shruler_parent_class)->realize (widget); - - gtk_widget_get_allocation (widget, &allocation); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = allocation.x; - attributes.y = allocation.y; - attributes.width = allocation.width; - attributes.height = allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.event_mask = (gtk_widget_get_events (widget) | - GDK_EXPOSURE_MASK | - GDK_POINTER_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK); - - attributes_mask = GDK_WA_X | GDK_WA_Y; - - priv->input_window = gdk_window_new (gtk_widget_get_window (widget), - &attributes, attributes_mask); - gtk_widget_register_window (widget, priv->input_window); - - gtk_shruler_make_pixmap (ruler); -} - -static void -gtk_shruler_unrealize (GtkWidget *widget) -{ - GtkSHRuler *ruler = GTK_SHRULER (widget); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - - if (priv->backing_store) - { - cairo_surface_destroy (priv->backing_store); - priv->backing_store = NULL; - } - - if (priv->layout) - { - g_object_unref (priv->layout); - priv->layout = NULL; - } - - if (priv->input_window) - { - gtk_widget_unregister_window (widget, priv->input_window); - gdk_window_destroy (priv->input_window); - priv->input_window = NULL; - } - - GTK_WIDGET_CLASS (gtk_shruler_parent_class)->unrealize (widget); -} - -static void -gtk_shruler_map (GtkWidget *widget) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (widget); - - GTK_WIDGET_CLASS (parent_class)->map (widget); - - if (priv->input_window) - gdk_window_show (priv->input_window); -} - -static void -gtk_shruler_unmap (GtkWidget *widget) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (widget); - - if (priv->input_window) - gdk_window_hide (priv->input_window); - - GTK_WIDGET_CLASS (parent_class)->unmap (widget); -} - -static void -gtk_shruler_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkSHRuler *ruler = GTK_SHRULER (widget); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - - gtk_widget_set_allocation (widget, allocation); - - if (gtk_widget_get_realized (widget)) - { - gdk_window_move_resize (priv->input_window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - gtk_shruler_make_pixmap (ruler); - } -} - -static void -gtk_shruler_get_preferred_width (GtkWidget *widget, - gint *minimal_width, - gint *natural_width) -{ - GtkRequisition requisition; - - gtk_shruler_size_request (widget, &requisition); - - *minimal_width = *natural_width = requisition.width; -} - -static void -gtk_shruler_get_preferred_height (GtkWidget *widget, - gint *minimal_height, - gint *natural_height) -{ - GtkRequisition requisition; - - gtk_shruler_size_request (widget, &requisition); - - *minimal_height = *natural_height = requisition.height; -} - -static void -gtk_shruler_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (widget); - GtkStyle *style = gtk_widget_get_style (widget); - PangoLayout *layout; - PangoRectangle ink_rect; - gint size; - - layout = gtk_shruler_get_layout (widget, "0123456789"); - pango_layout_get_pixel_extents (layout, &ink_rect, NULL); - - size = 2 + ink_rect.height * 1.7; - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - { - requisition->width = style->xthickness * 2 + 1; - requisition->height = style->ythickness * 2 + size; - } - else - { - requisition->width = style->xthickness * 2 + size; - requisition->height = style->ythickness * 2 + 1; - } -} - -static void -gtk_shruler_style_set (GtkWidget *widget, - GtkStyle *prev_style) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (widget); - - GTK_WIDGET_CLASS (gtk_shruler_parent_class)->style_set (widget, prev_style); - - gtk_widget_style_get (widget, - "font-scale", &priv->font_scale, - NULL); - - if (priv->layout) - { - g_object_unref (priv->layout); - priv->layout = NULL; - } -} - -static gboolean -gtk_shruler_motion_notify (GtkWidget *widget, - GdkEventMotion *event) -{ - GtkSHRuler *ruler = GTK_SHRULER (widget); - - gdk_event_request_motions (event); - - gtk_shruler_update_position (ruler, event->x, event->y); - - return FALSE; -} - -static gboolean -gtk_shruler_expose (GtkWidget *widget, - cairo_t *cr) -{ - if (gtk_widget_is_drawable (widget)) - { - GtkSHRuler *ruler = GTK_SHRULER (widget); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - GtkAllocation allocation; - - gtk_shruler_draw_ticks (ruler); - - gtk_widget_get_allocation (widget, &allocation); - - cairo_set_source_surface (cr, priv->backing_store, 0, 0); - cairo_paint (cr); - } - - return FALSE; -} - -static void -gtk_shruler_draw_ticks (GtkSHRuler *ruler) -{ - GtkWidget *widget = GTK_WIDGET (ruler); - GtkStyle *style = gtk_widget_get_style (widget); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - GtkStateType state = gtk_widget_get_state (widget); - GtkAllocation allocation; - cairo_t *cr; - gint i; - gint width, height; - gint xthickness; - gint ythickness; - gint length; - gdouble lower, upper; /* Upper and lower limits, in ruler units */ - gdouble increment; /* Number of pixels per unit */ - gint scale; /* Number of units per major unit */ - gdouble start, end, cur; - gchar unit_str[32]; - gint digit_height; - gint digit_offset; - gint text_size; - gint pos; - gdouble max_size; - GtkCMUnit unit; - PangoLayout *layout; - PangoRectangle logical_rect, ink_rect; - - if (! gtk_widget_is_drawable (widget)) - return; - - gtk_widget_get_allocation (widget, &allocation); - - xthickness = style->xthickness; - ythickness = style->ythickness; - - layout = gtk_shruler_get_layout (widget, "0123456789"); - pango_layout_get_extents (layout, &ink_rect, &logical_rect); - - digit_height = PANGO_PIXELS (ink_rect.height) + 2; - digit_offset = ink_rect.y; - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - { - width = allocation.width; - height = allocation.height - ythickness * 2; - } - else - { - width = allocation.height; - height = allocation.width - ythickness * 2; - } - - cr = cairo_create (priv->backing_store); - gdk_cairo_set_source_color (cr, &style->bg[state]); - - cairo_paint (cr); - - gdk_cairo_set_source_color (cr, &style->fg[state]); - - gtk_shruler_get_range (ruler, &lower, &upper, &max_size); - - if ((upper - lower) == 0) - goto out; - - increment = (gdouble) width / (upper - lower); - - /* determine the scale - * use the maximum extents of the ruler to determine the largest - * possible number to be displayed. Calculate the height in pixels - * of this displayed text. Use this height to find a scale which - * leaves sufficient room for drawing the ruler. - * - * We calculate the text size as for the vruler instead of - * actually measuring the text width, so that the result for the - * scale looks consistent with an accompanying vruler. - */ - scale = ceil (max_size); - g_snprintf (unit_str, sizeof (unit_str), "%d", scale); - text_size = strlen (unit_str) * digit_height + 1; - - for (scale = 0; scale < G_N_ELEMENTS (ruler_metric.ruler_scale); scale++) - if (ruler_metric.ruler_scale[scale] * fabs (increment) > 2 * text_size) - break; - - if (scale == G_N_ELEMENTS (ruler_metric.ruler_scale)) - scale = G_N_ELEMENTS (ruler_metric.ruler_scale) - 1; - - unit = gtk_shruler_get_unit (ruler); - - /* drawing starts here */ - length = 0; - for (i = G_N_ELEMENTS (ruler_metric.subdivide) - 1; i >= 0; i--) - { - gdouble subd_incr; - - /* hack to get proper subdivisions at full pixels */ - if (unit == CM_UNIT_PIXEL && scale == 1 && i == 1) - subd_incr = 1.0; - else - subd_incr = ((gdouble) ruler_metric.ruler_scale[scale] / - (gdouble) ruler_metric.subdivide[i]); - - if (subd_incr * fabs (increment) <= MINIMUM_INCR) - continue; - - /* don't subdivide pixels */ - if (unit == CM_UNIT_PIXEL && subd_incr < 1.0) - continue; - - if (lower < upper) - { - start = floor (lower / subd_incr) * subd_incr; - end = ceil (upper / subd_incr) * subd_incr; - } - else - { - start = floor (upper / subd_incr) * subd_incr; - end = ceil (lower / subd_incr) * subd_incr; - } - - for (cur = start; cur <= end; cur += subd_incr) - { - if (((int)cur) % 10 == 0) - length = height * 2 / 3; - else if (((int)cur) % 5 == 0) - length = height / 3; - else - length = height / 4; - - pos = ROUND ((cur - lower) * increment); - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - { - cairo_rectangle (cr, - pos, height + ythickness - length, - 1, length); - } - else - { - cairo_rectangle (cr, - height + xthickness - length, pos, - length, 1); - } - - /* draw label */ - if (i == 0 && ((int)cur) % 10 == 0) - { - g_snprintf (unit_str, sizeof (unit_str), "%d", (int) cur); - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - { - pango_layout_set_text (layout, unit_str, -1); - pango_layout_get_extents (layout, &logical_rect, NULL); - - cairo_move_to (cr, - pos + 2, - ythickness + PANGO_PIXELS (logical_rect.y - digit_offset)); - pango_cairo_show_layout (cr, layout); - } - else - { - gint j; - - for (j = 0; j < (int) strlen (unit_str); j++) - { - pango_layout_set_text (layout, unit_str + j, 1); - pango_layout_get_extents (layout, NULL, &logical_rect); - - cairo_move_to (cr, - xthickness + 1, - pos + digit_height * j + 2 + PANGO_PIXELS (logical_rect.y - digit_offset)); - pango_cairo_show_layout (cr, layout); - } - } - } - } - } - - cairo_fill (cr); -out: - cairo_destroy (cr); -} - -static void -gtk_shruler_make_pixmap (GtkSHRuler *ruler) -{ - GtkWidget *widget = GTK_WIDGET (ruler); - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (ruler); - GtkAllocation allocation; - - gtk_widget_get_allocation (widget, &allocation); - - if (priv->backing_store) - cairo_surface_destroy (priv->backing_store); - - priv->backing_store = - gdk_window_create_similar_surface (gtk_widget_get_window (widget), - CAIRO_CONTENT_COLOR, - allocation.width, - allocation.height); -} - - -static PangoLayout * -gtk_shruler_create_layout (GtkWidget *widget, - const gchar *text) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (widget); - PangoLayout *layout; - PangoAttrList *attrs; - PangoAttribute *attr; - - layout = gtk_widget_create_pango_layout (widget, text); - - attrs = pango_attr_list_new (); - - attr = pango_attr_scale_new (priv->font_scale); - attr->start_index = 0; - attr->end_index = -1; - pango_attr_list_insert (attrs, attr); - - pango_layout_set_attributes (layout, attrs); - pango_attr_list_unref (attrs); - - return layout; -} - -static PangoLayout * -gtk_shruler_get_layout (GtkWidget *widget, - const gchar *text) -{ - GtkSHRulerPrivate *priv = GTK_SHRULER_GET_PRIVATE (widget); - - if (priv->layout) - { - pango_layout_set_text (priv->layout, text, -1); - return priv->layout; - } - - priv->layout = gtk_shruler_create_layout (widget, text); - - return priv->layout; -} blob - 59c1cd7fdacc1228654c9070f924cf8553328af1 (mode 644) blob + /dev/null --- src/gtk/gtkshruler.h +++ /dev/null @@ -1,79 +0,0 @@ -/* LIBGTK - The GTK Library - * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball - * - * This library is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see - * . - */ - -#ifndef __GTK_SHRULER_H__ -#define __GTK_SHRULER_H__ - -#include "gtkunit.h" - -G_BEGIN_DECLS - -#define GTK_TYPE_SHRULER (gtk_shruler_get_type ()) -#define GTK_SHRULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SHRULER, GtkSHRuler)) -#define GTK_SHRULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SHRULER, GtkSHRulerClass)) -#define GTK_IS_SHRULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SHRULER)) -#define GTK_IS_SHRULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SHRULER)) -#define GTK_SHRULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SHRULER, GtkSHRulerClass)) - -typedef struct _GtkSHRuler GtkSHRuler; -typedef struct _GtkSHRulerClass GtkSHRulerClass; - -struct _GtkSHRuler -{ - GtkWidget parent_instance; -}; - -struct _GtkSHRulerClass -{ - GtkWidgetClass parent_class; - - /* Padding for future expansion */ - void (*_gtk_reserved1) (void); - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); - void (*_gtk_reserved4) (void); -}; - - -GType gtk_shruler_get_type (void) G_GNUC_CONST; - -GtkWidget * gtk_shruler_new (GtkOrientation orientation); - -void gtk_shruler_add_track_widget (GtkSHRuler *ruler, - GtkWidget *widget); -void gtk_shruler_remove_track_widget (GtkSHRuler *ruler, - GtkWidget *widget); - -void gtk_shruler_set_unit (GtkSHRuler *ruler, - GtkCMUnit unit); -GtkCMUnit gtk_shruler_get_unit (GtkSHRuler *ruler); -void gtk_shruler_set_position (GtkSHRuler *ruler, - gdouble position); -gdouble gtk_shruler_get_position (GtkSHRuler *ruler); -void gtk_shruler_set_range (GtkSHRuler *ruler, - gdouble lower, - gdouble upper, - gdouble max_size); -void gtk_shruler_get_range (GtkSHRuler *ruler, - gdouble *lower, - gdouble *upper, - gdouble *max_size); - -G_END_DECLS - -#endif /* __GTK_SHRULER_H__ */ blob - b4bed8b705904eee200464e6bcbe380a503ec9ba blob + 838f338d8ae42c661b5142bf37064fac6932c22b --- src/prefs_common.c +++ src/prefs_common.c @@ -228,9 +228,6 @@ static PrefParam param[] = { {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL, NULL, NULL, NULL}, - {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL, - NULL, NULL, NULL}, - {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"), &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL}, @@ -667,16 +664,9 @@ static PrefParam param[] = { &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL}, - {"run_processingrules_before_mark_all", "FALSE", &prefs_common.run_processingrules_before_mark_all, P_BOOL, - NULL, NULL, NULL}, {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL, NULL, NULL, NULL}, - {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL, - NULL, NULL, NULL}, - {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM, - NULL, NULL, NULL}, - /* Addressbook */ {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog, P_BOOL, NULL, NULL, NULL}, blob - a6afab69f71de9ec6ae35e413bfe840b52b3cc48 blob + 5f032280fc2458ddbc8bdcf7ebae7ac079afb717 --- src/prefs_common.h +++ src/prefs_common.h @@ -192,7 +192,6 @@ struct _PrefsCommon gboolean default_reply_list; gboolean forward_account_autosel; gboolean reedit_account_autosel; - gboolean show_ruler; gboolean autosave; gint autosave_length; gboolean autosave_encrypted; @@ -413,9 +412,6 @@ struct _PrefsCommon int hover_timeout; /* msecs mouse hover timeout */ gboolean ask_mark_all_read; - gboolean run_processingrules_before_mark_all; - gboolean ask_apply_per_account_filtering_rules; - gint apply_per_account_filtering_rules; /* Other */ gchar *uri_cmd; blob - 35924188cbcde96cd130c2ba066fce01e81dc9a1 blob + bc3f83ad3e6a3509be7033de8935875b58ca3c4c --- src/prefs_other.c +++ src/prefs_other.c @@ -60,7 +60,6 @@ typedef struct _OtherPage GtkWidget *checkbtn_warnqueued; GtkWidget *spinbtn_iotimeout; GtkWidget *checkbtn_gtk_enable_accels; - GtkWidget *checkbtn_askonfilter; GtkWidget *checkbtn_real_time_sync; GtkWidget *entry_attach_save_chmod; GtkWidget *checkbtn_transhdr; @@ -355,7 +354,6 @@ static void prefs_other_create_widget(PrefsPage *_page GtkWidget *vbox2; GtkWidget *checkbtn_transhdr; GtkWidget *checkbtn_askonclean; - GtkWidget *checkbtn_askonfilter; GtkWidget *checkbtn_real_time_sync; GtkWidget *label_attach_save_chmod; GtkWidget *entry_attach_save_chmod; @@ -441,9 +439,6 @@ static void prefs_other_create_widget(PrefsPage *_page "will be translated into your language")); PACK_CHECK_BUTTON (vbox2, checkbtn_askonclean, _("Ask before emptying trash")); - PACK_CHECK_BUTTON (vbox2, checkbtn_askonfilter, - _("Ask about account specific filtering rules when " - "filtering manually")); PACK_CHECK_BUTTON (vbox2, checkbtn_real_time_sync, _("Synchronise offline folders as soon as possible")); @@ -491,8 +486,6 @@ static void prefs_other_create_widget(PrefsPage *_page gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_transhdr), prefs_common.trans_hdr); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_askonfilter), - prefs_common.ask_apply_per_account_filtering_rules); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_real_time_sync), prefs_common.real_time_sync); @@ -506,7 +499,6 @@ static void prefs_other_create_widget(PrefsPage *_page prefs_other->spinbtn_iotimeout = spinbtn_iotimeout; prefs_other->checkbtn_transhdr = checkbtn_transhdr; prefs_other->checkbtn_gtk_enable_accels = checkbtn_gtk_enable_accels; - prefs_other->checkbtn_askonfilter = checkbtn_askonfilter; prefs_other->checkbtn_real_time_sync = checkbtn_real_time_sync; prefs_other->entry_attach_save_chmod = entry_attach_save_chmod; prefs_other->page.widget = vbox1; @@ -537,9 +529,6 @@ static void prefs_other_save(PrefsPage *_page) #endif prefs_common.trans_hdr = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_transhdr)); - prefs_common.ask_apply_per_account_filtering_rules = - gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(page->checkbtn_askonfilter)); prefs_common.real_time_sync = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_real_time_sync)); blob - 7c07ecb206d3d15b02c77bf0c466ac8310985717 blob + b98c2f093cb9f5015f86f7af94e963ce15bf4ac6 --- src/prefs_summaries.c +++ src/prefs_summaries.c @@ -73,7 +73,6 @@ typedef struct _SummariesPage GtkWidget *spinbtn_mark_as_read_delay; GtkWidget *checkbtn_immedexec; GtkWidget *checkbtn_ask_mark_all_read; - GtkWidget *checkbtn_run_processingrules_mark_all_read; GtkWidget *optmenu_sort_key; GtkWidget *optmenu_sort_type; GtkWidget *optmenu_summaryfromshow; @@ -388,7 +387,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ GtkAdjustment *spinbtn_mark_as_read_delay_adj; GtkWidget *checkbtn_immedexec; GtkWidget *checkbtn_ask_mark_all_read; - GtkWidget *checkbtn_run_processingrules_mark_all_read; GtkWidget *label, *label_fill; GtkListStore *menu; GtkTreeIter iter; @@ -477,10 +475,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ g_signal_connect(G_OBJECT(startup_folder_select), "clicked", G_CALLBACK(foldersel_cb), startup_folder_entry); - PACK_CHECK_BUTTON - (vbox1, checkbtn_run_processingrules_mark_all_read, - _("Run processing rules before marking all messages in a folder as read or unread")); - hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); gtk_widget_show (hbox1); gtk_box_pack_start(GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0); @@ -754,7 +748,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ prefs_summaries->spinbtn_mark_as_read_delay = spinbtn_mark_as_read_delay; prefs_summaries->checkbtn_immedexec = checkbtn_immedexec; prefs_summaries->checkbtn_ask_mark_all_read = checkbtn_ask_mark_all_read; - prefs_summaries->checkbtn_run_processingrules_mark_all_read = checkbtn_run_processingrules_mark_all_read; prefs_summaries->optmenu_sort_key = optmenu_sort_key; prefs_summaries->optmenu_sort_type = optmenu_sort_type; prefs_summaries->optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog; @@ -817,8 +810,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ prefs_common.immediate_exec); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_ask_mark_all_read), prefs_common.ask_mark_all_read); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_run_processingrules_mark_all_read), - prefs_common.run_processingrules_before_mark_all); combobox_select_by_data(GTK_COMBO_BOX(optmenu_sort_key), prefs_common.default_sort_key); @@ -895,8 +886,6 @@ static void prefs_summaries_save(PrefsPage *_page) GTK_TOGGLE_BUTTON(page->checkbtn_immedexec)); prefs_common.ask_mark_all_read = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_ask_mark_all_read)); - prefs_common.run_processingrules_before_mark_all = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(page->checkbtn_run_processingrules_mark_all_read)); prefs_common.mark_as_read_delay = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(page->spinbtn_mark_as_read_delay)); prefs_common.summary_col_lock = gtk_toggle_button_get_active(