Wypracujmy stanowisko w sprawie współpracy
Back to Pytania i odpowiedzi#21 pajper
Wkleję tu, co łatwiej będzie znaleźć.
Zrezygnowałem z całej obsługi plików, bo zapomniałem, że Ruby od wersji 1.9.3 obsługuje unikod w plikach, a więc miast bawić się w własne api, można śmiało użyć wbudowanego z bardzo dobrym rezultatem.
Wszystkie te funkcje działają w standardzie unicode.
Moduł Elten::Engine::Speech:
int say(string text, bool interrupt=true) - wypowiada podany tekst, jeśli interrupt==true, to przerywa poprzednio wypowiadany komunikat, zwraca 0, jeśli udane, wpp. niezero,
int stop(void) - przerywa gadanie, zwraca 0, jak przerwano, wpp. niezero,
bool is_speaking(void) - zwraca, czy synteza jest używana,
int get_volume(void) - zwraca głośność,
int set_volume(int vol) - ustawia głośność, skala 0-100, dalej analogicznie,
int get_pitch(void),
int set_pitch(int pitch);
int get_voice(void),
int set_voice(int voice),
string[] list_voices(void) - listuje w tablicy nazwy głosów,
bool can_changevoice(void) - zwraca, czy można zmieniać głos, jeśli false, funkcje do zmiany i listowania głosów nie będą wykorzystane.
Moduł Elten::Engine::UI:
int window_create(void) - tworzy okno, zwraca uchwyt lub 0,
int window_update(int window_id) - odświeża okno, zwraca 0 jak udane, wpp. niezero,
int window_state(int window_id) - zwraca status okna (0 - ukryte, 1 - na wierzchu, 2 - zminimalizowane),
int[] get_keyboard(void) - zwraca tablicę ze stanami klawiszy, wedle konwencji Windowsowej, przy innej konwencji musi dokonać konwersji,
char get_keyboardletter(int[] keyboard) - funkcja sprawdza, jaka litera jest wciśnięta na klawiaturze, (uwzględniając układ klawiatury), jeśli api systemu to obsługuje, jeśli nie obsługuje, zwraca nil.
Moduł Elten::Engine::Clipboard:
int set_text(string text) - wstawia do schowka text, zwraca długość tekstu,
string get_text(void) - zwraca tekst ze schowka.
moduł Elten::Engine::Shell:
string get_directory(int clsid) - zwraca ścieżkę do danego katalogu, np. profilu użytkownika, wedle Windowsowskiej konwencji clsid,
int get_language(void) - zwraca kod używanego w systemie języka.
Moduł Elten::Engine::Kernel:
string get_computername(void) - zwraca nazwę komputera,
string get_commandline(void) - zwraca linię, jaką uruchomiono proces,
int get_os(void) - zwraca system: 1 - windows, 2 - linux, 3 - mac,
string get_systemversion(void) - zwraca sformatowaną wersję systemu, np. "Linux Debian 5.0" czy "Windows 10 version 10.0.17134.765",
long get_memoryused(void) - zwraca pamięć RAM użytą przez proces,
long get_memoryavailable(void) - zwraca ilość dostępnej pamięci operacyjnej.
Kilka funkcji dojdzie, bo brakuje jeszcze m.in. obsługi zewnętrznych procesów, ale to chyba najważniejsze.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#22 pajper
Dodam, że konwersje konwencji kodów klawiszy czy clsid fajnie byłoby robić na makrach, w ten sposób będzie to działało szybciej. ;)
Shoot for the Moon. Even if you miss, you'll land among the stars.
#23 EugeniuszPompiusz
Na wstępie; naprostujcie mnie, jeśli źle rozumuję.
Konwersję, kodów klawiszy... że w sensie między platformami?czy jak?
Nie ukrywam, że wolałbym, by klawiatura na windowsie była as native as possible, zważywszy na probley, jakie zglaszamy nie tylko my w obecnym silniku obsługi.
Kwestia okien i ich "wysokopoziomowego" traktowania też mnie, użytkownika win 7 niepokoi zważywszy, że widzę, jak obecne okienko lubi się z alt+tabem, alt+shift+tabem, szczególnie ciągłym, i ile czasu zajmuje wyjście z okna Elten, jeśli człowiek wszedł w nie nie chcący.
Abstrachuję już od tego, że przy ilości okien pod alt+tabem typu 20 plus, Elten bardzo skutecznie rozwala chierarchię okienek widzianą przez alt+tab alt+shift+tab.
Rozmawiałem z Dawidem, który problemu nie odczuwa, natomiast ja zwalam to na kark przyzwyczajenia, nie zaś nieodczuwania, ale może to moja drobna uszczypliwostka. :)
W każdym razie, o ile pamiętam, Klango (koncepcja podobna) na problem nie cierpiało.
Dobra, bo serwuję tu straszny offtop. tak czy inaczej, rzucam pod rozwagę.
#24 pajper
@EugeniuszPompiusz nie, tutaj chodziło mi o coś zupełnie innego.
Klawiaturę można przekazać i przetworzyć możliwie wysokopoziomowo. Rzecz w tym, że kody klawiszy między Linuxem, Macem i Windowsem się różnią.
I na przykład klawisz ctrl to na Windowsie 0x11, na Pingwinku już niekoniecznie.
Aby sprawdzić, czy wciśnięty jest control, trzeba odpytać silnik o kod 0x11 dla Windowsa. Dlatego, jeśli platformą jest np. Linux, silnik musi konwertować między 0x11 a kodem Linuxowskim. I tak dalej.
Kwestia spójności danych.
Shoot for the Moon. Even if you miss, you'll land among the stars.