Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1c2393cc73 | |||
| 75fe9b5f57 | |||
| 3de86b38a0 | |||
| 95d5f0c33b | |||
| 9269fc82b1 | |||
| 0c4103f9b7 | |||
| 4034a13263 | |||
| 926c50c3f9 | |||
| 0fca2a0f82 | |||
| a4f1bc97a5 | |||
| 6ce70b33c6 | |||
| 8535e32b8d | |||
| e240742d0a | |||
| c75e10e9ea | |||
| 5405383cb2 | |||
| aeab118289 | |||
| fc5ba0a6ef | |||
| 3d92798c96 | |||
| 8cb229a847 | |||
| 9cfb89990e | |||
| 8b8d6e188d | |||
| f7863d7fa5 | |||
| 7918b3d1a3 | |||
| 601b5f4f52 | |||
| 89ef97cd25 | |||
| 8f17db9b4a | |||
| dcacd41641 | |||
| 6b3f27c76c | |||
| faf2d7aab7 | |||
| 2725f74d92 | |||
| 498bb2046a | |||
| c7c2767d76 | |||
| e3345e74c5 | |||
| 361ff36120 | |||
| 37c9c5e49e | |||
| d0ab7336ba | |||
| 639f1407c9 | |||
| 62952efc04 | |||
| 21c2e6da9a | |||
| 3e2606f4f4 | |||
| ac7dcd90cc | |||
| e6b12e0fd7 | |||
| f76e22b39e | |||
| 7a568a6127 | |||
| df6dcfb511 |
@@ -0,0 +1,514 @@
|
||||
2006-04-30 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystem.[ch] (gtk_file_info_render_icon): remove the
|
||||
caching code,
|
||||
(gtk_file_info_get_icon_name): new function,
|
||||
(gtk_file_system_volume_get_icon_name): new function,
|
||||
(gtk_file_system_volume_render_icon): refactor to use
|
||||
get_icon_name() and render the icon on the fly.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon),
|
||||
(gtk_file_system_unix_volume_get_icon_name): reflect updates in
|
||||
file system interface,
|
||||
(get_fallback_icon): remove, along with icon caching code.
|
||||
|
||||
* gtk/gtk.symbols: updated.
|
||||
|
||||
2006-04-30 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystemmodel.c (got_root_folder_cb), (ref_path_cb),
|
||||
(get_children_get_folder_cb): don't leak the handle,
|
||||
(got_root_folder_cb), (get_children_get_folder_cb): emit
|
||||
row-inserted for the newly added nodes.
|
||||
|
||||
2006-04-30 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (file_list_drag_data_select_uris),
|
||||
(file_list_drag_data_received_get_info_cb),
|
||||
(file_list_drag_data_received_cb): refactor code for selecting
|
||||
multiple uris into file_list_drag_data_select_uris().
|
||||
|
||||
2006-04-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb): don't
|
||||
leak handle,
|
||||
(change_icon_theme_get_info_cb), (set_info_get_info_cb),
|
||||
(model_add_special_get_info_cb), (update_label_get_info_cb): ditto.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb):
|
||||
don't leak the handle,
|
||||
(get_file_info_finished), (edited_idle_create_folder_cb),
|
||||
(file_list_drag_data_received_get_info_cb),
|
||||
(show_and_select_paths_get_folder_cb),
|
||||
(update_current_folder_get_info_cb), (add_shortcut_get_info_cb),
|
||||
(confirmation_confirm_get_info_cb), (action_create_folder_cb),
|
||||
(save_entry_get_info_cb), (shortcuts_activate_volume_mount_cb),
|
||||
(shortcuts_activate_get_info_cb), (update_from_entry_get_info_cb):
|
||||
ditto.
|
||||
|
||||
* gtk/gtkfilechooserentry.c (load_directory_get_folder_callback):
|
||||
don't leak the handle.
|
||||
|
||||
* gtk/gtkpathbar.c (set_button_image_get_info_cb),
|
||||
(gtk_path_bar_get_info_callback): don't leak the handle.
|
||||
|
||||
2006-04-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
Review.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb):
|
||||
don't forget to unref data->impl at the end.
|
||||
|
||||
2006-04-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
Review, continued.
|
||||
|
||||
* gtk/gtkfilechooserdialog.c (response_cb): set response_requested
|
||||
to FALSE after stopping emission of the response signal.
|
||||
|
||||
2006-03-16 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
More review work.
|
||||
|
||||
* gtk/gtkfilechooserprivate.h: remove idle_finished_loading_source
|
||||
from GtkFileSystemModel.
|
||||
|
||||
* gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): remove
|
||||
idle_finished_loading_source,
|
||||
(idle_finished_loading_cb), (queue_finished_loading): removed,
|
||||
(got_root_folder_cb): save a list walk, immediately emit
|
||||
finished-loading and don't queue it, since we are already in an
|
||||
idle here, always list_children() so the children the folder already
|
||||
has are returned,
|
||||
(_gtk_file_system_model_new): handle the case where NULL is
|
||||
returned by _get_folder(),
|
||||
(_gtk_file_system_model_path_do): remove comment, and append the
|
||||
new handle to the list, don't try to remove,
|
||||
(get_children_get_folder_cb): save a list walk, remove the dummy
|
||||
child if the _get_folder() call fails or is cancelled.
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
More suggestions from Federico.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder):
|
||||
remove check for filename_is_root(), since we never hit that code
|
||||
and else mkdir will fail anyway,
|
||||
(gtk_file_system_unix_create_folder): fixup parent folder refresh
|
||||
code.
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystemunix.c (read_hidden_file), (fill_in_hidden),
|
||||
(get_is_hidden_for_file): factor out g_file_get_contents() code
|
||||
in read_hidden_file(). (Federico Mena Quintero).
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
Icon name code suggestions by Federico Mena Quintero.
|
||||
|
||||
* gtk/gtkfilesystemunix.c: add GTK_FILE_INFO_ICON to
|
||||
STAT_NEEDED_MASK,
|
||||
(get_fallback_icon_name), (get_fallback_icon),
|
||||
(get_icon_name_for_directory), (get_special_icon_name): get rid
|
||||
of strdups,
|
||||
(get_icon_type_from_path): add a statbuf argument and use the
|
||||
statbuf when folder_unix is NULL,
|
||||
(create_file_info): adapt to work with above changes.
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): path
|
||||
is NULL is an error here (gtk_file_system_get_info() already guards
|
||||
path = NULL),
|
||||
(gtk_file_system_unix_get_info): move basename creation to just
|
||||
before create_file_info(). (Federico Mena Quintero).
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystemunix.c (struct _GtkFileFolderUnix): add
|
||||
load_folder_id field,
|
||||
(load_folder): add thread enter/leave construct, set load_folder_id
|
||||
to zero since we have the idle removed when we return,
|
||||
(gtk_file_system_unix_get_folder): initialize load_folder_id to 0
|
||||
and store the source id of the load_folder idle,
|
||||
(gtk_file_folder_unix_finalize): remove the load_folder idle
|
||||
if necessary. (Federico Mena Quintero).
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooser.c (gtk_file_chooser_get_current_folder): return
|
||||
NULL if there is no current folder path.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map): we
|
||||
reload the current folder if there is one, else we continue the
|
||||
still pending load.
|
||||
|
||||
2006-03-14 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
Couple of fixes from Markku Vire.
|
||||
|
||||
* gtk/gtkfilesystem.c (gtk_file_info_copy): also strdup icon_name
|
||||
and display_key.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder):
|
||||
initialize error to NULL,
|
||||
(gtk_file_folder_unix_list_children): return an empty list for now if
|
||||
we couldn't read the directory.
|
||||
|
||||
2005-12-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb),
|
||||
(gtk_file_chooser_default_update_current_folder): set and unset
|
||||
busy cursor while checking whether the given path is a folder.
|
||||
|
||||
2005-12-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystem.h: change the GtkFileInfo argument of the
|
||||
GetInfoCallback to be const.
|
||||
|
||||
* gtk/gtkfilechooserbutton.c, gtk/gtkfilechooserdefault.c,
|
||||
gtk/gtkpathbar.c: changes functions to reflect the above change.
|
||||
|
||||
2005-12-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c, gtk/gtkfilechooserprivate.h: keep track
|
||||
of handles, cancel all pending operations on dispose.
|
||||
|
||||
2005-12-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserprivate.h (struct _GtkFileSystemModel): add
|
||||
pending_handles field,
|
||||
(struct _FileModelNode): add load_pending flag.
|
||||
|
||||
* gtk/gtkfilesystemmodel.c (gtk_file_system_model_dispose): introduce,
|
||||
cancel all pending operations here,
|
||||
(got_root_folder_cb), (_gtk_file_system_model_new), (ref_path_cb),
|
||||
(_gtk_file_system_model_path_do): keep track of all pending
|
||||
operations, handle cancelled operations.
|
||||
|
||||
2005-12-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize),
|
||||
(gtk_file_chooser_button_destroy): move all handle cancellations
|
||||
and object unrefs to destroy.
|
||||
|
||||
* gtk/gtkpathbar.c (gtk_path_bar_finalize), (gtk_path_bar_dispose):
|
||||
likewise.
|
||||
|
||||
* gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_class_init):
|
||||
add dispose,
|
||||
(gtk_file_chooser_entry_dispose): cancel handles and unrefs
|
||||
objects here instead of finalize.
|
||||
|
||||
2005-12-23 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystem.c (get_cached_icon): check if "name" is an
|
||||
absolute path, if so load the icon from that file.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): fix
|
||||
the build.
|
||||
|
||||
2005-12-21 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): remove
|
||||
the FIXME since it doesn't make sense, when we return a cached
|
||||
folder we won't emit finished-loading either,
|
||||
(gtk_file_system_unix_create_folder): remove unused variable,
|
||||
(gtk_file_folder_unix_list_children): remove unused code,
|
||||
(get_is_hidden_for_file): new function,
|
||||
(create_file_info): also handle getting is_hidden when called
|
||||
without a folder unix (from _system_get_info() for example).
|
||||
|
||||
2005-12-20 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (check_is_folder): fully removed!
|
||||
woo!,
|
||||
(check_save_entry): add is_folder argument,
|
||||
(gtk_file_chooser_default_get_paths): update check_save_entry() call,
|
||||
(get_display_name_for_folder): removed,
|
||||
(confirmation_confirm_get_info_cb): new function which will
|
||||
handle the confirmation dialog now we have all information for it,
|
||||
(should_respond_after_confirm_overwrite): replace the call to
|
||||
get_display_name_for_folder() with an asynchronous solution,
|
||||
(action_create_folder_cb): request dialog response on successfull
|
||||
folder creation,
|
||||
(gtk_file_chooser_default_should_respond): update call to
|
||||
check_save_entry(); replace the check is folder call for "path"
|
||||
by just using the is_folder return value from check_save_entry();
|
||||
replaced the check is folder call for "parent_path" with an
|
||||
asynchronous setup, remainder of that work is now done in
|
||||
save_entry_get_info_cb(),
|
||||
(save_entry_get_info_cb): new function.
|
||||
|
||||
* gtk/gtkfilechoosermebed.[ch]: add response-requested signal.
|
||||
|
||||
* gtk/gtkfilechooserdialog.c, gtk/gtkfilechooserprivate.h: handle
|
||||
response_requested signal.
|
||||
|
||||
* gtk/gtkfilechooserentry.[ch]
|
||||
(_gtk_file_chooser_entry_get_is_folder): new function.
|
||||
|
||||
2005-12-20 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (ref_path_cb): when called with
|
||||
!folder, check if node is the node we are looking for (can be
|
||||
triggered when we call ref_path_cb ourselves after a find_child_node),
|
||||
(_gtk_file_system_model_path_do): introduce parent_node field;
|
||||
after finding a child node in a loaded parent node, don't forget
|
||||
to call ref_path_cb,
|
||||
(get_children_get_folder_cb): don't forget to set data->node->folder
|
||||
to the newly acquired folder.
|
||||
|
||||
2005-12-20 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (show_and_select_paths_get_folder_cb):
|
||||
handle case where the folder we get already finished loading.
|
||||
|
||||
* gtk/gtkfilesystemmodel.c (ref_path_cb),
|
||||
(_gtk_file_system_model_path_do): make this work.
|
||||
|
||||
2005-12-19 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (shortcuts_update_count): modify
|
||||
in such a way that it can also negatively update the count on
|
||||
failures,
|
||||
(get_file_info_finished): handle failures, update save folder
|
||||
combo box on success,
|
||||
(shortcuts_insert_path): change the boolean return value into a
|
||||
void one, also refilter the model and update the save folder combo
|
||||
box for the non-asynchronous case,
|
||||
(shortcuts_append_home), (shortcuts_append_desktop),
|
||||
(shortcuts_add_volumes), (shortcuts_add_current_folder),
|
||||
(add_shortcuts_get_info_cb): adapt to shortcuts_insert_path() updates.
|
||||
|
||||
2005-12-19 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkpathbar.[ch]: add handle fields to ButtonData and
|
||||
GtkPathBar; do correct handle bookkeeping.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (load_folder),
|
||||
(gtk_file_system_unix_get_folder),
|
||||
(gtk_file_folder_unix_is_finished_loading): add is_finished_loading
|
||||
field to GtkFileFolderUnix, which is set to true once we are
|
||||
really finished with loading (previous assumption that we are
|
||||
always finshed loading is not true anymore).
|
||||
|
||||
* gtk/gtkfilesystemmodel.c (got_root_folder_cb): if the folder is
|
||||
finished loading, list the children and update the root level.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
|
||||
handle cancellation.
|
||||
|
||||
2005-12-16 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystemunix.c: always call the callback, even when
|
||||
cancelled; ref handles passed to the callback queue functions;
|
||||
don't set cancelled to TRUE in _cancel_operation(), since operations
|
||||
in this backend are always completed,
|
||||
(get_special_icon_name): don't strdup the value of
|
||||
get_icon_name_for_directory() again.
|
||||
|
||||
* gtk/gtkfilechooserbutton.c: adapt to new cancellation policy;
|
||||
reference all objects which are passed as callback arguments; in the
|
||||
callback check if the handles match.
|
||||
|
||||
* gtk/gtkfilechooserentry.c: likewise.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c: likewise. Also changed the shortcut
|
||||
loading code to be more like the code in GtkFileChooserButton, where
|
||||
we store all handles in the model and have model_row_free_data
|
||||
cancel any pending operations,
|
||||
(shortcuts_model_create): copy the error.
|
||||
|
||||
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): remove
|
||||
loading_volumes and loading_bookmarks fields.
|
||||
|
||||
* gtk/gtkfilesystem.c (gtk_file_info_free): free icon_name here...
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): fix
|
||||
thinko.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (dispatch_create_folder_callback),
|
||||
(queue_create_folder_callback): need to copy/free the path,
|
||||
(gtk_file_system_unix_create_folder): put the "reget folder" hack
|
||||
back in, though it's working different now.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize),
|
||||
(dnd_select_folder_get_info_cb), (gtk_file_chooser_drag_data_received),
|
||||
(change_icon_theme_get_info_cb), (change_icon_theme),
|
||||
(model_add_special_get_info_cb), (model_add_special),
|
||||
(update_label_get_info_cb), (update_label_and_image): cancel existing
|
||||
operations, if any; added apprioriate fields to
|
||||
GtkFileChooserButtonPrivate.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_finalize): if
|
||||
there's a folder loading, cancel the operation,
|
||||
(load_directory_get_folder_callback): set the loading folder handle
|
||||
to NULL,
|
||||
(load_directory_callback): cancel any currently loading folders
|
||||
before starting a new get folder operation.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (shortcuts_insert_path): don't overwrite
|
||||
data if it's already set (for example by the "is volume" case).
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserbutton.c (set_info_get_info_cb),
|
||||
(set_info_for_path_at_iter): store a row reference in the temporary
|
||||
data structure and not an iter,
|
||||
(model_add_special), (model_update_current_folder),
|
||||
(gtk_file_chooser_button_add_shorcut_folder): remove unused pixbuf
|
||||
variable.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (get_file_info_finished),
|
||||
(shortcuts_insert_path): replace gtk_file_system_render_icon() call
|
||||
with gtk_file_system_get_file_info(),
|
||||
(gtk_file_chooser_default_add_shortcut_folder),
|
||||
(gtk_file_chooser_default_remove_shortcut_folder): handle shortcuts
|
||||
which are still loading.
|
||||
|
||||
* gtk/gtkfilechooserprivate.h: add shortcuts_loading field to
|
||||
struct _GtkFileChooserDefault.
|
||||
|
||||
* gtk/gtkfilechooserbutton.c (set_info_get_info_cb),
|
||||
(set_info_for_path_at_iter), (model_free_row_data): keep handle
|
||||
and path together; now supports adding/removing shortcuts
|
||||
which are still loading.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystem.c: make the cancelled field an GObject property.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystem.h: make the GError argument in the callbacks
|
||||
const.
|
||||
|
||||
* gtk/gtkfilechooserbutton.c: update callbacks,
|
||||
* gtk/gtkfilechooserentry.c: likewise,
|
||||
* gtk/gtkfilechooserdefault.c: likewise,
|
||||
* gtk/gtkfilesystemmodel.c: likewise,
|
||||
* gtk/gtkpathbar.c: likewise.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): copy
|
||||
the error which will be passed to error_creating_folder_dialog(),
|
||||
(action_create_folder_cb): likewise,
|
||||
(file_list_drag_data_received_get_info_cb): add forgotten GError
|
||||
declaration.
|
||||
|
||||
2005-12-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkpathbar.c (get_button_image), (set_button_image),
|
||||
(set_button_image_get_info_cb),
|
||||
(gtk_path_bar_update_button_appearance): update to new icon
|
||||
rendering call.
|
||||
|
||||
2005-12-09 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (file_list_drag_data_received),
|
||||
(gtk_file_chooser_default_add_shortcut_folder),
|
||||
(shortcuts_activate_get_info_cb): replace synchronous check_is_folder
|
||||
calls with an async gtk_file_system_get_info() solution.
|
||||
|
||||
2005-12-09 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilesystem.c (icon_cache_element_free), (icon_theme_changed),
|
||||
(get_cached_icon), (gtk_file_info_render_icon): implement pixbuf
|
||||
caching as found in the file system backends.
|
||||
|
||||
2005-12-09 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtk.symbols: updated.
|
||||
|
||||
* gtk/gtkfilesystem.[ch] (struct GtkFileInfo): added icon_name field,
|
||||
(enum GtkFileInfoType): added GTK_FILE_INFO_ICON,
|
||||
(gtk_file_info_set_icon_name): new function,
|
||||
(gtk_file_info_render_icon): new function,
|
||||
(gtk_file_system_render_icon): removed.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_render_icon): removed,
|
||||
(create_file_info): fill icon_name field if required,
|
||||
(get_*_icon): modified to suit create_file_info() better.
|
||||
|
||||
* gtk/gtkfilechooserbutton.c: modified to use
|
||||
gtk_file_info_render_icon() instead of gtk_file_system_render_icon().
|
||||
|
||||
* gtk/gtkfilechooserdefault.c: likewise.
|
||||
|
||||
2005-12-06 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (get_file_info_finished),
|
||||
(update_current_folder_get_info_cb): fix mem leaks.
|
||||
|
||||
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): ditto.
|
||||
|
||||
* gtk/gtkpathbar.c (gtk_path_bar_set_path_finish): ditto.
|
||||
|
||||
2005-12-06 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb),
|
||||
(gtk_file_chooser_button_drag_data_received): make asynchronous,
|
||||
(update_label_and_image): remove unused variable.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c
|
||||
(gtk_file_chooser_default_update_current_folder): split in two
|
||||
functions, so we can have the is_folder check back.
|
||||
* gtk/gtkfilechooserprivate.h: add update_current_folder_handle
|
||||
field.
|
||||
|
||||
2005-12-06 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (show_and_select_paths): fixed a typo.
|
||||
|
||||
2005-12-05 Federico Mena Quintero <federico@ximian.com>
|
||||
|
||||
(merge from HEAD)
|
||||
|
||||
* gtk/gtkfilechooserdefault.c (trap_activate_cb): "event->state &
|
||||
modifiers", not "event->state && modifiers". Patch by Sadrul
|
||||
Habib Chowdhury <imadil@gmail.com>. Fixes bug #323073.
|
||||
|
||||
2005-12-06 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
Beginnings of an asynchronous file chooser.
|
||||
|
||||
* gtk/gtkfilechooserbutton.c: display name and the is folder property
|
||||
are now asynchronously set using set_info_for_at_path_iter(), the
|
||||
is folder property is now also stored in the tree model.
|
||||
|
||||
* gtk/gtkfilechooserdefault.c: lots of changes to the shortcuts
|
||||
model code to make it operate asynchronously, check_is_folder() has
|
||||
been "disabled" for now, all other synchronous calls were
|
||||
replaced with asychronous ones.
|
||||
|
||||
* gtk/gtkfilechooserentry.c: update call to
|
||||
gtk_file_system_get_folder().
|
||||
|
||||
* gtk/gtkfilechooserprivate.h: added two fields.
|
||||
|
||||
* gtk/gtkfilesystem.[ch]: for about 85% changed to the changes
|
||||
outlined in the proposal discussed on gtk-devel-list.
|
||||
|
||||
* gtk/gtkfilesystemmodel.[ch]: updated all asynchronous calls,
|
||||
_gtk_file_system_model_path_do() basically had to be rewritten
|
||||
(and I still need to finish that).
|
||||
|
||||
* gtk/gtkfilesystemunix.c: changed to be compatible with the new
|
||||
GtkFileSystem interface.
|
||||
|
||||
* gtk/gtkpathbar.c (button_clicked_cb): block/unblock the
|
||||
button_clicked_cb callback around the call to
|
||||
gtk_toggle_button_set_active(), avoids button_clicked_cb getting
|
||||
called twice.
|
||||
(_gtk_path_bar_set_path): refactored to be asynchronous.
|
||||
@@ -0,0 +1,500 @@
|
||||
2006-04-17 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* docs/tools/widgets.c (get_all_widgets): Add print dialog
|
||||
and page setup dialog.
|
||||
|
||||
2006-04-11 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkpapersize.c (gtk_paper_size_get_display_name):
|
||||
Call gettext on the standard paper names.
|
||||
|
||||
2006-04-11 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdk.symbols:
|
||||
* gdk/win32/gdkevents-win32.c:
|
||||
* gdk/win32/gdkwin32.h:
|
||||
Add gdk_win32_set_modal_dialog_libgtk_only that we
|
||||
need for handling the mainloop in the print dialogs.
|
||||
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Pump the gtk+ mainloop when needed in the print dialogs.
|
||||
This means gtk+ windows will redraw while the print dialogs
|
||||
are up.
|
||||
|
||||
2006-04-10 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Better size handling.
|
||||
Save win32-specific settings in additions to the generic ones
|
||||
if the generic one is lossy.
|
||||
|
||||
2006-04-10 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Finish implementing run_page_setup_dialog.
|
||||
|
||||
* gtk/gtkpagesetup.h:
|
||||
* gtk/gtkpapersize.h:
|
||||
* gtk/gtkprint-win32.h:
|
||||
* gtk/gtkprintcontext.h:
|
||||
* gtk/gtkprinter-private.h:
|
||||
* gtk/gtkprintoperation-private.h:
|
||||
* gtk/gtkprintoperation-unix.c:
|
||||
* gtk/gtkprintoperation.h:
|
||||
* gtk/gtkprintsettings.h:
|
||||
s/EGG/GTK/
|
||||
|
||||
2006-04-09 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk+-unix-print-2.0.pc.in: Fix a typo (#337698)
|
||||
|
||||
2006-04-07 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/paper_names_offsets.c:
|
||||
* gtk/gen-paper-names.c: Correct the suffix/duplicate optimizations.
|
||||
|
||||
2006-04-07 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Initial work on gtk_print_run_page_setup_dialog.
|
||||
Not reading margins yet.
|
||||
|
||||
2006-04-07 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/Makefile.am:
|
||||
Link to winspool
|
||||
|
||||
* gtk/gtk.symbols:
|
||||
* gtk/gtkprintoperation-private.h:
|
||||
* gtk/gtkprintoperation-unix.c:
|
||||
* gtk/gtkprintoperation.[ch]:
|
||||
Add gtk_print_operation_get_status_string() and status
|
||||
string to _gtk_print_operation_set_status.
|
||||
Rename GTK_PRINT_STATUS_PROCESSING to GTK_PRINT_STATUS_PRINTING.
|
||||
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Poll for status updates
|
||||
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
Rename GTK_PRINT_STATUS_PROCESSING to GTK_PRINT_STATUS_PRINTING.
|
||||
|
||||
* tests/print-editor.c:
|
||||
Show print status string
|
||||
|
||||
2006-04-06 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/paper_names_offsets.c:
|
||||
* gtk/gtkpapersize.c: Save 4K of .data by converting
|
||||
the array of paper names to offsets.
|
||||
|
||||
* gtk/gen-paper-names.c: Utility used to create
|
||||
paper_names_offsets.c from paper_names.c.
|
||||
|
||||
* gtk/Makefile.am: Necessary glue.
|
||||
|
||||
2006-04-06 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Use glib base64 code.
|
||||
Set up manual_* vars fully.
|
||||
|
||||
2006-04-06 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/Makefile.am:
|
||||
Add -lcomdlg32 on win32
|
||||
|
||||
* gtk/gtkprint-win32.h:
|
||||
Move WINVER define to .c files
|
||||
|
||||
* gtk/gtk.symbols:
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
Add empty gtk_print_run_page_setup win implementation
|
||||
Move WINVER define to this file
|
||||
|
||||
* modules/Makefile.am:
|
||||
Only build print backends on unix
|
||||
|
||||
2006-04-05 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
* gtk/gtkprintoperation-unix.c: Use GTK_RESPONSE_CANCEL/OK
|
||||
instead of GTK_RESPONSE_REJECT/ACCEPT, to make Esc close
|
||||
the dialog, and to not use values which are documented
|
||||
as reserved for apps.
|
||||
|
||||
2006-04-05 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* modules/printbackends/lpr/gtkprintbackendlpr.c:
|
||||
Don't hardcode lpr command, expose full commandline.
|
||||
|
||||
2006-04-05 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Don't check for printer changes after dialog is dead.
|
||||
|
||||
* gtk/gtkprintbackend.c: (gtk_print_backend_load_modules):
|
||||
Strip whitespace from backend strings
|
||||
|
||||
* gtk/gtkprintbackend.h:
|
||||
Add private printer functions
|
||||
|
||||
* gtk/gtkprinter-private.h:
|
||||
Move GtkPrinterPrivate into gtkprinter.c
|
||||
|
||||
* gtk/gtkprinter.[ch]:
|
||||
Move GtkPrinterPrivate into gtkprinter.c
|
||||
Add new construct properties.
|
||||
Add setter functions.
|
||||
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
* modules/printbackends/cups/gtkprintercups.[ch]:
|
||||
Update to new APIs.
|
||||
|
||||
* modules/printbackends/lpr/Makefile.am:
|
||||
* modules/printbackends/lpr/gtkprintbackendlpr.c:
|
||||
* modules/printbackends/lpr/gtkprinterlpr.[ch]
|
||||
Update to new APIs.
|
||||
Remove GtkPrinterLPR.
|
||||
Read/Save command line option in settings
|
||||
|
||||
* modules/printbackends/pdf/Makefile.am:
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.c:
|
||||
* modules/printbackends/pdf/gtkprinterpdf.[ch]:
|
||||
Update to new APIs.
|
||||
Remove GtkPrinterPDF.
|
||||
|
||||
2006-04-04 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkprintoperation.h: Add missing standard
|
||||
GObject macros. (#337277, Yevgen Muntyan)
|
||||
|
||||
2006-04-04 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprinteroption.[ch]:
|
||||
Add gtk_printer_option_has_choice.
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
Add support for "print at time".
|
||||
|
||||
2006-04-04 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpapersize.c:
|
||||
Handle ppd names with ".Transverse" suffix
|
||||
Don't force width < height
|
||||
|
||||
* gtk/gtkprinteroption.c:
|
||||
Make sure that value is never NULL.
|
||||
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
Add some HP whitelist names
|
||||
Remove spew from ignored options.
|
||||
|
||||
2006-04-03 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
Fix warnings
|
||||
|
||||
* gtk/gtkprinter-private.h:
|
||||
* gtk/gtkprinter.[ch]:
|
||||
Add gtk_printer_is_default.
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Use gtk_printer_is_default.
|
||||
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
Get default printer info
|
||||
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.c:
|
||||
Fix warning.
|
||||
|
||||
2006-04-03 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.c:
|
||||
* modules/printbackends/pdf/gtkprinterpdf.[ch]:
|
||||
Correctly read/write/use the output filename setting.
|
||||
|
||||
2006-04-03 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
Disable margin from printers if there are no printers.
|
||||
|
||||
* gtk/gtkpapersize.c:
|
||||
Fix build.
|
||||
|
||||
2006-04-01 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtk.symbols: protect unix-only symbols by
|
||||
G_OS_UNIX (#336819, Yevgen Muntyan)
|
||||
|
||||
* gtk/gtkpapersize.c: Win32 fixes. (#336806, Yevgen Muntyan)
|
||||
|
||||
2006-03-30 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtk.symbols:
|
||||
Update
|
||||
|
||||
* gtk/gtkprintbackend.[ch]:
|
||||
Add dnotify to gtk_print_backend_print_stream
|
||||
|
||||
* gtk/gtkprinter-private.h:
|
||||
Declare gtk_print_job_set_status
|
||||
|
||||
* gtk/gtkprinter.[ch]:
|
||||
Remove gtk_printer_prepare_job.
|
||||
|
||||
* gtk/gtkprintjob.[ch]:
|
||||
Now you create print job directly with gtk_print_job_new() and
|
||||
they'll be prepared automatically.
|
||||
Add status_changed signal and get_status.
|
||||
Add gtk_print_job_set_source_file to allow sending a file.
|
||||
|
||||
* gtk/gtkprintoperation-private.h:
|
||||
Add destroy notify for platform_data.
|
||||
Declare _gtk_print_operation_set_status.
|
||||
|
||||
* gtk/gtkprintoperation-unix.c:
|
||||
Hook up status change handling.
|
||||
Use the new way to get a print job.
|
||||
|
||||
* gtk/gtkprintoperation.[ch]:
|
||||
Add status_changed signal and get_status/is_finished.
|
||||
|
||||
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
* modules/printbackends/lpr/gtkprintbackendlpr.c:
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.c:
|
||||
Update to use new APIs and set status on the job.
|
||||
Cups polls for the status.
|
||||
|
||||
* tests/print-editor.c:
|
||||
Track the print operations in the status bar.
|
||||
|
||||
2006-03-30 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/Makefile.am:
|
||||
* gtk/gtkprintbackend.c:
|
||||
Default to "pdf,cups" if we found cups, and
|
||||
"pdf,lpr" otherwise.
|
||||
|
||||
2006-03-29 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* modules/printbackends/Makefile.am:
|
||||
* configure.in: Don't build the cups backend
|
||||
if cups is not there.
|
||||
|
||||
2006-03-29 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtk.symbols:
|
||||
gtk_printer_prep_job -> gtk_printer_prepare_job
|
||||
gtk_print_job_prep -> gtk_print_job_prepare
|
||||
|
||||
* gtk/gtkprintbackend.h:
|
||||
* gtk/gtkprinter-private.h:
|
||||
* gtk/gtkprinter.[ch]:
|
||||
Add print_job argument to printer_prepare_for_print
|
||||
gtk_printer_prep_job -> gtk_printer_prepare_job
|
||||
|
||||
* gtk/gtkprintjob.[ch]:
|
||||
Add manual rendering settings to GtkPrintJob.
|
||||
gtk_print_job_prep -> gtk_print_job_prepare
|
||||
|
||||
* gtk/gtkprintoperation-private.h:
|
||||
* gtk/gtkprintoperation-unix.c:
|
||||
* gtk/gtkprintoperation.c:
|
||||
Get more manual_* settings working.
|
||||
Run mainloop after each printed page.
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Save page ranges.
|
||||
|
||||
* modules/printbackends/cups/gtkprintbackendcups.c:
|
||||
* modules/printbackends/lpr/gtkprintbackendlpr.c:
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.c:
|
||||
Now put the manual_* settings inside the PrintJob in
|
||||
prepare_for_print.
|
||||
|
||||
2006-03-29 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Make sure we remember the format-for printer.
|
||||
Also, use it as the default if set.
|
||||
|
||||
2006-03-28 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Remove unnecessary padding under list.
|
||||
|
||||
2006-03-28 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
More HIGy layout.
|
||||
|
||||
2006-03-28 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
HIG conformance of spacing and titles.
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Use standard constructor form print button too.
|
||||
|
||||
2006-03-27 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* modules/printbackends/*/Makefile.am: Fix
|
||||
a problem with builddir != srcdir builds.
|
||||
(#335915, Yevgen Muntyan)
|
||||
|
||||
2006-03-27 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkprintbackend.c: Simply the syntax
|
||||
of the setting to "cups,pdf", and get rid
|
||||
of the GScanner used to parse it.
|
||||
|
||||
2006-03-27 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
Reorder print list so status is at the end.
|
||||
Ellipsize the status column.
|
||||
|
||||
2006-03-27 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
Handle removed printers and status-changed.
|
||||
Handle NULL printer location.
|
||||
|
||||
2006-03-27 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/Makefile.am:
|
||||
* gtk/stock-icons/24/gtk-orientation-landscape.png:
|
||||
* gtk/stock-icons/24/gtk-orientation-portrait.png:
|
||||
* gtk/stock-icons/24/gtk-orientation-reverse-landscape.png:
|
||||
* gtk/gtkiconfactory.c: (get_default_icons):
|
||||
* gtk/gtkstock.h:
|
||||
Add orientation stock icons.
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
Use the orientation icons.
|
||||
|
||||
2006-03-27 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gtk/gtkpagesetupunixdialog.c:
|
||||
* gtk/gtkprintjob.c:
|
||||
* gtk/gtkprintoperation-unix.c:
|
||||
* gtk/gtkprintunixdialog.c:
|
||||
s/impl/dialog/
|
||||
Don't prefix static functions with _
|
||||
|
||||
2006-03-26 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkprintunixdialog.c: Don't use _(""). (#335898,
|
||||
Christian Persch)
|
||||
|
||||
* modules/printbackends/*: Don't use G_DEFINE_TYPE
|
||||
in modules.
|
||||
|
||||
* gtk/gtkprintbackend.c: Remove an unused static function.
|
||||
|
||||
2006-03-25 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtk.symbols: Add printing symbols
|
||||
|
||||
* gtk/gtkpapersize.[hc]:
|
||||
* gtk/gtkpage*.[hc]:
|
||||
* gtk/gtkprint*.[hc]: Add aliasing, #include cleanups.
|
||||
|
||||
* gtk/gtkprintcontext.h:
|
||||
* gtk/gtkprintoperation.h:
|
||||
* gtk/gtkprintsettings.h: Make get_type function const.
|
||||
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.c: Remove
|
||||
C99ism.
|
||||
|
||||
* modules/printbackends/cups/gtkcupsutils.c: Use unsigned
|
||||
integers for bitfields.
|
||||
|
||||
2006-03-24 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c: Fix docs
|
||||
|
||||
* gtk/Makefile.am (EXTRA_DIST): Add the stock icons here.
|
||||
|
||||
* gdk/directfb/Makefile.am (EXTRA_DIST): Remove ChangeLog,
|
||||
to make make dist happier.
|
||||
|
||||
2006-03-24 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* configure.in:
|
||||
* gtk/gtkprintbackend.c:
|
||||
* modules/printbackends/Makefile.am:
|
||||
* modules/printbackends/cups/Makefile.am:
|
||||
* modules/printbackends/lpr/Makefile.am:
|
||||
* modules/printbackends/lpr/gtkprintbackendlpr.[ch]:
|
||||
* modules/printbackends/lpr/gtkprinterlpr.[ch]:
|
||||
* modules/printbackends/pdf/Makefile.am:
|
||||
* modules/printbackends/pdf/gtkprintbackendpdf.[ch]:
|
||||
* modules/printbackends/pdf/gtkprinterpdf.[ch]:
|
||||
Import pdf and lpr backend
|
||||
|
||||
2006-03-24 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
Import print-operation into gtk+
|
||||
|
||||
* .cvsignore:
|
||||
* Makefile.am:
|
||||
* gtk+-unix-print-2.0.pc.in:
|
||||
Add gtk+-unix-print-2.0.pc
|
||||
|
||||
* configure.in:
|
||||
Look for cups
|
||||
Look for various _NL_* extensions
|
||||
Output new makefiles and .pc.in
|
||||
|
||||
* gtk/Makefile.am:
|
||||
Add new files
|
||||
|
||||
* gtk/gtk.h:
|
||||
Include gtkprintoperation.h
|
||||
|
||||
* gtk/gtkenums.h:
|
||||
Add printing enums
|
||||
|
||||
* gtk/gtkmarshalers.list:
|
||||
Add required new marshallers
|
||||
|
||||
* gtk/gtkpagesetup.[ch]:
|
||||
* gtk/gtkpagesetupunixdialog.[ch]:
|
||||
* gtk/gtkpagesetupunixdialog.h:
|
||||
* gtk/gtkpapersize.[ch]:
|
||||
* gtk/gtkprint-win32.[ch]:
|
||||
* gtk/gtkprintbackend.[ch]:
|
||||
* gtk/gtkprintcontext.[ch]:
|
||||
* gtk/gtkprinter-private.h:
|
||||
* gtk/gtkprinter.[ch]:
|
||||
* gtk/gtkprinteroption.[ch]:
|
||||
* gtk/gtkprinteroptionset.[ch]:
|
||||
* gtk/gtkprinteroptionwidget.[ch]:
|
||||
* gtk/gtkprintjob.[ch]:
|
||||
* gtk/gtkprintoperation-private.h:
|
||||
* gtk/gtkprintoperation-unix.c:
|
||||
* gtk/gtkprintoperation-win32.c:
|
||||
* gtk/gtkprintoperation.[ch]:
|
||||
* gtk/gtkprintsettings.[ch]:
|
||||
* gtk/gtkprintunixdialog.[ch]:
|
||||
* gtk/paper_names.c:
|
||||
Generic printing support
|
||||
|
||||
* modules/Makefile.am:
|
||||
* modules/printbackends/Makefile.am:
|
||||
* modules/printbackends/cups/Makefile.am:
|
||||
* modules/printbackends/cups/gtkcupsutils.[ch]:
|
||||
* modules/printbackends/cups/gtkprintbackendcups.[ch]:
|
||||
* modules/printbackends/cups/gtkprintercups.[ch]:
|
||||
Cups backend
|
||||
|
||||
* tests/.cvsignore:
|
||||
* tests/Makefile.am:
|
||||
* tests/print-editor.c:
|
||||
Add printing test app
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
## Makefile.am for GTK+
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
SRC_SUBDIRS = gdk gtk libgail-util modules demos tests testsuite examples
|
||||
SRC_SUBDIRS = gdk gtk libgail-util modules demos tests perf examples
|
||||
SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
@@ -11,6 +11,19 @@ EXTRA_DIST += \
|
||||
HACKING \
|
||||
makecopyright \
|
||||
NEWS.pre-1-0 \
|
||||
ChangeLog.pre-1-0 \
|
||||
ChangeLog.pre-1-2 \
|
||||
ChangeLog.pre-2-0 \
|
||||
ChangeLog.pre-2-2 \
|
||||
ChangeLog.pre-2-4 \
|
||||
ChangeLog.pre-2-6 \
|
||||
ChangeLog.pre-2-8 \
|
||||
ChangeLog.pre-2-10 \
|
||||
ChangeLog.pre-2-12 \
|
||||
ChangeLog.pre-2-14 \
|
||||
ChangeLog.pre-2-16 \
|
||||
ChangeLog.gtk-async-file-chooser \
|
||||
ChangeLog.gtk-printing \
|
||||
README.commits \
|
||||
README.win32 \
|
||||
config.h.win32 \
|
||||
|
||||
@@ -40,7 +40,7 @@ test: test-cwd test-recurse
|
||||
# test-cwd: run tests in cwd
|
||||
test-cwd: ${TEST_PROGS}
|
||||
@$(SKIP_GDKTARGET) || test -z "${TEST_PROGS}" || { \
|
||||
$(XVFB_START) && { set -e; $(TESTS_ENVIRONMENT) G_TEST_SRCDIR="${abs_strcdir}" G_TEST_BUILDDIR="${abs_builddir}" ${GTESTER} --verbose ${TEST_PROGS}; }; \
|
||||
$(XVFB_START) && { set -e; $(TESTS_ENVIRONMENT) ${GTESTER} --verbose ${TEST_PROGS}; }; \
|
||||
}
|
||||
# test-recurse: run tests in subdirs
|
||||
test-recurse:
|
||||
@@ -70,9 +70,9 @@ test-report perf-report full-report: ${TEST_PROGS}
|
||||
$(XVFB_START) && { \
|
||||
set -e; \
|
||||
if test -z "$$GTESTER_LOGDIR" ; then \
|
||||
G_TEST_SRCDIR="${abs_srcdir}" G_TEST_BUILDDIR="${abs_builddir}" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
|
||||
${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
|
||||
elif test -n "${TEST_PROGS}" ; then \
|
||||
G_TEST_SRCDIR="${abs_srcdir}" G_TEST_BUILDDIR="${abs_builddir}" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
|
||||
${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
|
||||
fi ; \
|
||||
}; \
|
||||
}; \
|
||||
|
||||
@@ -1,404 +1,3 @@
|
||||
Overview of Changes in GTK+ 3.9.6 to 3.9.8
|
||||
==========================================
|
||||
|
||||
* We've started deprecating GtkStock apis. These apis will continue
|
||||
working until GTK+ 4, so there is no need to rush to replace them.
|
||||
For more information, see
|
||||
https://mail.gnome.org/archives/gtk-devel-list/2013-July/msg00000.html
|
||||
Wholly deprecated as part of this effort:
|
||||
GtkIconFactory, GtkIconSet, GtkIconSource, GtkImageMenuItem,
|
||||
GtkAction, GtkUIManager
|
||||
|
||||
* The GtkSettings cleanup that was discussed at the recent GTK+
|
||||
hackfest has started to land. A number of settings have been
|
||||
deprecated and are ignored now:
|
||||
gtk-button-images,
|
||||
gtk-show-unicode-menu,
|
||||
gtk-show-input-method-menu,
|
||||
gtk-enable-mnemonics,
|
||||
gtk-auto-mnemonics,
|
||||
gtk-color-palette,
|
||||
gtk-can-change-accels,
|
||||
cursor blink settings,
|
||||
gtk-fallback-icon-theme,
|
||||
gtk-scrolled-window-placement,
|
||||
menu popup delay settings,
|
||||
gtk-menu-bar-accel,
|
||||
keynav tweaks,
|
||||
gtk-touchscreen-mode,
|
||||
gtk-icon-sizes,
|
||||
im style tweaks,
|
||||
gtk-file-chooser-backend,
|
||||
gtk-enable-tooltips,
|
||||
gtk-visible-focus,
|
||||
tooltip timeout tweaks,
|
||||
toolbar style tweaks
|
||||
|
||||
* Initial support for scaled output (on high-dpi screens) has been
|
||||
added. While this can be built with cairo 1.12, it needs a cairo
|
||||
branch to work. Support for this has been added to the Wayland,
|
||||
OS X and Windows backends.
|
||||
|
||||
* Bugs fixed:
|
||||
390048 Entire word search flag
|
||||
672271 File chooser seems over-enthusiastic about using subdirectories
|
||||
696498 can't set download folder
|
||||
701119 Error messages when GtkAboutDialog shows license info
|
||||
702332 File Browser: Filter submenu is missing from context menu
|
||||
702831 Shaped GDK windows do not work
|
||||
702913 Reduce hash table lookups in gdk_x11_screen_supports_net...
|
||||
702977 Problem with gtk_text_iter_forward_search(), multi-byte ...
|
||||
702981 GtkListBox docs still refer to GtkListBoxUpdateSeparatorFunc
|
||||
702996 Port to the new private macros and API
|
||||
703069 Opening a big menu activates some menu entry
|
||||
703154 Calling gtk_widget_set_opacity() on an unrealized widget...
|
||||
703220 Memory allocation integer overflow in gdk_cairo_set_sour...
|
||||
703313 Improve documentation of the GtkTextView API
|
||||
703406 GtkSearchBar does not automatically connect entry
|
||||
703533 textlayout: avoid double-free when adding preedit color
|
||||
703606 GtkPlacesSidebar should use g_themed_icon_new_with_default...
|
||||
703616 Inconsistent deprecations. GtkIconSet and other classes.
|
||||
703618 listbox: Add function to get the index of a GtkListBoxRow
|
||||
703656 GtkSearchBar: Don't show a close button by default
|
||||
703765 Build of wayland backend fails when not building X11 backend
|
||||
703827 Confusion in docs for gtk_recent_info_get_modified () and...
|
||||
|
||||
* Translation updates:
|
||||
Tajik
|
||||
Vietnamese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.9.4 to 3.9.6
|
||||
==========================================
|
||||
|
||||
* GtkListBox:
|
||||
- handle double-clicks properly
|
||||
- add an example in gtk3-demo
|
||||
|
||||
* Bugs fixed:
|
||||
390048 Patch for adding "whole word" search for gtk_text_iter...
|
||||
560337 GtkFileChooser hour time missing for current date files
|
||||
649390 CRLF text is copied to clipboard as CRCRLF on Windows
|
||||
679930 gtk_builder_add_* should not use GError
|
||||
698183 Text input is too slow and some keys are broken after...
|
||||
701174 Update misleading filechooser documentation
|
||||
702598 Invalid read of size 4 in gtk_icon_info_get_embedded_rect
|
||||
702695 typo: "and thus will thus"
|
||||
702763 ellipsize placeholder text
|
||||
|
||||
* Translation updates:
|
||||
Italian
|
||||
Tajik
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.9.2 to 3.9.4
|
||||
==========================================
|
||||
|
||||
* GtkSearchBar: a toolbar that will popup automatically when
|
||||
searches should be started, and dismissed when they are finished
|
||||
|
||||
* GtkListBox a vertical container that can sort and filter its
|
||||
children
|
||||
|
||||
* GtkStack has gained position dependent transitions (left-right
|
||||
and up-down)
|
||||
|
||||
* The Broadway GDK backend can be built on Windows now
|
||||
|
||||
* Bugs fixed:
|
||||
593079 untranslated strings in errors
|
||||
692638 Don't use AC_CANONICAL_TARGET
|
||||
699673 [3.2/3.4/3.6/3.8] uuid conflicting on Windows
|
||||
700185 GtkWindow: problem with child widget visibility
|
||||
700444 [W32] The use of uninitialized GDK default screen
|
||||
700779 gtk_menu_item_draw puts the arrow too close to the border
|
||||
701463 typo: "a string containing the an approximation"
|
||||
701840 deprecate gtk_im_multicontext_append_menuitems
|
||||
702370 a11y's /child/add-remove/GtkEntry test reads invalid memory
|
||||
|
||||
* Translation updates
|
||||
Brazilian Portuguese
|
||||
Chinese
|
||||
Czech
|
||||
Japanese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.9.0 to 3.9.2
|
||||
==========================================
|
||||
|
||||
* The GDK initialization code has been refactored. GdkDisplayManager
|
||||
is no longer backend-specific.
|
||||
|
||||
* The symbol exporting functionality has been refactored. We no longer
|
||||
use .symbols files, and instead rely on explicit header annotations
|
||||
for every exported symbol. the abicheck scripts are no longer used.
|
||||
|
||||
* The GDK drawing and scrolling has been simplified. We no longer use
|
||||
XCopyArea for scrolling, instead an offscreen cache is used. There
|
||||
is a new debug flag, GTK_DEBUG=pixel-cache for this.
|
||||
|
||||
* Window sizing issues have been addressed.
|
||||
|
||||
* Implement height-for-width for GtkEventBox and GtkCheckButton
|
||||
|
||||
* Custom titlebars can now be set from GtkBuilder files
|
||||
|
||||
* Optionally install tests, when configured with --enable-installed-tests.
|
||||
To run these tests, gnome-desktop-testing-runner can be used.
|
||||
|
||||
* Native input methods are supported on OS X now.
|
||||
|
||||
* Bugs fixed:
|
||||
360131 Wrong documentation for gtk_file_chooser_set_do_overwrite_...
|
||||
561221 Don't allow file bookmarks
|
||||
591969 make the FileChooser dialog handle Make FileChooser handle...
|
||||
628902 use expand flags to determine window resizability
|
||||
667759 gtkdnd-quartz.c is missing annotations for introspection
|
||||
691921 GTK+ (quartz) built on Mac OS X 10.5 references [NSMenu re...
|
||||
694273 Patch to support NSTextInputClient in text widgets
|
||||
695120 GtkMenu and GdkWindow sizes can get out of sync
|
||||
696001 need to know about tiling
|
||||
696640 GtkButton: Don't suppress unhandled mouse events
|
||||
698051 Typo in documentation comment
|
||||
698361 file chooser: menu commands should be capitalized
|
||||
698933 places sidebar: don't capitalize "file system"
|
||||
699104 when nothing is selected, Add to Bookmarks is enabled but ...
|
||||
699140 Baseline support breaks height-for-width in event box
|
||||
699239 Choose DnD/tooltip widget better on GtkOverlay and other l...
|
||||
699289 API request: MenuItem has no function to set label markup
|
||||
699633 GtkWindow: critical messages when negative size allocations
|
||||
699690 Cross-compilation broken as of 3.9.0 due to extract-string...
|
||||
699739 GtkSettings fails to read uint properties from settings.ini
|
||||
699750 Print dialog crashes when printer does not provide printer...
|
||||
699901 GTK CSS keybinding broken
|
||||
699929 GtkCheckMenuItem: remove an unused boolean field
|
||||
699970 Fullscreen OSD not visible against gtk+ git master
|
||||
700007 Various small improvements
|
||||
700053 titlebar: fullscreen broken
|
||||
700054 titlebar: warning at destroy time
|
||||
700056 titlebar: dialogs do not appear centered
|
||||
700079 Fix accels added after the window was shown not working
|
||||
700233 Gtk+ exits on X11 when querying a slave device
|
||||
700301 wayland: ensure the clip region is updated after the windo...
|
||||
700465 Missing NULL-check in XI2's implementation for get_window()
|
||||
700575 docs: remove unused objects_grouped.sgml
|
||||
700578 Missing vertical grid lines when some columns hidden.
|
||||
700737 [wayland] gdk_screen_get_height() returns wrong value
|
||||
700787 Add GtkSearchBar widget
|
||||
700844 GdkRgba: Fix 'loose' typo
|
||||
700864 error_selecting_folder_over_existing_file_dialog() will ne...
|
||||
700979 GtkPlacesSidebar: do not unref mount
|
||||
|
||||
* Translation updates:
|
||||
Brazilian Portuguese
|
||||
English
|
||||
Hebrew
|
||||
Japanese
|
||||
Norwegian bokmål
|
||||
Russian
|
||||
Slovak
|
||||
Spanish
|
||||
Tajik
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.7 to 3.9
|
||||
======================================
|
||||
|
||||
* GtkFileChooser:
|
||||
- Always show fuse-mounted locations in shortcuts
|
||||
- GtkFileChooserButton has received a lot of fixes and tests have
|
||||
been added for many of them
|
||||
|
||||
* GtkWindow:
|
||||
- Initial support for client-side decorations has been added. This
|
||||
is going to be used by default under Wayland. To try it with other
|
||||
backends, set the GTK_CSD=1 environment variable.
|
||||
- gtk_window_set_titlebar: A new function that can set a custom,
|
||||
client-side titlebar on toplevel windows.
|
||||
|
||||
* Wayland:
|
||||
- Use client-side decorations
|
||||
- Implement maximization
|
||||
- Improve cursor handling
|
||||
- Improve multi-monitor handling
|
||||
- Support most GtkSettings (for now by reading GSettings directly)
|
||||
- Complete the keymap implementation
|
||||
- Add support for custom surfaces
|
||||
- Implement animated cursors
|
||||
- Support the WAYLAND_SOCKET environment variable
|
||||
- Implement frame synchronizatio
|
||||
- Document Wayland-specific APIs
|
||||
|
||||
* Broadway:
|
||||
- Improve window size handling
|
||||
- Implement frame synchronization
|
||||
- Add support for password authentication
|
||||
|
||||
* New APIs, widgets, feature additions:
|
||||
- GtkHeaderBar is a new widget similar to a GtkBox, with the extra
|
||||
feature that it can center a child (typically a title), independent
|
||||
of the other content.
|
||||
- GtkPlacesSidebar is the sidebar widget in the file chooser, exported
|
||||
as a public widget - it will be shared with nautilus.
|
||||
- GtkStack is an alternative to GtkNotebook for showing one of several
|
||||
child widgets at a time. It supports animated transitions. Tabs are
|
||||
not built into this widgets, but instead provided by the separate
|
||||
GtkStackSwitcher widget.
|
||||
- GtkRevealer is a new new widget that can hide or show its child
|
||||
in an animated fashion.
|
||||
- GtkMenuTracker is a helper object that makes dealing with
|
||||
GMenuModels easier and more efficient.
|
||||
- gtk_grid_remove_row/column: New functions to remove whole rows
|
||||
or columns from a GtkGrid
|
||||
- Support for composite children has been added to GtkWidget. This
|
||||
allows to create complex widgets from GtkBuilder ui files. All
|
||||
complex GTK+ widgets have been converted to use this facility.
|
||||
- Baseline support was added to the GTK+ size allocation machinery.
|
||||
Widgets can now export the baseline of the text they contain,
|
||||
and containers can align their children wrt to their baselines.
|
||||
|
||||
|
||||
* Known problems, feature removals, compatibility caveats:
|
||||
- Handling of window size is currently in flux, and there are
|
||||
some known problems with sizes unintentionally changing
|
||||
- Support for the Motif DND protocol has been dropped
|
||||
- Client-side decorations still have some issues when drawing
|
||||
directly on toplevel windows or setting their background
|
||||
- Support for multiple screens per display has been removed. This
|
||||
was only ever supported on X11, and is an exceedingly rare setup
|
||||
nowadays. The display-screen relation is now 1:1, and we will do
|
||||
some more simplification of displaymanager/display/screen/monitor
|
||||
APIs.
|
||||
- gdk_window_get_display has been deprecated
|
||||
- gtk_widget_push_composite_child has been deprecated - this was
|
||||
used for anything
|
||||
- GtkSwitch has been changed to draw focus internally, instead of
|
||||
reserving space outside the switch for it. This may require some
|
||||
application adjustment where margins were tweaked to 'correct'
|
||||
the alignment of switches manually
|
||||
|
||||
* Printing:
|
||||
- Avoid blocking when looking for avahi printers
|
||||
- Don't link against avahi-gobject, use D-Bus directly
|
||||
|
||||
* Bugs fixed:
|
||||
504901 GtkCellRendererCombo requires click-and-hold
|
||||
586367 In local_only mode, file chooser should return native pa...
|
||||
671939 [regression] crash on exit
|
||||
672018 Need API to set global application state (busy, counters...
|
||||
674051 Scrolling zoom in view - incorrect image display
|
||||
674759 GtkLabel: wrong value of "mnemonic-keyval" when "use-mar...
|
||||
675571 (out) or (inout) annotation possibly missing for gtk_men...
|
||||
675649 gtk-demo: Fix typo
|
||||
680241 Instructions on how to build a GTK app won't work with r...
|
||||
681446 gtkdnd memory leak
|
||||
685419 gtkprintbackendfile: Infinite loop in _cairo_write()
|
||||
685420 Critical warnings when GtkPrintJob is released too early
|
||||
688820 GIcon is a bad interface
|
||||
688896 Add documentation for GtkWidget::show,hide,map,unmap,rea...
|
||||
690275 scrolling on other windows is applied when coming back (...
|
||||
691040 selection is reported incorrectly in file chooser button
|
||||
692871 Need to expose output information to make GdkScreen API ...
|
||||
694339 Fix build of GTK+ on Windows
|
||||
694465 Allow backends to fail during initialisation
|
||||
695200 Switching apps while a combobox open makes the parent wi...
|
||||
695228 GdkPixbuf:ERROR:gdk-pixbuf-animation.c:242:gdk_pixbuf_an...
|
||||
695278 Avoid passing a NULL title to setTitle
|
||||
695304 GtkTextView: don't popdown a bubble if we don't have one
|
||||
695312 Initial 'text' set in the non-numeric-only GtkSpinButton...
|
||||
695375 GtkEntryAccessible: also handle entry icon tooltip NULL ...
|
||||
695380 gtk_binding_entry_skip broken
|
||||
695391 wayland documentation section id is "gtk-osx"
|
||||
695473 treeview: fix a critical warning
|
||||
695476 Drop the Motif DND protocol
|
||||
695482 Universal Access panel appears jumbled and horrible afte...
|
||||
695493 testgtk: issues with the color selection example
|
||||
695495 testgtk: cursor example segfaults
|
||||
695497 testgtk: lack of key repeat
|
||||
695506 gtk-demo: link hovering unreliable
|
||||
695682 Cannot build docs for wayland-only build
|
||||
695714 Getting of printer info can hang
|
||||
695772 Different appearance of menus within Audacious
|
||||
695783 GtkApplication: Allow passing windows on non-X11 targets
|
||||
695861 Allow to use custom surfaces for GdkWindows in Wayland
|
||||
695874 GtkFontChooser docs
|
||||
695895 Fix the gtk3-demo demo program on Windows
|
||||
695945 implement minimize / maximize functionality
|
||||
695948 GtkFontButton sets wrong show-preview-entry
|
||||
695998 csd: enable shadows in the outer border
|
||||
696051 vertical grid lines in rtl mode
|
||||
696138 GtkWidget: some deprecation marks are missing
|
||||
696171 GtkAssistant highlighted font unreadable
|
||||
696202 Add GtkSpinner animation back to Win32 theme
|
||||
696232 win32: do not crash on invalid utf8 conversion
|
||||
696340 wayland: device list is populated async
|
||||
696370 GtkOverlay doesn't work on top of GtkClutterEmbed
|
||||
696429 wayland: Implement animated cursors
|
||||
696457 gnome-ostree build broken by 3a9de35a6cefddc09aaf000e523...
|
||||
696468 improve GMenuModel -> GtkMenu conversion
|
||||
696546 gtk_print_backend_cups_finalize() crashes if cups_get_pr...
|
||||
696553 Crash in avahi_create_browsers
|
||||
696561 GtkApplicationWindow rendering broken
|
||||
696608 css_image_value_parse: returning FALSE in pointer function
|
||||
696622 gtk option printer widget segfault in epiphany
|
||||
696623 GtkOverlay with a revealer produces warnings setting a m...
|
||||
696767 a pair of memory leaks
|
||||
696882 [regression] GtkWindow changes size after hide/show cycle
|
||||
697048 GtkTextView: small code improvements
|
||||
697144 Popup menu mnemonics fixes
|
||||
697196 gtk_notebook_set_tab_reorderable boolean handling
|
||||
697200 GtkWindow: notify::attached-to not emitted
|
||||
697263 Impossible to set window transparency on 3.8
|
||||
697275 gtk_window_set_default_size() doesn't work anymore
|
||||
697427 Unreferencing GtkStatusIcon object causes abort
|
||||
697673 Apps should connect only once when using Wayland
|
||||
697795 xi2: Improve pointer emulation debug reporting
|
||||
697886 dnd icon drawing broken on master
|
||||
697947 A lot of GTK+ apps fail to launch with error "desktop_she...
|
||||
698181 Document icon-shadow CSS property
|
||||
698433 Geometry management broken in GtkBin widgets
|
||||
698682 GtkSpinButton: don't constantly recreate style contexts f...
|
||||
698864 wayland: improve integration with GdkFrameClock
|
||||
699020 GtkImage: do not leak metrics in baseline align
|
||||
699225 typo: Modifed -> Modified
|
||||
|
||||
* Translation updates:
|
||||
Arabic
|
||||
Aragonese
|
||||
Assamese
|
||||
Belarusian
|
||||
Brazilian Portuguese
|
||||
British English
|
||||
Catalan
|
||||
Catalan (Valencian)
|
||||
Czech
|
||||
Danish
|
||||
Finnish
|
||||
French
|
||||
Galician
|
||||
German
|
||||
Greek
|
||||
Hindi
|
||||
Hungarian
|
||||
Indonesian
|
||||
Italian
|
||||
Kazakh
|
||||
Korean
|
||||
Latvian
|
||||
Malayalam
|
||||
Odia
|
||||
Persian
|
||||
Polish
|
||||
Punjabi
|
||||
Russian
|
||||
Serbian
|
||||
Simplified Chinese
|
||||
Slovenian
|
||||
Tajik
|
||||
Tamil
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.7.12
|
||||
==================================
|
||||
|
||||
|
||||
@@ -69,34 +69,7 @@ to that bug report.
|
||||
Otherwise, enter a new bug report that describes the patch,
|
||||
and attach the patch to that bug report.
|
||||
|
||||
Patches should be in unified diff form. (The -up option to GNU diff)
|
||||
Even better are git-formatted patches. (Use git format-patch)
|
||||
|
||||
|
||||
Release notes for 3.10
|
||||
======================
|
||||
|
||||
* GDK has been changed to allow only a single screen per display.
|
||||
Only the X11 backend had multiple screens before, and multi-screen
|
||||
setups (not multi-monitor!) are very rare nowadays. If you really
|
||||
need multiple X screens, open them as separate displays.
|
||||
|
||||
* The behavior of GtkBox::expand has been changed to never propagate
|
||||
up. Previously, this was happening inconsistently. If you want the
|
||||
expand to propagate, use the GtkWidget h/v expand properties.
|
||||
If you experience sizing problems with widgets in ported code,
|
||||
carefully check the expand and fill flags of your boxes.
|
||||
|
||||
* GtkBin no longer provides default implementations for
|
||||
get_height_for_width, subclasses now have to provide their own
|
||||
implementation if they need height-for-width functionality.
|
||||
|
||||
* Widget state propagation has been changed. Historically, all of
|
||||
active, prelight, selected, insensitive, inconsistent and backdrop
|
||||
have been propagated to children. This has now been restricted
|
||||
to just the insensitive and backdrop states. This mostly affects
|
||||
theming.
|
||||
|
||||
Patches should be in unified diff form. (The -up option to GNU diff.)
|
||||
|
||||
Release notes for 3.8
|
||||
=====================
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
SUBDIRS = \
|
||||
crypt \
|
||||
vs9 \
|
||||
vs10
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
EXTRA_DIST += \
|
||||
crypt.h \
|
||||
crypt3.c
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
@@ -1,32 +0,0 @@
|
||||
/**************************************************************************
|
||||
* Unix-like crypt(3) Algorithm for Password Encryption
|
||||
*
|
||||
* File : crypt3.h
|
||||
* Purpose : Provides crypt(3) prototypes to ANSI C compilers
|
||||
* without a need for the crypt library.
|
||||
* Author : Fan, Chun-wei
|
||||
* Date : June 24, 2013
|
||||
*
|
||||
* I am releasing the source that I have provided into public
|
||||
* domain without any restrictions, warranties, or copyright
|
||||
* claims of my own.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef __ANSI_CRYPT_H__
|
||||
#define __ANSI_CRYPT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
void encrypt (char *block, int edflag);
|
||||
void setkey (char *key);
|
||||
char* crypt (const char *key, const char *salt);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ANSI_CRYPT_H__ */
|
||||
@@ -1,460 +0,0 @@
|
||||
/**************************************************************************
|
||||
* Unix-like crypt(3) Algorithm for Password Encryption
|
||||
*
|
||||
* File : crypt3.c
|
||||
* Purpose : Provides crypt(3) functionality to ANSI C compilers
|
||||
* without a need for the crypt library.
|
||||
* Author : Michael Dipperstein
|
||||
* Date : November 3, 1998
|
||||
*
|
||||
***************************************************************************
|
||||
* The source in this file is heavily borrowed from the crypt3.c file
|
||||
* found on several ftp sites on the Internet. The original source
|
||||
* claimed to be BSD, but was not distributed with any BSD license or
|
||||
* copyright claims. I am releasing the source that I have provided into
|
||||
* public domain without any restrictions, warranties, or copyright
|
||||
* claims of my own.
|
||||
*
|
||||
* The code below has been cleaned and compiles correctly under, gcc,
|
||||
* lcc, and Borland's bcc C compilers. A bug involving the left and
|
||||
* right halves of the encrypted data block in the widely published
|
||||
* crypt3.c source has been fixed by this version. All implicit register
|
||||
* declarations have been removed, because they generated suboptimal code.
|
||||
* All constant data has been explicitly declared as const and all
|
||||
* declarations have been given a minimal scope, because I'm paranoid.
|
||||
*
|
||||
* Caution: crypt() returns a pointer to static data. I left it this way
|
||||
* to maintain backward compatibility. The downside is that
|
||||
* successive calls will cause previous results to be lost.
|
||||
* This can easily be changed with only minor modifications to
|
||||
* the function crypt().
|
||||
**************************************************************************/
|
||||
|
||||
/* Initial permutation */
|
||||
static const char IP[] =
|
||||
{
|
||||
58, 50, 42, 34, 26, 18, 10, 2,
|
||||
60, 52, 44, 36, 28, 20, 12, 4,
|
||||
62, 54, 46, 38, 30, 22, 14, 6,
|
||||
64, 56, 48, 40, 32, 24, 16, 8,
|
||||
57, 49, 41, 33, 25, 17, 9, 1,
|
||||
59, 51, 43, 35, 27, 19, 11, 3,
|
||||
61, 53, 45, 37, 29, 21, 13, 5,
|
||||
63, 55, 47, 39, 31, 23, 15, 7,
|
||||
};
|
||||
|
||||
/* Final permutation, FP = IP^(-1) */
|
||||
static const char FP[] = {
|
||||
40, 8, 48, 16, 56, 24, 64, 32,
|
||||
39, 7, 47, 15, 55, 23, 63, 31,
|
||||
38, 6, 46, 14, 54, 22, 62, 30,
|
||||
37, 5, 45, 13, 53, 21, 61, 29,
|
||||
36, 4, 44, 12, 52, 20, 60, 28,
|
||||
35, 3, 43, 11, 51, 19, 59, 27,
|
||||
34, 2, 42, 10, 50, 18, 58, 26,
|
||||
33, 1, 41, 9, 49, 17, 57, 25,
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* Permuted-choice 1 from the key bits to yield C and D.
|
||||
* Note that bits 8,16... are left out:
|
||||
* They are intended for a parity check.
|
||||
**************************************************************************/
|
||||
static const char PC1_C[] =
|
||||
{
|
||||
57, 49, 41, 33, 25, 17, 9,
|
||||
1, 58, 50, 42, 34, 26, 18,
|
||||
10, 2, 59, 51, 43, 35, 27,
|
||||
19, 11, 3, 60, 52, 44, 36,
|
||||
};
|
||||
|
||||
static const char PC1_D[] =
|
||||
{
|
||||
63, 55, 47, 39, 31, 23, 15,
|
||||
7, 62, 54, 46, 38, 30, 22,
|
||||
14, 6, 61, 53, 45, 37, 29,
|
||||
21, 13, 5, 28, 20, 12, 4,
|
||||
};
|
||||
|
||||
/* Sequence of shifts used for the key schedule. */
|
||||
static const char shifts[] =
|
||||
{1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};
|
||||
|
||||
/**************************************************************************
|
||||
* Permuted-choice 2, to pick out the bits from the CD array that generate
|
||||
* the key schedule.
|
||||
**************************************************************************/
|
||||
static const char PC2_C[] =
|
||||
{
|
||||
14, 17, 11, 24, 1, 5,
|
||||
3, 28, 15, 6, 21, 10,
|
||||
23, 19, 12, 4, 26, 8,
|
||||
16, 7, 27, 20, 13, 2,
|
||||
};
|
||||
|
||||
static const char PC2_D[] =
|
||||
{
|
||||
41, 52, 31, 37, 47, 55,
|
||||
30, 40, 51, 45, 33, 48,
|
||||
44, 49, 39, 56, 34, 53,
|
||||
46, 42, 50, 36, 29, 32,
|
||||
};
|
||||
|
||||
/* The C and D arrays used to calculate the key schedule. */
|
||||
static char C[28];
|
||||
static char D[28];
|
||||
|
||||
/* The key schedule. Generated from the key. */
|
||||
static char KS[16][48];
|
||||
|
||||
/* The E bit-selection table. */
|
||||
static char E[48];
|
||||
static const char e2[] =
|
||||
{
|
||||
32, 1, 2, 3, 4, 5,
|
||||
4, 5, 6, 7, 8, 9,
|
||||
8, 9, 10, 11, 12, 13,
|
||||
12, 13, 14, 15, 16, 17,
|
||||
16, 17, 18, 19, 20, 21,
|
||||
20, 21, 22, 23, 24, 25,
|
||||
24, 25, 26, 27, 28, 29,
|
||||
28, 29, 30, 31, 32, 1,
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* Function: setkey
|
||||
*
|
||||
* Description: Set up the key schedule from the encryption key.
|
||||
*
|
||||
* Inputs: char *key
|
||||
* pointer to 64 character array. Each character represents a
|
||||
* bit in the key.
|
||||
*
|
||||
* Returns: none
|
||||
**************************************************************************/
|
||||
void setkey(char *key)
|
||||
{
|
||||
int i, j, k, temp;
|
||||
|
||||
/**********************************************************************
|
||||
* First, generate C and D by permuting the key. The low order bit of
|
||||
* each 8-bit char is not used, so C and D are only 28 bits apiece.
|
||||
**********************************************************************/
|
||||
for(i = 0; i < 28; i++)
|
||||
{
|
||||
C[i] = key[PC1_C[i] - 1];
|
||||
D[i] = key[PC1_D[i] - 1];
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* To generate Ki, rotate C and D according to schedule and pick up a
|
||||
* permutation using PC2.
|
||||
**********************************************************************/
|
||||
for(i = 0; i < 16; i++)
|
||||
{
|
||||
/* rotate */
|
||||
for(k = 0; k < shifts[i]; k++)
|
||||
{
|
||||
temp = C[0];
|
||||
|
||||
for(j = 0; j < 28 - 1; j++)
|
||||
C[j] = C[j+1];
|
||||
|
||||
C[27] = temp;
|
||||
temp = D[0];
|
||||
for(j = 0; j < 28 - 1; j++)
|
||||
D[j] = D[j+1];
|
||||
|
||||
D[27] = temp;
|
||||
}
|
||||
|
||||
/* get Ki. Note C and D are concatenated */
|
||||
for(j = 0; j < 24; j++)
|
||||
{
|
||||
KS[i][j] = C[PC2_C[j] - 1];
|
||||
KS[i][j + 24] = D[PC2_D[j] - 28 -1];
|
||||
}
|
||||
}
|
||||
|
||||
/* load E with the initial E bit selections */
|
||||
for(i=0; i < 48; i++)
|
||||
E[i] = e2[i];
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* The 8 selection functions. For some reason, they give a 0-origin
|
||||
* index, unlike everything else.
|
||||
**************************************************************************/
|
||||
|
||||
static const char S[8][64] =
|
||||
{
|
||||
{
|
||||
14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
|
||||
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
|
||||
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
|
||||
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
|
||||
},
|
||||
|
||||
{
|
||||
15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
|
||||
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
|
||||
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
|
||||
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
|
||||
},
|
||||
|
||||
{
|
||||
10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
|
||||
13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
|
||||
13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
|
||||
1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12
|
||||
},
|
||||
|
||||
{
|
||||
7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
|
||||
13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
|
||||
10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
|
||||
3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
|
||||
},
|
||||
|
||||
{
|
||||
2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
|
||||
14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
|
||||
4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
|
||||
11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
|
||||
},
|
||||
|
||||
{
|
||||
12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
|
||||
10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
|
||||
9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
|
||||
4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
|
||||
},
|
||||
|
||||
{
|
||||
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
|
||||
13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
|
||||
1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
|
||||
6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
|
||||
},
|
||||
|
||||
{
|
||||
13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
|
||||
1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
|
||||
7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
|
||||
2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* P is a permutation on the selected combination of the current L and key.
|
||||
**************************************************************************/
|
||||
static const char P[] =
|
||||
{
|
||||
16, 7, 20, 21,
|
||||
29, 12, 28, 17,
|
||||
1, 15, 23, 26,
|
||||
5, 18, 31, 10,
|
||||
2, 8, 24, 14,
|
||||
32, 27, 3, 9,
|
||||
19, 13, 30, 6,
|
||||
22, 11, 4, 25,
|
||||
};
|
||||
|
||||
/* The combination of the key and the input, before selection. */
|
||||
static char preS[48];
|
||||
|
||||
/**************************************************************************
|
||||
* Function: encrypt
|
||||
*
|
||||
* Description: Uses DES to encrypt a 64 bit block of data. Requires
|
||||
* setkey to be invoked with the encryption key before it may
|
||||
* be used. The results of the encryption are stored in block.
|
||||
*
|
||||
* Inputs: char *block
|
||||
* pointer to 64 character array. Each character represents a
|
||||
* bit in the data block.
|
||||
*
|
||||
* Returns: none
|
||||
**************************************************************************/
|
||||
void encrypt(char *block)
|
||||
{
|
||||
int i, ii, temp, j, k;
|
||||
|
||||
char left[32], right[32]; /* block in two halves */
|
||||
char old[32];
|
||||
char f[32];
|
||||
|
||||
/* First, permute the bits in the input */
|
||||
for(j = 0; j < 32; j++)
|
||||
left[j] = block[IP[j] - 1];
|
||||
|
||||
for(;j < 64; j++)
|
||||
right[j - 32] = block[IP[j] - 1];
|
||||
|
||||
/* Perform an encryption operation 16 times. */
|
||||
for(ii= 0; ii < 16; ii++)
|
||||
{
|
||||
i = ii;
|
||||
/* Save the right array, which will be the new left. */
|
||||
for(j = 0; j < 32; j++)
|
||||
old[j] = right[j];
|
||||
|
||||
/******************************************************************
|
||||
* Expand right to 48 bits using the E selector and
|
||||
* exclusive-or with the current key bits.
|
||||
******************************************************************/
|
||||
for(j =0 ; j < 48; j++)
|
||||
preS[j] = right[E[j] - 1] ^ KS[i][j];
|
||||
|
||||
/******************************************************************
|
||||
* The pre-select bits are now considered in 8 groups of 6 bits ea.
|
||||
* The 8 selection functions map these 6-bit quantities into 4-bit
|
||||
* quantities and the results are permuted to make an f(R, K).
|
||||
* The indexing into the selection functions is peculiar;
|
||||
* it could be simplified by rewriting the tables.
|
||||
******************************************************************/
|
||||
for(j = 0; j < 8; j++)
|
||||
{
|
||||
temp = 6 * j;
|
||||
k = S[j][(preS[temp + 0] << 5) +
|
||||
(preS[temp + 1] << 3) +
|
||||
(preS[temp + 2] << 2) +
|
||||
(preS[temp + 3] << 1) +
|
||||
(preS[temp + 4] << 0) +
|
||||
(preS[temp + 5] << 4)];
|
||||
|
||||
temp = 4 * j;
|
||||
|
||||
f[temp + 0] = (k >> 3) & 01;
|
||||
f[temp + 1] = (k >> 2) & 01;
|
||||
f[temp + 2] = (k >> 1) & 01;
|
||||
f[temp + 3] = (k >> 0) & 01;
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
* The new right is left ^ f(R, K).
|
||||
* The f here has to be permuted first, though.
|
||||
******************************************************************/
|
||||
for(j = 0; j < 32; j++)
|
||||
right[j] = left[j] ^ f[P[j] - 1];
|
||||
|
||||
/* Finally, the new left (the original right) is copied back. */
|
||||
for(j = 0; j < 32; j++)
|
||||
left[j] = old[j];
|
||||
}
|
||||
|
||||
/* The output left and right are reversed. */
|
||||
for(j = 0; j < 32; j++)
|
||||
{
|
||||
temp = left[j];
|
||||
left[j] = right[j];
|
||||
right[j] = temp;
|
||||
}
|
||||
|
||||
/* The final output gets the inverse permutation of the very original. */
|
||||
for(j = 0; j < 64; j++)
|
||||
{
|
||||
i = FP[j];
|
||||
if (i < 33)
|
||||
block[j] = left[FP[j] - 1];
|
||||
else
|
||||
block[j] = right[FP[j] - 33];
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Function: crypt
|
||||
*
|
||||
* Description: Clone of Unix crypt(3) function.
|
||||
*
|
||||
* Inputs: char *pw
|
||||
* pointer to 8 character encryption key (user password)
|
||||
* char *salt
|
||||
* pointer to 2 character salt used to modify the DES results.
|
||||
*
|
||||
* Returns: Pointer to static array containing the salt concatenated
|
||||
* on to the encrypted results. Same as stored in passwd file.
|
||||
**************************************************************************/
|
||||
char *crypt(char *pw, char *salt)
|
||||
{
|
||||
int i, j, temp;
|
||||
char c,
|
||||
block[66]; /* 1st store key, then results */
|
||||
static char iobuf[16]; /* encrypted results */
|
||||
|
||||
for(i = 0; i < 66; i++)
|
||||
block[i] = 0;
|
||||
|
||||
/* break pw into 64 bits */
|
||||
for(i = 0, c = *pw; c && (i < 64); i++)
|
||||
{
|
||||
for(j = 0; j < 7; j++, i++)
|
||||
block[i] = (c >> (6 - j)) & 01;
|
||||
pw++;
|
||||
c = *pw;
|
||||
}
|
||||
|
||||
/* set key based on pw */
|
||||
setkey(block);
|
||||
|
||||
for(i = 0; i < 66; i++)
|
||||
block[i] = 0;
|
||||
|
||||
for(i = 0; i < 2; i++)
|
||||
{
|
||||
/* store salt at beginning of results */
|
||||
c = *salt++;
|
||||
iobuf[i] = c;
|
||||
|
||||
if(c > 'Z')
|
||||
c -= 6;
|
||||
|
||||
if(c > '9')
|
||||
c -= 7;
|
||||
|
||||
c -= '.';
|
||||
|
||||
/* use salt to effect the E-bit selection */
|
||||
for(j = 0; j < 6; j++)
|
||||
{
|
||||
if((c >> j) & 01)
|
||||
{
|
||||
temp = E[6 * i + j];
|
||||
E[6 * i +j] = E[6 * i + j + 24];
|
||||
E[6 * i + j + 24] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* call DES encryption 25 times using pw as key and initial data = 0 */
|
||||
for(i = 0; i < 25; i++)
|
||||
encrypt(block);
|
||||
|
||||
/* format encrypted block for standard crypt(3) output */
|
||||
for(i=0; i < 11; i++)
|
||||
{
|
||||
c = 0;
|
||||
for(j = 0; j < 6; j++)
|
||||
{
|
||||
c <<= 1;
|
||||
c |= block[6 * i + j];
|
||||
}
|
||||
|
||||
c += '.';
|
||||
if(c > '9')
|
||||
c += 7;
|
||||
|
||||
if(c > 'Z')
|
||||
c += 6;
|
||||
|
||||
iobuf[i + 2] = c;
|
||||
}
|
||||
|
||||
iobuf[i + 2] = '\0';
|
||||
|
||||
/* prevent premature NULL terminator */
|
||||
if(iobuf[1] == '\0')
|
||||
iobuf[1] = iobuf[0];
|
||||
|
||||
return(iobuf);
|
||||
}
|
||||
@@ -88,6 +88,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
|
||||
@@ -107,6 +108,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@@ -131,6 +133,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
|
||||
@@ -150,6 +153,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gdk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@@ -158,6 +162,22 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\gdk\gdk.symbols">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating gdk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkGenerateGdkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)gdk.def;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating gdk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkGenerateGdkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)gdk.def;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating gdk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkGenerateGdkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)gdk.def;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating gdk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkGenerateGdkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)gdk.def;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\..\gdk\win32\rc\gdk.rc" />
|
||||
</ItemGroup>
|
||||
@@ -174,4 +194,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -28,23 +28,19 @@
|
||||
<ConfigurationType>Utility</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Utility</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Utility</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Utility</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
<GtkBinaryVersion>3.0.0</GtkBinaryVersion>
|
||||
<GtkDummyPrefix>\"/dummy\"</GtkDummyPrefix>
|
||||
<GtkPrefixDefine>GTK_PREFIX="\"$(GtkDummyPrefix)\""</GtkPrefixDefine>
|
||||
<GdkDefines>GDK_COMPILATION;G_LOG_DOMAIN="Gdk"</GdkDefines>
|
||||
<GdkDefines>GDK_COMPILATION;G_LOG_DOMAIN="\"Gdk\""</GdkDefines>
|
||||
<GtkIncludedImmodulesDefines>INCLUDE_IM_am_et;INCLUDE_IM_cedilla;INCLUDE_IM_cyrillic_translit;INCLUDE_IM_ime;INCLUDE_IM_inuktitut;INCLUDE_IM_ipa;INCLUDE_IM_multipress;INCLUDE_IM_thai;INCLUDE_IM_ti_er;INCLUDE_IM_ti_et;INCLUDE_IM_viqr</GtkIncludedImmodulesDefines>
|
||||
<GtkDefines>GTK_COMPILATION;G_LOG_DOMAIN="Gtk";GTK_HOST="i686-pc-vs$(VSVer)";GTK_PRINT_BACKENDS="file";GTK_PRINT_PREVIEW_COMMAND="undefined-gtk-print-preview-command";$(GtkIncludedImmodulesDefines);GTK_LIBDIR="$(GtkDummyPrefix)/lib";GTK_DATADIR="$(GtkDummyPrefix)/share";GTK_DATA_PREFIX="$(GtkDummyPrefix)";GTK_SYSCONFDIR="$(GtkDummyPrefix)/etc";MULTIPRESS_CONFDIR="$(GtkDummyPrefix)/etc/gtk-$(ApiVersion)";MULTIPRESS_LOCALEDIR="$(GtkDummyPrefix)/share/locale";GTK_VERSION="$(GtkVersion)/etc";GTK_BINARY_VERSION="$(GtkBinaryVersion)/etc";GDK_DISABLE_DEPRECATED</GtkDefines>
|
||||
<GtkDefines>GTK_COMPILATION;G_LOG_DOMAIN="\"Gtk\"";GTK_HOST="\"i686-pc-vs$(VSVer)\"";GTK_PRINT_BACKENDS="\"file\"";GTK_PRINT_PREVIEW_COMMAND="\"undefined-gtk-print-preview-command\"";$(GtkIncludedImmodulesDefines);GTK_LIBDIR="\"$(GtkDummyPrefix)/lib\"";GTK_DATADIR="\"$(GtkDummyPrefix)/share\"";GTK_DATA_PREFIX="\"$(GtkDummyPrefix)\"";GTK_SYSCONFDIR="\"$(GtkDummyPrefix)/etc\"";MULTIPRESS_CONFDIR="\"$(GtkDummyPrefix)/etc/gtk-$(ApiVersion)\"";MULTIPRESS_LOCALEDIR="\"$(GtkDummyPrefix)/share/locale\"";GTK_VERSION="\"$(GtkVersion)/etc\"";GTK_BINARY_VERSION="\"$(GtkBinaryVersion)/etc\"";GDK_DISABLE_DEPRECATED</GtkDefines>
|
||||
<GtkDoInstall>
|
||||
echo on
|
||||
|
||||
@@ -282,8 +282,6 @@ copy ..\..\..\gtk\gtkframe.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkgrid.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkheaderbar.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkiconfactory.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkicontheme.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
@@ -358,8 +356,6 @@ copy ..\..\..\gtk\gtkpaned.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkpapersize.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkplacessidebar.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkplug.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkprintcontext.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
@@ -400,8 +396,6 @@ copy ..\..\..\gtk\gtkrecentfilter.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkrecentmanager.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkrevealer.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkscale.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkscalebutton.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
@@ -436,10 +430,6 @@ copy ..\..\..\gtk\gtkspinbutton.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkspinner.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkstack.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkstackswitcher.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkstatusbar.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtkstatusicon.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
@@ -586,7 +576,7 @@ copy ..\..\..\gtk\deprecated\gtkvseparator.h $(CopyDir)\include\gtk-$(ApiVersion
|
||||
copy ..\..\..\gtk\deprecated\gtkvpaned.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk\deprecated
|
||||
|
||||
|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gtk\a11y
|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\a11y
|
||||
|
||||
|
||||
copy ..\..\..\gtk\a11y\gtkarrowaccessible.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk\a11y
|
||||
@@ -718,6 +708,8 @@ call gengir_gtk.bat
|
||||
|
||||
cd vs$(VSVer)
|
||||
</DoGenGir>
|
||||
<GtkGenerateGdkDef>echo EXPORTS >"$(DefDir)\gdk.def" && cl /EP -DGDK_WINDOWING_WIN32 -DALL_FILES -DG_GNUC_CONST= ..\..\..\gdk\gdk.symbols >>"$(DefDir)\gdk.def"</GtkGenerateGdkDef>
|
||||
<GtkGenerateGtkDef>echo EXPORTS >"$(DefDir)\gtk.def" && cl /EP -DGDK_WINDOWING_WIN32 -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_PRINTF=;G_GNUC_PRINTF ..\..\..\gtk\gtk.symbols >>"$(DefDir)\gtk.def"</GtkGenerateGtkDef>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>-$(ApiVersion)-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
|
||||
@@ -107,6 +108,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@@ -131,6 +133,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName)-$(ApiVersion).lib</ImportLibrary>
|
||||
@@ -150,6 +153,7 @@
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@@ -158,6 +162,22 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\gdk\gtk.symbols">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating gtk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkGenerateGtkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)gtk.def;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating gtk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkGenerateGtkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)gtk.def;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating gtk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkGenerateGtkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)gtk.def;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating gtk.def</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkGenerateGtkDef)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)gtk.def;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\..\gtk\gtk-win32.rc" />
|
||||
</ItemGroup>
|
||||
@@ -192,4 +212,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -28,23 +28,19 @@
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
|
||||
@@ -196,7 +196,6 @@
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\images.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\infobar.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\links.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\listbox.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\list_store.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\main.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\menus.c" />
|
||||
@@ -207,13 +206,10 @@
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\pickers.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\pixbufs.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\printing.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\revealer.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\rotated_text.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\search_entry.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\search_entry2.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\sizegroup.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\spinner.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\stack.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\stock_browser.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\textscroll.c" />
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\textview.c" />
|
||||
|
||||
@@ -92,9 +92,6 @@
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\links.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\listbox.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\list_store.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -125,27 +122,18 @@
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\printing.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\revealer.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\rotated_text.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\search_entry.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\search_entry2.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\sizegroup.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\spinner.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\stack.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\demos\gtk-demo\stock_browser.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
AdditionalDependencies="imm32.lib winmm.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gdk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
|
||||
@@ -75,6 +76,7 @@
|
||||
AdditionalDependencies="imm32.lib winmm.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gdk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
@@ -109,6 +111,7 @@
|
||||
AdditionalDependencies="imm32.lib winmm.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gdk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
|
||||
@@ -139,6 +142,7 @@
|
||||
AdditionalDependencies="imm32.lib winmm.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gdk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
@@ -162,6 +166,50 @@
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\..\gdk\gdk.symbols"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gdk.def"
|
||||
CommandLine="$(GtkGenerateGdkDef)"
|
||||
Outputs="$(IntDir)\gdk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gdk.def"
|
||||
CommandLine="$(GtkGenerateGdkDef)"
|
||||
Outputs="$(IntDir)\gdk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gdk.def"
|
||||
CommandLine="$(GtkGenerateGdkDef)"
|
||||
Outputs="$(IntDir)\gdk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gdk.def"
|
||||
CommandLine="$(GtkGenerateGdkDef)"
|
||||
Outputs="$(IntDir)\gdk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\gdk\win32\rc\gdk.rc" />
|
||||
</Filter>
|
||||
<Filter
|
||||
|
||||
@@ -210,7 +210,6 @@ copy ..\..\..\gtk\gtkfontchooserdialog.h $(CopyDir)\include\gtk-$(ApiVersion)\gt
|
||||
copy ..\..\..\gtk\gtkfontchooserwidget.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkframe.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkgrid.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkheaderbar.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkiconfactory.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkicontheme.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkiconview.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
@@ -248,7 +247,6 @@ copy ..\..\..\gtk\gtkoverlay.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
&#x
|
||||
copy ..\..\..\gtk\gtkpagesetup.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkpaned.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkpapersize.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkplacessidebar.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkplug.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkprintcontext.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkprintoperation.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
@@ -269,7 +267,6 @@ copy ..\..\..\gtk\gtkrecentchoosermenu.h $(CopyDir)\include\gtk-$(ApiVersion)\gt
|
||||
copy ..\..\..\gtk\gtkrecentchooserwidget.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkrecentfilter.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkrecentmanager.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkrevealer.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkscale.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkscalebutton.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkscrollable.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
@@ -287,8 +284,6 @@ copy ..\..\..\gtk\gtksizerequest.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk
|
||||
copy ..\..\..\gtk\gtksocket.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkspinbutton.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkspinner.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkstack.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkstackswitcher.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkstatusbar.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkstatusicon.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkstock.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk

|
||||
@@ -364,7 +359,7 @@ copy ..\..\..\gtk\deprecated\gtkvscrollbar.h $(CopyDir)\include\gtk-$(ApiVersion
|
||||
copy ..\..\..\gtk\deprecated\gtkvseparator.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk\deprecated

|
||||
copy ..\..\..\gtk\deprecated\gtkvpaned.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk\deprecated

|
||||
|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gtk\a11y

|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\a11y

|
||||
|
||||
copy ..\..\..\gtk\a11y\gtkarrowaccessible.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk\a11y

|
||||
copy ..\..\..\gtk\a11y\gtkbooleancellaccessible.h $(CopyDir)\include\gtk-$(ApiVersion)\gtk\a11y

|
||||
@@ -442,6 +437,14 @@ call gengir_gtk.bat

|
||||
cd vs$(VSVer)

|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkGenerateGdkDef"
|
||||
Value="echo EXPORTS >"$(IntDir)\gdk.def" && cl /EP -DGDK_WINDOWING_WIN32 -DALL_FILES -DG_GNUC_CONST= ..\..\..\gdk\gdk.symbols >>"$(IntDir)\gdk.def""
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkGenerateGtkDef"
|
||||
Value="echo EXPORTS >"$(IntDir)\gtk.def" && cl /EP -DGDK_WINDOWING_WIN32 -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_PRINTF=;G_GNUC_PRINTF ..\..\..\gtk\gtk.symbols >>"$(IntDir)\gtk.def""
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkLibtoolCompatibleDllPrefix"
|
||||
Value="lib"
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
|
||||
@@ -75,6 +76,7 @@
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
@@ -109,6 +111,7 @@
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName)-$(ApiVersion).lib"
|
||||
@@ -139,6 +142,7 @@
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
@@ -162,6 +166,50 @@
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\..\gdk\gtk.symbols"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gtk.def"
|
||||
CommandLine="$(GtkGenerateGtkDef)"
|
||||
Outputs="$(IntDir)\gtk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gtk.def"
|
||||
CommandLine="$(GtkGenerateGtkDef)"
|
||||
Outputs="$(IntDir)\gtk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gtk.def"
|
||||
CommandLine="$(GtkGenerateGtkDef)"
|
||||
Outputs="$(IntDir)\gtk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gtk.def"
|
||||
CommandLine="$(GtkGenerateGtkDef)"
|
||||
Outputs="$(IntDir)\gtk.def"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\gtk\gtk-win32.rc" />
|
||||
</Filter>
|
||||
<Filter
|
||||
|
||||
@@ -187,7 +187,6 @@
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\images.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\infobar.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\links.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\listbox.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\list_store.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\main.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\menus.c" />
|
||||
@@ -198,13 +197,10 @@
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\pickers.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\pixbufs.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\printing.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\revealer.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\rotated_text.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\search_entry.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\search_entry2.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\sizegroup.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\spinner.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\stack.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\stock_browser.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\textscroll.c" />
|
||||
<File RelativePath="..\..\..\demos\gtk-demo\textview.c" />
|
||||
|
||||
@@ -293,9 +293,6 @@
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
/* #undef _FILE_OFFSET_BITS */
|
||||
|
||||
/* defines how to decorate public symbols while building */
|
||||
#define _GDK_EXTERN __declspec (dllexport)
|
||||
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
/* #undef _LARGE_FILES */
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
m4_define([gtk_major_version], [3])
|
||||
m4_define([gtk_minor_version], [9])
|
||||
m4_define([gtk_micro_version], [8])
|
||||
m4_define([gtk_micro_version], [0])
|
||||
m4_define([gtk_interface_age], [0])
|
||||
m4_define([gtk_binary_age],
|
||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||
@@ -30,6 +30,7 @@ AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
# Define a string for the earliest version that this release has
|
||||
# backwards binary compatibility with for all interfaces a module
|
||||
@@ -41,7 +42,7 @@ AC_CANONICAL_HOST
|
||||
m4_define([gtk_binary_version], [3.0.0])
|
||||
|
||||
# required versions of other packages
|
||||
m4_define([glib_required_version], [2.37.3])
|
||||
m4_define([glib_required_version], [2.35.3])
|
||||
m4_define([pango_required_version], [1.32.4])
|
||||
m4_define([atk_required_version], [2.7.5])
|
||||
m4_define([cairo_required_version], [1.10.0])
|
||||
@@ -250,11 +251,10 @@ AC_ARG_ENABLE(debug,
|
||||
[turn on debugging @<:@default=debug_default@:>@])],,
|
||||
[enable_debug=debug_default])
|
||||
|
||||
AC_ARG_ENABLE(installed_tests,
|
||||
AS_HELP_STRING([--enable-installed-tests],
|
||||
[Install test programs (default: no)]),,
|
||||
[enable_installed_tests=no])
|
||||
AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes)
|
||||
AC_ARG_ENABLE(rebuilds,
|
||||
[AS_HELP_STRING([--disable-rebuilds],
|
||||
[disable all source autogeneration rules])],,
|
||||
[enable_rebuilds=yes])
|
||||
|
||||
AC_ARG_ENABLE(gtk2-dependency,
|
||||
[AS_HELP_STRING([--enable-gtk2-dependency],
|
||||
@@ -350,7 +350,7 @@ if test "$enable_win32_backend" = "yes"; then
|
||||
backend_immodules="$backend_immodules,ime"
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_WIN32"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid"
|
||||
AM_CONDITIONAL(USE_WIN32, true)
|
||||
PANGO_PACKAGES="pangowin32 pangocairo"
|
||||
else
|
||||
@@ -361,7 +361,6 @@ DISABLE_ON_QUARTZ=''
|
||||
if test "x$enable_quartz_backend" = xyes; then
|
||||
cairo_backends="$cairo_backends cairo-quartz"
|
||||
GDK_BACKENDS="$GDK_BACKENDS quartz"
|
||||
backend_immodules="$backend_immodules,quartz"
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_QUARTZ"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
|
||||
@@ -382,9 +381,7 @@ AC_SUBST(DISABLE_ON_QUARTZ)
|
||||
if test "x$enable_broadway_backend" = xyes; then
|
||||
GDK_BACKENDS="$GDK_BACKENDS broadway"
|
||||
cairo_backends="$cairo_backends cairo"
|
||||
if test "$os_unix" = "yes"; then
|
||||
have_gio_unix=yes
|
||||
fi
|
||||
have_gio_unix=yes
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_BROADWAY"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lz"
|
||||
@@ -402,7 +399,7 @@ if test "x$enable_wayland_backend" = "xyes"; then
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_WAYLAND"
|
||||
DISABLE_ON_WAYLAND='%'
|
||||
WAYLAND_PACKAGES="wayland-client >= 1.1.90 xkbcommon >= 0.2.0 wayland-cursor"
|
||||
WAYLAND_PACKAGES="wayland-client >= 1.0.0 xkbcommon >= 0.2.0 wayland-cursor"
|
||||
AM_CONDITIONAL(USE_WAYLAND, true)
|
||||
else
|
||||
AM_CONDITIONAL(USE_WAYLAND, false)
|
||||
@@ -511,6 +508,16 @@ PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
|
||||
|
||||
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])
|
||||
|
||||
if test "$os_win32" != yes; then
|
||||
# libtool option to control which symbols are exported
|
||||
# right now, symbols starting with _ are not exported
|
||||
LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
|
||||
else
|
||||
# We currently use .def files on Windows (for gdk and gtk)
|
||||
LIBTOOL_EXPORT_OPTIONS=
|
||||
fi
|
||||
AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
|
||||
|
||||
dnl ******************************************************
|
||||
dnl * See whether to include shared library dependencies *
|
||||
dnl ******************************************************
|
||||
@@ -545,6 +552,17 @@ AM_CONDITIONAL(DISABLE_EXPLICIT_DEPS, test $enable_explicit_deps = no)
|
||||
|
||||
AC_PATH_PROGS(PERL, perl5 perl)
|
||||
|
||||
# We would like indent, but don't require it.
|
||||
AC_CHECK_PROG(INDENT, indent, indent)
|
||||
|
||||
REBUILD=\#
|
||||
if test "x$enable_rebuilds" = "xyes" && \
|
||||
test -n "$PERL" && \
|
||||
$PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 ; then
|
||||
REBUILD=
|
||||
fi
|
||||
AC_SUBST(REBUILD)
|
||||
|
||||
AC_CHECK_FUNCS(lstat mkstemp)
|
||||
AC_CHECK_FUNCS(localtime_r)
|
||||
|
||||
@@ -686,12 +704,6 @@ AM_PATH_GLIB_2_0(glib_required_version, :,
|
||||
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
|
||||
gobject gmodule-no-export)
|
||||
|
||||
PKG_PROG_PKG_CONFIG_FOR_BUILD
|
||||
GLIB_CFLAGS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --cflags glib-2.0 gobject-2.0 gmodule-no-export-2.0`
|
||||
GLIB_LIBS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --libs glib-2.0 gobject-2.0 gmodule-no-export-2.0`
|
||||
AC_SUBST(GLIB_CFLAGS_FOR_BUILD)
|
||||
AC_SUBST(GLIB_LIBS_FOR_BUILD)
|
||||
|
||||
dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
|
||||
dnl
|
||||
gtk_save_LIBS=$LIBS
|
||||
@@ -702,9 +714,6 @@ LIBS=$gtk_save_LIBS
|
||||
AC_CHECK_HEADERS(pwd.h,
|
||||
AC_DEFINE(HAVE_PWD_H, 1,
|
||||
[Define to 1 if pwd.h is available]))
|
||||
AC_CHECK_HEADERS(sys/mman.h,
|
||||
AC_DEFINE(HAVE_SYS_MMAN_H, 1,
|
||||
[Define to 1 if mman.h is available]))
|
||||
AC_CHECK_HEADERS(sys/time.h,
|
||||
AC_DEFINE(HAVE_SYS_TIME_H, 1,
|
||||
[Define to 1 if time.h is available]))
|
||||
@@ -866,7 +875,6 @@ AM_CONDITIONAL(INCLUDE_IM_IME, [test x"$INCLUDE_ime" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_INUKTITUT, [test x"$INCLUDE_inuktitut" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_IPA, [test x"$INCLUDE_ipa" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_MULTIPRESS, [test x"$INCLUDE_multipress" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_THAI, [test x"$INCLUDE_thai" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_TI_ER, [test x"$INCLUDE_ti_er" = xyes])
|
||||
AM_CONDITIONAL(INCLUDE_IM_TI_ET, [test x"$INCLUDE_ti_et" = xyes])
|
||||
@@ -1234,6 +1242,7 @@ if test "$have_gio_unix" = "yes"; then
|
||||
else
|
||||
GDK_GIO_PACKAGE=gio-2.0
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_GIO_UNIX, test "$have_gio_unix" = "yes")
|
||||
|
||||
# Check for Pango flags
|
||||
|
||||
@@ -1263,17 +1272,6 @@ else
|
||||
LIBS="$gtk_save_LIBS"
|
||||
fi
|
||||
|
||||
# Check for cairo_set_device_scale, as we don't want to depend hard on
|
||||
# this until there is a stable release with it
|
||||
CAIRO_CFLAGS=`$PKG_CONFIG --cflags cairo`
|
||||
CAIRO_LIBS=`$PKG_CONFIG --libs cairo`
|
||||
CFLAGS="$CFLAGS $CAIRO_CFLAGS"
|
||||
gtk_save_LIBS="$LIBS"
|
||||
LIBS="$CAIRO_LIBS $LIBS"
|
||||
AC_CHECK_FUNCS(cairo_surface_set_device_scale)
|
||||
LIBS="$gtk_save_LIBS"
|
||||
|
||||
|
||||
CFLAGS="$saved_cflags"
|
||||
LDFLAGS="$saved_ldflags"
|
||||
|
||||
@@ -1676,39 +1674,6 @@ else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
##################################################
|
||||
# Visibility handling
|
||||
##################################################
|
||||
|
||||
GDK_HIDDEN_VISIBILITY_CFLAGS=""
|
||||
case "$host" in
|
||||
*-*-mingw*)
|
||||
dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
|
||||
AC_DEFINE([_GDK_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
|
||||
[defines how to decorate public symbols while building])
|
||||
CFLAGS="${CFLAGS} -fvisibility=hidden"
|
||||
;;
|
||||
*)
|
||||
dnl on other compilers, check if we can do -fvisibility=hidden
|
||||
SAVED_CFLAGS="${CFLAGS}"
|
||||
CFLAGS="-fvisibility=hidden"
|
||||
AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
|
||||
AC_TRY_COMPILE([], [int main (void) { return 0; }],
|
||||
AC_MSG_RESULT(yes)
|
||||
enable_fvisibility_hidden=yes,
|
||||
AC_MSG_RESULT(no)
|
||||
enable_fvisibility_hidden=no)
|
||||
CFLAGS="${SAVED_CFLAGS}"
|
||||
|
||||
AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
|
||||
AC_DEFINE([_GDK_EXTERN], [__attribute__((visibility("default"))) extern],
|
||||
[defines how to decorate public symbols while building])
|
||||
GDK_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
|
||||
])
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(GDK_HIDDEN_VISIBILITY_CFLAGS)
|
||||
|
||||
##################################################
|
||||
# Output commands
|
||||
##################################################
|
||||
@@ -1797,14 +1762,11 @@ demos/pixbuf-demo/Makefile
|
||||
demos/widget-factory/Makefile
|
||||
examples/Makefile
|
||||
tests/Makefile
|
||||
tests/a11y/Makefile
|
||||
tests/css/Makefile
|
||||
tests/css/parser/Makefile
|
||||
tests/reftests/Makefile
|
||||
tests/visuals/Makefile
|
||||
testsuite/Makefile
|
||||
testsuite/a11y/Makefile
|
||||
testsuite/css/Makefile
|
||||
testsuite/css/parser/Makefile
|
||||
testsuite/gdk/Makefile
|
||||
testsuite/gtk/Makefile
|
||||
testsuite/reftests/Makefile
|
||||
docs/Makefile
|
||||
docs/reference/Makefile
|
||||
docs/reference/gdk/Makefile
|
||||
@@ -1817,7 +1779,6 @@ docs/reference/libgail-util/version.xml
|
||||
docs/tools/Makefile
|
||||
build/Makefile
|
||||
build/win32/Makefile
|
||||
build/win32/crypt/Makefile
|
||||
build/win32/vs9/Makefile
|
||||
build/win32/vs10/Makefile
|
||||
gdk/Makefile
|
||||
@@ -1828,6 +1789,7 @@ gdk/win32/rc/Makefile
|
||||
gdk/win32/rc/gdk.rc
|
||||
gdk/quartz/Makefile
|
||||
gdk/wayland/Makefile
|
||||
gdk/tests/Makefile
|
||||
gdk/gdkversionmacros.h
|
||||
gtk/Makefile
|
||||
gtk/makefile.msc
|
||||
@@ -1835,6 +1797,7 @@ gtk/gtkversion.h
|
||||
gtk/gtk-win32.rc
|
||||
gtk/a11y/Makefile
|
||||
gtk/native/Makefile
|
||||
gtk/tests/Makefile
|
||||
libgail-util/Makefile
|
||||
modules/Makefile
|
||||
modules/engines/Makefile
|
||||
@@ -1846,6 +1809,7 @@ modules/printbackends/lpr/Makefile
|
||||
modules/printbackends/file/Makefile
|
||||
modules/printbackends/papi/Makefile
|
||||
modules/printbackends/test/Makefile
|
||||
perf/Makefile
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
@@ -5,6 +5,7 @@ include $(top_srcdir)/Makefile.decl
|
||||
## demo app, which means alphabetized by demo title, not filename
|
||||
demos = \
|
||||
application.c \
|
||||
appwindow.c \
|
||||
assistant.c \
|
||||
builder.c \
|
||||
button_box.c \
|
||||
@@ -29,7 +30,6 @@ demos = \
|
||||
images.c \
|
||||
infobar.c \
|
||||
links.c \
|
||||
listbox.c \
|
||||
list_store.c \
|
||||
menus.c \
|
||||
offscreen_window.c \
|
||||
@@ -39,19 +39,18 @@ demos = \
|
||||
pickers.c \
|
||||
pixbufs.c \
|
||||
printing.c \
|
||||
revealer.c \
|
||||
rotated_text.c \
|
||||
search_entry.c \
|
||||
search_entry2.c \
|
||||
sizegroup.c \
|
||||
spinner.c \
|
||||
stack.c \
|
||||
stock_browser.c \
|
||||
textview.c \
|
||||
textscroll.c \
|
||||
theming_style_classes.c \
|
||||
toolpalette.c \
|
||||
transparent.c \
|
||||
tree_store.c
|
||||
tree_store.c \
|
||||
ui_manager.c
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
@@ -85,8 +84,8 @@ gsettings_SCHEMAS = \
|
||||
|
||||
@GSETTINGS_RULES@
|
||||
|
||||
demos.h: $(demos) geninclude.pl
|
||||
$(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
|
||||
demos.h: @REBUILD@ $(demos) geninclude.pl
|
||||
$(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
|
||||
|
||||
gtk3_demo_SOURCES = \
|
||||
$(demos) \
|
||||
@@ -111,14 +110,9 @@ RESOURCES= $(demos) \
|
||||
application.ui \
|
||||
demo.ui \
|
||||
menus.ui \
|
||||
stack.ui \
|
||||
revealer.ui \
|
||||
theming.ui \
|
||||
listbox.ui \
|
||||
alphatest.png \
|
||||
apple-red.png \
|
||||
brick.png \
|
||||
brick2.png \
|
||||
background.jpg \
|
||||
floppybuddy.gif \
|
||||
gnome-applets.png \
|
||||
@@ -133,7 +127,6 @@ RESOURCES= $(demos) \
|
||||
gtk-logo-24.png \
|
||||
gtk-logo-48.png \
|
||||
gtk-logo-old.png \
|
||||
messages.txt \
|
||||
css_accordion.css \
|
||||
css_basics.css \
|
||||
css_multiplebgs.css \
|
||||
|
||||
@@ -155,6 +155,40 @@ activate_quit (GSimpleAction *action,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
register_stock_icons (void)
|
||||
{
|
||||
static gboolean registered = FALSE;
|
||||
|
||||
if (!registered)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
GtkIconFactory *factory;
|
||||
GtkIconSet *icon_set;
|
||||
|
||||
static GtkStockItem items[] = {
|
||||
{ "demo-gtk-logo", "_GTK!", 0, 0, NULL }
|
||||
};
|
||||
|
||||
registered = TRUE;
|
||||
|
||||
gtk_stock_add (items, G_N_ELEMENTS (items));
|
||||
|
||||
factory = gtk_icon_factory_new ();
|
||||
gtk_icon_factory_add_default (factory);
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_resource ("/application/gtk-logo-24.png", NULL);
|
||||
|
||||
icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
|
||||
gtk_icon_factory_add (factory, "demo-gtk-logo", icon_set);
|
||||
gtk_icon_set_unref (icon_set);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
/* Drop our reference to the factory, GTK will hold a reference. */
|
||||
g_object_unref (factory);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
update_statusbar (GtkTextBuffer *buffer,
|
||||
GtkStatusbar *statusbar)
|
||||
@@ -342,6 +376,8 @@ main (int argc, char *argv[])
|
||||
|
||||
gtk_init (NULL, NULL);
|
||||
|
||||
register_stock_icons ();
|
||||
|
||||
app = gtk_application_new ("org.gtk.Demo", 0);
|
||||
settings = g_settings_new ("org.gtk.Demo");
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
<property name="hexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkMenuToolButton" id="menutool">
|
||||
<property name="icon-name">document-open</property>
|
||||
<property name="stock-id">gtk-open</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkToolButton" id="quit">
|
||||
<property name="icon-name">application-exit</property>
|
||||
<property name="stock-id">gtk-quit</property>
|
||||
<property name="action-name">app.quit</property>
|
||||
</object>
|
||||
</child>
|
||||
@@ -22,7 +22,7 @@
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkToolButton" id="logo">
|
||||
<property name="icon-name">applications-other</property>
|
||||
<property name="stock-id">demo-gtk-logo</property>
|
||||
<property name="action-name">win.logo</property>
|
||||
</object>
|
||||
</child>
|
||||
@@ -54,8 +54,8 @@
|
||||
<object class="GtkButton" id="button">
|
||||
<property name="visible">True</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">_OK</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="label">gtk-ok</property>
|
||||
<property name="use-stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
@@ -0,0 +1,540 @@
|
||||
/* Application window
|
||||
*
|
||||
* Demonstrates a typical application window with menubar, toolbar, statusbar.
|
||||
*
|
||||
* This example uses GtkUIManager and GtkActionGroup.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include "config.h"
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
static GtkWidget *infobar = NULL;
|
||||
static GtkWidget *messagelabel = NULL;
|
||||
|
||||
static void
|
||||
activate_action (GtkAction *action)
|
||||
{
|
||||
const gchar *name = gtk_action_get_name (action);
|
||||
const gchar *typename = G_OBJECT_TYPE_NAME (action);
|
||||
|
||||
GtkWidget *dialog;
|
||||
|
||||
if (g_str_equal (name, "DarkTheme"))
|
||||
{
|
||||
gboolean value = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
|
||||
GtkSettings *settings = gtk_settings_get_default ();
|
||||
|
||||
g_object_set (G_OBJECT (settings),
|
||||
"gtk-application-prefer-dark-theme", value,
|
||||
NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_str_equal (name, "HideTitlebar"))
|
||||
{
|
||||
gboolean value = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
|
||||
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window), value);
|
||||
return;
|
||||
}
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"You activated action: \"%s\" of type \"%s\"",
|
||||
name, typename);
|
||||
|
||||
/* Close dialog on user response */
|
||||
g_signal_connect (dialog,
|
||||
"response",
|
||||
G_CALLBACK (gtk_widget_destroy),
|
||||
NULL);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
activate_radio_action (GtkAction *action, GtkRadioAction *current)
|
||||
{
|
||||
const gchar *name = gtk_action_get_name (GTK_ACTION (current));
|
||||
const gchar *typename = G_OBJECT_TYPE_NAME (GTK_ACTION (current));
|
||||
gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (current));
|
||||
gint value = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (current));
|
||||
|
||||
if (active)
|
||||
{
|
||||
gchar *text;
|
||||
|
||||
text = g_strdup_printf ("You activated radio action: \"%s\" of type \"%s\".\n"
|
||||
"Current value: %d",
|
||||
name, typename, value);
|
||||
gtk_label_set_text (GTK_LABEL (messagelabel), text);
|
||||
gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), (GtkMessageType)value);
|
||||
gtk_widget_show (infobar);
|
||||
g_free (text);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
about_cb (GtkAction *action,
|
||||
GtkWidget *window)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
const gchar *authors[] = {
|
||||
"Peter Mattis",
|
||||
"Spencer Kimball",
|
||||
"Josh MacDonald",
|
||||
"and many more...",
|
||||
NULL
|
||||
};
|
||||
|
||||
const gchar *documentors[] = {
|
||||
"Owen Taylor",
|
||||
"Tony Gale",
|
||||
"Matthias Clasen <mclasen@redhat.com>",
|
||||
"and many more...",
|
||||
NULL
|
||||
};
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_resource ("/appwindow/gtk-logo-old.png", NULL);
|
||||
/* We asser the existence of the pixbuf as we load it from a custom resource. */
|
||||
g_assert (pixbuf);
|
||||
|
||||
gtk_show_about_dialog (GTK_WINDOW (window),
|
||||
"program-name", "GTK+ Code Demos",
|
||||
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ()),
|
||||
"copyright", "(C) 1997-2009 The GTK+ Team",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK+ functions.",
|
||||
"authors", authors,
|
||||
"documenters", documentors,
|
||||
"logo", pixbuf,
|
||||
"title", "About GTK+ Code Demos",
|
||||
NULL);
|
||||
|
||||
g_object_unref (pixbuf);
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkAction action;
|
||||
} ToolMenuAction;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkActionClass parent_class;
|
||||
} ToolMenuActionClass;
|
||||
|
||||
G_DEFINE_TYPE(ToolMenuAction, tool_menu_action, GTK_TYPE_ACTION)
|
||||
|
||||
static void
|
||||
tool_menu_action_class_init (ToolMenuActionClass *class)
|
||||
{
|
||||
GTK_ACTION_CLASS (class)->toolbar_item_type = GTK_TYPE_MENU_TOOL_BUTTON;
|
||||
}
|
||||
|
||||
static void
|
||||
tool_menu_action_init (ToolMenuAction *action)
|
||||
{
|
||||
}
|
||||
|
||||
static GtkActionEntry entries[] = {
|
||||
{ "FileMenu", NULL, "_File" }, /* name, stock id, label */
|
||||
{ "OpenMenu", NULL, "_Open" }, /* name, stock id, label */
|
||||
{ "PreferencesMenu", NULL, "_Preferences" }, /* name, stock id, label */
|
||||
{ "ColorMenu", NULL, "_Color" }, /* name, stock id, label */
|
||||
{ "ShapeMenu", NULL, "_Shape" }, /* name, stock id, label */
|
||||
{ "HelpMenu", NULL, "_Help" }, /* name, stock id, label */
|
||||
{ "New", GTK_STOCK_NEW, /* name, stock id */
|
||||
"_New", "<control>N", /* label, accelerator */
|
||||
"Create a new file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "File1", NULL, /* name, stock id */
|
||||
"File1", NULL, /* label, accelerator */
|
||||
"Open first file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Save", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"_Save","<control>S", /* label, accelerator */
|
||||
"Save current file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "SaveAs", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"Save _As...", NULL, /* label, accelerator */
|
||||
"Save to a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Quit", GTK_STOCK_QUIT, /* name, stock id */
|
||||
"_Quit", "<control>Q", /* label, accelerator */
|
||||
"Quit", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "About", NULL, /* name, stock id */
|
||||
"_About", "<control>A", /* label, accelerator */
|
||||
"About", /* tooltip */
|
||||
G_CALLBACK (about_cb) },
|
||||
{ "Logo", "demo-gtk-logo", /* name, stock id */
|
||||
NULL, NULL, /* label, accelerator */
|
||||
"GTK+", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
};
|
||||
static guint n_entries = G_N_ELEMENTS (entries);
|
||||
|
||||
|
||||
static GtkToggleActionEntry toggle_entries[] = {
|
||||
{ "Bold", GTK_STOCK_BOLD, /* name, stock id */
|
||||
"_Bold", "<control>B", /* label, accelerator */
|
||||
"Bold", /* tooltip */
|
||||
G_CALLBACK (activate_action),
|
||||
TRUE }, /* is_active */
|
||||
{ "DarkTheme", NULL, /* name, stock id */
|
||||
"_Prefer Dark Theme", NULL, /* label, accelerator */
|
||||
"Prefer Dark Theme", /* tooltip */
|
||||
G_CALLBACK (activate_action),
|
||||
FALSE }, /* is_active */
|
||||
{ "HideTitlebar", NULL,
|
||||
"_Hide Titlebar when maximized", NULL,
|
||||
"Hide Titlebar when maximized",
|
||||
G_CALLBACK (activate_action),
|
||||
FALSE }
|
||||
};
|
||||
static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
|
||||
|
||||
enum {
|
||||
COLOR_RED,
|
||||
COLOR_GREEN,
|
||||
COLOR_BLUE
|
||||
};
|
||||
|
||||
static GtkRadioActionEntry color_entries[] = {
|
||||
{ "Red", NULL, /* name, stock id */
|
||||
"_Red", "<control>R", /* label, accelerator */
|
||||
"Blood", COLOR_RED }, /* tooltip, value */
|
||||
{ "Green", NULL, /* name, stock id */
|
||||
"_Green", "<control>G", /* label, accelerator */
|
||||
"Grass", COLOR_GREEN }, /* tooltip, value */
|
||||
{ "Blue", NULL, /* name, stock id */
|
||||
"_Blue", "<control>B", /* label, accelerator */
|
||||
"Sky", COLOR_BLUE }, /* tooltip, value */
|
||||
};
|
||||
static guint n_color_entries = G_N_ELEMENTS (color_entries);
|
||||
|
||||
enum {
|
||||
SHAPE_SQUARE,
|
||||
SHAPE_RECTANGLE,
|
||||
SHAPE_OVAL
|
||||
};
|
||||
|
||||
static GtkRadioActionEntry shape_entries[] = {
|
||||
{ "Square", NULL, /* name, stock id */
|
||||
"_Square", "<control>S", /* label, accelerator */
|
||||
"Square", SHAPE_SQUARE }, /* tooltip, value */
|
||||
{ "Rectangle", NULL, /* name, stock id */
|
||||
"_Rectangle", "<control>R", /* label, accelerator */
|
||||
"Rectangle", SHAPE_RECTANGLE }, /* tooltip, value */
|
||||
{ "Oval", NULL, /* name, stock id */
|
||||
"_Oval", "<control>O", /* label, accelerator */
|
||||
"Egg", SHAPE_OVAL }, /* tooltip, value */
|
||||
};
|
||||
static guint n_shape_entries = G_N_ELEMENTS (shape_entries);
|
||||
|
||||
static const gchar *ui_info =
|
||||
"<ui>"
|
||||
" <menubar name='MenuBar'>"
|
||||
" <menu action='FileMenu'>"
|
||||
" <menuitem action='New'/>"
|
||||
" <menuitem action='Open'/>"
|
||||
" <menuitem action='Save'/>"
|
||||
" <menuitem action='SaveAs'/>"
|
||||
" <separator/>"
|
||||
" <menuitem action='Quit'/>"
|
||||
" </menu>"
|
||||
" <menu action='PreferencesMenu'>"
|
||||
" <menuitem action='DarkTheme'/>"
|
||||
" <menuitem action='HideTitlebar'/>"
|
||||
" <menu action='ColorMenu'>"
|
||||
" <menuitem action='Red'/>"
|
||||
" <menuitem action='Green'/>"
|
||||
" <menuitem action='Blue'/>"
|
||||
" </menu>"
|
||||
" <menu action='ShapeMenu'>"
|
||||
" <menuitem action='Square'/>"
|
||||
" <menuitem action='Rectangle'/>"
|
||||
" <menuitem action='Oval'/>"
|
||||
" </menu>"
|
||||
" <menuitem action='Bold'/>"
|
||||
" </menu>"
|
||||
" <menu action='HelpMenu'>"
|
||||
" <menuitem action='About'/>"
|
||||
" </menu>"
|
||||
" </menubar>"
|
||||
" <toolbar name='ToolBar'>"
|
||||
" <toolitem action='Open'>"
|
||||
" <menu action='OpenMenu'>"
|
||||
" <menuitem action='File1'/>"
|
||||
" </menu>"
|
||||
" </toolitem>"
|
||||
" <toolitem action='Quit'/>"
|
||||
" <separator action='Sep1'/>"
|
||||
" <toolitem action='Logo'/>"
|
||||
" </toolbar>"
|
||||
"</ui>";
|
||||
|
||||
|
||||
|
||||
/* This function registers our custom toolbar icons, so they can be themed.
|
||||
*
|
||||
* It's totally optional to do this, you could just manually insert icons
|
||||
* and have them not be themeable, especially if you never expect people
|
||||
* to theme your app.
|
||||
*/
|
||||
static void
|
||||
register_stock_icons (void)
|
||||
{
|
||||
static gboolean registered = FALSE;
|
||||
|
||||
if (!registered)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
GtkIconFactory *factory;
|
||||
GtkIconSet *icon_set;
|
||||
|
||||
static GtkStockItem items[] = {
|
||||
{ "demo-gtk-logo",
|
||||
"_GTK!",
|
||||
0, 0, NULL }
|
||||
};
|
||||
|
||||
registered = TRUE;
|
||||
|
||||
/* Register our stock items */
|
||||
gtk_stock_add (items, G_N_ELEMENTS (items));
|
||||
|
||||
/* Add our custom icon factory to the list of defaults */
|
||||
factory = gtk_icon_factory_new ();
|
||||
gtk_icon_factory_add_default (factory);
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_resource ("/appwindow/gtk-logo-old.png", NULL);
|
||||
/* We assert the existence of the pixbuf as we load it from a custom resource. */
|
||||
g_assert (pixbuf);
|
||||
|
||||
icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
|
||||
gtk_icon_factory_add (factory, "demo-gtk-logo", icon_set);
|
||||
gtk_icon_set_unref (icon_set);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
/* Drop our reference to the factory, GTK will hold a reference. */
|
||||
g_object_unref (factory);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
update_statusbar (GtkTextBuffer *buffer,
|
||||
GtkStatusbar *statusbar)
|
||||
{
|
||||
gchar *msg;
|
||||
gint row, col;
|
||||
gint count;
|
||||
GtkTextIter iter;
|
||||
|
||||
gtk_statusbar_pop (statusbar, 0); /* clear any previous message,
|
||||
* underflow is allowed
|
||||
*/
|
||||
|
||||
count = gtk_text_buffer_get_char_count (buffer);
|
||||
|
||||
gtk_text_buffer_get_iter_at_mark (buffer,
|
||||
&iter,
|
||||
gtk_text_buffer_get_insert (buffer));
|
||||
|
||||
row = gtk_text_iter_get_line (&iter);
|
||||
col = gtk_text_iter_get_line_offset (&iter);
|
||||
|
||||
msg = g_strdup_printf ("Cursor at row %d column %d - %d chars in document",
|
||||
row, col, count);
|
||||
|
||||
gtk_statusbar_push (statusbar, 0, msg);
|
||||
|
||||
g_free (msg);
|
||||
}
|
||||
|
||||
static void
|
||||
mark_set_callback (GtkTextBuffer *buffer,
|
||||
const GtkTextIter *new_location,
|
||||
GtkTextMark *mark,
|
||||
gpointer data)
|
||||
{
|
||||
update_statusbar (buffer, GTK_STATUSBAR (data));
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_appwindow (GtkWidget *do_widget)
|
||||
{
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *table;
|
||||
GtkWidget *statusbar;
|
||||
GtkWidget *contents;
|
||||
GtkWidget *sw;
|
||||
GtkWidget *bar;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkActionGroup *action_group;
|
||||
GtkAction *open_action;
|
||||
GtkUIManager *merge;
|
||||
GError *error = NULL;
|
||||
|
||||
register_stock_icons ();
|
||||
|
||||
/* Create the toplevel window
|
||||
*/
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Application Window");
|
||||
gtk_window_set_icon_name (GTK_WINDOW (window), "document-open");
|
||||
|
||||
/* NULL window variable when window is closed */
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
table = gtk_grid_new ();
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), table);
|
||||
|
||||
/* Create the menubar and toolbar
|
||||
*/
|
||||
|
||||
action_group = gtk_action_group_new ("AppWindowActions");
|
||||
open_action = g_object_new (tool_menu_action_get_type (),
|
||||
"name", "Open",
|
||||
"label", "_Open",
|
||||
"tooltip", "Open a file",
|
||||
"stock-id", GTK_STOCK_OPEN,
|
||||
NULL);
|
||||
gtk_action_group_add_action (action_group, open_action);
|
||||
g_object_unref (open_action);
|
||||
gtk_action_group_add_actions (action_group,
|
||||
entries, n_entries,
|
||||
window);
|
||||
gtk_action_group_add_toggle_actions (action_group,
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (action_group,
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (action_group,
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_SQUARE,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
|
||||
merge = gtk_ui_manager_new ();
|
||||
g_object_set_data_full (G_OBJECT (window), "ui-manager", merge,
|
||||
g_object_unref);
|
||||
gtk_ui_manager_insert_action_group (merge, action_group, 0);
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_ui_manager_get_accel_group (merge));
|
||||
|
||||
if (!gtk_ui_manager_add_ui_from_string (merge, ui_info, -1, &error))
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
bar = gtk_ui_manager_get_widget (merge, "/MenuBar");
|
||||
gtk_widget_show (bar);
|
||||
gtk_widget_set_halign (bar, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), bar, 0, 0, 1, 1);
|
||||
|
||||
bar = gtk_ui_manager_get_widget (merge, "/ToolBar");
|
||||
gtk_widget_show (bar);
|
||||
gtk_widget_set_halign (bar, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), bar, 0, 1, 1, 1);
|
||||
|
||||
/* Create document
|
||||
*/
|
||||
|
||||
infobar = gtk_info_bar_new ();
|
||||
gtk_widget_set_no_show_all (infobar, TRUE);
|
||||
messagelabel = gtk_label_new ("");
|
||||
gtk_widget_show (messagelabel);
|
||||
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (infobar))),
|
||||
messagelabel,
|
||||
TRUE, TRUE, 0);
|
||||
gtk_info_bar_add_button (GTK_INFO_BAR (infobar),
|
||||
GTK_STOCK_OK, GTK_RESPONSE_OK);
|
||||
g_signal_connect (infobar, "response",
|
||||
G_CALLBACK (gtk_widget_hide), NULL);
|
||||
|
||||
gtk_widget_set_halign (infobar, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), infobar, 0, 2, 1, 1);
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
gtk_widget_set_halign (sw, GTK_ALIGN_FILL);
|
||||
gtk_widget_set_valign (sw, GTK_ALIGN_FILL);
|
||||
gtk_widget_set_hexpand (sw, TRUE);
|
||||
gtk_widget_set_vexpand (sw, TRUE);
|
||||
gtk_grid_attach (GTK_GRID (table), sw, 0, 3, 1, 1);
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
200, 200);
|
||||
|
||||
contents = gtk_text_view_new ();
|
||||
gtk_widget_grab_focus (contents);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (sw),
|
||||
contents);
|
||||
|
||||
/* Create statusbar */
|
||||
|
||||
statusbar = gtk_statusbar_new ();
|
||||
gtk_widget_set_halign (sw, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), statusbar, 0, 4, 1, 1);
|
||||
|
||||
/* Show text widget info in the statusbar */
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
|
||||
|
||||
g_signal_connect_object (buffer,
|
||||
"changed",
|
||||
G_CALLBACK (update_statusbar),
|
||||
statusbar,
|
||||
0);
|
||||
|
||||
g_signal_connect_object (buffer,
|
||||
"mark_set", /* cursor moved */
|
||||
G_CALLBACK (mark_set_callback),
|
||||
statusbar,
|
||||
0);
|
||||
|
||||
update_statusbar (buffer, GTK_STATUSBAR (statusbar));
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
{
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
infobar = NULL;
|
||||
messagelabel = NULL;
|
||||
}
|
||||
|
||||
return window;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 10 KiB |
@@ -3,7 +3,6 @@
|
||||
* The Button Box widgets are used to arrange buttons with padding.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *
|
||||
@@ -29,13 +28,13 @@ create_bbox (gint horizontal,
|
||||
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
|
||||
gtk_box_set_spacing (GTK_BOX (bbox), spacing);
|
||||
|
||||
button = gtk_button_new_with_label (_("OK"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_OK);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
button = gtk_button_new_with_label (_("Cancel"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
button = gtk_button_new_with_label (_("Help"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_HELP);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
return frame;
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
/* Change Display
|
||||
*
|
||||
* Demonstrates migrating a window between different displays.
|
||||
* A display is a mouse and keyboard with some number of
|
||||
* associated monitors. The neat thing about having multiple
|
||||
* displays is that they can be on a completely separate
|
||||
* Demonstrates migrating a window between different displays and
|
||||
* screens. A display is a mouse and keyboard with some number of
|
||||
* associated monitors. A screen is a set of monitors grouped
|
||||
* into a single physical work area. The neat thing about having
|
||||
* multiple displays is that they can be on a completely separate
|
||||
* computers, as long as there is a network connection to the
|
||||
* computer where the application is running.
|
||||
*
|
||||
* Only some of the windowing systems where GTK+ runs have the
|
||||
* concept of multiple displays. (The X Window System is the
|
||||
* main example.) Other windowing systems can only handle one
|
||||
* keyboard and mouse, and combine all monitors into
|
||||
* a single display.
|
||||
* concept of multiple displays and screens. (The X Window System
|
||||
* is the main example.) Other windowing systems can only
|
||||
* handle one keyboard and mouse, and combine all monitors into
|
||||
* a single screen.
|
||||
*
|
||||
* This is a moderately complex example, and demonstrates:
|
||||
*
|
||||
* - Tracking the currently open displays
|
||||
* - Tracking the currently open displays and screens
|
||||
*
|
||||
* - Changing the display for a window
|
||||
* - Changing the screen for a window
|
||||
*
|
||||
* - Letting the user choose a window by clicking on it
|
||||
*
|
||||
@@ -29,7 +30,6 @@
|
||||
|
||||
#undef GDK_DISABLE_DEPRECATED
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
/* The ChangeDisplayInfo structure corresponds to a toplevel window and
|
||||
@@ -45,8 +45,11 @@ struct _ChangeDisplayInfo
|
||||
GtkSizeGroup *size_group;
|
||||
|
||||
GtkTreeModel *display_model;
|
||||
GtkTreeModel *screen_model;
|
||||
GtkTreeSelection *screen_selection;
|
||||
|
||||
GdkDisplay *current_display;
|
||||
GdkScreen *current_screen;
|
||||
};
|
||||
|
||||
/* These enumerations provide symbolic names for the columns
|
||||
@@ -174,11 +177,40 @@ query_change_display (ChangeDisplayInfo *info)
|
||||
"to move to the new screen");
|
||||
|
||||
if (toplevel)
|
||||
gtk_window_set_screen (GTK_WINDOW (toplevel), gdk_display_get_screen (info->current_display, 0));
|
||||
gtk_window_set_screen (GTK_WINDOW (toplevel), info->current_screen);
|
||||
else
|
||||
gdk_display_beep (gdk_screen_get_display (screen));
|
||||
}
|
||||
|
||||
/* Fills in the screen list based on the current display
|
||||
*/
|
||||
static void
|
||||
fill_screens (ChangeDisplayInfo *info)
|
||||
{
|
||||
gtk_list_store_clear (GTK_LIST_STORE (info->screen_model));
|
||||
|
||||
if (info->current_display)
|
||||
{
|
||||
gint n_screens = gdk_display_get_n_screens (info->current_display);
|
||||
gint i;
|
||||
|
||||
for (i = 0; i < n_screens; i++)
|
||||
{
|
||||
GdkScreen *screen = gdk_display_get_screen (info->current_display, i);
|
||||
GtkTreeIter iter;
|
||||
|
||||
gtk_list_store_append (GTK_LIST_STORE (info->screen_model), &iter);
|
||||
gtk_list_store_set (GTK_LIST_STORE (info->screen_model), &iter,
|
||||
SCREEN_COLUMN_NUMBER, i,
|
||||
SCREEN_COLUMN_SCREEN, screen,
|
||||
-1);
|
||||
|
||||
if (i == 0)
|
||||
gtk_tree_selection_select_iter (info->screen_selection, &iter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Called when the user clicks on a button in our dialog or
|
||||
* closes the dialog through the window manager. Unless the
|
||||
* "Change" button was clicked, we destroy the dialog.
|
||||
@@ -212,8 +244,8 @@ open_display_cb (GtkWidget *button,
|
||||
dialog = gtk_dialog_new_with_buttons ("Open Display",
|
||||
GTK_WINDOW (info->window),
|
||||
GTK_DIALOG_MODAL,
|
||||
_("_Cancel"), GTK_RESPONSE_CANCEL,
|
||||
_("_OK"), GTK_RESPONSE_OK,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
|
||||
@@ -288,6 +320,28 @@ display_changed_cb (GtkTreeSelection *selection,
|
||||
-1);
|
||||
else
|
||||
info->current_display = NULL;
|
||||
|
||||
fill_screens (info);
|
||||
}
|
||||
|
||||
/* Called when the selected row in the sceen list changes.
|
||||
* Updates info->current_screen.
|
||||
*/
|
||||
static void
|
||||
screen_changed_cb (GtkTreeSelection *selection,
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (info->current_screen)
|
||||
g_object_unref (info->current_screen);
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
gtk_tree_model_get (model, &iter,
|
||||
SCREEN_COLUMN_SCREEN, &info->current_screen,
|
||||
-1);
|
||||
else
|
||||
info->current_screen = NULL;
|
||||
}
|
||||
|
||||
/* This function is used both for creating the "Display" and
|
||||
@@ -392,6 +446,37 @@ create_display_frame (ChangeDisplayInfo *info)
|
||||
return frame;
|
||||
}
|
||||
|
||||
/* Creates the "Screen" frame in the main window.
|
||||
*/
|
||||
GtkWidget *
|
||||
create_screen_frame (ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
GtkWidget *tree_view;
|
||||
GtkWidget *button_vbox;
|
||||
GtkTreeViewColumn *column;
|
||||
|
||||
create_frame (info, "Screen", &frame, &tree_view, &button_vbox);
|
||||
|
||||
info->screen_model = (GtkTreeModel *)gtk_list_store_new (SCREEN_NUM_COLUMNS,
|
||||
G_TYPE_INT,
|
||||
GDK_TYPE_SCREEN);
|
||||
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->screen_model);
|
||||
|
||||
column = gtk_tree_view_column_new_with_attributes ("Number",
|
||||
gtk_cell_renderer_text_new (),
|
||||
"text", SCREEN_COLUMN_NUMBER,
|
||||
NULL);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
|
||||
|
||||
info->screen_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
||||
g_signal_connect (info->screen_selection, "changed",
|
||||
G_CALLBACK (screen_changed_cb), info);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
/* Called when one of the currently open displays is closed.
|
||||
* Remove it from our list of displays.
|
||||
*/
|
||||
@@ -495,9 +580,12 @@ destroy_info (ChangeDisplayInfo *info)
|
||||
|
||||
g_object_unref (info->size_group);
|
||||
g_object_unref (info->display_model);
|
||||
g_object_unref (info->screen_model);
|
||||
|
||||
if (info->current_display)
|
||||
g_object_unref (info->current_display);
|
||||
if (info->current_screen)
|
||||
g_object_unref (info->current_screen);
|
||||
|
||||
g_free (info);
|
||||
}
|
||||
@@ -529,7 +617,7 @@ do_changedisplay (GtkWidget *do_widget)
|
||||
info->window = gtk_dialog_new_with_buttons ("Change Screen or display",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"), GTK_RESPONSE_CLOSE,
|
||||
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
|
||||
"Change", GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
|
||||
@@ -549,6 +637,9 @@ do_changedisplay (GtkWidget *do_widget)
|
||||
frame = create_display_frame (info);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
frame = create_screen_frame (info);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
initialize_displays (info);
|
||||
|
||||
gtk_widget_show_all (info->window);
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
* manager to run.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -69,24 +68,17 @@ paste_button_clicked (GtkWidget *button,
|
||||
static GdkPixbuf *
|
||||
get_image_pixbuf (GtkImage *image)
|
||||
{
|
||||
const gchar *icon_name;
|
||||
gchar *stock_id;
|
||||
GtkIconSize size;
|
||||
GtkIconTheme *icon_theme;
|
||||
int width;
|
||||
|
||||
switch (gtk_image_get_storage_type (image))
|
||||
{
|
||||
case GTK_IMAGE_PIXBUF:
|
||||
return g_object_ref (gtk_image_get_pixbuf (image));
|
||||
case GTK_IMAGE_ICON_NAME:
|
||||
gtk_image_get_icon_name (image, &icon_name, &size);
|
||||
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (image)));
|
||||
gtk_icon_size_lookup (size, &width, NULL);
|
||||
return gtk_icon_theme_load_icon (icon_theme,
|
||||
icon_name,
|
||||
width,
|
||||
GTK_ICON_LOOKUP_GENERIC_FALLBACK,
|
||||
NULL);
|
||||
case GTK_IMAGE_STOCK:
|
||||
gtk_image_get_stock (image, &stock_id, &size);
|
||||
return gtk_widget_render_icon_pixbuf (GTK_WIDGET (image),
|
||||
stock_id, size);
|
||||
default:
|
||||
g_warning ("Image storage type %d not handled",
|
||||
gtk_image_get_storage_type (image));
|
||||
@@ -185,12 +177,12 @@ button_press (GtkWidget *widget,
|
||||
|
||||
menu = gtk_menu_new ();
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic (_("_Copy"));
|
||||
item = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY, NULL);
|
||||
g_signal_connect (item, "activate", G_CALLBACK (copy_image), data);
|
||||
gtk_widget_show (item);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic (_("_Paste"));
|
||||
item = gtk_image_menu_item_new_from_stock (GTK_STOCK_PASTE, NULL);
|
||||
g_signal_connect (item, "activate", G_CALLBACK (paste_image), data);
|
||||
gtk_widget_show (item);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
@@ -236,7 +228,7 @@ do_clipboard (GtkWidget *do_widget)
|
||||
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
|
||||
|
||||
/* Create the button */
|
||||
button = gtk_button_new_with_mnemonic (_("_Copy"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_COPY);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
|
||||
g_signal_connect (button, "clicked",
|
||||
G_CALLBACK (copy_button_clicked), entry);
|
||||
@@ -253,7 +245,7 @@ do_clipboard (GtkWidget *do_widget)
|
||||
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
|
||||
|
||||
/* Create the button */
|
||||
button = gtk_button_new_with_mnemonic (_("_Paste"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_PASTE);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
|
||||
g_signal_connect (button, "clicked",
|
||||
G_CALLBACK (paste_button_clicked), entry);
|
||||
@@ -266,8 +258,8 @@ do_clipboard (GtkWidget *do_widget)
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
|
||||
/* Create the first image */
|
||||
image = gtk_image_new_from_icon_name ("dialog-warning",
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
ebox = gtk_event_box_new ();
|
||||
gtk_container_add (GTK_CONTAINER (ebox), image);
|
||||
gtk_container_add (GTK_CONTAINER (hbox), ebox);
|
||||
@@ -292,8 +284,8 @@ do_clipboard (GtkWidget *do_widget)
|
||||
G_CALLBACK (button_press), image);
|
||||
|
||||
/* Create the second image */
|
||||
image = gtk_image_new_from_icon_name ("process-stop",
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
image = gtk_image_new_from_stock (GTK_STOCK_STOP,
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
ebox = gtk_event_box_new ();
|
||||
gtk_container_add (GTK_CONTAINER (ebox), image);
|
||||
gtk_container_add (GTK_CONTAINER (hbox), ebox);
|
||||
|
||||
@@ -7,59 +7,81 @@
|
||||
* How the options are displayed is controlled by cell renderers.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
enum
|
||||
{
|
||||
ICON_NAME_COL,
|
||||
PIXBUF_COL,
|
||||
TEXT_COL
|
||||
};
|
||||
|
||||
static GtkTreeModel *
|
||||
create_icon_store (void)
|
||||
static gchar *
|
||||
strip_underscore (const gchar *text)
|
||||
{
|
||||
const gchar *icon_names[6] = {
|
||||
"dialog-warning",
|
||||
"process-stop",
|
||||
"document-new",
|
||||
"edit-clear",
|
||||
gchar *p, *q;
|
||||
gchar *result;
|
||||
|
||||
result = g_strdup (text);
|
||||
p = q = result;
|
||||
while (*p)
|
||||
{
|
||||
if (*p != '_')
|
||||
{
|
||||
*q = *p;
|
||||
q++;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*q = '\0';
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static GtkTreeModel *
|
||||
create_stock_icon_store (void)
|
||||
{
|
||||
gchar *stock_id[6] = {
|
||||
GTK_STOCK_DIALOG_WARNING,
|
||||
GTK_STOCK_STOP,
|
||||
GTK_STOCK_NEW,
|
||||
GTK_STOCK_CLEAR,
|
||||
NULL,
|
||||
"document-open"
|
||||
};
|
||||
const gchar *labels[6] = {
|
||||
N_("Warning"),
|
||||
N_("Stop"),
|
||||
N_("New"),
|
||||
N_("Clear"),
|
||||
NULL,
|
||||
N_("Open")
|
||||
GTK_STOCK_OPEN
|
||||
};
|
||||
|
||||
GtkStockItem item;
|
||||
GdkPixbuf *pixbuf;
|
||||
GtkWidget *cellview;
|
||||
GtkTreeIter iter;
|
||||
GtkListStore *store;
|
||||
gchar *label;
|
||||
gint i;
|
||||
|
||||
cellview = gtk_cell_view_new ();
|
||||
|
||||
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
|
||||
store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (icon_names); i++)
|
||||
for (i = 0; i < G_N_ELEMENTS (stock_id); i++)
|
||||
{
|
||||
if (icon_names[i])
|
||||
if (stock_id[i])
|
||||
{
|
||||
pixbuf = gtk_widget_render_icon_pixbuf (cellview, stock_id[i],
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
gtk_stock_lookup (stock_id[i], &item);
|
||||
label = strip_underscore (item.label);
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
ICON_NAME_COL, icon_names[i],
|
||||
TEXT_COL, _(labels[i]),
|
||||
PIXBUF_COL, pixbuf,
|
||||
TEXT_COL, label,
|
||||
-1);
|
||||
g_object_unref (pixbuf);
|
||||
g_free (label);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
ICON_NAME_COL, NULL,
|
||||
PIXBUF_COL, NULL,
|
||||
TEXT_COL, "separator",
|
||||
-1);
|
||||
}
|
||||
@@ -329,14 +351,14 @@ do_combobox (GtkWidget *do_widget)
|
||||
/* A combobox demonstrating cell renderers, separators and
|
||||
* insensitive rows
|
||||
*/
|
||||
frame = gtk_frame_new ("Items with icons");
|
||||
frame = gtk_frame_new ("Some stock icons");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
model = create_icon_store ();
|
||||
model = create_stock_icon_store ();
|
||||
combo = gtk_combo_box_new_with_model (model);
|
||||
g_object_unref (model);
|
||||
gtk_container_add (GTK_CONTAINER (box), combo);
|
||||
@@ -344,7 +366,7 @@ do_combobox (GtkWidget *do_widget)
|
||||
renderer = gtk_cell_renderer_pixbuf_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
|
||||
"icon-name", ICON_NAME_COL,
|
||||
"pixbuf", PIXBUF_COL,
|
||||
NULL);
|
||||
|
||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
|
||||
|
||||
@@ -117,7 +117,7 @@ do_css_multiplebgs (GtkWidget *do_widget)
|
||||
gtk_widget_set_name (child, "bricks-button");
|
||||
gtk_widget_set_halign (child, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (child, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_size_request (child, 250, 84);
|
||||
gtk_widget_set_size_request (child, 200, 80);
|
||||
|
||||
paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
|
||||
gtk_overlay_add_overlay (GTK_OVERLAY (container), paned);
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
/*
|
||||
#bricks-button {
|
||||
background-color: #eef;
|
||||
background-image: -gtk-scaled(url('resource:///css_multiplebgs/brick.png'),url('resource:///css_multiplebgs/brick2.png'));
|
||||
background-image: url('resource:///css_multiplebgs/brick.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
@@ -68,12 +68,10 @@ create_toolbar (void)
|
||||
toolbar = gtk_toolbar_new ();
|
||||
gtk_widget_set_valign (toolbar, GTK_ALIGN_CENTER);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "go-next");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "go-previous");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
|
||||
|
||||
item = gtk_tool_button_new (NULL, "Hello World");
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
<file>application.ui</file>
|
||||
<file>menus.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/appwindow">
|
||||
<file preprocess="to-pixdata">gtk-logo-old.png</file>
|
||||
</gresource>
|
||||
<gresource prefix="/builder">
|
||||
<file>demo.ui</file>
|
||||
</gresource>
|
||||
@@ -23,7 +26,6 @@
|
||||
<gresource prefix="/css_multiplebgs">
|
||||
<file>css_multiplebgs.css</file>
|
||||
<file>brick.png</file>
|
||||
<file>brick2.png</file>
|
||||
<file>cssview.css</file>
|
||||
<file>reset.css</file>
|
||||
</gresource>
|
||||
@@ -53,12 +55,6 @@
|
||||
<file preprocess="to-pixdata">gnome-fs-directory.png</file>
|
||||
<file preprocess="to-pixdata">gnome-fs-regular.png</file>
|
||||
</gresource>
|
||||
<gresource prefix="/stack">
|
||||
<file>stack.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/revealer">
|
||||
<file>revealer.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/images">
|
||||
<file>alphatest.png</file>
|
||||
<file>floppybuddy.gif</file>
|
||||
@@ -77,6 +73,7 @@
|
||||
</gresource>
|
||||
<gresource prefix="/sources">
|
||||
<file>application.c</file>
|
||||
<file>appwindow.c</file>
|
||||
<file>assistant.c</file>
|
||||
<file>builder.c</file>
|
||||
<file>button_box.c</file>
|
||||
@@ -101,7 +98,6 @@
|
||||
<file>images.c</file>
|
||||
<file>infobar.c</file>
|
||||
<file>links.c</file>
|
||||
<file>listbox.c</file>
|
||||
<file>list_store.c</file>
|
||||
<file>menus.c</file>
|
||||
<file>offscreen_window.c</file>
|
||||
@@ -111,28 +107,21 @@
|
||||
<file>pickers.c</file>
|
||||
<file>pixbufs.c</file>
|
||||
<file>printing.c</file>
|
||||
<file>revealer.c</file>
|
||||
<file>rotated_text.c</file>
|
||||
<file>search_entry.c</file>
|
||||
<file>search_entry2.c</file>
|
||||
<file>sizegroup.c</file>
|
||||
<file>stack.c</file>
|
||||
<file>spinner.c</file>
|
||||
<file>stock_browser.c</file>
|
||||
<file>textview.c</file>
|
||||
<file>textscroll.c</file>
|
||||
<file>theming_style_classes.c</file>
|
||||
<file>toolpalette.c</file>
|
||||
<file>transparent.c</file>
|
||||
<file>tree_store.c</file>
|
||||
<file>ui_manager.c</file>
|
||||
</gresource>
|
||||
<gresource prefix="/textview">
|
||||
<file>floppybuddy.gif</file>
|
||||
<file>gtk-logo-old.png</file>
|
||||
</gresource>
|
||||
<gresource prefix="/listbox">
|
||||
<file>listbox.ui</file>
|
||||
<file>messages.txt</file>
|
||||
<file>gtk-logo-48.png</file>
|
||||
<file>apple-red.png</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* Dialog widgets are used to pop up a transient window for user feedback.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -37,7 +36,7 @@ interactive_dialog_clicked (GtkButton *button,
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *image;
|
||||
GtkWidget *stock;
|
||||
GtkWidget *table;
|
||||
GtkWidget *local_entry1;
|
||||
GtkWidget *local_entry2;
|
||||
@@ -47,9 +46,9 @@ interactive_dialog_clicked (GtkButton *button,
|
||||
dialog = gtk_dialog_new_with_buttons ("Interactive Dialog",
|
||||
GTK_WINDOW (window),
|
||||
GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
_("_OK"),
|
||||
GTK_STOCK_OK,
|
||||
GTK_RESPONSE_OK,
|
||||
"_Cancel",
|
||||
"_Non-stock Button",
|
||||
GTK_RESPONSE_CANCEL,
|
||||
NULL);
|
||||
|
||||
@@ -59,8 +58,8 @@ interactive_dialog_clicked (GtkButton *button,
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), hbox, FALSE, FALSE, 0);
|
||||
|
||||
image = gtk_image_new_from_icon_name ("dialog-question", GTK_ICON_SIZE_DIALOG);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
|
||||
stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), stock, FALSE, FALSE, 0);
|
||||
|
||||
table = gtk_grid_new ();
|
||||
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -23,7 +22,7 @@ do_entry_buffer (GtkWidget *do_widget)
|
||||
window = gtk_dialog_new_with_buttons ("GtkEntryBuffer",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"),
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -50,7 +49,7 @@ do_entry_completion (GtkWidget *do_widget)
|
||||
window = gtk_dialog_new_with_buttons ("GtkEntryCompletion",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"),
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -24,7 +23,7 @@ do_expander (GtkWidget *do_widget)
|
||||
window = gtk_dialog_new_with_buttons ("GtkExpander",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"),
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
* example might be helpful.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -268,16 +267,12 @@ do_iconview (GtkWidget *do_widget)
|
||||
tool_bar = gtk_toolbar_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE, 0);
|
||||
|
||||
up_button = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_label (GTK_TOOL_BUTTON (up_button), _("_Up"));
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (up_button), "go-up");
|
||||
up_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);
|
||||
gtk_tool_item_set_is_important (up_button, TRUE);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (up_button), FALSE);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), up_button, -1);
|
||||
|
||||
home_button = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_label (GTK_TOOL_BUTTON (home_button), _("_Home"));
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (home_button), "go-home");
|
||||
home_button = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);
|
||||
gtk_tool_item_set_is_important (home_button, TRUE);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* Info bar widgets are used to report important messages to the user.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -65,7 +64,7 @@ do_infobar (GtkWidget *do_widget)
|
||||
label = gtk_label_new ("This is an info bar with message type GTK_MESSAGE_WARNING");
|
||||
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE, 0);
|
||||
|
||||
bar = gtk_info_bar_new_with_buttons (_("_OK"), GTK_RESPONSE_OK, NULL);
|
||||
bar = gtk_info_bar_new_with_buttons (GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
|
||||
g_signal_connect (bar, "response", G_CALLBACK (on_bar_response), window);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), bar, FALSE, FALSE, 0);
|
||||
gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_QUESTION);
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
*
|
||||
* The GtkListStore is used to store data in list form, to be used
|
||||
* later on by a GtkTreeView to display it. This demo builds a
|
||||
* simple GtkListStore and displays it.
|
||||
* simple GtkListStore and displays it. See the Stock Browser
|
||||
* demo for a more advanced example.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,371 +0,0 @@
|
||||
/* List Box
|
||||
*
|
||||
* GtkListBox allows lists with complicated layouts, using
|
||||
* regular widgets supporting sorting and filtering.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static GdkPixbuf *avatar_pixbuf_gtk;
|
||||
static GdkPixbuf *avatar_pixbuf_other;
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
#define GTK_TYPE_MESSAGE (gtk_message_get_type ())
|
||||
#define GTK_MESSAGE(message) (G_TYPE_CHECK_INSTANCE_CAST ((message), GTK_TYPE_MESSAGE, GtkMessage))
|
||||
#define GTK_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MESSAGE, GtkMessageClass))
|
||||
#define GTK_IS_MESSAGE(message) (G_TYPE_CHECK_INSTANCE_TYPE ((message), GTK_TYPE_MESSAGE))
|
||||
#define GTK_IS_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MESSAGE))
|
||||
#define GTK_MESSAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MESSAGE, GtkMessageClass))
|
||||
|
||||
#define GTK_TYPE_MESSAGE_ROW (gtk_message_row_get_type ())
|
||||
#define GTK_MESSAGE_ROW(message_row) (G_TYPE_CHECK_INSTANCE_CAST ((message_row), GTK_TYPE_MESSAGE_ROW, GtkMessageRow))
|
||||
#define GTK_MESSAGE_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MESSAGE_ROW, GtkMessageRowClass))
|
||||
#define GTK_IS_MESSAGE_ROW(message_row) (G_TYPE_CHECK_INSTANCE_TYPE ((message_row), GTK_TYPE_MESSAGE_ROW))
|
||||
#define GTK_IS_MESSAGE_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MESSAGE_ROW))
|
||||
#define GTK_MESSAGE_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MESSAGE_ROW, GtkMessageRowClass))
|
||||
|
||||
typedef struct _GtkMessage GtkMessage;
|
||||
typedef struct _GtkMessageClass GtkMessageClass;
|
||||
typedef struct _GtkMessageRow GtkMessageRow;
|
||||
typedef struct _GtkMessageRowClass GtkMessageRowClass;
|
||||
typedef struct _GtkMessageRowPrivate GtkMessageRowPrivate;
|
||||
|
||||
|
||||
struct _GtkMessage
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
guint id;
|
||||
char *sender_name;
|
||||
char *sender_nick;
|
||||
char *message;
|
||||
gint64 time;
|
||||
guint reply_to;
|
||||
char *resent_by;
|
||||
int n_favorites;
|
||||
int n_reshares;
|
||||
};
|
||||
|
||||
struct _GtkMessageClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
struct _GtkMessageRow
|
||||
{
|
||||
GtkListBoxRow parent;
|
||||
|
||||
GtkMessageRowPrivate *priv;
|
||||
};
|
||||
|
||||
struct _GtkMessageRowClass
|
||||
{
|
||||
GtkListBoxRowClass parent_class;
|
||||
};
|
||||
|
||||
struct _GtkMessageRowPrivate
|
||||
{
|
||||
GtkMessage *message;
|
||||
GtkRevealer *details_revealer;
|
||||
GtkImage *avatar_image;
|
||||
GtkWidget *extra_buttons_box;
|
||||
GtkLabel *content_label;
|
||||
GtkLabel *source_name;
|
||||
GtkLabel *source_nick;
|
||||
GtkLabel *short_time_label;
|
||||
GtkLabel *detailed_time_label;
|
||||
GtkBox *resent_box;
|
||||
GtkLinkButton *resent_by_button;
|
||||
GtkLabel *n_favorites_label;
|
||||
GtkLabel *n_reshares_label;
|
||||
GtkButton *expand_button;
|
||||
};
|
||||
|
||||
GType gtk_message_get_type (void) G_GNUC_CONST;
|
||||
GType gtk_message_row_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_DEFINE_TYPE (GtkMessage, gtk_message, G_TYPE_OBJECT);
|
||||
|
||||
static void
|
||||
gtk_message_class_init (GtkMessageClass *klass)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_message_init (GtkMessage *msg)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_message_parse (GtkMessage *msg, const char *str)
|
||||
{
|
||||
char **strv;
|
||||
int i;
|
||||
|
||||
strv = g_strsplit (str, "|", 0);
|
||||
|
||||
i = 0;
|
||||
msg->id = strtol (strv[i++], NULL, 10);
|
||||
msg->sender_name = g_strdup (strv[i++]);
|
||||
msg->sender_nick = g_strdup (strv[i++]);
|
||||
msg->message = g_strdup (strv[i++]);
|
||||
msg->time = strtol (strv[i++], NULL, 10);
|
||||
if (strv[i])
|
||||
{
|
||||
msg->reply_to = strtol (strv[i++], NULL, 10);
|
||||
if (strv[i])
|
||||
{
|
||||
if (*strv[i])
|
||||
msg->resent_by = g_strdup (strv[i]);
|
||||
i++;
|
||||
if (strv[i])
|
||||
{
|
||||
msg->n_favorites = strtol (strv[i++], NULL, 10);
|
||||
if (strv[i])
|
||||
{
|
||||
msg->n_reshares = strtol (strv[i++], NULL, 10);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (strv);
|
||||
}
|
||||
|
||||
static GtkMessage *
|
||||
gtk_message_new (const char *str)
|
||||
{
|
||||
GtkMessage *msg;
|
||||
msg = g_object_new (gtk_message_get_type (), NULL);
|
||||
gtk_message_parse (msg, str);
|
||||
return msg;
|
||||
}
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GtkMessageRow, gtk_message_row, GTK_TYPE_LIST_BOX_ROW);
|
||||
|
||||
|
||||
static void
|
||||
gtk_message_row_update (GtkMessageRow *row)
|
||||
{
|
||||
GtkMessageRowPrivate *priv = row->priv;
|
||||
GDateTime *t;
|
||||
char *s;
|
||||
|
||||
gtk_label_set_text (priv->source_name, priv->message->sender_name);
|
||||
gtk_label_set_text (priv->source_nick, priv->message->sender_nick);
|
||||
gtk_label_set_text (priv->content_label, priv->message->message);
|
||||
t = g_date_time_new_from_unix_utc (priv->message->time);
|
||||
s = g_date_time_format (t, "%e %b %y");
|
||||
gtk_label_set_text (priv->short_time_label, s);
|
||||
g_free (s);
|
||||
s = g_date_time_format (t, "%X - %e %b %Y");
|
||||
gtk_label_set_text (priv->detailed_time_label, s);
|
||||
g_free (s);
|
||||
|
||||
gtk_widget_set_visible (GTK_WIDGET(priv->n_favorites_label),
|
||||
priv->message->n_favorites != 0);
|
||||
s = g_strdup_printf ("<b>%d</b>\nFavorites", priv->message->n_favorites);
|
||||
gtk_label_set_markup (priv->n_favorites_label, s);
|
||||
g_free (s);
|
||||
|
||||
gtk_widget_set_visible (GTK_WIDGET(priv->n_reshares_label),
|
||||
priv->message->n_reshares != 0);
|
||||
s = g_strdup_printf ("<b>%d</b>\nReshares", priv->message->n_reshares);
|
||||
gtk_label_set_markup (priv->n_reshares_label, s);
|
||||
g_free (s);
|
||||
|
||||
gtk_widget_set_visible (GTK_WIDGET (priv->resent_box), priv->message->resent_by != NULL);
|
||||
if (priv->message->resent_by)
|
||||
gtk_button_set_label (GTK_BUTTON (priv->resent_by_button), priv->message->resent_by);
|
||||
|
||||
if (strcmp (priv->message->sender_nick, "@GTKtoolkit") == 0)
|
||||
gtk_image_set_from_pixbuf (priv->avatar_image, avatar_pixbuf_gtk);
|
||||
else
|
||||
gtk_image_set_from_pixbuf (priv->avatar_image, avatar_pixbuf_other);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_message_row_expand (GtkMessageRow *row)
|
||||
{
|
||||
GtkMessageRowPrivate *priv = row->priv;
|
||||
gboolean expand;
|
||||
|
||||
expand = !gtk_revealer_get_reveal_child (priv->details_revealer);
|
||||
|
||||
gtk_revealer_set_reveal_child (priv->details_revealer, expand);
|
||||
if (expand)
|
||||
gtk_button_set_label (priv->expand_button, "Hide");
|
||||
else
|
||||
gtk_button_set_label (priv->expand_button, "Expand");
|
||||
}
|
||||
|
||||
static void
|
||||
expand_clicked (GtkMessageRow *row,
|
||||
GtkButton *button)
|
||||
{
|
||||
gtk_message_row_expand (row);
|
||||
}
|
||||
|
||||
static void
|
||||
reshare_clicked (GtkMessageRow *row,
|
||||
GtkButton *button)
|
||||
{
|
||||
GtkMessageRowPrivate *priv = row->priv;
|
||||
|
||||
priv->message->n_reshares++;
|
||||
gtk_message_row_update (row);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
favorite_clicked (GtkMessageRow *row,
|
||||
GtkButton *button)
|
||||
{
|
||||
GtkMessageRowPrivate *priv = row->priv;
|
||||
|
||||
priv->message->n_favorites++;
|
||||
gtk_message_row_update (row);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_message_row_state_flags_changed (GtkWidget *widget,
|
||||
GtkStateFlags previous_state_flags)
|
||||
{
|
||||
GtkMessageRowPrivate *priv = GTK_MESSAGE_ROW (widget)->priv;
|
||||
GtkStateFlags flags;
|
||||
|
||||
flags = gtk_widget_get_state_flags (widget);
|
||||
|
||||
gtk_widget_set_visible (priv->extra_buttons_box,
|
||||
flags & (GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_SELECTED));
|
||||
|
||||
GTK_WIDGET_CLASS (gtk_message_row_parent_class)->state_flags_changed (widget, previous_state_flags);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_message_row_class_init (GtkMessageRowClass *klass)
|
||||
{
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
|
||||
gtk_widget_class_set_template_from_resource (widget_class, "/listbox/listbox.ui");
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, content_label);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, source_name);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, source_nick);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, short_time_label);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, detailed_time_label);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, extra_buttons_box);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, details_revealer);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, avatar_image);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, resent_box);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, resent_by_button);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, n_reshares_label);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, n_favorites_label);
|
||||
gtk_widget_class_bind_child(widget_class, GtkMessageRowPrivate, expand_button);
|
||||
gtk_widget_class_bind_callback (widget_class, expand_clicked);
|
||||
gtk_widget_class_bind_callback (widget_class, reshare_clicked);
|
||||
gtk_widget_class_bind_callback (widget_class, favorite_clicked);
|
||||
|
||||
widget_class->state_flags_changed = gtk_message_row_state_flags_changed;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_message_row_init (GtkMessageRow *row)
|
||||
{
|
||||
row->priv = gtk_message_row_get_instance_private (row);
|
||||
|
||||
gtk_widget_init_template (GTK_WIDGET (row));
|
||||
}
|
||||
|
||||
static GtkMessageRow *
|
||||
gtk_message_row_new (GtkMessage *message)
|
||||
{
|
||||
GtkMessageRow *row;
|
||||
|
||||
row = g_object_new (gtk_message_row_get_type (), NULL);
|
||||
row->priv->message = message;
|
||||
gtk_message_row_update (row);
|
||||
|
||||
return row;
|
||||
}
|
||||
|
||||
static int
|
||||
gtk_message_row_sort (GtkMessageRow *a, GtkMessageRow *b, gpointer data)
|
||||
{
|
||||
return a->priv->message->time - b->priv->message->time;
|
||||
}
|
||||
|
||||
static void
|
||||
row_activated (GtkListBox *listbox, GtkListBoxRow *row)
|
||||
{
|
||||
gtk_message_row_expand (GTK_MESSAGE_ROW (row));
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_listbox (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *scrolled, *listbox, *vbox, *label;
|
||||
GtkMessage *message;
|
||||
GtkMessageRow *row;
|
||||
GBytes *data;
|
||||
char **lines;
|
||||
int i;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
avatar_pixbuf_gtk = gdk_pixbuf_new_from_resource_at_scale ("/listbox/gtk-logo-48.png", 32, 32, FALSE, NULL);
|
||||
avatar_pixbuf_other = gdk_pixbuf_new_from_resource_at_scale ("/listbox/apple-red.png", 32, 32, FALSE, NULL);
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "ListBox");
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
400, 600);
|
||||
|
||||
/* NULL window variable when window is closed */
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
label = gtk_label_new ("Messages from Gtk+ and friends");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
scrolled = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0);
|
||||
listbox = gtk_list_box_new ();
|
||||
gtk_container_add (GTK_CONTAINER (scrolled), listbox);
|
||||
|
||||
gtk_list_box_set_sort_func (GTK_LIST_BOX (listbox), (GtkListBoxSortFunc)gtk_message_row_sort, listbox, NULL);
|
||||
gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (listbox), FALSE);
|
||||
g_signal_connect (listbox, "row-activated", G_CALLBACK (row_activated), NULL);
|
||||
|
||||
gtk_widget_show_all (vbox);
|
||||
|
||||
data = g_resources_lookup_data ("/listbox/messages.txt", 0, NULL);
|
||||
lines = g_strsplit (g_bytes_get_data (data, NULL), "\n", 0);
|
||||
|
||||
for (i = 0; lines[i] != NULL && *lines[i]; i++)
|
||||
{
|
||||
message = gtk_message_new (lines[i]);
|
||||
row = gtk_message_row_new (message);
|
||||
gtk_widget_show (GTK_WIDGET (row));
|
||||
gtk_container_add (GTK_CONTAINER (listbox), GTK_WIDGET (row));
|
||||
}
|
||||
|
||||
g_strfreev (lines);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show (window);
|
||||
else
|
||||
gtk_widget_destroy (window);
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -1,425 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="gtk30">
|
||||
<!-- interface-requires gtk+ 3.10 -->
|
||||
<!-- interface-requires gtkdemo 3.10 -->
|
||||
<object class="GtkMenu" id="menu1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Email message</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Embed message</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<template class="GtkMessageRow" parent="GtkListBoxRow">
|
||||
<child>
|
||||
<object class="GtkGrid" id="grid1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="avatar_image">
|
||||
<property name="width_request">32</property>
|
||||
<property name="height_request">32</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="margin_top">8</property>
|
||||
<property name="margin_bottom">8</property>
|
||||
<property name="margin_left">8</property>
|
||||
<property name="margin_right">8</property>
|
||||
<property name="icon-name">image-missing</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="baseline_position">top</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="button2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="relief">none</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="source_name">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label" translatable="no">Username</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="source_nick">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label" translatable="no">@nick</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="short_time_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label" translatable="yes">38m</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="content_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="no">Message</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="resent_box">
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="icon_name">media-playlist-repeat</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Resent by</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLinkButton" id="resent_by_button">
|
||||
<property name="label" translatable="no">reshareer</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="uri">http://www.gtk.org</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="expand_button">
|
||||
<property name="label" translatable="yes">Expand</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
<signal name="clicked" handler="expand_clicked" swapped="yes"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="extra_buttons_box">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="reply-button">
|
||||
<property name="label" translatable="yes">Reply</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reshare-button">
|
||||
<property name="label" translatable="yes">Reshare</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
<signal name="clicked" handler="reshare_clicked" swapped="yes"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="favorite-buttton">
|
||||
<property name="label" translatable="yes">Favorite</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
<signal name="clicked" handler="favorite_clicked" swapped="yes"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="more-button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="popup">menu1</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">More...</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="details_revealer">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box7">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_top">2</property>
|
||||
<property name="margin_bottom">2</property>
|
||||
<property name="spacing">8</property>
|
||||
<child>
|
||||
<object class="GtkFrame" id="frame1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="n_reshares_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="no"><b>2</b>
|
||||
Reshares</property>
|
||||
<property name="use_markup">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame" id="frame2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="n_favorites_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="no"><b>2</b>
|
||||
FAVORITES</property>
|
||||
<property name="use_markup">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box6">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="detailed_time_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="no">4:25 AM - 14 Jun 13 </property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="button5">
|
||||
<property name="label" translatable="yes">Details</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="relief">none</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "config.h"
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -122,6 +123,7 @@ static gchar *types[] =
|
||||
"GtkActionEntry ",
|
||||
"GtkRadioActionEntry ",
|
||||
"GtkIconFactory ",
|
||||
"GtkStockItem ",
|
||||
"GtkIconSet ",
|
||||
"GtkTextBuffer ",
|
||||
"GtkStatusbar ",
|
||||
@@ -401,7 +403,7 @@ static GtkWidget *create_text (GtkWidget **text_view, gboolean is_source);
|
||||
static void
|
||||
add_data_tab (const gchar *demoname)
|
||||
{
|
||||
gchar *resource_dir, *resource_name, *content_type, *content_mime;
|
||||
gchar *resource_dir, *resource_name, *content_type;
|
||||
gchar **resources;
|
||||
GBytes *bytes;
|
||||
GtkWidget *widget, *label;
|
||||
@@ -425,20 +427,17 @@ add_data_tab (const gchar *demoname)
|
||||
g_bytes_get_data (bytes, NULL),
|
||||
g_bytes_get_size (bytes),
|
||||
NULL);
|
||||
content_mime = g_content_type_get_mime_type (content_type);
|
||||
|
||||
/* In theory we should look at all the mime types gdk-pixbuf supports
|
||||
* and go from there, but we know what file types we've added.
|
||||
*/
|
||||
if (g_content_type_is_a (content_mime, "image/png") ||
|
||||
g_content_type_is_a (content_mime, "image/gif") ||
|
||||
g_content_type_is_a (content_mime, "image/jpeg"))
|
||||
if (g_content_type_is_a (content_type, "image/png") ||
|
||||
g_content_type_is_a (content_type, "image/gif") ||
|
||||
g_content_type_is_a (content_type, "image/jpeg"))
|
||||
{
|
||||
widget = gtk_image_new_from_resource (resource_name);
|
||||
}
|
||||
else if (g_content_type_is_a (content_mime, "text/plain") ||
|
||||
g_content_type_is_a (content_mime, "application/x-ext-ui") ||
|
||||
g_content_type_is_a (content_mime, "text/css"))
|
||||
else if (g_content_type_is_a (content_type, "text/plain"))
|
||||
{
|
||||
GtkTextBuffer *buffer;
|
||||
GtkWidget *textview;
|
||||
@@ -450,8 +449,7 @@ add_data_tab (const gchar *demoname)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
g_warning ("Don't know how to display resource '%s' of type '%s'\n", resource_name, content_mime);
|
||||
g_warning ("Don't know how to display resource '%s' of type '%s'\n", resource_name, content_type);
|
||||
widget = NULL;
|
||||
}
|
||||
|
||||
@@ -460,7 +458,6 @@ add_data_tab (const gchar *demoname)
|
||||
gtk_widget_show (label);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label);
|
||||
|
||||
g_free (content_mime);
|
||||
g_free (content_type);
|
||||
g_free (resource_name);
|
||||
g_bytes_unref (bytes);
|
||||
|
||||
@@ -36,6 +36,7 @@ all : \
|
||||
## These should be in the order you want them to appear in the
|
||||
## demo app, which means alphabetized by demo title, not filename
|
||||
DEMOS = \
|
||||
appwindow.c \
|
||||
button_box.c \
|
||||
clipboard.c \
|
||||
colorsel.c \
|
||||
@@ -53,6 +54,7 @@ DEMOS = \
|
||||
pixbufs.c \
|
||||
rotated_text.c \
|
||||
sizegroup.c \
|
||||
stock_browser.c \
|
||||
textview.c \
|
||||
tree_store.c \
|
||||
ui_manager.c \
|
||||
@@ -62,6 +64,7 @@ demos.h: $(DEMOS) geninclude.pl
|
||||
$(PERL) geninclude.pl $(DEMOS) > demos.h
|
||||
|
||||
OBJECTS = \
|
||||
appwindow.obj \
|
||||
button_box.obj \
|
||||
changedisplay.obj \
|
||||
clipboard.obj \
|
||||
@@ -80,6 +83,7 @@ OBJECTS = \
|
||||
pixbufs.obj \
|
||||
rotated_text.obj \
|
||||
sizegroup.obj \
|
||||
stock_browser.obj \
|
||||
textview.obj \
|
||||
tree_store.obj \
|
||||
ui_manager.obj \
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
1|GTK+ and friends|@GTKtoolkit|GTK+ 3.8.0 (STABLE) released: wayland, Multi-application Broadway, improved CSS support and more ... http://ur1.ca/d6yms #gtk #gtk3|1364338800|0||4|2
|
||||
2|Daniel Svensson|@dsvensson|Bringing an application up to the new features in GTK 3.x = tons of negative diffs, awesome work by @GTKtoolkit devs <3|1382565600|0|GTK+ and friends|0|1
|
||||
3|GTK+ and friends|@GTKtoolkit|GLib status update and a warning: http://ur1.ca/awsm1 #glib|1384383600
|
||||
4|GTK+ and friends|@GTKtoolkit|GProperty status: http://ur1.ca/awslh #glib|1384383300
|
||||
5|GTK+ and friends|@GTKtoolkit|GTK+ 3.6.2 (STABLE) available: http://ur1.ca/awsl2 #gtk #gtk3|1384383000
|
||||
6|GTK+ and friends|@GTKtoolkit|GLib 2.34.2 (STABLE) available: http://ur1.ca/awskn #glib|1384383000
|
||||
7|GTK+ and friends|@GTKtoolkit|GTK+ 3.6.0 (STABLE) released: http://ur1.ca/aj4e0 #gtk #gtk3|1381528800
|
||||
8|GTK+ and friends|@GTKtoolkit|GLib 2.34.0 (STABLE) released: http://ur1.ca/aj4du #glib|1381522800
|
||||
@@ -3,7 +3,6 @@
|
||||
* Offscreen windows can be used to render elements multiple times to achieve
|
||||
* various effects.
|
||||
*/
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#define GTK_TYPE_MIRROR_BIN (gtk_mirror_bin_get_type ())
|
||||
@@ -498,12 +497,14 @@ do_offscreen_window2 (GtkWidget *do_widget)
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
|
||||
backbutton = gtk_button_new ();
|
||||
gtk_container_add (GTK_CONTAINER (backbutton),
|
||||
gtk_image_new_from_icon_name ("go-previous", 4));
|
||||
gtk_image_new_from_stock (GTK_STOCK_GO_BACK, 4));
|
||||
gtk_size_group_add_widget (group, backbutton);
|
||||
entry = gtk_entry_new ();
|
||||
gtk_size_group_add_widget (group, entry);
|
||||
applybutton = gtk_button_new_with_label (_("Apply"));
|
||||
applybutton = gtk_button_new ();
|
||||
gtk_size_group_add_widget (group, applybutton);
|
||||
gtk_container_add (GTK_CONTAINER (applybutton),
|
||||
gtk_image_new_from_stock (GTK_STOCK_APPLY, 4));
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), bin, TRUE, TRUE, 0);
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
/* Revealer
|
||||
*
|
||||
* GtkRevealer is a container that animates showing and hiding
|
||||
* of its sole child with nice transitions.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkBuilder *builder;
|
||||
static gint count = 0;
|
||||
|
||||
static void
|
||||
change_direction (GtkRevealer *revealer)
|
||||
{
|
||||
gboolean revealed;
|
||||
|
||||
revealed = gtk_revealer_get_child_revealed (revealer);
|
||||
gtk_revealer_set_reveal_child (revealer, !revealed);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
reveal_one (gpointer data)
|
||||
{
|
||||
gchar *name;
|
||||
GtkRevealer *revealer;
|
||||
|
||||
name = g_strdup_printf ("revealer%d", count);
|
||||
revealer = (GtkRevealer *)gtk_builder_get_object (builder, name);
|
||||
|
||||
gtk_revealer_set_reveal_child (revealer, TRUE);
|
||||
|
||||
g_signal_connect (revealer, "notify::child-revealed",
|
||||
G_CALLBACK (change_direction), NULL);
|
||||
count++;
|
||||
|
||||
return count < 9;
|
||||
}
|
||||
|
||||
static guint timeout = 0;
|
||||
|
||||
static void
|
||||
response_cb (GtkWidget *dialog,
|
||||
gint response_id,
|
||||
gpointer data)
|
||||
{
|
||||
if (timeout != 0)
|
||||
{
|
||||
g_source_remove (timeout);
|
||||
timeout = 0;
|
||||
}
|
||||
gtk_widget_destroy (dialog);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_revealer (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
GError *err = NULL;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
builder = gtk_builder_new ();
|
||||
gtk_builder_add_from_resource (builder, "/revealer/revealer.ui", &err);
|
||||
if (err)
|
||||
{
|
||||
g_error ("ERROR: %s\n", err->message);
|
||||
return NULL;
|
||||
}
|
||||
gtk_builder_connect_signals (builder, NULL);
|
||||
window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog1"));
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
g_signal_connect (window, "response", G_CALLBACK (response_cb), NULL);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
{
|
||||
count = 0;
|
||||
timeout = g_timeout_add (690, reveal_one, NULL);
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -1,223 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.6 -->
|
||||
<object class="GtkDialog" id="dialog1">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">5</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="default_width">300</property>
|
||||
<property name="default_height">300</property>
|
||||
<property name="title">Revealer</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox" id="dialog-vbox1">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox" id="dialog-action_area1">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="button1">
|
||||
<property name="label" translatable="yes">_Close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid" id="grid1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer0">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">crossfade</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image0">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer1">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-up</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer2">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-right</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">3</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer3">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-down</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image3">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer4">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-left</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image4">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer5">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-up</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image5">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer6">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-right</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image6">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">4</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer7">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-down</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image7">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRevealer" id="revealer8">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-duration">2000</property>
|
||||
<property name="transition-type">slide-left</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image8">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">face-cool-symbolic</property>
|
||||
<property name="icon-size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="0">button1</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
</interface>
|
||||
@@ -4,7 +4,6 @@
|
||||
* This demo shows how to use these features in a search entry.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -86,6 +85,9 @@ static void
|
||||
search_by_name (GtkWidget *item,
|
||||
GtkEntry *entry)
|
||||
{
|
||||
gtk_entry_set_icon_from_stock (entry,
|
||||
GTK_ENTRY_ICON_PRIMARY,
|
||||
GTK_STOCK_FIND);
|
||||
gtk_entry_set_icon_tooltip_text (entry,
|
||||
GTK_ENTRY_ICON_PRIMARY,
|
||||
"Search by name\n"
|
||||
@@ -97,7 +99,9 @@ static void
|
||||
search_by_description (GtkWidget *item,
|
||||
GtkEntry *entry)
|
||||
{
|
||||
|
||||
gtk_entry_set_icon_from_stock (entry,
|
||||
GTK_ENTRY_ICON_PRIMARY,
|
||||
GTK_STOCK_EDIT);
|
||||
gtk_entry_set_icon_tooltip_text (entry,
|
||||
GTK_ENTRY_ICON_PRIMARY,
|
||||
"Search by description\n"
|
||||
@@ -109,6 +113,9 @@ static void
|
||||
search_by_file (GtkWidget *item,
|
||||
GtkEntry *entry)
|
||||
{
|
||||
gtk_entry_set_icon_from_stock (entry,
|
||||
GTK_ENTRY_ICON_PRIMARY,
|
||||
GTK_STOCK_OPEN);
|
||||
gtk_entry_set_icon_tooltip_text (entry,
|
||||
GTK_ENTRY_ICON_PRIMARY,
|
||||
"Search by file name\n"
|
||||
@@ -121,20 +128,30 @@ create_search_menu (GtkWidget *entry)
|
||||
{
|
||||
GtkWidget *menu;
|
||||
GtkWidget *item;
|
||||
GtkWidget *image;
|
||||
|
||||
menu = gtk_menu_new ();
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic ("Search by _name");
|
||||
item = gtk_image_menu_item_new_with_mnemonic ("Search by _name");
|
||||
image = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
|
||||
gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
|
||||
g_signal_connect (item, "activate",
|
||||
G_CALLBACK (search_by_name), entry);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic ("Search by _description");
|
||||
item = gtk_image_menu_item_new_with_mnemonic ("Search by _description");
|
||||
image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
|
||||
gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
|
||||
g_signal_connect (item, "activate",
|
||||
G_CALLBACK (search_by_description), entry);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic ("Search by _file name");
|
||||
item = gtk_image_menu_item_new_with_mnemonic ("Search by _file name");
|
||||
image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
|
||||
gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
|
||||
g_signal_connect (item, "activate",
|
||||
G_CALLBACK (search_by_file), entry);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
@@ -224,7 +241,7 @@ do_search_entry (GtkWidget *do_widget)
|
||||
window = gtk_dialog_new_with_buttons ("Search Entry",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"),
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
/* Entry/Delayed Search Entry
|
||||
*
|
||||
* GtkSearchEntry sets up GtkEntries ready for search. Search entries
|
||||
* have their "changed" signal delayed and should be used
|
||||
* when the searched operation is slow such as loads of entries
|
||||
* to search, or online searches.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
static void
|
||||
search_entry_destroyed (GtkWidget *widget)
|
||||
{
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
search_changed_cb (GtkSearchEntry *entry,
|
||||
GtkLabel *result_label)
|
||||
{
|
||||
const char *text;
|
||||
text = gtk_entry_get_text (GTK_ENTRY (entry));
|
||||
g_message ("search changed: %s", text);
|
||||
gtk_label_set_text (result_label, text ? text : "");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
window_key_press_event_cb (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
GtkSearchBar *bar)
|
||||
{
|
||||
return gtk_search_bar_handle_event (bar, event);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_search_entry2 (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *entry;
|
||||
GtkWidget *container;
|
||||
GtkWidget *searchbar;
|
||||
GtkWidget *button;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Search Entry #2");
|
||||
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
|
||||
gtk_widget_set_size_request (window, 200, -1);
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (search_entry_destroyed), &window);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 0);
|
||||
|
||||
entry = gtk_search_entry_new ();
|
||||
container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
|
||||
gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (container), entry, FALSE, FALSE, 0);
|
||||
searchbar = gtk_search_bar_new ();
|
||||
gtk_search_bar_connect_entry (GTK_SEARCH_BAR (searchbar), GTK_ENTRY (entry));
|
||||
gtk_search_bar_set_show_close_button (GTK_SEARCH_BAR (searchbar), FALSE);
|
||||
gtk_container_add (GTK_CONTAINER (searchbar), container);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), searchbar, FALSE, FALSE, 0);
|
||||
|
||||
/* Hook the search bar to key presses */
|
||||
g_signal_connect (window, "key-press-event",
|
||||
G_CALLBACK (window_key_press_event_cb), searchbar);
|
||||
|
||||
/* Help */
|
||||
label = gtk_label_new ("Start Typing to search");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
|
||||
|
||||
/* Toggle button */
|
||||
button = gtk_toggle_button_new_with_label ("Search");
|
||||
g_object_bind_property (button, "active",
|
||||
searchbar, "search-mode-enabled",
|
||||
G_BINDING_BIDIRECTIONAL);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
|
||||
|
||||
/* Result */
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 0);
|
||||
|
||||
label = gtk_label_new ("Result:");
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new ("");
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
||||
|
||||
g_signal_connect (entry, "changed",
|
||||
G_CALLBACK (search_changed_cb), label);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show_all (window);
|
||||
else
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -13,7 +13,6 @@
|
||||
* into a table, you would not include the GTK_FILL flag.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -103,7 +102,7 @@ do_sizegroup (GtkWidget *do_widget)
|
||||
window = gtk_dialog_new_with_buttons ("GtkSizeGroup",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"),
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
@@ -39,7 +38,7 @@ do_spinner (GtkWidget *do_widget)
|
||||
window = gtk_dialog_new_with_buttons ("GtkSpinner",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
_("_Close"),
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
@@ -72,12 +71,12 @@ do_spinner (GtkWidget *do_widget)
|
||||
spinner_unsensitive = spinner;
|
||||
gtk_widget_set_sensitive (hbox, FALSE);
|
||||
|
||||
button = gtk_button_new_with_label (_("Play"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
|
||||
g_signal_connect (G_OBJECT (button), "clicked",
|
||||
G_CALLBACK (on_play_clicked), spinner);
|
||||
gtk_container_add (GTK_CONTAINER (vbox), button);
|
||||
|
||||
button = gtk_button_new_with_label (_("Stop"));
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_STOP);
|
||||
g_signal_connect (G_OBJECT (button), "clicked",
|
||||
G_CALLBACK (on_stop_clicked), spinner);
|
||||
gtk_container_add (GTK_CONTAINER (vbox), button);
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/* Stack
|
||||
*
|
||||
* GtkStack is a container that shows a single child at a time,
|
||||
* with nice transitions when the visible child changes.
|
||||
*
|
||||
* GtkStackSwitcher adds buttons to control which child is visible.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkBuilder *builder;
|
||||
|
||||
GtkWidget *
|
||||
do_stack (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
GError *err = NULL;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
builder = gtk_builder_new ();
|
||||
gtk_builder_add_from_resource (builder, "/stack/stack.ui", &err);
|
||||
if (err)
|
||||
{
|
||||
g_error ("ERROR: %s\n", err->message);
|
||||
return NULL;
|
||||
}
|
||||
gtk_builder_connect_signals (builder, NULL);
|
||||
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
{
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.6 -->
|
||||
<object class="GtkWindow" id="window1">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title" translatable="yes">GtkStack</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="grid1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkStackSwitcher" id="switcher">
|
||||
<property name="visible">True</property>
|
||||
<property name="stack">stack</property>
|
||||
<property name="halign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStack" id="stack">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="transition-type">crossfade</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin-top">20</property>
|
||||
<property name="margin-bottom">20</property>
|
||||
<property name="resource">/application/gtk-logo-48.png</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page1</property>
|
||||
<property name="title" translatable="yes">Page 1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="checkbutton1">
|
||||
<property name="label" translatable="yes">Page 2</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page2</property>
|
||||
<property name="title" translatable="yes">Page 2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinner" id="spinner1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page3</property>
|
||||
<property name="icon-name">face-laugh-symbolic</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
||||
@@ -0,0 +1,535 @@
|
||||
/* Stock Item and Icon Browser
|
||||
*
|
||||
* This source code for this demo doesn't demonstrate anything
|
||||
* particularly useful in applications. The purpose of the "demo" is
|
||||
* just to provide a handy place to browse the available stock icons
|
||||
* and stock items.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
typedef struct _StockItemInfo StockItemInfo;
|
||||
struct _StockItemInfo
|
||||
{
|
||||
gchar *id;
|
||||
GtkStockItem item;
|
||||
GdkPixbuf *small_icon;
|
||||
gchar *macro;
|
||||
gchar *accel_str;
|
||||
};
|
||||
|
||||
/* Make StockItemInfo a boxed type so we can automatically
|
||||
* manage memory
|
||||
*/
|
||||
#define STOCK_ITEM_INFO_TYPE stock_item_info_get_type ()
|
||||
|
||||
static void
|
||||
stock_item_info_free (StockItemInfo *info)
|
||||
{
|
||||
g_free (info->id);
|
||||
g_free (info->macro);
|
||||
g_free (info->accel_str);
|
||||
if (info->small_icon)
|
||||
g_object_unref (info->small_icon);
|
||||
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
static StockItemInfo*
|
||||
stock_item_info_copy (StockItemInfo *src)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
info = g_new (StockItemInfo, 1);
|
||||
info->id = g_strdup (src->id);
|
||||
info->macro = g_strdup (src->macro);
|
||||
info->accel_str = g_strdup (src->accel_str);
|
||||
|
||||
info->item = src->item;
|
||||
|
||||
info->small_icon = src->small_icon;
|
||||
if (info->small_icon)
|
||||
g_object_ref (info->small_icon);
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
static
|
||||
G_DEFINE_BOXED_TYPE (StockItemInfo, stock_item_info,
|
||||
stock_item_info_copy,
|
||||
stock_item_info_free)
|
||||
|
||||
typedef struct _StockItemDisplay StockItemDisplay;
|
||||
struct _StockItemDisplay
|
||||
{
|
||||
GtkWidget *type_label;
|
||||
GtkWidget *macro_label;
|
||||
GtkWidget *id_label;
|
||||
GtkWidget *label_accel_label;
|
||||
GtkWidget *icon_image;
|
||||
};
|
||||
|
||||
static gchar*
|
||||
id_to_macro (const gchar *id)
|
||||
{
|
||||
GString *macro = NULL;
|
||||
const gchar *cp;
|
||||
|
||||
/* gtk-foo-bar -> GTK_STOCK_FOO_BAR */
|
||||
|
||||
macro = g_string_new (NULL);
|
||||
|
||||
cp = id;
|
||||
|
||||
if (strncmp (cp, "gtk-", 4) == 0)
|
||||
{
|
||||
g_string_append (macro, "GTK_STOCK_");
|
||||
cp += 4;
|
||||
}
|
||||
|
||||
while (*cp)
|
||||
{
|
||||
if (*cp == '-')
|
||||
g_string_append_c (macro, '_');
|
||||
else if (g_ascii_islower (*cp))
|
||||
g_string_append_c (macro, g_ascii_toupper (*cp));
|
||||
else
|
||||
g_string_append_c (macro, *cp);
|
||||
|
||||
cp++;
|
||||
}
|
||||
|
||||
return g_string_free (macro, FALSE);
|
||||
}
|
||||
|
||||
static GtkTreeModel*
|
||||
create_model (void)
|
||||
{
|
||||
GtkListStore *store;
|
||||
GSList *ids;
|
||||
GSList *tmp_list;
|
||||
|
||||
store = gtk_list_store_new (2, STOCK_ITEM_INFO_TYPE, G_TYPE_STRING);
|
||||
|
||||
ids = gtk_stock_list_ids ();
|
||||
ids = g_slist_sort (ids, (GCompareFunc) strcmp);
|
||||
tmp_list = ids;
|
||||
while (tmp_list != NULL)
|
||||
{
|
||||
StockItemInfo info;
|
||||
GtkStockItem item;
|
||||
GtkTreeIter iter;
|
||||
GtkIconSet *icon_set;
|
||||
|
||||
info.id = tmp_list->data;
|
||||
|
||||
if (gtk_stock_lookup (info.id, &item))
|
||||
{
|
||||
info.item = item;
|
||||
}
|
||||
else
|
||||
{
|
||||
info.item.label = NULL;
|
||||
info.item.stock_id = NULL;
|
||||
info.item.modifier = 0;
|
||||
info.item.keyval = 0;
|
||||
info.item.translation_domain = NULL;
|
||||
}
|
||||
|
||||
/* only show icons for stock IDs that have default icons */
|
||||
icon_set = gtk_icon_factory_lookup_default (info.id);
|
||||
if (icon_set)
|
||||
{
|
||||
GtkIconSize *sizes = NULL;
|
||||
gint n_sizes = 0;
|
||||
gint i;
|
||||
GtkIconSize size;
|
||||
|
||||
/* See what sizes this stock icon really exists at */
|
||||
gtk_icon_set_get_sizes (icon_set, &sizes, &n_sizes);
|
||||
|
||||
/* Use menu size if it exists, otherwise first size found */
|
||||
size = sizes[0];
|
||||
i = 0;
|
||||
while (i < n_sizes)
|
||||
{
|
||||
if (sizes[i] == GTK_ICON_SIZE_MENU)
|
||||
{
|
||||
size = GTK_ICON_SIZE_MENU;
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
g_free (sizes);
|
||||
|
||||
info.small_icon = gtk_widget_render_icon_pixbuf (window,
|
||||
info.id,
|
||||
size);
|
||||
|
||||
if (size != GTK_ICON_SIZE_MENU)
|
||||
{
|
||||
/* Make the result the proper size for our thumbnail */
|
||||
gint w, h;
|
||||
GdkPixbuf *scaled;
|
||||
|
||||
gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
|
||||
|
||||
scaled = gdk_pixbuf_scale_simple (info.small_icon,
|
||||
w, h,
|
||||
GDK_INTERP_BILINEAR);
|
||||
|
||||
g_object_unref (info.small_icon);
|
||||
info.small_icon = scaled;
|
||||
}
|
||||
}
|
||||
else
|
||||
info.small_icon = NULL;
|
||||
|
||||
if (info.item.keyval != 0)
|
||||
{
|
||||
info.accel_str = gtk_accelerator_name (info.item.keyval,
|
||||
info.item.modifier);
|
||||
}
|
||||
else
|
||||
{
|
||||
info.accel_str = g_strdup ("");
|
||||
}
|
||||
|
||||
info.macro = id_to_macro (info.id);
|
||||
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, &info, 1, info.id, -1);
|
||||
|
||||
g_free (info.macro);
|
||||
g_free (info.accel_str);
|
||||
if (info.small_icon)
|
||||
g_object_unref (info.small_icon);
|
||||
|
||||
tmp_list = g_slist_next (tmp_list);
|
||||
}
|
||||
|
||||
g_slist_foreach (ids, (GFunc)g_free, NULL);
|
||||
g_slist_free (ids);
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
/* Finds the largest size at which the given image stock id is
|
||||
* available. This would not be useful for a normal application
|
||||
*/
|
||||
static GtkIconSize
|
||||
get_largest_size (const char *id)
|
||||
{
|
||||
GtkIconSet *set = gtk_icon_factory_lookup_default (id);
|
||||
GtkIconSize *sizes;
|
||||
gint n_sizes, i;
|
||||
GtkIconSize best_size = GTK_ICON_SIZE_INVALID;
|
||||
gint best_pixels = 0;
|
||||
|
||||
gtk_icon_set_get_sizes (set, &sizes, &n_sizes);
|
||||
|
||||
for (i = 0; i < n_sizes; i++)
|
||||
{
|
||||
gint width, height;
|
||||
|
||||
gtk_icon_size_lookup (sizes[i], &width, &height);
|
||||
|
||||
if (width * height > best_pixels)
|
||||
{
|
||||
best_size = sizes[i];
|
||||
best_pixels = width * height;
|
||||
}
|
||||
}
|
||||
|
||||
g_free (sizes);
|
||||
|
||||
return best_size;
|
||||
}
|
||||
|
||||
static void
|
||||
selection_changed (GtkTreeSelection *selection)
|
||||
{
|
||||
GtkTreeView *treeview;
|
||||
StockItemDisplay *display;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
|
||||
treeview = gtk_tree_selection_get_tree_view (selection);
|
||||
display = g_object_get_data (G_OBJECT (treeview), "stock-display");
|
||||
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
StockItemInfo *info;
|
||||
gchar *str;
|
||||
|
||||
gtk_tree_model_get (model, &iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
if (info->small_icon && info->item.label)
|
||||
gtk_label_set_text (GTK_LABEL (display->type_label), "Icon and Item");
|
||||
else if (info->small_icon)
|
||||
gtk_label_set_text (GTK_LABEL (display->type_label), "Icon Only");
|
||||
else if (info->item.label)
|
||||
gtk_label_set_text (GTK_LABEL (display->type_label), "Item Only");
|
||||
else
|
||||
gtk_label_set_text (GTK_LABEL (display->type_label), "???????");
|
||||
|
||||
gtk_label_set_text (GTK_LABEL (display->macro_label), info->macro);
|
||||
gtk_label_set_text (GTK_LABEL (display->id_label), info->id);
|
||||
|
||||
if (info->item.label)
|
||||
{
|
||||
str = g_strdup_printf ("%s %s", info->item.label, info->accel_str);
|
||||
gtk_label_set_text_with_mnemonic (GTK_LABEL (display->label_accel_label), str);
|
||||
g_free (str);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (display->label_accel_label), "");
|
||||
}
|
||||
|
||||
if (info->small_icon)
|
||||
gtk_image_set_from_stock (GTK_IMAGE (display->icon_image), info->id,
|
||||
get_largest_size (info->id));
|
||||
else
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (display->icon_image), NULL);
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (display->type_label), "No selected item");
|
||||
gtk_label_set_text (GTK_LABEL (display->macro_label), "");
|
||||
gtk_label_set_text (GTK_LABEL (display->id_label), "");
|
||||
gtk_label_set_text (GTK_LABEL (display->label_accel_label), "");
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (display->icon_image), NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
macro_set_func_text (GtkTreeViewColumn *tree_column,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->macro,
|
||||
NULL);
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
static void
|
||||
id_set_func (GtkTreeViewColumn *tree_column,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->id,
|
||||
NULL);
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
static void
|
||||
accel_set_func (GtkTreeViewColumn *tree_column,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->accel_str,
|
||||
NULL);
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
static void
|
||||
label_set_func (GtkTreeViewColumn *tree_column,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->item.label,
|
||||
NULL);
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_stock_browser (GtkWidget *do_widget)
|
||||
{
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *sw;
|
||||
GtkWidget *treeview;
|
||||
GtkTreeModel *model;
|
||||
GtkCellRenderer *cell_renderer;
|
||||
StockItemDisplay *display;
|
||||
GtkTreeSelection *selection;
|
||||
GtkTreeViewColumn *column;
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Stock Icons and Items");
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), -1, 500);
|
||||
|
||||
g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
|
||||
gtk_container_add (GTK_CONTAINER (window), hbox);
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_NEVER,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
|
||||
|
||||
model = create_model ();
|
||||
|
||||
treeview = gtk_tree_view_new_with_model (model);
|
||||
|
||||
g_object_unref (model);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (sw), treeview);
|
||||
|
||||
column = gtk_tree_view_column_new ();
|
||||
gtk_tree_view_column_set_title (column, "Macro");
|
||||
|
||||
cell_renderer = gtk_cell_renderer_pixbuf_new ();
|
||||
gtk_tree_view_column_pack_start (column,
|
||||
cell_renderer,
|
||||
FALSE);
|
||||
gtk_tree_view_column_set_attributes (column, cell_renderer,
|
||||
"stock_id", 1, NULL);
|
||||
cell_renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_tree_view_column_pack_start (column,
|
||||
cell_renderer,
|
||||
TRUE);
|
||||
gtk_tree_view_column_set_cell_data_func (column, cell_renderer,
|
||||
macro_set_func_text, NULL, NULL);
|
||||
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview),
|
||||
column);
|
||||
|
||||
cell_renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview),
|
||||
-1,
|
||||
"Label",
|
||||
cell_renderer,
|
||||
label_set_func,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
cell_renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview),
|
||||
-1,
|
||||
"Accel",
|
||||
cell_renderer,
|
||||
accel_set_func,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
cell_renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview),
|
||||
-1,
|
||||
"ID",
|
||||
cell_renderer,
|
||||
id_set_func,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
frame = gtk_frame_new ("Selected Item");
|
||||
gtk_widget_set_valign (frame, GTK_ALIGN_START);
|
||||
gtk_box_pack_end (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
|
||||
display = g_new (StockItemDisplay, 1);
|
||||
g_object_set_data_full (G_OBJECT (treeview),
|
||||
"stock-display",
|
||||
display,
|
||||
g_free); /* free display with treeview */
|
||||
|
||||
display->type_label = gtk_label_new (NULL);
|
||||
display->macro_label = gtk_label_new (NULL);
|
||||
display->id_label = gtk_label_new (NULL);
|
||||
display->label_accel_label = gtk_label_new (NULL);
|
||||
display->icon_image = gtk_image_new_from_pixbuf (NULL); /* empty image */
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->type_label,
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->icon_image,
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->label_accel_label,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->macro_label,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->id_label,
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
|
||||
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
|
||||
|
||||
g_signal_connect (selection,
|
||||
"changed",
|
||||
G_CALLBACK (selection_changed),
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
{
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -85,7 +85,7 @@ scroll_to_bottom (GtkTextView *textview)
|
||||
gtk_text_iter_set_line_offset (&iter, 0);
|
||||
|
||||
/* and place the mark at iter. the mark will stay there after we
|
||||
* insert some text at the end because it has left gravity.
|
||||
* insert some text at the end because it has right gravity.
|
||||
*/
|
||||
mark = gtk_text_buffer_get_mark (buffer, "scroll");
|
||||
gtk_text_buffer_move_mark (buffer, mark, &iter);
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include "config.h"
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
static void load_icon_items (GtkToolPalette *palette);
|
||||
static void load_stock_items (GtkToolPalette *palette);
|
||||
static void load_toggle_items (GtkToolPalette *palette);
|
||||
static void load_special_items (GtkToolPalette *palette);
|
||||
|
||||
@@ -35,19 +36,11 @@ canvas_item_new (GtkWidget *widget,
|
||||
gdouble y)
|
||||
{
|
||||
CanvasItem *item = NULL;
|
||||
const gchar *icon_name;
|
||||
const gchar *stock_id;
|
||||
GdkPixbuf *pixbuf;
|
||||
GtkIconTheme *icon_theme;
|
||||
int width;
|
||||
|
||||
icon_name = gtk_tool_button_get_icon_name (button);
|
||||
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
|
||||
gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, &width, NULL);
|
||||
pixbuf = gtk_icon_theme_load_icon (icon_theme,
|
||||
icon_name,
|
||||
width,
|
||||
GTK_ICON_LOOKUP_GENERIC_FALLBACK,
|
||||
NULL);
|
||||
stock_id = gtk_tool_button_get_stock_id (button);
|
||||
pixbuf = gtk_widget_render_icon_pixbuf (widget, stock_id, GTK_ICON_SIZE_DIALOG);
|
||||
|
||||
if (pixbuf)
|
||||
{
|
||||
@@ -519,7 +512,7 @@ do_toolpalette (GtkWidget *do_widget)
|
||||
/* Add and fill the ToolPalette: */
|
||||
palette = gtk_tool_palette_new ();
|
||||
|
||||
load_icon_items (GTK_TOOL_PALETTE (palette));
|
||||
load_stock_items (GTK_TOOL_PALETTE (palette));
|
||||
load_toggle_items (GTK_TOOL_PALETTE (palette));
|
||||
load_special_items (GTK_TOOL_PALETTE (palette));
|
||||
|
||||
@@ -634,45 +627,62 @@ do_toolpalette (GtkWidget *do_widget)
|
||||
|
||||
|
||||
static void
|
||||
load_icon_items (GtkToolPalette *palette)
|
||||
load_stock_items (GtkToolPalette *palette)
|
||||
{
|
||||
GList *contexts;
|
||||
GList *l;
|
||||
GtkIconTheme *icon_theme;
|
||||
GtkWidget *group_af = gtk_tool_item_group_new ("Stock Icons (A-F)");
|
||||
GtkWidget *group_gn = gtk_tool_item_group_new ("Stock Icons (G-N)");
|
||||
GtkWidget *group_or = gtk_tool_item_group_new ("Stock Icons (O-R)");
|
||||
GtkWidget *group_sz = gtk_tool_item_group_new ("Stock Icons (S-Z)");
|
||||
GtkWidget *group = NULL;
|
||||
|
||||
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (palette)));
|
||||
GtkToolItem *item;
|
||||
GSList *stock_ids;
|
||||
GSList *iter;
|
||||
|
||||
contexts = gtk_icon_theme_list_contexts (icon_theme);
|
||||
for (l = contexts; l; l = g_list_next (l))
|
||||
stock_ids = gtk_stock_list_ids ();
|
||||
stock_ids = g_slist_sort (stock_ids, (GCompareFunc) strcmp);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (palette), group_af);
|
||||
gtk_container_add (GTK_CONTAINER (palette), group_gn);
|
||||
gtk_container_add (GTK_CONTAINER (palette), group_or);
|
||||
gtk_container_add (GTK_CONTAINER (palette), group_sz);
|
||||
|
||||
for (iter = stock_ids; iter; iter = g_slist_next (iter))
|
||||
{
|
||||
gchar *context = l->data;
|
||||
GList *icon_names;
|
||||
GList *ll;
|
||||
GtkStockItem stock_item;
|
||||
gchar *id = iter->data;
|
||||
|
||||
GtkWidget *group = gtk_tool_item_group_new (context);
|
||||
gtk_container_add (GTK_CONTAINER (palette), group);
|
||||
|
||||
g_message ("Got context '%s'", context);
|
||||
icon_names = gtk_icon_theme_list_icons (icon_theme, context);
|
||||
icon_names = g_list_sort (icon_names, (GCompareFunc) strcmp);
|
||||
|
||||
for (ll = icon_names; ll; ll = g_list_next (ll))
|
||||
switch (id[4])
|
||||
{
|
||||
GtkToolItem *item;
|
||||
gchar *id = ll->data;
|
||||
case 'a':
|
||||
group = group_af;
|
||||
break;
|
||||
|
||||
g_message ("Got id '%s'", id);
|
||||
case 'g':
|
||||
group = group_gn;
|
||||
break;
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), id);
|
||||
gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item), id);
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
case 'o':
|
||||
group = group_or;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
group = group_sz;
|
||||
break;
|
||||
}
|
||||
|
||||
g_list_free_full (icon_names, g_free);
|
||||
item = gtk_tool_button_new_from_stock (id);
|
||||
gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item), id);
|
||||
gtk_tool_item_set_is_important (GTK_TOOL_ITEM (item), TRUE);
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
|
||||
if (!gtk_stock_lookup (id, &stock_item) || !stock_item.label)
|
||||
gtk_tool_button_set_label (GTK_TOOL_BUTTON (item), id);
|
||||
|
||||
g_free (id);
|
||||
}
|
||||
|
||||
g_list_free_full (contexts, g_free);
|
||||
g_slist_free (stock_ids);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -752,26 +762,22 @@ load_special_items (GtkToolPalette *palette)
|
||||
"homogeneous", FALSE, "expand", TRUE,
|
||||
"new-row", TRUE, NULL);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "go-up");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);
|
||||
gtk_tool_item_set_tooltip_text (item, "Show on vertical palettes only");
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
gtk_tool_item_set_visible_horizontal (item, FALSE);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "go-next");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
|
||||
gtk_tool_item_set_tooltip_text (item, "Show on horizontal palettes only");
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
gtk_tool_item_set_visible_vertical (item, FALSE);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "edit-delete");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_DELETE);
|
||||
gtk_tool_item_set_tooltip_text (item, "Do not show at all");
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
gtk_widget_set_no_show_all (GTK_WIDGET (item), TRUE);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "view-fullscreen");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);
|
||||
gtk_tool_item_set_tooltip_text (item, "Expanded this item");
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
gtk_container_child_set (GTK_CONTAINER (group), GTK_WIDGET (item),
|
||||
@@ -779,8 +785,7 @@ load_special_items (GtkToolPalette *palette)
|
||||
"expand", TRUE,
|
||||
NULL);
|
||||
|
||||
item = gtk_tool_button_new (NULL, NULL);
|
||||
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "help-browser");
|
||||
item = gtk_tool_button_new_from_stock (GTK_STOCK_HELP);
|
||||
gtk_tool_item_set_tooltip_text (item, "A regular item");
|
||||
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
/* UI Manager
|
||||
*
|
||||
* The GtkUIManager object allows the easy creation of menus
|
||||
* from an array of actions and a description of the menu hierarchy.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static void
|
||||
activate_action (GtkAction *action)
|
||||
{
|
||||
g_message ("Action \"%s\" activated", gtk_action_get_name (action));
|
||||
}
|
||||
|
||||
static void
|
||||
activate_radio_action (GtkAction *action, GtkRadioAction *current)
|
||||
{
|
||||
g_message ("Radio action \"%s\" selected",
|
||||
gtk_action_get_name (GTK_ACTION (current)));
|
||||
}
|
||||
|
||||
static GtkActionEntry entries[] = {
|
||||
{ "FileMenu", NULL, "_File" }, /* name, stock id, label */
|
||||
{ "PreferencesMenu", NULL, "_Preferences" }, /* name, stock id, label */
|
||||
{ "ColorMenu", NULL, "_Color" }, /* name, stock id, label */
|
||||
{ "ShapeMenu", NULL, "_Shape" }, /* name, stock id, label */
|
||||
{ "HelpMenu", NULL, "_Help" }, /* name, stock id, label */
|
||||
{ "New", GTK_STOCK_NEW, /* name, stock id */
|
||||
"_New", "<control>N", /* label, accelerator */
|
||||
"Create a new file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Open", GTK_STOCK_OPEN, /* name, stock id */
|
||||
"_Open","<control>O", /* label, accelerator */
|
||||
"Open a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Save", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"_Save","<control>S", /* label, accelerator */
|
||||
"Save current file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "SaveAs", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"Save _As...", NULL, /* label, accelerator */
|
||||
"Save to a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Quit", GTK_STOCK_QUIT, /* name, stock id */
|
||||
"_Quit", "<control>Q", /* label, accelerator */
|
||||
"Quit", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "About", NULL, /* name, stock id */
|
||||
"_About", "<control>A", /* label, accelerator */
|
||||
"About", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Logo", "demo-gtk-logo", /* name, stock id */
|
||||
NULL, NULL, /* label, accelerator */
|
||||
"GTK+", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
};
|
||||
static guint n_entries = G_N_ELEMENTS (entries);
|
||||
|
||||
|
||||
static GtkToggleActionEntry toggle_entries[] = {
|
||||
{ "Bold", GTK_STOCK_BOLD, /* name, stock id */
|
||||
"_Bold", "<control>B", /* label, accelerator */
|
||||
"Bold", /* tooltip */
|
||||
G_CALLBACK (activate_action),
|
||||
TRUE }, /* is_active */
|
||||
};
|
||||
static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
|
||||
|
||||
enum {
|
||||
COLOR_RED,
|
||||
COLOR_GREEN,
|
||||
COLOR_BLUE
|
||||
};
|
||||
|
||||
static GtkRadioActionEntry color_entries[] = {
|
||||
{ "Red", NULL, /* name, stock id */
|
||||
"_Red", "<control>R", /* label, accelerator */
|
||||
"Blood", COLOR_RED }, /* tooltip, value */
|
||||
{ "Green", NULL, /* name, stock id */
|
||||
"_Green", "<control>G", /* label, accelerator */
|
||||
"Grass", COLOR_GREEN }, /* tooltip, value */
|
||||
{ "Blue", NULL, /* name, stock id */
|
||||
"_Blue", "<control>B", /* label, accelerator */
|
||||
"Sky", COLOR_BLUE }, /* tooltip, value */
|
||||
};
|
||||
static guint n_color_entries = G_N_ELEMENTS (color_entries);
|
||||
|
||||
enum {
|
||||
SHAPE_SQUARE,
|
||||
SHAPE_RECTANGLE,
|
||||
SHAPE_OVAL
|
||||
};
|
||||
|
||||
static GtkRadioActionEntry shape_entries[] = {
|
||||
{ "Square", NULL, /* name, stock id */
|
||||
"_Square", "<control>S", /* label, accelerator */
|
||||
"Square", SHAPE_SQUARE }, /* tooltip, value */
|
||||
{ "Rectangle", NULL, /* name, stock id */
|
||||
"_Rectangle", "<control>R", /* label, accelerator */
|
||||
"Rectangle", SHAPE_RECTANGLE }, /* tooltip, value */
|
||||
{ "Oval", NULL, /* name, stock id */
|
||||
"_Oval", "<control>O", /* label, accelerator */
|
||||
"Egg", SHAPE_OVAL }, /* tooltip, value */
|
||||
};
|
||||
static guint n_shape_entries = G_N_ELEMENTS (shape_entries);
|
||||
|
||||
static const gchar *ui_info =
|
||||
"<ui>"
|
||||
" <menubar name='MenuBar'>"
|
||||
" <menu action='FileMenu'>"
|
||||
" <menuitem action='New'/>"
|
||||
" <menuitem action='Open'/>"
|
||||
" <menuitem action='Save'/>"
|
||||
" <menuitem action='SaveAs'/>"
|
||||
" <separator/>"
|
||||
" <menuitem action='Quit'/>"
|
||||
" </menu>"
|
||||
" <menu action='PreferencesMenu'>"
|
||||
" <menu action='ColorMenu'>"
|
||||
" <menuitem action='Red'/>"
|
||||
" <menuitem action='Green'/>"
|
||||
" <menuitem action='Blue'/>"
|
||||
" </menu>"
|
||||
" <menu action='ShapeMenu'>"
|
||||
" <menuitem action='Square'/>"
|
||||
" <menuitem action='Rectangle'/>"
|
||||
" <menuitem action='Oval'/>"
|
||||
" </menu>"
|
||||
" <menuitem action='Bold'/>"
|
||||
" </menu>"
|
||||
" <menu action='HelpMenu'>"
|
||||
" <menuitem action='About'/>"
|
||||
" </menu>"
|
||||
" </menubar>"
|
||||
" <toolbar name='ToolBar'>"
|
||||
" <toolitem action='Open'/>"
|
||||
" <toolitem action='Quit'/>"
|
||||
" <separator action='Sep1'/>"
|
||||
" <toolitem action='Logo'/>"
|
||||
" </toolbar>"
|
||||
"</ui>";
|
||||
|
||||
GtkWidget *
|
||||
do_ui_manager (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *box1;
|
||||
GtkWidget *box2;
|
||||
GtkWidget *separator;
|
||||
GtkWidget *label;
|
||||
GtkWidget *button;
|
||||
GtkUIManager *ui;
|
||||
GtkActionGroup *actions;
|
||||
GError *error = NULL;
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
g_signal_connect (window, "delete-event",
|
||||
G_CALLBACK (gtk_true), NULL);
|
||||
|
||||
actions = gtk_action_group_new ("Actions");
|
||||
gtk_action_group_add_actions (actions, entries, n_entries, NULL);
|
||||
gtk_action_group_add_toggle_actions (actions,
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_OVAL,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
|
||||
ui = gtk_ui_manager_new ();
|
||||
gtk_ui_manager_insert_action_group (ui, actions, 0);
|
||||
g_object_unref (actions);
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_ui_manager_get_accel_group (ui));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "UI Manager");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
||||
|
||||
if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &error))
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
box1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), box1);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (box1),
|
||||
gtk_ui_manager_get_widget (ui, "/MenuBar"),
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
label = gtk_label_new ("Type\n<alt>\nto start");
|
||||
gtk_widget_set_size_request (label, 200, 200);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (box1), label, TRUE, TRUE, 0);
|
||||
|
||||
separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
|
||||
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
|
||||
|
||||
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
|
||||
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
|
||||
|
||||
button = gtk_button_new_with_label ("close");
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK (gtk_widget_destroy), window);
|
||||
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
||||
gtk_widget_set_can_default (button, TRUE);
|
||||
gtk_widget_grab_default (button);
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
g_object_unref (ui);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -78,35 +78,6 @@ on_page_toggled (GtkToggleButton *button,
|
||||
gtk_notebook_set_current_page (pages, page);
|
||||
}
|
||||
|
||||
static void
|
||||
spin_value_changed (GtkAdjustment *adjustment, GtkWidget *label)
|
||||
{
|
||||
GtkWidget *w;
|
||||
gint v;
|
||||
gchar *text;
|
||||
|
||||
v = (int)gtk_adjustment_get_value (adjustment);
|
||||
|
||||
if ((v % 3) == 0)
|
||||
{
|
||||
text = g_strdup_printf ("%d is a multiple of 3", v);
|
||||
gtk_label_set_label (GTK_LABEL (label), text);
|
||||
g_free (text);
|
||||
}
|
||||
|
||||
w = gtk_widget_get_ancestor (label, GTK_TYPE_REVEALER);
|
||||
gtk_revealer_set_reveal_child (GTK_REVEALER (w), (v % 3) == 0);
|
||||
}
|
||||
|
||||
static void
|
||||
dismiss (GtkWidget *button)
|
||||
{
|
||||
GtkWidget *w;
|
||||
|
||||
w = gtk_widget_get_ancestor (button, GTK_TYPE_REVEALER);
|
||||
gtk_revealer_set_reveal_child (GTK_REVEALER (w), FALSE);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@@ -115,7 +86,6 @@ main (int argc, char *argv[])
|
||||
GtkWidget *widget;
|
||||
GtkWidget *notebook;
|
||||
gboolean dark = FALSE;
|
||||
GtkAdjustment *adj;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
@@ -144,14 +114,6 @@ main (int argc, char *argv[])
|
||||
widget = (GtkWidget*) gtk_builder_get_object (builder, "aboutmenuitem");
|
||||
g_signal_connect (widget, "activate", G_CALLBACK (show_about), window);
|
||||
|
||||
widget = (GtkWidget*) gtk_builder_get_object (builder, "page2dismiss");
|
||||
g_signal_connect (widget, "clicked", G_CALLBACK (dismiss), NULL);
|
||||
|
||||
widget = (GtkWidget*) gtk_builder_get_object (builder, "page2note");
|
||||
adj = (GtkAdjustment *) gtk_builder_get_object (builder, "adjustment2");
|
||||
g_signal_connect (adj, "value-changed",
|
||||
G_CALLBACK (spin_value_changed), widget);
|
||||
|
||||
g_object_unref (G_OBJECT (builder));
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
@@ -54,23 +54,6 @@ Vestibulum in tortor diam, quis aliquet quam. Praesent ut justo neque, tempus ru
|
||||
Duis eu lectus quam. Vivamus eget metus a mauris molestie venenatis pulvinar eleifend nisi.
|
||||
Nulla facilisi. Pellentesque at dolor sit amet purus dapibus pulvinar molestie quis neque.
|
||||
Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
</object>
|
||||
<object class="GtkTextBuffer" id="textbuffer2">
|
||||
<property name="text">* Translation updates:
|
||||
Aragonese
|
||||
Assamese
|
||||
Basque
|
||||
Brazilian Portuguese
|
||||
Dutch
|
||||
German
|
||||
Hebrew
|
||||
Hungarian
|
||||
Polish
|
||||
Portuguese
|
||||
Serbian
|
||||
Slovenian
|
||||
Spanish
|
||||
Uyghur</property>
|
||||
</object>
|
||||
<object class="GtkAccelGroup" id="accelgroup1"/>
|
||||
<object class="GtkWindow" id="window">
|
||||
@@ -99,39 +82,43 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem101">
|
||||
<property name="label" translatable="yes">_New</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem1">
|
||||
<property name="label">gtk-new</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem102">
|
||||
<property name="label" translatable="yes">_Open</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem2">
|
||||
<property name="label">gtk-open</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem103">
|
||||
<property name="label" translatable="yes">_Save</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem3">
|
||||
<property name="label">gtk-save</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem104">
|
||||
<property name="label" translatable="yes">Save _As</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem4">
|
||||
<property name="label">gtk-save-as</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -142,12 +129,13 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem105">
|
||||
<property name="label" translatable="yes">_Quit</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem5">
|
||||
<property name="label">gtk-quit</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="gtk_main_quit" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
@@ -167,43 +155,47 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem106">
|
||||
<property name="label" translatable="yes">Cu_t</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem6">
|
||||
<property name="label">gtk-cut</property>
|
||||
<property name="accel_group">accelgroup1</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem107">
|
||||
<property name="label" translatable="yes">_Copy</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem7">
|
||||
<property name="label">gtk-copy</property>
|
||||
<property name="accel_group">accelgroup1</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem108">
|
||||
<property name="label" translatable="yes">_Paste</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem8">
|
||||
<property name="label">gtk-paste</property>
|
||||
<property name="accel_group">accelgroup1</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="menuitem109">
|
||||
<property name="label" translatable="yes">_Delete</property>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem9">
|
||||
<property name="label">gtk-delete</property>
|
||||
<property name="accel_group">accelgroup1</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -403,12 +395,13 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="aboutmenuitem">
|
||||
<property name="label" translatable="yes">_About</property>
|
||||
<object class="GtkImageMenuItem" id="aboutmenuitem">
|
||||
<property name="label">gtk-about</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -434,9 +427,9 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="label" translatable="yes">_Save</property>
|
||||
<property name="label" translatable="yes">Save</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="icon-name">document-save</property>
|
||||
<property name="stock_id">gtk-save</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -450,7 +443,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="label" translatable="yes">Open</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="icon-name">document-open</property>
|
||||
<property name="stock_id">gtk-open</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -475,7 +468,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="label" translatable="yes">Find</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="icon_name">edit-find</property>
|
||||
<property name="stock_id">gtk-find</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -2153,158 +2146,30 @@ Suspendisse feugiat quam quis dolor accumsan cursus. </property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkOverlay" id="page2">
|
||||
<object class="GtkBox" id="page2">
|
||||
<property name="visible">True</property>
|
||||
<child type="overlay">
|
||||
<object class="GtkRevealer" id="page2revealer">
|
||||
<property name="visible">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">start</property>
|
||||
<child>
|
||||
<object class="GtkFrame" id="page2frame">
|
||||
<property name="visible">True</property>
|
||||
<property name="margin-top">2</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="page2box">
|
||||
<property name="visible">True</property>
|
||||
<property name="margin-top">10</property>
|
||||
<property name="margin-bottom">10</property>
|
||||
<property name="margin-left">10</property>
|
||||
<property name="margin-right">10</property>
|
||||
<property name="spacing">20</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="page2note">
|
||||
<property name="visible">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label">NEWS!</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="page2dismiss">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="page2dismissi">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">window-close-symbolic</property>
|
||||
<property name="icon-size">0</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">6</property>
|
||||
<property name="border-width">6</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="page2grid">
|
||||
<object class="GtkBox" id="page2box1">
|
||||
<property name="visible">True</property>
|
||||
<property name="column-homogeneous">True</property>
|
||||
<property name="row-spacing">6</property>
|
||||
<property name="column-spacing">6</property>
|
||||
<property name="border-width">6</property>
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="spacing">4</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="page2box1">
|
||||
<object class="GtkSpinButton" id="verticalspin1">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="spacing">4</property>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="verticalspin1">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="adjustment">adjustment2</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="verticalspin2">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
</object>
|
||||
</child>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="adjustment">adjustment2</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="filler1">
|
||||
<object class="GtkSpinButton" id="verticalspin2">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="filler2">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStackSwitcher" id="switcher">
|
||||
<property name="visible">True</property>
|
||||
<property name="stack">stack</property>
|
||||
<property name="halign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame" id="frame">
|
||||
<property name="visible">True</property>
|
||||
<property name="hexpand">False</property>
|
||||
<child>
|
||||
<object class="GtkStack" id="stack">
|
||||
<property name="visible">True</property>
|
||||
<property name="transition-type">crossfade</property>
|
||||
<property name="transition-duration">1000</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="swo">
|
||||
<property name="visible">True</property>
|
||||
<property name="shadow-type">none</property>
|
||||
<child>
|
||||
<object class="GtkTextView" id="tvo">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="buffer">textbuffer2</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page1</property>
|
||||
<property name="icon-name">document-open-recent-symbolic</property>
|
||||
<property name="title">News</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage" id="imageo">
|
||||
<property name="visible">True</property>
|
||||
<property name="resource">/logos/gtk-logo-256.png</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page2</property>
|
||||
<property name="icon-name">system-shutdown-symbolic</property>
|
||||
<property name="title">Logo</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
@@ -499,9 +499,8 @@ And callback types:
|
||||
typedef void (* GtkCallback) (GtkWidget *widget,
|
||||
gpointer user_data);
|
||||
|
||||
Instance structures should only contain the parent type, and optionally a
|
||||
pointer to a private data structure, and they should be annotated as
|
||||
"private" using the gtk-doc trigraph:
|
||||
Instance structures should only contain the parent type and a pointer to a
|
||||
private data structure, and they should be annotated as "private":
|
||||
|
||||
struct _GtkFoo
|
||||
{
|
||||
@@ -511,26 +510,21 @@ pointer to a private data structure, and they should be annotated as
|
||||
GtkFooPrivate *priv;
|
||||
};
|
||||
|
||||
The private data pointer is optional and should be omitted in newly
|
||||
written classes.
|
||||
|
||||
Always use the G_DEFINE_TYPE(), G_DEFINE_TYPE_WITH_PRIVATE(), and
|
||||
G_DEFINE_TYPE_WITH_CODE() macros, or their abstract variants
|
||||
G_DEFINE_ABSTRACT_TYPE(), G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(), and
|
||||
G_DEFINE_ABSTRACT_TYPE_WITH_CODE(); also, use the similar macros for
|
||||
defining interfaces and boxed types.
|
||||
|
||||
All the properties should be stored inside the private data structure, which
|
||||
is defined inside the source file - or, if needed, inside a private header
|
||||
file; the private header filename must end with "private.h" and must not be
|
||||
installed.
|
||||
|
||||
The private data structure should only be accessed internally either using the
|
||||
pointer inside the instance structure, if one is available, or the generated
|
||||
instance private data getter function for your type. You should never use the
|
||||
The private data structure should only be accessed internally using the
|
||||
pointer inside the instance structure, and never using the
|
||||
G_TYPE_INSTANCE_GET_PRIVATE() macro or the g_type_instance_get_private()
|
||||
function.
|
||||
|
||||
Always use the G_DEFINE_TYPE(), G_DEFINE_TYPE_WITH_CODE() macros, or
|
||||
their abstract variants G_DEFINE_ABSTRACT_TYPE() and
|
||||
G_DEFINE_ABSTRACT_TYPE_WITH_CODE(), and the similar macros for defining
|
||||
interfaces.
|
||||
|
||||
Interface types should always have the dummy typedef for cast purposes:
|
||||
|
||||
typedef struct _GtkFoo GtkFoo;
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
<xi:include href="xml/pango_interaction.xml" />
|
||||
<xi:include href="xml/cairo_interaction.xml" />
|
||||
<xi:include href="xml/x_interaction.xml" />
|
||||
<xi:include href="xml/wayland_interaction.xml" />
|
||||
<xi:include href="xml/gdkapplaunchcontext.xml" />
|
||||
<xi:include href="xml/gdktestutils.xml" />
|
||||
</reference>
|
||||
@@ -76,10 +75,6 @@
|
||||
<title>Index of new symbols in 3.8</title>
|
||||
<xi:include href="xml/api-index-3.8.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
<index id="api-index-3-10" role="3.10">
|
||||
<title>Index of new symbols in 3.10</title>
|
||||
<xi:include href="xml/api-index-3.10.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ gdk_parse_args
|
||||
gdk_get_display_arg_name
|
||||
gdk_notify_startup_complete
|
||||
gdk_notify_startup_complete_with_id
|
||||
gdk_set_allowed_backends
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_get_program_class
|
||||
@@ -52,7 +51,6 @@ gdk_error_trap_pop_ignored
|
||||
GDK_WINDOWING_X11
|
||||
GDK_WINDOWING_WIN32
|
||||
GDK_WINDOWING_QUARTZ
|
||||
GDK_WINDOWING_WAYLAND
|
||||
|
||||
<SUBSECTION>
|
||||
GDK_VERSION_3_0
|
||||
@@ -215,7 +213,6 @@ gdk_screen_get_monitor_at_window
|
||||
gdk_screen_get_monitor_height_mm
|
||||
gdk_screen_get_monitor_width_mm
|
||||
gdk_screen_get_monitor_plug_name
|
||||
gdk_screen_get_monitor_scale_factor
|
||||
gdk_screen_get_setting
|
||||
gdk_screen_get_font_options
|
||||
gdk_screen_set_font_options
|
||||
@@ -386,7 +383,6 @@ gdk_window_begin_move_drag
|
||||
gdk_window_begin_move_drag_for_device
|
||||
gdk_window_constrain_size
|
||||
gdk_window_beep
|
||||
gdk_window_get_scale_factor
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_window_get_clip_region
|
||||
@@ -394,8 +390,6 @@ gdk_window_begin_paint_rect
|
||||
gdk_window_begin_paint_region
|
||||
gdk_window_end_paint
|
||||
gdk_window_get_visible_region
|
||||
GdkWindowInvalidateHandlerFunc
|
||||
gdk_window_set_invalidate_handler
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_window_invalidate_rect
|
||||
@@ -459,12 +453,10 @@ gdk_window_get_origin
|
||||
gdk_window_get_root_coords
|
||||
gdk_window_get_pointer
|
||||
gdk_window_get_device_position
|
||||
gdk_window_get_device_position_double
|
||||
GdkModifierType
|
||||
gdk_window_get_parent
|
||||
gdk_window_get_toplevel
|
||||
gdk_window_get_children
|
||||
gdk_window_get_children_with_user_data
|
||||
gdk_window_peek_children
|
||||
gdk_window_get_events
|
||||
gdk_window_set_events
|
||||
@@ -595,7 +587,6 @@ gdk_pango_context_get_for_screen
|
||||
<TITLE>Cairo Interaction</TITLE>
|
||||
<FILE>cairo_interaction</FILE>
|
||||
gdk_window_create_similar_surface
|
||||
gdk_window_create_similar_image_surface
|
||||
gdk_cairo_create
|
||||
gdk_cairo_get_clip_rectangle
|
||||
gdk_cairo_set_source_color
|
||||
@@ -605,7 +596,6 @@ gdk_cairo_set_source_window
|
||||
gdk_cairo_rectangle
|
||||
gdk_cairo_region
|
||||
gdk_cairo_region_create_from_surface
|
||||
gdk_cairo_surface_create_from_pixbuf
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@@ -722,9 +712,7 @@ gdk_device_ungrab
|
||||
<SUBSECTION>
|
||||
gdk_device_get_state
|
||||
gdk_device_get_position
|
||||
gdk_device_get_position_double
|
||||
gdk_device_get_window_at_position
|
||||
gdk_device_get_window_at_position_double
|
||||
gdk_device_get_history
|
||||
gdk_device_free_history
|
||||
GdkTimeCoord
|
||||
@@ -1138,54 +1126,6 @@ gdk_x11_window_get_type
|
||||
gdk_window_impl_x11_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<INCLUDE>gdk/gdkwayland.h</INCLUDE>
|
||||
<TITLE>Wayland Interaction</TITLE>
|
||||
<FILE>wayland_interaction</FILE>
|
||||
gdk_wayland_device_get_wl_keyboard
|
||||
gdk_wayland_device_get_wl_pointer
|
||||
gdk_wayland_device_get_wl_seat
|
||||
gdk_wayland_display_get_wl_compositor
|
||||
gdk_wayland_display_get_wl_display
|
||||
gdk_wayland_display_get_wl_shell
|
||||
gdk_wayland_window_get_wl_shell_surface
|
||||
gdk_wayland_window_get_wl_surface
|
||||
gdk_wayland_window_set_use_custom_surface
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_WAYLAND_DEVICE
|
||||
GDK_WAYLAND_DEVICE
|
||||
GDK_WAYLAND_DEVICE_CLASS
|
||||
GDK_WAYLAND_DEVICE_GET_CLASS
|
||||
GDK_IS_WAYLAND_DEVICE
|
||||
GDK_IS_WAYLAND_DEVICE_CLASS
|
||||
GDK_TYPE_WAYLAND_DISPLAY
|
||||
GDK_WAYLAND_DISPLAY
|
||||
GDK_WAYLAND_DISPLAY_CLASS
|
||||
GDK_WAYLAND_DISPLAY_GET_CLASS
|
||||
GDK_IS_WAYLAND_DISPLAY
|
||||
GDK_IS_WAYLAND_DISPLAY_CLASS
|
||||
GDK_TYPE_WAYLAND_DISPLAY_MANAGER
|
||||
GDK_WAYLAND_DISPLAY_MANAGER
|
||||
GDK_WAYLAND_DISPLAY_MANAGER_CLASS
|
||||
GDK_WAYLAND_DISPLAY_MANAGER_GET_CLASS
|
||||
GDK_IS_WAYLAND_DISPLAY_MANAGER
|
||||
GDK_IS_WAYLAND_DISPLAY_MANAGER_CLASS
|
||||
GDK_TYPE_WAYLAND_WINDOW
|
||||
GDK_WAYLAND_WINDOW
|
||||
GDK_WAYLAND_WINDOW_CLASS
|
||||
GDK_WAYLAND_WINDOW_GET_CLASS
|
||||
GDK_IS_WAYLAND_WINDOW
|
||||
GDK_IS_WAYLAND_WINDOW_CLASS
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_wayland_device_get_type
|
||||
gdk_wayland_display_get_type
|
||||
gdk_wayland_display_manager_get_type
|
||||
gdk_wayland_window_get_type
|
||||
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Application launching</TITLE>
|
||||
<FILE>gdkapplaunchcontext</FILE>
|
||||
|
||||
@@ -21,9 +21,9 @@ CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||
# Header files to ignore when scanning
|
||||
IGNORE_HFILES= \
|
||||
fnmatch.h \
|
||||
gtkactionmuxer.h \
|
||||
gtkactionobserver.h \
|
||||
gtkactionobservable.h \
|
||||
gactionmuxer.h \
|
||||
gactionobserver.h \
|
||||
gactionobservable.h \
|
||||
gtk9slice.h \
|
||||
gtkanimationdescription.h \
|
||||
gtkdebug.h \
|
||||
@@ -141,6 +141,7 @@ content_files = \
|
||||
migrating-smclient-GtkApplication.xml \
|
||||
migrating-GtkGrid.xml \
|
||||
migrating-GtkStyleContext.xml \
|
||||
objects_grouped.sgml \
|
||||
osx.sgml \
|
||||
broadway.xml \
|
||||
wayland.xml \
|
||||
@@ -300,7 +301,7 @@ HTML_IMAGES = \
|
||||
$(srcdir)/images/appchooserdialog.png \
|
||||
$(srcdir)/images/assistant.png \
|
||||
$(srcdir)/images/box-packing.png \
|
||||
$(srcdir)/images/box-expand.png \
|
||||
$(srcdir)/images/box-expand.png \
|
||||
$(srcdir)/images/button.png \
|
||||
$(srcdir)/images/check-button.png \
|
||||
$(srcdir)/images/color-button.png \
|
||||
@@ -308,8 +309,8 @@ HTML_IMAGES = \
|
||||
$(srcdir)/images/colorchooser.png \
|
||||
$(srcdir)/images/combo-box.png \
|
||||
$(srcdir)/images/combo-box-entry.png \
|
||||
$(srcdir)/images/combo-box-text.png \
|
||||
$(srcdir)/images/entry.png \
|
||||
$(srcdir)/images/search-entry.png \
|
||||
$(srcdir)/images/figure-hierarchical-drawing.png \
|
||||
$(srcdir)/images/figure-windowed-label.png \
|
||||
$(srcdir)/images/file-button.png \
|
||||
@@ -318,10 +319,8 @@ HTML_IMAGES = \
|
||||
$(srcdir)/images/fontsel.png \
|
||||
$(srcdir)/images/fontchooser.png \
|
||||
$(srcdir)/images/frame.png \
|
||||
$(srcdir)/images/headerbar.png \
|
||||
$(srcdir)/images/icon-view.png \
|
||||
$(srcdir)/images/image.png \
|
||||
$(srcdir)/images/info-bar.png \
|
||||
$(srcdir)/images/label.png \
|
||||
$(srcdir)/images/levelbar.png \
|
||||
$(srcdir)/images/link-button.png \
|
||||
@@ -338,20 +337,15 @@ HTML_IMAGES = \
|
||||
$(srcdir)/images/notebook.png \
|
||||
$(srcdir)/images/panes.png \
|
||||
$(srcdir)/images/pagesetupdialog.png \
|
||||
$(srcdir)/images/placessidebar.png \
|
||||
$(srcdir)/images/printdialog.png \
|
||||
$(srcdir)/images/progressbar.png \
|
||||
$(srcdir)/images/radio-group.png \
|
||||
$(srcdir)/images/recentchooserdialog.png \
|
||||
$(srcdir)/images/scales.png \
|
||||
$(srcdir)/images/scrollbar.png \
|
||||
$(srcdir)/images/scrolledwindow.png \
|
||||
$(srcdir)/images/search-entry.png \
|
||||
$(srcdir)/images/separator.png \
|
||||
$(srcdir)/images/spinbutton.png \
|
||||
$(srcdir)/images/spinner.png \
|
||||
$(srcdir)/images/stack.png \
|
||||
$(srcdir)/images/stackswitcher.png \
|
||||
$(srcdir)/images/statusbar.png \
|
||||
$(srcdir)/images/toggle-button.png \
|
||||
$(srcdir)/images/toolbar.png \
|
||||
@@ -413,8 +407,7 @@ HTML_IMAGES = \
|
||||
$(srcdir)/images/right-start.png \
|
||||
$(srcdir)/images/up-center.png \
|
||||
$(srcdir)/images/up-end.png \
|
||||
$(srcdir)/images/up-start.png \
|
||||
$(srcdir)/images/list-box.png
|
||||
$(srcdir)/images/up-start.png
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref
|
||||
FIXXREF_OPTIONS=--extra-dir=../gdk/html \
|
||||
|
||||
@@ -54,15 +54,6 @@ Start your applications like this:
|
||||
BROADWAY_DISPLAY=:5 gtk3-demo
|
||||
</programlisting>
|
||||
|
||||
You can add password protection for your session by creating a file in
|
||||
<filename>$XDG_CONFIG_HOME/broadway.passwd</filename> or <filename>$HOME/.config/broadway.passwd</filename>
|
||||
with a crypt(3) style password hash.
|
||||
|
||||
A simple way to generate it is with openssl:
|
||||
<programlisting>
|
||||
openssl passwd -1 > ~/.config/broadway.passwd
|
||||
</programlisting>
|
||||
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -402,11 +402,6 @@ How to compile GTK+ itself
|
||||
<arg choice="plain">--enable-gtk2-dependency</arg>
|
||||
<arg choice="plain">--disable-gtk2-dependency</arg>
|
||||
</group>
|
||||
<sbr/>
|
||||
<group>
|
||||
<arg choice="plain">--enable-installed-tests</arg>
|
||||
<arg choice="plain">--disable-installed-tests</arg>
|
||||
</group>
|
||||
</cmdsynopsis>
|
||||
</para>
|
||||
|
||||
@@ -629,19 +624,6 @@ How to compile GTK+ itself
|
||||
The default is to build gtk-update-icon-cache.
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara>
|
||||
<title><systemitem>--enable-installed-tests</systemitem> or
|
||||
<systemitem>--disable-installed-tests</systemitem></title>
|
||||
|
||||
<para>
|
||||
Whether to install tests on the system. If enabled, tests
|
||||
and their data are installed in <filename>${libexecdir}/gtk+/installed-tests</filename>.
|
||||
Metadata for the tests is installed in <filename>${prefix}/share/installed-tests/gtk+</filename>.
|
||||
To run the installed tests, gnome-desktop-testing-runner
|
||||
can be used.
|
||||
</para>
|
||||
</formalpara>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
@@ -42,7 +42,7 @@ feature of the shell. If you enclose a command in backticks
|
||||
substituted into the command line before execution. So to compile
|
||||
a GTK+ Hello, World, you would type the following:
|
||||
<programlisting>
|
||||
$ cc `pkg-config --cflags gtk+-3.0` hello.c -o hello `pkg-config --libs gtk+-3.0`
|
||||
$ cc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
@@ -67,7 +67,7 @@ this range will trigger compiler warnings.
|
||||
Here is how you would compile hello.c if you want to allow it
|
||||
to use symbols that were not deprecated in 3.2:
|
||||
<programlisting>
|
||||
$ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MIN_REQIRED=GDK_VERSION_3_2 hello.c -o hello `pkg-config --libs gtk+-3.0`
|
||||
$ cc -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_2 `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
@@ -75,7 +75,7 @@ $ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MIN_REQIRED=GDK_VERSION_3_2 he
|
||||
And here is how you would compile hello.c if you don't want
|
||||
it to use any symbols that were introduced after 3.4:
|
||||
<programlisting>
|
||||
$ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 hello.c -o hello `pkg-config --libs gtk+-3.0`
|
||||
$ cc -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
|
||||
@@ -126,7 +126,6 @@
|
||||
<xi:include href="xml/gtkscale.xml" />
|
||||
<xi:include href="xml/gtkspinbutton.xml" />
|
||||
<xi:include href="xml/gtksearchentry.xml" />
|
||||
<xi:include href="xml/gtksearchbar.xml" />
|
||||
<xi:include href="xml/gtkeditable.xml" />
|
||||
</chapter>
|
||||
|
||||
@@ -221,7 +220,6 @@
|
||||
<xi:include href="xml/gtkfontbutton.xml" />
|
||||
<xi:include href="xml/gtkfontchooserwidget.xml" />
|
||||
<xi:include href="xml/gtkfontchooserdialog.xml" />
|
||||
<xi:include href="xml/gtkplacessidebar.xml" />
|
||||
</chapter>
|
||||
|
||||
<chapter id="LayoutContainers">
|
||||
@@ -231,15 +229,11 @@
|
||||
<xi:include href="xml/gtkaspectframe.xml" />
|
||||
<xi:include href="xml/gtkbox.xml" />
|
||||
<xi:include href="xml/gtkbbox.xml" />
|
||||
<xi:include href="xml/gtklistbox.xml" />
|
||||
<xi:include href="xml/gtkfixed.xml" />
|
||||
<xi:include href="xml/gtkpaned.xml" />
|
||||
<xi:include href="xml/gtklayout.xml" />
|
||||
<xi:include href="xml/gtknotebook.xml" />
|
||||
<xi:include href="xml/gtkstack.xml" />
|
||||
<xi:include href="xml/gtkstackswitcher.xml" />
|
||||
<xi:include href="xml/gtkexpander.xml" />
|
||||
<xi:include href="xml/gtkrevealer.xml" />
|
||||
<xi:include href="xml/gtkoverlay.xml" />
|
||||
<xi:include href="xml/gtkheaderbar.xml" />
|
||||
<xi:include href="xml/gtkorientable.xml" />
|
||||
|
||||
@@ -486,8 +486,6 @@ gtk_box_set_spacing
|
||||
gtk_box_reorder_child
|
||||
gtk_box_query_child_packing
|
||||
gtk_box_set_child_packing
|
||||
gtk_box_get_baseline_position
|
||||
gtk_box_set_baseline_position
|
||||
<SUBSECTION Standard>
|
||||
GTK_BOX
|
||||
GTK_IS_BOX
|
||||
@@ -500,56 +498,6 @@ GtkBoxPrivate
|
||||
gtk_box_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtklistbox</FILE>
|
||||
<TITLE>GtkListBox</TITLE>
|
||||
GtkListBox
|
||||
GtkListBoxRow
|
||||
GtkListBoxFilterFunc
|
||||
GtkListBoxSortFunc
|
||||
GtkListBoxUpdateHeaderFunc
|
||||
|
||||
gtk_list_box_new
|
||||
gtk_list_box_select_row
|
||||
gtk_list_box_get_selected_row
|
||||
|
||||
gtk_list_box_set_selection_mode
|
||||
gtk_list_box_get_selection_mode
|
||||
gtk_list_box_set_activate_on_single_click
|
||||
gtk_list_box_get_activate_on_single_click
|
||||
gtk_list_box_get_adjustment
|
||||
gtk_list_box_set_adjustment
|
||||
gtk_list_box_set_placeholder
|
||||
gtk_list_box_get_row_at_index
|
||||
gtk_list_box_get_row_at_y
|
||||
gtk_list_box_invalidate_filter
|
||||
gtk_list_box_invalidate_headers
|
||||
gtk_list_box_invalidate_sort
|
||||
gtk_list_box_set_filter_func
|
||||
gtk_list_box_set_header_func
|
||||
gtk_list_box_set_sort_func
|
||||
gtk_list_box_drag_highlight_row
|
||||
gtk_list_box_drag_unhighlight_row
|
||||
|
||||
gtk_list_box_row_new
|
||||
gtk_list_box_row_changed
|
||||
gtk_list_box_row_get_header
|
||||
gtk_list_box_row_get_type
|
||||
gtk_list_box_row_set_header
|
||||
gtk_list_box_row_get_index
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_IS_LIST_BOX
|
||||
GTK_IS_LIST_BOX_CLASS
|
||||
GTK_IS_LIST_BOX_ROW
|
||||
GTK_IS_LIST_BOX_ROW_CLASS
|
||||
GTK_TYPE_LIST_BOX
|
||||
GTK_TYPE_LIST_BOX_ROW
|
||||
|
||||
<SUBSECTION Private>
|
||||
gtk_list_box_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkbuildable</FILE>
|
||||
GtkBuildable
|
||||
@@ -580,12 +528,6 @@ GtkBuilder
|
||||
GtkBuilderConnectFunc
|
||||
GtkBuilderError
|
||||
gtk_builder_new
|
||||
gtk_builder_new_from_file
|
||||
gtk_builder_new_from_resource
|
||||
gtk_builder_new_from_string
|
||||
gtk_builder_add_callback_symbol
|
||||
gtk_builder_add_callback_symbols
|
||||
gtk_builder_lookup_callback_symbol
|
||||
gtk_builder_add_from_file
|
||||
gtk_builder_add_from_resource
|
||||
gtk_builder_add_from_string
|
||||
@@ -597,9 +539,6 @@ gtk_builder_get_objects
|
||||
gtk_builder_expose_object
|
||||
gtk_builder_connect_signals
|
||||
gtk_builder_connect_signals_full
|
||||
gtk_builder_add_callback_symbol
|
||||
gtk_builder_add_callback_symbols
|
||||
gtk_builder_lookup_callback_symbol
|
||||
gtk_builder_set_translation_domain
|
||||
gtk_builder_get_translation_domain
|
||||
gtk_builder_get_type_from_name
|
||||
@@ -607,13 +546,6 @@ gtk_builder_value_from_string
|
||||
gtk_builder_value_from_string_type
|
||||
GTK_BUILDER_WARN_INVALID_CHILD_TYPE
|
||||
GTK_BUILDER_ERROR
|
||||
<SUBSECTION>
|
||||
gtk_builder_new
|
||||
gtk_builder_add_from_file
|
||||
gtk_builder_add_from_resource
|
||||
gtk_builder_add_from_string
|
||||
gtk_builder_add_objects_from_file
|
||||
gtk_builder_add_objects_from_string
|
||||
<SUBSECTION Standard>
|
||||
GTK_BUILDER
|
||||
GTK_IS_BUILDER
|
||||
@@ -1326,7 +1258,6 @@ gtk_file_chooser_get_do_overwrite_confirmation
|
||||
gtk_file_chooser_set_create_folders
|
||||
gtk_file_chooser_get_create_folders
|
||||
gtk_file_chooser_set_current_name
|
||||
gtk_file_chooser_get_current_name
|
||||
gtk_file_chooser_get_filename
|
||||
gtk_file_chooser_set_filename
|
||||
gtk_file_chooser_select_filename
|
||||
@@ -2549,35 +2480,6 @@ GTK_PANED_GET_CLASS
|
||||
gtk_paned_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkplacessidebar</FILE>
|
||||
<TITLE>GtkPlacesSidebar</TITLE>
|
||||
GtkPlacesSidebar
|
||||
GtkPlacesOpenFlags
|
||||
gtk_places_sidebar_new
|
||||
gtk_places_sidebar_set_open_flags
|
||||
gtk_places_sidebar_get_open_flags
|
||||
gtk_places_sidebar_set_location
|
||||
gtk_places_sidebar_get_location
|
||||
gtk_places_sidebar_set_show_desktop
|
||||
gtk_places_sidebar_get_show_desktop
|
||||
gtk_places_sidebar_add_shortcut
|
||||
gtk_places_sidebar_remove_shortcut
|
||||
gtk_places_sidebar_list_shortcuts
|
||||
gtk_places_sidebar_get_nth_bookmark
|
||||
gtk_places_sidebar_get_show_connect_to_server
|
||||
gtk_places_sidebar_set_show_connect_to_server
|
||||
<SUBSECTION Standard>
|
||||
GTK_PLACES_SIDEBAR
|
||||
GTK_IS_PLACES_SIDEBAR
|
||||
GTK_TYPE_PLACES_SIDEBAR
|
||||
GTK_PLACES_SIDEBAR_CLASS
|
||||
GTK_IS_PLACES_SIDEBAR_CLASS
|
||||
GTK_PLACES_SIDEBAR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
gtk_places_sidebar_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkplug</FILE>
|
||||
<TITLE>GtkPlug</TITLE>
|
||||
@@ -3102,28 +3004,6 @@ gtk_scrolled_window_get_type
|
||||
GtkScrolledWindowPrivate
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtksearchbar</FILE>
|
||||
<TITLE>GtkSearchBar</TITLE>
|
||||
GtkSearchBar
|
||||
gtk_search_bar_new
|
||||
gtk_search_bar_connect_entry
|
||||
gtk_search_bar_get_search_mode
|
||||
gtk_search_bar_set_search_mode
|
||||
gtk_search_bar_get_show_close_button
|
||||
gtk_search_bar_set_show_close_button
|
||||
gtk_search_bar_handle_event
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_SEARCH_BAR
|
||||
GTK_SEARCH_BAR
|
||||
GTK_SEARCH_BAR_CLASS
|
||||
GTK_IS_SEARCH_BAR
|
||||
GTK_IS_SEARCH_BAR_CLASS
|
||||
GTK_SEARCH_BAR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
gtk_search_bar_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtksearchentry</FILE>
|
||||
<TITLE>GtkSearchEntry</TITLE>
|
||||
@@ -3696,11 +3576,11 @@ gtk_text_mark_get_type
|
||||
<TITLE>GtkTextTag</TITLE>
|
||||
GtkTextTag
|
||||
GtkWrapMode
|
||||
GtkTextAttributes
|
||||
gtk_text_tag_new
|
||||
gtk_text_tag_get_priority
|
||||
gtk_text_tag_set_priority
|
||||
gtk_text_tag_event
|
||||
GtkTextAttributes
|
||||
GtkTextAppearance
|
||||
gtk_text_attributes_new
|
||||
gtk_text_attributes_copy
|
||||
@@ -5279,7 +5159,6 @@ gtk_widget_remove_tick_callback
|
||||
gtk_widget_size_request
|
||||
gtk_widget_get_child_requisition
|
||||
gtk_widget_size_allocate
|
||||
gtk_widget_size_allocate_with_baseline
|
||||
gtk_widget_add_accelerator
|
||||
gtk_widget_remove_accelerator
|
||||
gtk_widget_set_accel_path
|
||||
@@ -5382,7 +5261,6 @@ gtk_widget_get_display
|
||||
gtk_widget_get_root_window
|
||||
gtk_widget_get_screen
|
||||
gtk_widget_has_screen
|
||||
gtk_widget_get_scale_factor
|
||||
gtk_widget_get_size_request
|
||||
gtk_widget_set_child_visible
|
||||
gtk_widget_set_size_request
|
||||
@@ -5413,7 +5291,6 @@ gtk_widget_get_allocated_width
|
||||
gtk_widget_get_allocated_height
|
||||
gtk_widget_get_allocation
|
||||
gtk_widget_set_allocation
|
||||
gtk_widget_get_allocated_baseline
|
||||
gtk_widget_get_app_paintable
|
||||
gtk_widget_get_can_default
|
||||
gtk_widget_set_can_default
|
||||
@@ -5474,7 +5351,6 @@ gtk_widget_get_preferred_height
|
||||
gtk_widget_get_preferred_width
|
||||
gtk_widget_get_preferred_height_for_width
|
||||
gtk_widget_get_preferred_width_for_height
|
||||
gtk_widget_get_preferred_height_and_baseline_for_width
|
||||
gtk_widget_get_request_mode
|
||||
gtk_widget_get_preferred_size
|
||||
gtk_distribute_natural_allocation
|
||||
@@ -5484,7 +5360,6 @@ GtkAlign
|
||||
gtk_widget_get_halign
|
||||
gtk_widget_set_halign
|
||||
gtk_widget_get_valign
|
||||
gtk_widget_get_valign_with_baseline
|
||||
gtk_widget_set_valign
|
||||
gtk_widget_get_margin_left
|
||||
gtk_widget_set_margin_left
|
||||
@@ -5507,18 +5382,6 @@ gtk_widget_set_vexpand_set
|
||||
gtk_widget_queue_compute_expand
|
||||
gtk_widget_compute_expand
|
||||
|
||||
<SUBSECTION Templates>
|
||||
gtk_widget_init_template
|
||||
gtk_widget_class_set_template
|
||||
gtk_widget_class_set_template_from_resource
|
||||
gtk_widget_get_automated_child
|
||||
gtk_widget_class_bind_child
|
||||
gtk_widget_class_bind_child_internal
|
||||
gtk_widget_class_automate_child
|
||||
gtk_widget_class_bind_callback
|
||||
gtk_widget_class_declare_callback
|
||||
gtk_widget_class_set_connect_func
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_WIDGET
|
||||
GTK_IS_WIDGET
|
||||
@@ -5573,7 +5436,6 @@ gtk_window_get_default_widget
|
||||
gtk_window_set_default
|
||||
gtk_window_present
|
||||
gtk_window_present_with_time
|
||||
gtk_window_close
|
||||
gtk_window_iconify
|
||||
gtk_window_deiconify
|
||||
gtk_window_stick
|
||||
@@ -5997,8 +5859,6 @@ gtk_style_context_list_regions
|
||||
gtk_style_context_set_screen
|
||||
gtk_style_context_set_frame_clock
|
||||
gtk_style_context_set_state
|
||||
gtk_style_context_set_scale
|
||||
gtk_style_context_get_scale
|
||||
|
||||
<SUBSECTION>
|
||||
GtkBorder
|
||||
@@ -6022,7 +5882,6 @@ gtk_render_option
|
||||
gtk_render_slider
|
||||
gtk_render_activity
|
||||
gtk_render_icon_pixbuf
|
||||
gtk_render_icon_surface
|
||||
gtk_render_icon
|
||||
gtk_render_insertion_cursor
|
||||
|
||||
@@ -6620,13 +6479,9 @@ gtk_icon_theme_prepend_search_path
|
||||
gtk_icon_theme_set_custom_theme
|
||||
gtk_icon_theme_has_icon
|
||||
gtk_icon_theme_lookup_icon
|
||||
gtk_icon_theme_lookup_icon_for_scale
|
||||
gtk_icon_theme_choose_icon
|
||||
gtk_icon_theme_choose_icon_for_scale
|
||||
gtk_icon_theme_lookup_by_gicon
|
||||
gtk_icon_theme_load_icon
|
||||
gtk_icon_theme_load_icon_for_scale
|
||||
gtk_icon_theme_load_surface
|
||||
gtk_icon_theme_list_contexts
|
||||
gtk_icon_theme_list_icons
|
||||
gtk_icon_theme_get_icon_sizes
|
||||
@@ -6637,11 +6492,9 @@ gtk_icon_info_copy
|
||||
gtk_icon_info_free
|
||||
gtk_icon_info_new_for_pixbuf
|
||||
gtk_icon_info_get_base_size
|
||||
gtk_icon_info_get_base_scale
|
||||
gtk_icon_info_get_filename
|
||||
gtk_icon_info_get_builtin_pixbuf
|
||||
gtk_icon_info_load_icon
|
||||
gtk_icon_info_load_surface
|
||||
gtk_icon_info_load_icon_async
|
||||
gtk_icon_info_load_icon_finish
|
||||
gtk_icon_info_load_symbolic
|
||||
@@ -7239,7 +7092,6 @@ gtk_test_text_get
|
||||
gtk_test_text_set
|
||||
gtk_test_widget_click
|
||||
gtk_test_widget_send_key
|
||||
gtk_test_widget_wait_for_draw
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@@ -7386,8 +7238,6 @@ gtk_grid_attach_next_to
|
||||
gtk_grid_get_child_at
|
||||
gtk_grid_insert_row
|
||||
gtk_grid_insert_column
|
||||
gtk_grid_remove_row
|
||||
gtk_grid_remove_column
|
||||
gtk_grid_insert_next_to
|
||||
gtk_grid_set_row_homogeneous
|
||||
gtk_grid_get_row_homogeneous
|
||||
@@ -7397,10 +7247,6 @@ gtk_grid_set_column_homogeneous
|
||||
gtk_grid_get_column_homogeneous
|
||||
gtk_grid_set_column_spacing
|
||||
gtk_grid_get_column_spacing
|
||||
gtk_grid_get_baseline_row
|
||||
gtk_grid_set_baseline_row
|
||||
gtk_grid_get_row_baseline_position
|
||||
gtk_grid_set_row_baseline_position
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GtkGridClass
|
||||
@@ -7675,48 +7521,3 @@ GTK_HEADER_BAR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
gtk_header_bar_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkstack</FILE>
|
||||
<TITLE>GtkStack</TITLE>
|
||||
GtkStack
|
||||
gtk_stack_new
|
||||
gtk_stack_add_named
|
||||
gtk_stack_add_titled
|
||||
gtk_stack_set_visible_child
|
||||
gtk_stack_get_visible_child
|
||||
gtk_stack_set_visible_child_name
|
||||
gtk_stack_get_visible_child_name
|
||||
gtk_stack_set_visible_child_full
|
||||
gtk_stack_set_homogeneous
|
||||
gtk_stack_get_homogeneous
|
||||
gtk_stack_set_transition_duration
|
||||
gtk_stack_get_transition_duration
|
||||
GtkStackTransitionType
|
||||
gtk_stack_set_transition_type
|
||||
gtk_stack_get_transition_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkstackswitcher</FILE>
|
||||
<TITLE>GtkStackSwitcher</TITLE>
|
||||
GtkStackSwitcher
|
||||
gtk_stack_switcher_new
|
||||
gtk_stack_switcher_set_stack
|
||||
gtk_stack_switcher_get_stack
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkrevealer</FILE>
|
||||
<TITLE>GtkRevealer</TITLE>
|
||||
GtkRevealer
|
||||
gtk_revealer_new
|
||||
gtk_revealer_get_reveal_child
|
||||
gtk_revealer_set_reveal_child
|
||||
gtk_revealer_get_child_revealed
|
||||
gtk_revealer_get_transition_duration
|
||||
gtk_revealer_set_transition_duration
|
||||
GtkRevealerTransitionType
|
||||
gtk_revealer_get_transition_type
|
||||
gtk_revealer_set_transition_type
|
||||
</SECTION>
|
||||
|
||||
@@ -81,7 +81,6 @@ gtk_grid_get_type
|
||||
gtk_handle_box_get_type
|
||||
gtk_hbox_get_type
|
||||
gtk_hbutton_box_get_type
|
||||
gtk_header_bar_get_type
|
||||
gtk_hpaned_get_type
|
||||
gtk_hscale_get_type
|
||||
gtk_hscrollbar_get_type
|
||||
@@ -101,8 +100,6 @@ gtk_label_get_type
|
||||
gtk_layout_get_type
|
||||
gtk_link_button_get_type
|
||||
gtk_list_store_get_type
|
||||
gtk_list_box_get_type
|
||||
gtk_list_box_row_get_type
|
||||
gtk_lock_button_get_type
|
||||
gtk_menu_bar_get_type
|
||||
gtk_menu_button_get_type
|
||||
@@ -122,7 +119,6 @@ gtk_page_setup_get_type
|
||||
@DISABLE_ON_W32@gtk_page_setup_unix_dialog_get_type
|
||||
gtk_paned_get_type
|
||||
gtk_paper_size_get_type
|
||||
gtk_places_sidebar_get_type
|
||||
@DISABLE_ON_W32@@DISABLE_ON_QUARTZ@@DISABLE_ON_WAYLAND@gtk_plug_get_type
|
||||
@DISABLE_ON_W32@gtk_printer_get_type
|
||||
gtk_print_context_get_type
|
||||
@@ -144,13 +140,11 @@ gtk_recent_chooser_dialog_get_type
|
||||
gtk_recent_chooser_menu_get_type
|
||||
gtk_recent_chooser_widget_get_type
|
||||
gtk_recent_manager_get_type
|
||||
gtk_revealer_get_type
|
||||
gtk_scale_button_get_type
|
||||
gtk_scale_get_type
|
||||
gtk_scrollable_get_type
|
||||
gtk_scrollbar_get_type
|
||||
gtk_scrolled_window_get_type
|
||||
gtk_search_bar_get_type
|
||||
gtk_search_entry_get_type
|
||||
gtk_separator_get_type
|
||||
gtk_separator_menu_item_get_type
|
||||
@@ -160,8 +154,6 @@ gtk_size_group_get_type
|
||||
@DISABLE_ON_W32@@DISABLE_ON_QUARTZ@@DISABLE_ON_WAYLAND@gtk_socket_get_type
|
||||
gtk_spin_button_get_type
|
||||
gtk_spinner_get_type
|
||||
gtk_stack_get_type
|
||||
gtk_stack_switcher_get_type
|
||||
gtk_statusbar_get_type
|
||||
gtk_status_icon_get_type
|
||||
gtk_switch_get_type
|
||||
|
||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |