# This file is part of sygil-webui (https://github.com/Sygil-Dev/sandbox-webui/). # Copyright 2022 Sygil-Dev team. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # base webui import and utils. # from sd_utils import * from sd_utils import st # streamlit imports # streamlit components section # other imports from barfi import st_barfi, barfi_schemas, Block # Temp imports # end of imports # --------------------------------------------------------------------------------------------------------------- def layout(): # st.info("Under Construction. :construction_worker:") # from barfi import st_barfi, Block # add = Block(name='Addition') # sub = Block(name='Subtraction') # mul = Block(name='Multiplication') # div = Block(name='Division') # barfi_result = st_barfi(base_blocks= [add, sub, mul, div]) # or if you want to use a category to organise them in the frontend sub-menu # barfi_result = st_barfi(base_blocks= {'Op 1': [add, sub], 'Op 2': [mul, div]}) col1, col2, col3 = st.columns([1, 8, 1]) with col2: feed = Block(name="Feed") feed.add_output() def feed_func(self): self.set_interface(name="Output 1", value=4) feed.add_compute(feed_func) splitter = Block(name="Splitter") splitter.add_input() splitter.add_output() splitter.add_output() def splitter_func(self): in_1 = self.get_interface(name="Input 1") value = in_1 / 2 self.set_interface(name="Output 1", value=value) self.set_interface(name="Output 2", value=value) splitter.add_compute(splitter_func) mixer = Block(name="Mixer") mixer.add_input() mixer.add_input() mixer.add_output() def mixer_func(self): in_1 = self.get_interface(name="Input 1") in_2 = self.get_interface(name="Input 2") value = in_1 + in_2 self.set_interface(name="Output 1", value=value) mixer.add_compute(mixer_func) result = Block(name="Result") result.add_input() def result_func(self): self.get_interface(name="Input 1") result.add_compute(result_func) load_schema = st.selectbox("Select a saved schema:", barfi_schemas()) compute_engine = st.checkbox("Activate barfi compute engine", value=False) barfi_result = st_barfi( base_blocks=[feed, result, mixer, splitter], compute_engine=compute_engine, load_schema=load_schema, ) if barfi_result: st.write(barfi_result)