atomes 1.1.14
atomes: an atomic scale modeling tool box
|
Functions to create the object search widgets, for: More...
#include "atom_edit.h"
Go to the source code of this file.
Functions | |
int | check_label_numbers (project *this_proj, int types) |
check how many atom label(s) are visible | |
int | select_from_library (gboolean visible, project *this_proj, atom_search *asearch) |
select object to insert from the library | |
atom_selection * | preserve_ogl_selection (glwin *view) |
copy the atom selection, so that it can be re-used once the input assistant is closed. | |
void | create_slab_lists (project *this_proj) |
prepare slab(s) OpenGL rendering | |
int | get_to_be_selected (glwin *view) |
find which atom(s) are to be selected | |
void | restore_ogl_selection (glwin *view) |
restore a saved atom selection | |
int | get_asearch_num_objects (atom_search *asearch) |
the number of type of object(s) in this atom search | |
int | get_asearch_object (atom_search *asearch) |
get the number of object(s) in this atom search | |
int | get_asearch_filter (atom_search *asearch) |
get asearch filter | |
gboolean | get_asearch_is_object (atom_search *asearch) |
get asearch object | |
void | check_tree_for_this_search (project *this_proj, atom_search *asearch) |
check, and adjust if needed, the tree construction for this atom search | |
void | check_all_trees (project *this_proj) |
check all search trees | |
atomic_object * | get_atomic_object_by_origin (atomic_object *first, int oid, int aid) |
get insert object from a list by id | |
void | motion_to_zero (atom_search *asearch) |
reset motion to 0.0 | |
void | adjust_object_to_move (project *this_proj, atom_search *asearch, int mv, int id) |
adjust atom search parameters for motion cases | |
void | append_to_model (GtkTreeIter *atom_level, atom_search *asearch, gboolean is_object, int h, int i, project *this_proj) |
append data to the search tree store | |
gboolean | fill_for_action (atom_search *asearch, int i, int j, project *this_proj) |
test if the atom 'i' of species 'j' matches requirement(s) to be in the tree store | |
gboolean | append (atom_search *asearch, project *this_proj, int i, int j) |
test if the atom 'i' of species 'j' must be added to the tree store or not | |
gchar * | adjust_picked (gchar *picked, atomic_object *object, gboolean init) |
adjust the name of the replacement object to use for a type of object if any | |
gchar * | get_node_name (int node, atom_search *asearch, project *this_proj) |
get node label in the atom search tree store | |
void | fill_atom_model (atom_search *asearch, project *this_proj) |
fill atom search tree store | |
G_MODULE_EXPORT void | move_up_down (GtkTreeModel *tree_model, GtkTreePath *path, gpointer data) |
Move row up or down in the tree model using the mouse. | |
void | add_random_column (atom_search *asearch) |
add a column to the search tree model for the case of random search | |
void | update_search_tree (atom_search *asearch) |
update search tree | |
gboolean | update_this_search (atom_search *asearch) |
test if it is required to update the search tree or not | |
G_MODULE_EXPORT void | set_atom (GtkEntry *entry, gpointer data) |
adjust atom search parameters if >= 10 000 atoms | |
void | clear_fields (atom_search *asearch) |
clear all search fields if >= 10 000 atoms | |
gboolean | remove_from_model (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) |
remove from the tree model | |
G_MODULE_EXPORT void | remove_atom (GtkButton *but, gpointer data) |
remove atom (or object) from the search tree if >= 10 000 atoms | |
gboolean | atom_is_in_model (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) |
is this atom already in the tree model if >= 10 000 atoms | |
G_MODULE_EXPORT void | add_atom (GtkButton *but, gpointer data) |
add atom (or object) to the search tree if >= 10 000 atoms | |
void | re_populate_tree_search (atom_search *asearch) |
re populate search tree after atom action if >= 10 000 atoms | |
G_MODULE_EXPORT void | set_id (GtkEntry *entry, gpointer data) |
set search id if >= 10 000 atoms | |
void | adjust_search_param (atom_search *asearch, project *this_proj, int a, int s, int c, gboolean status) |
adjust parameters for this atom search | |
G_MODULE_EXPORT void | set_spec_changed (GtkComboBox *box, gpointer data) |
change the search chemical species | |
void | adjust_this_tree_branch (atom_search *asearch, project *this_proj, int oid, int sid, GtkTreeIter iter) |
adjust tree branch (for an entire type of object) | |
void | adjust_this_tree_leaf (atom_search *asearch, project *this_proj, int oid, int aid, int new_status, GtkTreeIter iter) |
adjust tree leaf (for a single object) | |
G_MODULE_EXPORT void | select_atom (GtkCellRendererToggle *cell_renderer, gchar *string_path, gpointer data) |
toggle select / unselect object in the atom search tree model | |
int | get_selected_object_id (gboolean visible, int p, gchar *str, atom_search *asearch) |
get the id of the object selected (in contextual menu, or in combo box) | |
void | adjust_data_model_to_replace (project *this_proj, atom_search *asearch, int sid, int vid) |
adjust the data of the tree model to insert 'vid' | |
G_MODULE_EXPORT void | changed_action_renderer (GtkCellRendererCombo *combo, gchar *path_string, GtkTreeIter *iter, gpointer data) |
change combo box in atom search tree model | |
GtkTreeModel * | replace_combo_tree (gboolean insert, int proj) |
replace combo box in the tree view | |
void | search_set_visible (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *mod, GtkTreeIter *iter, gpointer data) |
show / hide cell renderer, if visible then add or not pango markup | |
G_MODULE_EXPORT void | set_occupancy (GtkEntry *res, gpointer data) |
set occupancy entry callback | |
G_MODULE_EXPORT void | set_i_coord (GtkEntry *res, gpointer data) |
set insertion coordinate(s) for the object to be inserted entry callback | |
G_MODULE_EXPORT void | set_max_msd (GtkEntry *res, gpointer data) |
set MSD max entry callback | |
G_MODULE_EXPORT void | set_max_action (GtkEntry *res, gpointer data) |
set how many time(s) to re-do the action | |
void | get_coord_iter_and_edit (gchar *path_string, gpointer data, GtkWidget *widg) |
find iter in the tree model using path string, then edit the data | |
G_MODULE_EXPORT void | to_edit_coords (GtkCellRenderer *cell, GtkCellEditable *editable, gchar *path_string, gpointer data) |
to edit data in the atom search tree model | |
G_MODULE_EXPORT void | markup_action_renderer (GtkCellRendererCombo *cell, GtkCellEditable *editable, gchar *path_string, gpointer data) |
add pango markup to a combo box inserted in the cell of a tree view | |
G_MODULE_EXPORT void | set_max_msd_for_all (GtkEntry *res, gpointer data) |
set the maximum MSD for all atom(s) / object(s) of the search | |
gboolean | update_search_model (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) |
update tree model for each iter | |
G_MODULE_EXPORT void | select_all_atoms (GtkTreeViewColumn *col, gpointer data) |
select all element(s) in the tree view column | |
GtkWidget * | create_atoms_tree (atom_search *asearch, project *this_proj, int nats) |
create atom search tree view | |
int | get_todo_size (atom_search *asearch) |
get the size of the atom search selection list | |
void | allocate_todo (atom_search *asearch, int tsize) |
allocate the selection list data buffer | |
void | clean_todo (atom_search *asearch) |
clean atom search selection list | |
void | clean_picked_and_labelled (atom_search *asearch, gboolean clean_msd) |
initialize atom search data buffers | |
G_MODULE_EXPORT void | set_filter_changed (GtkComboBox *box, gpointer data) |
change the search filter | |
G_MODULE_EXPORT void | set_object_changed (GtkComboBox *box, gpointer data) |
change the search object | |
G_MODULE_EXPORT void | set_search_mode (GtkComboBox *box, gpointer data) |
change search mode | |
G_MODULE_EXPORT void | set_search_digit (GtkEntry *res, gpointer data) |
update search entry | |
void | prep_search_box (GtkWidget *vbox, GtkWidget *lab, GtkWidget *combo) |
prepare some search widgets | |
GtkWidget * | prepare_box_too_much (atom_search *asearch) |
if too many atoms, then individual search | |
GtkWidget * | selection_tab (atom_search *asearch, int nats) |
create the search widget | |
Variables | |
int | selected_aspec |
int | atom_to_edit |
atom_search * | csearch |
int | max_random |
Functions to create the object search widgets, for:
Definition in file w_search.c.
G_MODULE_EXPORT void add_atom | ( | GtkButton * | but, |
gpointer | data ) |
add atom (or object) to the search tree if >= 10 000 atoms
but | the GtkButton sending the signal |
data | the associated data pointer |
Definition at line 1506 of file w_search.c.
void add_random_column | ( | atom_search * | asearch | ) |
add a column to the search tree model for the case of random search
asearch | the target atom search |
Definition at line 3964 of file w_search.c.
void adjust_data_model_to_replace | ( | project * | this_proj, |
atom_search * | asearch, | ||
int | sid, | ||
int | vid ) |
adjust the data of the tree model to insert 'vid'
this_proj | the target project |
asearch | the target atom search |
sid | the chemical species |
vid | id of the object to insert |
Definition at line 2452 of file w_search.c.
void adjust_object_to_move | ( | project * | this_proj, |
atom_search * | asearch, | ||
int | mv, | ||
int | id ) |
adjust atom search parameters for motion cases
this_proj | the target project |
asearch | the target atom search |
mv | motion id (0 = standard, 1 = random) |
id | object id |
Definition at line 523 of file w_search.c.
gchar * adjust_picked | ( | gchar * | picked, |
atomic_object * | object, | ||
gboolean | init ) |
adjust the name of the replacement object to use for a type of object if any
picked | type name (species, coordination, fragment, molecule name) |
object | the target insert object |
init | 1 / 0 depending on the atom search filter |
Definition at line 813 of file w_search.c.
void adjust_search_param | ( | atom_search * | asearch, |
project * | this_proj, | ||
int | a, | ||
int | s, | ||
int | c, | ||
gboolean | status ) |
adjust parameters for this atom search
asearch | the target atom search |
this_proj | the target project |
a | the atom id |
s | the chemical species, or object id |
c | the column id |
status | the new toogle status |
Definition at line 1745 of file w_search.c.
void adjust_this_tree_branch | ( | atom_search * | asearch, |
project * | this_proj, | ||
int | oid, | ||
int | sid, | ||
GtkTreeIter | iter ) |
adjust tree branch (for an entire type of object)
asearch | the target atom search |
this_proj | the target project |
oid | the column id |
sid | the chemical species or object type id |
iter | the tree iter |
Definition at line 1831 of file w_search.c.
void adjust_this_tree_leaf | ( | atom_search * | asearch, |
project * | this_proj, | ||
int | oid, | ||
int | aid, | ||
int | new_status, | ||
GtkTreeIter | iter ) |
adjust tree leaf (for a single object)
asearch | the target atom search |
this_proj | the target project |
oid | the column id |
aid | the atom id |
new_status | the new toggle status |
iter | the tree iter |
Definition at line 2235 of file w_search.c.
void allocate_todo | ( | atom_search * | asearch, |
int | tsize ) |
allocate the selection list data buffer
asearch | the target atom search |
tsize | the target size |
Definition at line 3717 of file w_search.c.
gboolean append | ( | atom_search * | asearch, |
project * | this_proj, | ||
int | i, | ||
int | j ) |
test if the atom 'i' of species 'j' must be added to the tree store or not
asearch | the target atom search |
this_proj | the target project |
i | the atom id |
j | the chemical species id |
Definition at line 756 of file w_search.c.
void append_to_model | ( | GtkTreeIter * | atom_level, |
atom_search * | asearch, | ||
gboolean | is_object, | ||
int | h, | ||
int | i, | ||
project * | this_proj ) |
append data to the search tree store
atom_level | the iter to insert the data to |
asearch | the target atom search |
is_object | the atom search object (atom or group of atoms) |
h | the object type id |
i | the object id |
this_proj | the target project |
Definition at line 643 of file w_search.c.
gboolean atom_is_in_model | ( | GtkTreeModel * | model, |
GtkTreePath * | path, | ||
GtkTreeIter * | iter, | ||
gpointer | data ) |
is this atom already in the tree model if >= 10 000 atoms
model | the target tree model |
path | the path in the tree model |
iter | the tree iter |
data | the associated data pointer |
Definition at line 1481 of file w_search.c.
G_MODULE_EXPORT void changed_action_renderer | ( | GtkCellRendererCombo * | combo, |
gchar * | path_string, | ||
GtkTreeIter * | iter, | ||
gpointer | data ) |
change combo box in atom search tree model
combo | the cell renderer combo box |
path_string | the path in the tree model |
iter | the tree iter |
data | the associated data pointer |
Definition at line 2516 of file w_search.c.
void check_all_trees | ( | project * | this_proj | ) |
check all search trees
this_proj | the target project |
Definition at line 450 of file w_search.c.
|
extern |
void check_tree_for_this_search | ( | project * | this_proj, |
atom_search * | asearch ) |
check, and adjust if needed, the tree construction for this atom search
this_proj | the target project |
asearch | the target atom search |
Definition at line 214 of file w_search.c.
void clean_picked_and_labelled | ( | atom_search * | asearch, |
gboolean | clean_msd ) |
initialize atom search data buffers
asearch | the target atom search |
clean_msd | clean msd all data (1) or not (0) |
Definition at line 3791 of file w_search.c.
void clean_todo | ( | atom_search * | asearch | ) |
clean atom search selection list
asearch | the target atom search |
Definition at line 3730 of file w_search.c.
void clear_fields | ( | atom_search * | asearch | ) |
clear all search fields if >= 10 000 atoms
asearch | the target atom search |
Definition at line 1385 of file w_search.c.
GtkWidget * create_atoms_tree | ( | atom_search * | asearch, |
project * | this_proj, | ||
int | nats ) |
create atom search tree view
asearch | the target atom search |
this_proj | the target project |
nats | the total number of atom(s) |
Definition at line 3584 of file w_search.c.
|
extern |
void fill_atom_model | ( | atom_search * | asearch, |
project * | this_proj ) |
fill atom search tree store
asearch | the target atom search |
this_proj | the target project |
Definition at line 893 of file w_search.c.
gboolean fill_for_action | ( | atom_search * | asearch, |
int | i, | ||
int | j, | ||
project * | this_proj ) |
test if the atom 'i' of species 'j' matches requirement(s) to be in the tree store
asearch | the target atom search |
i | the atom id |
j | the chemical species id (or type id) |
this_proj | the target project |
Definition at line 722 of file w_search.c.
int get_asearch_filter | ( | atom_search * | asearch | ) |
get asearch filter
asearch | the target atom search |
Definition at line 170 of file w_search.c.
gboolean get_asearch_is_object | ( | atom_search * | asearch | ) |
get asearch object
asearch | the target atom search |
Definition at line 194 of file w_search.c.
int get_asearch_num_objects | ( | atom_search * | asearch | ) |
the number of type of object(s) in this atom search
asearch | the target atom search |
Definition at line 125 of file w_search.c.
int get_asearch_object | ( | atom_search * | asearch | ) |
get the number of object(s) in this atom search
asearch | the target atom search |
Definition at line 149 of file w_search.c.
atomic_object * get_atomic_object_by_origin | ( | atomic_object * | first, |
int | oid, | ||
int | aid ) |
get insert object from a list by id
first | the first insert object of the list |
oid | object origin id (type of origin) |
aid | object id |
Definition at line 474 of file w_search.c.
void get_coord_iter_and_edit | ( | gchar * | path_string, |
gpointer | data, | ||
GtkWidget * | widg ) |
find iter in the tree model using path string, then edit the data
path_string | the path in the tree model |
data | the associated data pointer |
widg | the GtkWidget sending the signal |
Definition at line 2875 of file w_search.c.
gchar * get_node_name | ( | int | node, |
atom_search * | asearch, | ||
project * | this_proj ) |
get node label in the atom search tree store
node | the node id |
asearch | the target atom search |
this_proj | the target project |
Definition at line 848 of file w_search.c.
int get_selected_object_id | ( | gboolean | visible, |
int | p, | ||
gchar * | str, | ||
atom_search * | asearch ) |
get the id of the object selected (in contextual menu, or in combo box)
visible | is the 'model edition' window visible (1/0) |
p | the target project id |
str | the string that describing the selection |
asearch | the target atom search |
Definition at line 2385 of file w_search.c.
|
extern |
int get_todo_size | ( | atom_search * | asearch | ) |
get the size of the atom search selection list
asearch | the target atom search |
Definition at line 3681 of file w_search.c.
G_MODULE_EXPORT void markup_action_renderer | ( | GtkCellRendererCombo * | cell, |
GtkCellEditable * | editable, | ||
gchar * | path_string, | ||
gpointer | data ) |
add pango markup to a combo box inserted in the cell of a tree view
cell | the GtkCellRendererCombo |
editable | the editable |
path_string | the path in the tree model |
data | the associated data pointer |
Definition at line 3251 of file w_search.c.
void motion_to_zero | ( | atom_search * | asearch | ) |
reset motion to 0.0
asearch | the target atom search |
Definition at line 493 of file w_search.c.
G_MODULE_EXPORT void move_up_down | ( | GtkTreeModel * | tree_model, |
GtkTreePath * | path, | ||
gpointer | data ) |
Move row up or down in the tree model using the mouse.
tree_model | the target tree model |
path | the path in the tree model |
data | the associated data pointer |
Definition at line 3524 of file w_search.c.
void prep_search_box | ( | GtkWidget * | vbox, |
GtkWidget * | lab, | ||
GtkWidget * | combo ) |
prepare some search widgets
vbox | the box to insert the search box in |
lab | the GtkWidget sending the signal |
combo | the GtkWidget sending the signal |
Definition at line 4076 of file w_search.c.
GtkWidget * prepare_box_too_much | ( | atom_search * | asearch | ) |
if too many atoms, then individual search
asearch | the target atom search |
Definition at line 4094 of file w_search.c.
|
extern |
void re_populate_tree_search | ( | atom_search * | asearch | ) |
re populate search tree after atom action if >= 10 000 atoms
asearch | the target atom search |
Definition at line 1608 of file w_search.c.
G_MODULE_EXPORT void remove_atom | ( | GtkButton * | but, |
gpointer | data ) |
remove atom (or object) from the search tree if >= 10 000 atoms
but | the GtkButton sending the signal |
data | the associated data pointer |
Definition at line 1463 of file w_search.c.
gboolean remove_from_model | ( | GtkTreeModel * | model, |
GtkTreePath * | path, | ||
GtkTreeIter * | iter, | ||
gpointer | data ) |
remove from the tree model
model | the tree model |
path | the path in the tree model |
iter | the tree iter |
data | the associated data pointer |
Definition at line 1411 of file w_search.c.
GtkTreeModel * replace_combo_tree | ( | gboolean | insert, |
int | proj ) |
replace combo box in the tree view
insert | add 'Select ...' combo box item |
proj | target crystal builder project id |
Definition at line 2615 of file w_search.c.
|
extern |
void search_set_visible | ( | GtkTreeViewColumn * | col, |
GtkCellRenderer * | renderer, | ||
GtkTreeModel * | mod, | ||
GtkTreeIter * | iter, | ||
gpointer | data ) |
show / hide cell renderer, if visible then add or not pango markup
col | the tree view column |
renderer | the cell renderer |
mod | the tree model |
iter | the tree iter |
data | the associated data pointer |
Definition at line 2700 of file w_search.c.
G_MODULE_EXPORT void select_all_atoms | ( | GtkTreeViewColumn * | col, |
gpointer | data ) |
select all element(s) in the tree view column
col | the target tree view column |
data | the associated data pointer |
Definition at line 3346 of file w_search.c.
G_MODULE_EXPORT void select_atom | ( | GtkCellRendererToggle * | cell_renderer, |
gchar * | string_path, | ||
gpointer | data ) |
toggle select / unselect object in the atom search tree model
cell_renderer | the cell renderer toggle button |
string_path | the path in the tree model |
data | the associated data pointer |
Definition at line 2322 of file w_search.c.
|
extern |
select object to insert from the library
visible | is the 'model edition' window visible |
this_proj | the target project |
asearch | the target atom search |
Definition at line 1102 of file w_library.c.
GtkWidget * selection_tab | ( | atom_search * | asearch, |
int | nats ) |
create the search widget
asearch | the target atom search |
nats | the total number of atoms |
Definition at line 4130 of file w_search.c.
G_MODULE_EXPORT void set_atom | ( | GtkEntry * | entry, |
gpointer | data ) |
adjust atom search parameters if >= 10 000 atoms
entry | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 1345 of file w_search.c.
G_MODULE_EXPORT void set_filter_changed | ( | GtkComboBox * | box, |
gpointer | data ) |
change the search filter
box | the GtkComboBox sending the signal |
data | the associated data pointer |
Definition at line 3858 of file w_search.c.
G_MODULE_EXPORT void set_i_coord | ( | GtkEntry * | res, |
gpointer | data ) |
set insertion coordinate(s) for the object to be inserted entry callback
res | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 2748 of file w_search.c.
G_MODULE_EXPORT void set_id | ( | GtkEntry * | entry, |
gpointer | data ) |
set search id if >= 10 000 atoms
entry | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 1697 of file w_search.c.
G_MODULE_EXPORT void set_max_action | ( | GtkEntry * | res, |
gpointer | data ) |
set how many time(s) to re-do the action
res | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 2854 of file w_search.c.
G_MODULE_EXPORT void set_max_msd | ( | GtkEntry * | res, |
gpointer | data ) |
set MSD max entry callback
res | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 2768 of file w_search.c.
G_MODULE_EXPORT void set_max_msd_for_all | ( | GtkEntry * | res, |
gpointer | data ) |
set the maximum MSD for all atom(s) / object(s) of the search
res | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 3277 of file w_search.c.
G_MODULE_EXPORT void set_object_changed | ( | GtkComboBox * | box, |
gpointer | data ) |
change the search object
box | the GtkComboBox sending the signal |
data | the associated data pointer |
Definition at line 3884 of file w_search.c.
G_MODULE_EXPORT void set_occupancy | ( | GtkEntry * | res, |
gpointer | data ) |
set occupancy entry callback
res | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 2728 of file w_search.c.
G_MODULE_EXPORT void set_search_digit | ( | GtkEntry * | res, |
gpointer | data ) |
update search entry
res | the GtkEntry sending the signal |
data | the associated data pointer |
Definition at line 4049 of file w_search.c.
G_MODULE_EXPORT void set_search_mode | ( | GtkComboBox * | box, |
gpointer | data ) |
change search mode
box | the GtkComboBox sending the signal |
data | the associated data pointer |
Definition at line 3983 of file w_search.c.
G_MODULE_EXPORT void set_spec_changed | ( | GtkComboBox * | box, |
gpointer | data ) |
change the search chemical species
box | the GtkComboBox sending the signal |
data | the associated data pointer |
Definition at line 3829 of file w_search.c.
G_MODULE_EXPORT void to_edit_coords | ( | GtkCellRenderer * | cell, |
GtkCellEditable * | editable, | ||
gchar * | path_string, | ||
gpointer | data ) |
to edit data in the atom search tree model
cell | the GtkCellRenderer |
editable | the editable |
path_string | the path in the tree model |
data | the associated data pointer |
Definition at line 3235 of file w_search.c.
gboolean update_search_model | ( | GtkTreeModel * | model, |
GtkTreePath * | path, | ||
GtkTreeIter * | iter, | ||
gpointer | data ) |
update tree model for each iter
model | the tree model |
path | the path in the tree model |
iter | the tree it |
data | the associated data pointer |
Definition at line 3311 of file w_search.c.
void update_search_tree | ( | atom_search * | asearch | ) |
update search tree
asearch | the target atom search |
Definition at line 1294 of file w_search.c.
gboolean update_this_search | ( | atom_search * | asearch | ) |
test if it is required to update the search tree or not
asearch | the target atom search |
Definition at line 1318 of file w_search.c.
int atom_to_edit |
Definition at line 2717 of file w_search.c.
atom_search* csearch |
Definition at line 2718 of file w_search.c.
int max_random |
Definition at line 2844 of file w_search.c.