Blender  V3.3
Functions | Variables
wm_uilist_type.c File Reference
#include <stdio.h>
#include <string.h>
#include "BLI_listbase.h"
#include "BLI_sys_types.h"
#include "DNA_space_types.h"
#include "DNA_windowmanager_types.h"
#include "MEM_guardedalloc.h"
#include "UI_interface.h"
#include "BLI_ghash.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_main.h"
#include "BKE_screen.h"
#include "WM_api.h"
#include "WM_types.h"

Go to the source code of this file.

Functions

uiListTypeWM_uilisttype_find (const char *idname, bool quiet)
 
bool WM_uilisttype_add (uiListType *ult)
 
static void wm_uilisttype_unlink_from_region (const uiListType *ult, ARegion *region)
 
static void wm_uilisttype_unlink_from_area (const uiListType *ult, ScrArea *area)
 
static void wm_uilisttype_unlink (Main *bmain, const uiListType *ult)
 
void WM_uilisttype_remove_ptr (Main *bmain, uiListType *ult)
 
void WM_uilisttype_init (void)
 
void WM_uilisttype_free (void)
 
void WM_uilisttype_to_full_list_id (const uiListType *ult, const char *list_id, char r_full_list_id[])
 
const char * WM_uilisttype_list_id_get (const uiListType *ult, uiList *list)
 

Variables

static GHashuilisttypes_hash = NULL
 

Detailed Description

UI List Registry.

Definition in file wm_uilist_type.c.

Function Documentation

◆ WM_uilisttype_add()

bool WM_uilisttype_add ( uiListType ult)

Definition at line 50 of file wm_uilist_type.c.

References BLI_ghash_insert(), uiListType::idname, and uilisttypes_hash.

Referenced by ED_uilisttypes_ui(), and panelRegister().

◆ WM_uilisttype_find()

uiListType* WM_uilisttype_find ( const char *  idname,
bool  quiet 
)

Definition at line 34 of file wm_uilist_type.c.

References BLI_ghash_lookup(), NULL, and uilisttypes_hash.

Referenced by ui_template_list_data_retrieve().

◆ WM_uilisttype_free()

void WM_uilisttype_free ( void  )

◆ WM_uilisttype_init()

void WM_uilisttype_init ( void  )

Called on initialize WM_init()

Definition at line 119 of file wm_uilist_type.c.

References BLI_ghash_str_new_ex(), and uilisttypes_hash.

Referenced by WM_init().

◆ WM_uilisttype_list_id_get()

const char* WM_uilisttype_list_id_get ( const uiListType ult,
uiList list 
)

Definition at line 146 of file wm_uilist_type.c.

References BLI_assert, uiListType::idname, and uiList::list_id.

◆ WM_uilisttype_remove_ptr()

void WM_uilisttype_remove_ptr ( Main bmain,
uiListType ult 
)

◆ WM_uilisttype_to_full_list_id()

void WM_uilisttype_to_full_list_id ( const uiListType ult,
const char *  list_id,
char  r_full_list_id[] 
)

Definition at line 138 of file wm_uilist_type.c.

References BLI_snprintf(), uiListType::idname, and UI_MAX_NAME_STR.

Referenced by ui_list_ensure().

◆ wm_uilisttype_unlink()

static void wm_uilisttype_unlink ( Main bmain,
const uiListType ult 
)
static

For all lists representing ult, clear their uiListType pointer. Use when a list-type is deleted, so that the UI doesn't keep references to it.

This is a common pattern for unregistering (usually .py defined) types at runtime, e.g. see WM_gizmomaptype_group_unlink(). Note that unlike in some other cases using this pattern, we don't actually free the lists with type ult, we just clear the reference to the type. That's because UI-Lists are written to files and we don't want them to get lost together with their (user visible) settings.

Definition at line 88 of file wm_uilist_type.c.

References blender::compositor::area(), ListBase::first, LISTBASE_FOREACH, NULL, Main::screens, Main::wm, wm_uilisttype_unlink_from_area(), and wm_uilisttype_unlink_from_region().

Referenced by WM_uilisttype_remove_ptr().

◆ wm_uilisttype_unlink_from_area()

static void wm_uilisttype_unlink_from_area ( const uiListType ult,
ScrArea area 
)
static

◆ wm_uilisttype_unlink_from_region()

static void wm_uilisttype_unlink_from_region ( const uiListType ult,
ARegion region 
)
static

Definition at line 56 of file wm_uilist_type.c.

References LISTBASE_FOREACH, NULL, and ARegion::ui_lists.

Referenced by wm_uilisttype_unlink(), and wm_uilisttype_unlink_from_area().

Variable Documentation

◆ uilisttypes_hash

GHash* uilisttypes_hash = NULL
static