eiwd/meson.build
Pierre-Olivier Mercier c94eb55284 Phase 6: Theme & Polish
Added comprehensive theming and configuration support:

Core Changes:
- Created data/theme.edc with Edje theme groups for gadget states
  (disconnected, connecting, connected, error) with color-coded icons
- Implemented signal-based theme updates (e,state,* signals)
- Created e_mod_config.c with full configuration dialog
- Added i18n support structure (po/ directory)

Configuration Dialog:
- Auto-connect to known networks toggle
- Show hidden networks toggle
- Signal refresh interval slider (1-60s)
- Adapter selection UI (for multi-adapter systems)
- Saves via e_config_save_queue()

Theme Integration:
- Gadget loads e-module-iwd.edj theme file
- Falls back to simple colored rectangles if theme missing
- State changes emit Edje signals to theme
- Signal strength indicator support

Build System:
- Updated data/meson.build to compile theme with edje_cc
- Added i18n framework with po/meson.build
- Created meson_options.txt with nls option
- Added po/POTFILES.in for translatable strings

Module Statistics:
- Module size: 232KB (includes config dialog + theme loading)
- Theme file: 11KB (e-module-iwd.edj)
- Total lines of code: ~3,500+
- New files: 5 (theme.edc, e_mod_config.c, 3 i18n files)

API Compatibility:
- Fixed E_Container deprecation (E 0.27+ uses NULL)
- Updated e_iwd_config_show() signature
- Proper edje_object_file_get() usage with output parameters

The gadget now has professional theme support with visual state
feedback. Configuration can be accessed through standard E module
settings. i18n framework ready for translations.

🎨 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:53:00 +07:00

67 lines
1.5 KiB
Meson

project('e-iwd', 'c',
version: '0.1.0',
default_options: ['c_std=c11', 'warning_level=2'],
meson_version: '>= 0.56.0'
)
# Dependencies
enlightenment = dependency('enlightenment')
eldbus = dependency('eldbus')
elementary = dependency('elementary')
ecore = dependency('ecore')
evas = dependency('evas')
edje = dependency('edje')
eina = dependency('eina')
# Get Enlightenment module API version
e_version = enlightenment.version().split('.')
e_major = e_version[0]
e_minor = e_version[1]
# Installation paths
module_name = 'iwd'
module_arch = '@0@-@1@-@2@.@3@'.format(
host_machine.system(),
host_machine.cpu_family(),
e_major,
e_minor
)
dir_module = join_paths(get_option('libdir'), 'enlightenment', 'modules', module_name)
dir_module_arch = join_paths(dir_module, module_arch)
# Configuration
conf_data = configuration_data()
conf_data.set_quoted('PACKAGE', meson.project_name())
conf_data.set_quoted('VERSION', meson.project_version())
conf_data.set_quoted('MODULE_ARCH', module_arch)
configure_file(
output: 'config.h',
configuration: conf_data
)
# Add configuration include and feature test macros
add_project_arguments(
'-include', 'config.h',
'-D_GNU_SOURCE',
language: 'c'
)
# Internationalization
i18n = import('i18n')
if get_option('nls')
subdir('po')
endif
# Subdirectories
subdir('src')
subdir('data')
# Summary
summary({
'Module name': module_name,
'Module architecture': module_arch,
'Installation path': dir_module_arch,
'Enlightenment version': enlightenment.version(),
}, section: 'Configuration')