mPainter: współpraca na warstwach — multi-select, limity ról i protokół zgody
mPainter: współpraca na warstwach — multi-select, limity ról i protokół zgody
Praca w jednym dokumencie w kilka osób ma jeden odwieczny problem: kto może ruszać czyją warstwę? W tej aktualizacji mPainter dostaje pełny, przemyślany model współpracy warstwowej — od zaznaczania wielu warstw naraz, przez per-rolowe limity, aż po kulturalny protokół proszenia o zgodę na edycję cudzej pracy.
Multi-select warstw (jak w Photoshopie)
Panel Warstwy obsługuje teraz zaznaczanie wielu warstw (Ctrl/Shift-klik). Operacje działają na całym zaznaczeniu jako jeden krok cofania:
- krycie, tryb mieszania, widoczność, blokady, link,
- usuń, powiel, grupuj („Grupuj zaznaczone" wreszcie grupuje zaznaczone, nie tylko aktywną),
- przesuwanie wielu warstw w górę/dół z zachowaniem kolejności.
Suwak krycia działa na żywo dla całego zaznaczenia, a gdy zaznaczone warstwy mają różne wartości — kontrolki pokazują stan „nieokreślony" zamiast mylić jedną liczbą. Wszystko działa też offline; w pojedynkę to po prostu wygodniejsza edycja.
Limity warstw per rola (ustawia admin sesji)
W ustawieniach sesji współpracy admin definiuje per rola:
- ile warstw dana rola może trzymać naraz (np. rysownik max 3) — przy przekroczeniu pojawia się okno z informacją;
- czy rola może edytować cudze warstwy (wysyła wtedy prośbę o zgodę),
- a nawet czy robi to bez pytania (role uprzywilejowane, np. admin/moderator).
Zaznaczenie wolnej warstwy od razu ją zajmuje (miękki lock) i liczy do limitu; warstwy zajętej przez kogoś innego zaznaczenie nie przejmuje.
Protokół zgody — edycja cudzej warstwy
Sedno: gdy chcesz tknąć warstwę, którą trzyma ktoś inny (zaczniesz po niej malować albo zmienisz jej opcje), mPainter pyta właściciela o zgodę:
- U Ciebie pojawia się okno-konsekwencji: kto korzysta z warstwy, co zrobi operacja, a jeśli jest niszcząca (scal/spłaszcz/usuń) — że wywali właściciela z warstwy.
- U właściciela wyskakuje prośba: Pozwól / Odmów — z czasem 60 sekund na odpowiedź. Brak odpowiedzi (AFK) domyślnie liczy się jako zgoda, ale to przełączalne w opcjach sesji.
- Operacje nieniszczące (np. zmiana krycia) nie wyrzucają właściciela — po prostu wymagają jego zgody. Operacje niszczące najpierw bezpiecznie domykają jego bieżące pociągnięcie (żeby nic nie zginęło).
- Można poprosić o trwałą zgodę — właściciel może pozwolić na całą sesję, żeby nie klikać w kółko.
Wszystko albo nic (gdy warstwy mają różnych właścicieli)
Robisz operację na zbiorze warstw należących do kilku osób? mPainter wysyła zbiorczą prośbę do każdego właściciela i nic nie dzieje się na cudzych warstwach, dopóki wszyscy się nie zgodzą (Twoje własne zmieniają się od razu). Jeśli ktoś odmówi lub nie odpowie — operacja jest anulowana, a Ty dostajesz ekran wyników: lista warstw i osób ze statusem 🟢 zgoda / 🔴 odmowa / ⬜ brak odpowiedzi.
Operacje globalne i powiadomienia
Operacje na całym dokumencie (spłaszcz, scal widoczne, kadrowanie, zmiana rozmiaru/trybu koloru) dotyczą wszystkich warstw — gdy inny uczestnik je wykona, dostajesz nieblokujące powiadomienie, że dokument się zmienił.
Pod maską
Cały model jest spójny z istniejącym silnikiem współpracy mPaintera: zbiór zaznaczenia to ulotny stan UI (nigdy nie zapisywany ani nie wysyłany), a wszystkie zmiany konwergują u uczestników przez sprawdzony kanał operacji (z poprawną synchronizacją cofania/ponawiania — także dla wielowarstwowych zmian atrybutów). Limit warstw egzekwuje klient; zgoda i przejęcia są szeregowane przez serwer.
Efekt: kilka osób może realnie pracować w jednym pliku, nie wchodząc sobie w drogę i nie nadpisując nawzajem swojej roboty — z jasnymi zasadami, kto co może i kulturą „zapytaj, zanim ruszysz cudze".